PageSourceSearch

https://www.joliette.ca/plugins/blanko/forms/assets/dist/build.js

js joliette.ca collected 2026-09-24 09:57:02 UTC 1,334,251 bytes, 40,649 lines download raw bytes

1/******/ (() => { // webpackBootstrap
2/******/ 	var __webpack_modules__ = ({
3
4/***/ "./js/file-multi.js":
5/*!**************************!*\
6  !*** ./js/file-multi.js ***!
7  \**************************/
8/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9
10"use strict";
11__webpack_require__.r(__webpack_exports__);
12/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13/* harmony export */   initFileUpload: () => (/* binding */ initFileUpload)
14/* harmony export */ });
15/* provided dependency */ var $ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js");
16var MultiFileUploader = function (element, options) {
17  this.options = options;
18  this.$container = $(element);
19  this.$el = $('.content', element);
20  this.$clickable = $('.clickable', element);
21  this.$template = $('.template', element);
22  this.$fileHolder = $('div.img', this.$el);
23  var acceptedFiles = this.options.fileTypes;
24  if (acceptedFiles == '*') acceptedFiles = null;
25  var maxFiles = this.options.maxFiles == '1' ? 1 : null;
26  this.dropzone = new Dropzone(this.$container.get(0), {
27    url: window.location,
28    uploadHanlder: 'renderForm::onUploadFile',
29    clickable: this.$clickable.get(0),
30    previewsContainer: this.$el.get(0),
31    previewTemplate: this.$template.html(),
32    acceptedFiles: acceptedFiles,
33    maxFilesize: this.options.maxSize,
34    paramName: 'file_data',
35    maxFiles: maxFiles,
36    dictFileTooBig: this.options.dictFileTooBig,
37    dictDefaultMessage: this.options.dictDefaultMessage,
38    dictFallbackMessage: this.options.dictFallbackMessage,
39    dictFallbackText: this.options.dictFallbackText,
40    dictInvalidFileType: this.options.dictInvalidFileType,
41    dictResponseError: this.options.dictResponseError,
42    dictCancelUpload: this.options.dictCancelUpload,
43    dictCancelUploadConfirmation: this.options.dictCancelUploadConfirmation,
44    dictRemoveFile: this.options.dictRemoveFile,
45    dictRemoveFileConfirmation: null,
46    dictMaxFilesExceeded: this.options.dictMaxFilesExceeded
47  });
48  var self = this;
49  this.dropzone.on('error', function (file, error) {
50    alert(error);
51  });
52  this.dropzone.on('sending', function (file, xhr, formData) {
53    formData.append('fieldId', self.options.fieldId);
54    self.addExtraFormData(formData);
55  });
56  this.dropzone.on('success', function (file, response) {
57    self.updateFile(file, response);
58  });
59  this.dropzone.on('removedfile', function (file) {
60    console.log('MultiFileUploader.removedfile');
61    self.removeFile(file);
62  });
63};
64MultiFileUploader.prototype.addExtraFormData = function (formData) {
65  if (this.options.extraData) {
66    $.each(this.options.extraData, function (name, value) {
67      formData.append(name, value);
68    });
69  }
70  var $form = this.$el.closest('form');
71  if ($form.length > 0) {
72    $.each($form.serializeArray(), function (index, field) {
73      formData.append(field.name, field.value);
74    });
75  }
76};
77MultiFileUploader.prototype.updateFile = function (file, response) {
78  var $preview = $(file.previewElement);
79  if (response.id) {
80    $preview.data('fileId', response.id);
81
82    // No thumbs is returned.
83    //$img = $('.thumbnail', $preview)
84    //$img.attr('src', response.thumb)
85  }
86};
87MultiFileUploader.prototype.removeFile = function ($file) {
88  var $preview = $($file.previewElement);
89  var fileId = $preview.data('fileId');
90  if (fileId) {
91    var request = this.$container.closest('form').request(this.options.handler, {
92      data: {
93        fileId: fileId,
94        mode: 'delete'
95      },
96      redirect: false
97    });
98  }
99};
100MultiFileUploader.DEFAULTS = {
101  handler: 'onUpdateFile',
102  maxSize: null,
103  fileTypes: null
104};
105var old = $.fn.multiFileUploader;
106$.fn.multiFileUploader = function (option) {
107  return this.each(function () {
108    var $this = $(this);
109    var data = $this.data('oc.multiFileUploader');
110    var options = $.extend({}, MultiFileUploader.DEFAULTS, $this.data(), typeof option == 'object' && option);
111    if (!data) $this.data('oc.multiFileUploader', data = new MultiFileUploader(this, options));
112    if (typeof option == 'string') data[option].call($this);
113  });
114};
115$.fn.multiFileUploader.Constructor = MultiFileUploader;
116$.fn.multiFileUploader.noConflict = function () {
117  $.fn.multiFileUploader = old;
118  return this;
119};
120function initFileUpload(classeContainerFormBuilder) {
121  $(classeContainerFormBuilder + ' [data-control=multi-file-uploader]').multiFileUploader();
122}
123
124/***/ }),
125
126/***/ "./js/formbuilder.js":
127/*!***************************!*\
128  !*** ./js/formbuilder.js ***!
129  \***************************/
130/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
131
132"use strict";
133__webpack_require__.r(__webpack_exports__);
134/* harmony export */ __webpack_require__.d(__webpack_exports__, {
135/* harmony export */   OBSERVER: () => (/* binding */ OBSERVER),
136/* harmony export */   initFormBuilder: () => (/* binding */ initFormBuilder)
137/* harmony export */ });
138/* harmony import */ var _vendor_observer_min__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vendor/observer.min */ "./js/vendor/observer.min.js");
139/* harmony import */ var _vendor_observer_min__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_vendor_observer_min__WEBPACK_IMPORTED_MODULE_0__);
140/* harmony import */ var _functions_form__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./functions/form */ "./js/functions/form.js");
141/* harmony import */ var _functions_masks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./functions/masks */ "./js/functions/masks.js");
142/* harmony import */ var _functions_conditions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./functions/conditions */ "./js/functions/conditions.js");
143/* harmony import */ var _functions_limitedCheckboxLists__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./functions/limitedCheckboxLists */ "./js/functions/limitedCheckboxLists.js");
144/* harmony import */ var _functions_repeaters__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./functions/repeaters */ "./js/functions/repeaters.js");
145/* harmony import */ var _file_multi__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./file-multi */ "./js/file-multi.js");
146
147
148
149
150
151
152
153const OBSERVER = _vendor_observer_min__WEBPACK_IMPORTED_MODULE_0___default().getInstance();
154addEventListener('DOMContentLoaded', () => {
155  initFormBuilder();
156});
157const initFormBuilder = (classeContainerFormBuilder = '.dynamicForm') => {
158  (0,_functions_form__WEBPACK_IMPORTED_MODULE_1__.formsPackage)(classeContainerFormBuilder);
159  (0,_functions_masks__WEBPACK_IMPORTED_MODULE_2__["default"])();
160  (0,_file_multi__WEBPACK_IMPORTED_MODULE_6__.initFileUpload)(classeContainerFormBuilder);
161  (0,_functions_conditions__WEBPACK_IMPORTED_MODULE_3__["default"])();
162  (0,_functions_limitedCheckboxLists__WEBPACK_IMPORTED_MODULE_4__["default"])();
163  (0,_functions_repeaters__WEBPACK_IMPORTED_MODULE_5__["default"])();
164};
165window.initFormBuilder = initFormBuilder;
166
167/***/ }),
168
169/***/ "./js/functions/addressGoogle.js":
170/*!***************************************!*\
171  !*** ./js/functions/addressGoogle.js ***!
172  \***************************************/
173/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
174
175"use strict";
176__webpack_require__.r(__webpack_exports__);
177/* harmony export */ __webpack_require__.d(__webpack_exports__, {
178/* harmony export */   "default": () => (/* binding */ AddressGoogle)
179/* harmony export */ });
180/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js");
181/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
182
183class AddressGoogle {
184  constructor(autocompleteField) {
185    this.autocompleteField = autocompleteField;
186    this.latitudeField = null;
187    this.longitudeField = null;
188    this.googleAutocomplete = null;
189    this.init();
190  }
191  init() {
192    if (!this.autocompleteField) {
193      return;
194    }
195    this.latitudeField = this.autocompleteField.getElementsByClassName('localisation_lat');
196    this.longitudeField = this.autocompleteField.getElementsByClassName('localisation_long');
197    this.googleAutocomplete = this.initGoogle();
198    if (this.latitudeField && this.longitudeField) {
199      // mise à jour des champs latitude et longitude si l’utilisateur clique
200      this.googleAutocomplete.addListener('place_changed', this.clicked.bind(this));
201
202      // si l’utilisateur tape une adresse, à la main, suite au click ou pas, on vide les champs latitude et longitude
203      // c’est que l’adresse n’est pas juste pour lui
204      this.autocompleteField.addEventListener('keyup', this.clearPositionField.bind(this));
205    }
206  }
207
208  // initialisation Google
209  initGoogle() {
210    return new google.maps.places.Autocomplete(this.autocompleteField, {
211      types: ['geocode'],
212      componentRestrictions: {
213        country: 'ca'
214      }
215    });
216  }
217  geolocate() {
218    if (navigator.geolocation) {
219      navigator.geolocation.getCurrentPosition(function (position) {
220        const geolocation = {
221          lat: position.coords.latitude,
222          lng: position.coords.longitude
223        };
224        this.restrictArea(geolocation, position.coords.accuracy);
225      });
226    }
227  }
228
229  // restriction à un cercle centré sur l’utilisateur
230  restrictArea(center, radius) {
231    const circle = new google.maps.Circle({
232      center,
233      radius
234    });
235    this.googleAutocomplete.setBounds(circle.getBounds());
236  }
237
238  // autocompletion au click
239  clicked() {
240    const place = this.googleAutocomplete.getPlace();
241
242    // recuperation latitude et longitude et ajout dans les champs
243    this.latitudeField.value = place.geometry.location.lat();
244    this.longitudeField.value = place.geometry.location.lng();
245    this.autocompleteField.value = place.formatted_address;
246  }
247
248  // vide les champs latitude et longitude
249  clearPositionField() {
250    this.latitudeField.value = null;
251    this.longitudeField.value = null;
252  }
253}
254
255/***/ }),
256
257/***/ "./js/functions/conditions.js":
258/*!************************************!*\
259  !*** ./js/functions/conditions.js ***!
260  \************************************/
261/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
262
263"use strict";
264__webpack_require__.r(__webpack_exports__);
265/* harmony export */ __webpack_require__.d(__webpack_exports__, {
266/* harmony export */   "default": () => (/* binding */ setConditions)
267/* harmony export */ });
268/* harmony import */ var _formbuilder__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../formbuilder */ "./js/formbuilder.js");
269/* provided dependency */ var $ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js");
270
271/* global $ */
272
273/*
274 Détermine si une condition est comblé pour le type de champs checkboxlist
275 */
276function matchCheckboxlistCondition(values, operator, conditionValues) {
277  let hide = true;
278  const conditionArray = JSON.parse(conditionValues);
279  let matchCount = 0;
280  values.forEach(value => {
281    if (conditionArray.includes(value)) {
282      matchCount += 1;
283    }
284  });
285  switch (operator) {
286    case 'only_one':
287      if (matchCount === 1 && values.length === 1) {
288        hide = false;
289      }
290      break;
291    case 'at_least_one':
292      if (matchCount >= 1) {
293        hide = false;
294      }
295      break;
296    case 'at_least_all':
297      if (matchCount === conditionArray.length) {
298        hide = false;
299      }
300      break;
301    case 'none':
302      if (matchCount === 0) {
303        hide = false;
304      }
305      break;
306    default:
307      // exact
308      if (JSON.stringify(values) === conditionValues) {
309        hide = false;
310      }
311  }
312  return hide;
313}
314
315/*
316 Détermine si une condition est comblé
317 */
318function matchCondition(conditionId, target, operator, conditionValue) {
319  let hide = true;
320
321  // On va chercher le type de champs
322  const type = target.getAttribute(`data-condition-field-type_${conditionId}`);
323  switch (type) {
324    case 'dropdown':
325      const select = $(target).find('select')[0]; // eslint-disable-line no-case-declarations
326      if (operator === 'equal' && select.value === conditionValue || operator === 'not_equal' && select.value !== conditionValue) {
327        hide = false;
328      }
329      break;
330    case 'radiolist':
331      const radioInputs = $(target).find('input'); // eslint-disable-line no-case-declarations
332      let currentValue = null; // eslint-disable-line no-case-declarations
333      for (let i = 0; i < radioInputs.length; i += 1) {
334        if (radioInputs[i].checked) {
335          currentValue = radioInputs[i].value;
336        }
337      }
338      if (operator === 'equal' && currentValue === conditionValue || operator === 'not_equal' && currentValue !== conditionValue) {
339        hide = false;
340      }
341      break;
342    case 'checkboxlist':
343      const checkboxInputs = $(target).find('input'); // eslint-disable-line no-case-declarations
344      let currentValues = []; // eslint-disable-line no-case-declarations, prefer-const
345      for (let i = 0; i < checkboxInputs.length; i += 1) {
346        if (checkboxInputs[i].checked) {
347          currentValues.push(checkboxInputs[i].value);
348        }
349      }
350      hide = matchCheckboxlistCondition(currentValues, operator, conditionValue);
351      break;
352    default:
353      // Checkbox
354      const checkbox = $(target).find('input')[0]; // eslint-disable-line no-case-declarations
355      if (operator === 'equal' && checkbox.checked || operator === 'not_equal' && checkbox.checked === false) {
356        hide = false;
357      }
358  }
359  return hide;
360}
361
362/*
363 Cache les champs conditionnels qui ne devrait pas être affichés selon les valeurs de départ des champs sources
364 */
365function initHiddenFields() {
366  // On prend tous les champs qui sont la source d'une condition
367  const sourceFields = document.querySelectorAll('[data-condition-ids]');
368  for (let i = 0; i < sourceFields.length; i += 1) {
369    const sourceConditionIds = sourceFields[i].dataset.conditionIds;
370    const sourceConditionArray = sourceConditionIds.split(',');
371    for (let k = 0; k < sourceConditionArray.length; k += 1) {
372      const value = sourceFields[i].getAttribute(`data-condition-value_${sourceConditionArray[k]}`);
373      const operator = sourceFields[i].getAttribute(`data-condition-operator_${sourceConditionArray[k]}`);
374
375      // On ne veux pas que les conditions des champs invisibles s'appliquent
376      let hide = true;
377      if (sourceFields[i].style.display === '' || sourceFields[i].style.display === 'block') {
378        hide = matchCondition(sourceConditionArray[k], sourceFields[i], operator, value);
379      }
380      if (hide) {
381        const fieldsToHide = document.querySelectorAll(`[data-parent-condition-id="${sourceConditionArray[k]}"]`);
382        for (let j = 0; j < fieldsToHide.length; j += 1) {
383          fieldsToHide[j].style.display = 'none';
384        }
385      }
386    }
387  }
388}
389
390/*
391 Permet aux champs sources de type 'Select' de trigger un changement
392 */
393function changeSelect(select) {
394  const DROPDOWN = select;
395  function triggerChange() {
396    const e = new Event('change', {
397      bubbles: true
398    });
399    DROPDOWN.dispatchEvent(e);
400  }
401  if (DROPDOWN) {
402    const OPTIONS = DROPDOWN.nextElementSibling.querySelectorAll('.dropdown-option');
403    _formbuilder__WEBPACK_IMPORTED_MODULE_0__.OBSERVER.add({
404      name: 'triggerChange',
405      event: 'click',
406      target: OPTIONS,
407      function: triggerChange
408    });
409    _formbuilder__WEBPACK_IMPORTED_MODULE_0__.OBSERVER.on('triggerChange');
410  }
411}
412function initSelects() {
413  const triggers = document.querySelectorAll('[data-condition-ids]');
414  triggers.forEach(trigger => {
415    const select = $(trigger).find('select');
416    if (select.length) {
417      changeSelect(select[0]);
418    }
419  });
420}
421
422/*
423 Comportement d'ajustement de la visibilité des champs
424 hideAll : Paramètre qui force la disparition des champs (dans le contexte qu'un champs source de condition est caché)
425 */
426function adjustFields(e, hideAll = false) {
427  // On va chercher le champs (dépend si c'est l'observer ou le récursif qui fait le call)
428  const field = e.currentTarget ? e.currentTarget : e;
429  const fieldConditionIds = field.dataset.conditionIds;
430  const fieldConditionArray = fieldConditionIds.split(',');
431  for (let k = 0; k < fieldConditionArray.length; k += 1) {
432    const value = field.getAttribute(`data-condition-value_${fieldConditionArray[k]}`);
433    const operator = field.getAttribute(`data-condition-operator_${fieldConditionArray[k]}`);
434    const hide = hideAll ? true : matchCondition(fieldConditionArray[k], field, operator, value);
435    const fieldsToAdjust = document.querySelectorAll(`[data-parent-condition-id="${fieldConditionArray[k]}"]`);
436    for (let i = 0; i < fieldsToAdjust.length; i += 1) {
437      if (hide) {
438        $(fieldsToAdjust[i]).hide();
439      } else {
440        $(fieldsToAdjust[i]).show();
441      }
442
443      // Si le champs affecté est la source d'une condition
444      if (fieldsToAdjust[i].dataset.conditionIds) {
445        adjustFields(fieldsToAdjust[i], hide);
446      }
447    }
448  }
449}
450
451/*
452 Pour mettre des observers sur les champs sources
453 */
454function setObservers() {
455  _formbuilder__WEBPACK_IMPORTED_MODULE_0__.OBSERVER.add({
456    name: 'conditions',
457    event: 'change',
458    target: '[data-condition-ids]',
459    function: adjustFields
460  });
461  _formbuilder__WEBPACK_IMPORTED_MODULE_0__.OBSERVER.on('conditions');
462}
463function setConditions() {
464  initHiddenFields();
465  initSelects();
466  setObservers();
467}
468
469/***/ }),
470
471/***/ "./js/functions/form.js":
472/*!******************************!*\
473  !*** ./js/functions/form.js ***!
474  \******************************/
475/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
476
477"use strict";
478__webpack_require__.r(__webpack_exports__);
479/* harmony export */ __webpack_require__.d(__webpack_exports__, {
480/* harmony export */   calendarInput: () => (/* binding */ calendarInput),
481/* harmony export */   formsPackage: () => (/* binding */ formsPackage),
482/* harmony export */   inputsAndTextareaLabel: () => (/* binding */ inputsAndTextareaLabel),
483/* harmony export */   tailSelect: () => (/* binding */ tailSelect),
484/* harmony export */   textareaHeight: () => (/* binding */ textareaHeight),
485/* harmony export */   timepicker: () => (/* binding */ timepicker)
486/* harmony export */ });
487/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js");
488/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
489/* harmony import */ var vanillajs_datepicker__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vanillajs-datepicker */ "./node_modules/vanillajs-datepicker/js/main.js");
490/* harmony import */ var eonasdan_bootstrap_datetimepicker__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! eonasdan-bootstrap-datetimepicker */ "./node_modules/eonasdan-bootstrap-datetimepicker/src/js/bootstrap-datetimepicker.js");
491/* harmony import */ var eonasdan_bootstrap_datetimepicker__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(eonasdan_bootstrap_datetimepicker__WEBPACK_IMPORTED_MODULE_2__);
492/* harmony import */ var _formbuilder__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../formbuilder */ "./js/formbuilder.js");
493/* harmony import */ var _addressGoogle__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./addressGoogle */ "./js/functions/addressGoogle.js");
494/* harmony import */ var _helper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./helper */ "./js/functions/helper.js");
495
496
497
498
499
500
501
502// Ajoute un attribut ayant la valeur du champ
503function inputsAndTextareaLabel(classeContainerFormBuilder) {
504  // eslint-disable-next-line max-len
505  const elementsString = `${classeContainerFormBuilder} input[type="text"],${classeContainerFormBuilder} input[type="tel"],${classeContainerFormBuilder} input[type="email"],${classeContainerFormBuilder} textarea`;
506  const formElements = document.querySelectorAll(elementsString);
507  const formElementsLength = formElements.length;
508  let i;
509  for (i = 0; i < formElementsLength; i += 1) {
510    formElements[i].parentNode.parentNode.dataset[`${formElements[i].tagName.toLowerCase()}value`] = formElements[i].value;
511  }
512  const setValue = e => {
513    e.target.parentNode.parentNode.dataset[`${e.target.tagName.toLowerCase()}value`] = e.target.value;
514  };
515  _formbuilder__WEBPACK_IMPORTED_MODULE_3__.OBSERVER.add({
516    name: 'inputsAndTextareaLabel',
517    event: 'input',
518    target: elementsString,
519    function: setValue
520  });
521  _formbuilder__WEBPACK_IMPORTED_MODULE_3__.OBSERVER.on('inputsAndTextareaLabel');
522}
523
524// Modification de la hauteur d'un textarea selon son contenu
525function textareaHeight(classeContainerFormBuilder) {
526  const onInput = e => {
527    e.currentTarget.style.height = '5px';
528    e.currentTarget.style.height = `${e.currentTarget.scrollHeight <= 43 ? 43 : e.currentTarget.scrollHeight}px`;
529  };
530  _formbuilder__WEBPACK_IMPORTED_MODULE_3__.OBSERVER.add({
531    name: 'textareaHeight',
532    event: 'input',
533    target: `${classeContainerFormBuilder} textarea`,
534    function: onInput
535  });
536  _formbuilder__WEBPACK_IMPORTED_MODULE_3__.OBSERVER.on('textareaHeight');
537}
538
539// Création du custom select (doc: https://github.com/pytesNET/tail.select)
540function tailSelect(classeContainerFormBuilder) {
541  const pathImagesIcons = '/plugins/blanko/forms/assets/images/icons/';
542  if (!(0,_helper__WEBPACK_IMPORTED_MODULE_5__["default"])()) {
543    // eslint-disable-next-line no-undef
544    tail.select(`${classeContainerFormBuilder} select`, {
545      animate: false
546    });
547  }
548
549  // Ajouter les images dans les options du Tail Select
550  let i;
551  let j;
552  const selectBoxes = document.querySelectorAll(`${classeContainerFormBuilder} .tail-select`);
553  const selectBoxesLength = selectBoxes.length;
554
555  // Looper dans chaques boites de sélections Tail Select
556  for (i = 0; i < selectBoxesLength; i += 1) {
557    const tailSelectItems = selectBoxes[i].querySelectorAll('.dropdown-option');
558    const nativeSelect = selectBoxes[i].previousElementSibling;
559    const nativeSelectItems = nativeSelect.querySelectorAll('option:not(:first-child)');
560
561    // Ajouter l'icone en symbole
562    const svgElem = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
563    const useElem = document.createElementNS('http://www.w3.org/2000/svg', 'use');
564    useElem.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', `${pathImagesIcons}symbols.svg#ico-pointer`);
565    svgElem.appendChild(useElem);
566    selectBoxes[i].appendChild(svgElem);
567
568    // Looper dans chaques item du Tail Select
569    for (j = 0; j < nativeSelectItems.length; j += 1) {
570      const imgPath = nativeSelectItems[j].dataset.image;
571      if (typeof imgPath !== 'undefined' && imgPath !== '') {
572        const newImage = document.createElement('img');
573        newImage.src = imgPath;
574        tailSelectItems[j].classList.add('has-image');
575        tailSelectItems[j].appendChild(newImage);
576      }
577    }
578  }
579}
580
581// Initialisation du champ de timepicker
582function timepicker(classeContainerFormBuilder) {
583  if (!(0,_helper__WEBPACK_IMPORTED_MODULE_5__["default"])()) {
584    jquery__WEBPACK_IMPORTED_MODULE_0___default()(`${classeContainerFormBuilder} .form-control.timepicker`).datetimepicker({
585      format: 'HH:mm',
586      icons: {
587        up: 'fa fa-chevron-up',
588        down: 'fa fa-chevron-down'
589      }
590    });
591  }
592}
593
594// Initialisation du champ de calendrier
595function calendarInput(classeContainerFormBuilder) {
596  // Si on est pas en mobile, mettre le calendrier en JS
597  if (!(0,_helper__WEBPACK_IMPORTED_MODULE_5__["default"])()) {
598    const datepickersWrapper = document.querySelectorAll(`${classeContainerFormBuilder} .js-datepickerWrapper`);
599    const datepickers = [];
600    vanillajs_datepicker__WEBPACK_IMPORTED_MODULE_1__.Datepicker.locales.fr = {
601      days: ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'],
602      daysShort: ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'],
603      daysMin: ['D', 'L', 'M', 'M', 'J', 'V', 'S'],
604      months: ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'],
605      monthsShort: ['Jan', 'Fév', 'Mar', 'Avr', 'Mai', 'Juin', 'Jui', 'Août', 'Sep', 'Oct', 'Nov', 'Déc'],
606      today: 'Aujourd\'hui',
607      monthsTitle: 'Mois',
608      clear: 'Effacer',
609      weekStart: 0,
610      format: 'dd/mm/yyyy'
611    };
612    for (let i = 0; i < datepickersWrapper.length; i += 1) {
613      datepickers.push(new vanillajs_datepicker__WEBPACK_IMPORTED_MODULE_1__.Datepicker(datepickersWrapper[i], {
614        language: 'fr',
615        prevArrow: '<svg><use xlink:href="/plugins/blanko/forms/assets/images/icons/symbols.svg#ico-pointer"></use></svg>',
616        nextArrow: '<svg><use xlink:href="/plugins/blanko/forms/assets/images/icons/symbols.svg#ico-pointer"></use></svg>',
617        format: 'dd MM yyyy',
618        todayHighlight: true
619      }));
620    }
621    const onFocus = e => {
622      const datepicker = e.target.parentElement.parentElement.querySelector(`${classeContainerFormBuilder} .js-datepickerWrapper`);
623      datepicker.classList.add('show');
624    };
625    const onChangeDate = e => {
626      for (let i = 0; i < datepickersWrapper.length; i += 1) {
627        if (e.currentTarget === datepickers[i].element) {
628          e.currentTarget.parentElement.querySelector('input').value = datepickers[i].getDate('dd MM yyyy');
629          e.currentTarget.classList.remove('show');
630        }
631      }
632    };
633    const closeCalendar = () => {
634      for (let i = 0; i < datepickersWrapper.length; i += 1) {
635        datepickersWrapper[i].classList.remove('show');
636      }
637    };
638    const preventClose = e => {
639      e.stopPropagation();
640    };
641    _formbuilder__WEBPACK_IMPORTED_MODULE_3__.OBSERVER.add({
642      name: 'input-calendar',
643      event: 'focus',
644      target: `${classeContainerFormBuilder} .js-input-calendar input`,
645      function: onFocus
646    });
647    _formbuilder__WEBPACK_IMPORTED_MODULE_3__.OBSERVER.add({
648      name: 'input-calendar',
649      event: 'click',
650      target: `${classeContainerFormBuilder} .js-input-calendar input`,
651      function: onFocus
652    });
653    _formbuilder__WEBPACK_IMPORTED_MODULE_3__.OBSERVER.add({
654      name: 'input-calendar',
655      event: 'changeDate',
656      target: `${classeContainerFormBuilder} .js-datepickerWrapper`,
657      function: onChangeDate
658    });
659    _formbuilder__WEBPACK_IMPORTED_MODULE_3__.OBSERVER.add({
660      name: 'input-calendar',
661      event: 'click',
662      function: closeCalendar
663    });
664    _formbuilder__WEBPACK_IMPORTED_MODULE_3__.OBSERVER.add({
665      name: 'input-calendar',
666      event: 'click',
667      target: `${classeContainerFormBuilder} .js-input-calendar`,
668      function: preventClose
669    });
670    _formbuilder__WEBPACK_IMPORTED_MODULE_3__.OBSERVER.on('input-calendar');
671
672    // Si on est en mobile, utiliser les calendriers en HTML5
673  } else {
674    document.querySelectorAll(`${classeContainerFormBuilder} .js-input-calendar input`).forEach(element => element.setAttribute('type', 'date'));
675  }
676}
677
678// Google Autocomplete pour le champ Adresse
679function addressAutocomplete(classeContainerFormBuilder) {
680  const adressFields = jquery__WEBPACK_IMPORTED_MODULE_0___default()(`${classeContainerFormBuilder} .localisation_field`).get();
681  adressFields.forEach(adressField => {
682    // eslint-disable-next-line no-new
683    new _addressGoogle__WEBPACK_IMPORTED_MODULE_4__["default"](adressField);
684  });
685}
686
687// Le package à appliquer pour les formulaires
688function formsPackage(classeContainerFormBuilder) {
689  inputsAndTextareaLabel(classeContainerFormBuilder);
690  textareaHeight(classeContainerFormBuilder);
691  // tailSelect(classeContainerFormBuilder);  // Déjà appelé dans le theme
692  timepicker(classeContainerFormBuilder);
693  // calendarInput(classeContainerFormBuilder);  // Déjà appelé dans le theme
694  addressAutocomplete(classeContainerFormBuilder);
695}
696
697/***/ }),
698
699/***/ "./js/functions/helper.js":
700/*!********************************!*\
701  !*** ./js/functions/helper.js ***!
702  \********************************/
703/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
704
705"use strict";
706__webpack_require__.r(__webpack_exports__);
707/* harmony export */ __webpack_require__.d(__webpack_exports__, {
708/* harmony export */   "default": () => (/* binding */ isMobile)
709/* harmony export */ });
710// Retourne si le site est ouvert dans un appareil mobile
711function isMobile() {
712  let condition = false;
713  if (/Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
714    condition = true;
715  }
716  return condition;
717}
718
719/***/ }),
720
721/***/ "./js/functions/limitedCheckboxLists.js":
722/*!**********************************************!*\
723  !*** ./js/functions/limitedCheckboxLists.js ***!
724  \**********************************************/
725/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
726
727"use strict";
728__webpack_require__.r(__webpack_exports__);
729/* harmony export */ __webpack_require__.d(__webpack_exports__, {
730/* harmony export */   "default": () => (/* binding */ limitedCheckboxLists)
731/* harmony export */ });
732/* harmony import */ var _formbuilder__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../formbuilder */ "./js/formbuilder.js");
733
734function limitedCheckboxLists() {
735  const onChange = e => {
736    // Read Choice limit
737    const limitedCheckbox = e.currentTarget;
738    const limitedCheckboxContainer = limitedCheckbox.closest('.js-limited-chexboxlist');
739    let limit = 0;
740    if (limitedCheckboxContainer.hasAttribute('data-choice-limit')) {
741      limit = limitedCheckboxContainer.dataset.choiceLimit;
742    }
743
744    // No Limit Provided.
745    if (!limit) return;
746    const checkedCheckbox = limitedCheckboxContainer.querySelectorAll('input[type="checkbox"]:checked');
747    const notCheckedCheckbox = limitedCheckboxContainer.querySelectorAll('input[type="checkbox"]:not(:checked)');
748    const disabledCheckboxLabel = limitedCheckboxContainer.querySelectorAll('.c-checkbox-field__label--disabled');
749    if (checkedCheckbox.length >= limit) {
750      // Disable all not check
751      for (let i = 0; i < notCheckedCheckbox.length; i += 1) {
752        notCheckedCheckbox[i].closest('label').classList.add('c-checkbox-field__label--disabled');
753      }
754    } else {
755      // Enable all disabled
756      for (let i = 0; i < disabledCheckboxLabel.length; i += 1) {
757        disabledCheckboxLabel[i].classList.remove('c-checkbox-field__label--disabled');
758      }
759    }
760  };
761  _formbuilder__WEBPACK_IMPORTED_MODULE_0__.OBSERVER.add({
762    name: 'limitedCheckboxLists',
763    event: 'change',
764    target: '.js-limited-chexboxlist input[type="checkbox"]',
765    function: onChange
766  });
767  _formbuilder__WEBPACK_IMPORTED_MODULE_0__.OBSERVER.on('limitedCheckboxLists');
768}
769
770/***/ }),
771
772/***/ "./js/functions/masks.js":
773/*!*******************************!*\
774  !*** ./js/functions/masks.js ***!
775  \*******************************/
776/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
777
778"use strict";
779__webpack_require__.r(__webpack_exports__);
780/* harmony export */ __webpack_require__.d(__webpack_exports__, {
781/* harmony export */   "default": () => (/* binding */ masksPackage)
782/* harmony export */ });
783/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js");
784/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
785/* harmony import */ var jquery_mask_plugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! jquery-mask-plugin */ "./node_modules/jquery-mask-plugin/dist/jquery.mask.js");
786/* harmony import */ var jquery_mask_plugin__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(jquery_mask_plugin__WEBPACK_IMPORTED_MODULE_1__);
787
788
789
790// Le formatage du numéro de téléphone
791function formatPhone() {
792  jquery__WEBPACK_IMPORTED_MODULE_0___default()('.js-mask-phone').mask('000 000-0000');
793}
794
795// Le formatage du code postal
796function formatPostalCode() {
797  jquery__WEBPACK_IMPORTED_MODULE_0___default()('.js-mask-postal-code').mask('Z0Z 0Z0', {
798    translation: {
799      Z: {
800        pattern: /[A-Z, a-z]/
801      }
802    }
803  });
804  // Forcer les majuscules
805  jquery__WEBPACK_IMPORTED_MODULE_0___default()('.js-mask-postal-code').keyup(function keyup() {
806    jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).val(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).val().toUpperCase());
807  });
808}
809
810// Le package à appliquer pour les masques
811function masksPackage() {
812  formatPhone();
813  formatPostalCode();
814}
815
816/***/ }),
817
818/***/ "./js/functions/repeaters.js":
819/*!***********************************!*\
820  !*** ./js/functions/repeaters.js ***!
821  \***********************************/
822/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
823
824"use strict";
825__webpack_require__.r(__webpack_exports__);
826/* harmony export */ __webpack_require__.d(__webpack_exports__, {
827/* harmony export */   "default": () => (/* binding */ repeaterButtons)
828/* harmony export */ });
829/* harmony import */ var _formbuilder__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../formbuilder */ "./js/formbuilder.js");
830/* provided dependency */ var $ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js");
831/* eslint-disable */
832
833function incrementClone(clone, number) {
834  clone.dataset.sectionNumber = number;
835  clone.querySelector('#js-repeater-number').innerHTML = number;
836
837  // Incrémentation des 'name' et 'id' des inputs (+ vidage des valeurs)
838  const repeated_inputs = clone.querySelectorAll('input');
839  repeated_inputs.forEach(input => {
840    if (input.name.slice(-2) == '[]') {
841      input.name = input.name.replace(input.name.slice(-4, -2), `_${number}`);
842    } else {
843      input.name = input.name.replace(input.name.slice(-2), `_${number}`);
844    }
845    input.id = input.id.replace(input.id.slice(-2), `_${number}`);
846
847    // Vidage des valeurs clonées
848    if (input.type == 'checkbox' || input.type == 'radio') {
849      // Cases
850      input.checked = false;
851    } else {
852      // Texte
853      input.value = '';
854    }
855  });
856
857  // Incrémentation des 'name' et 'id' des textareas (+ vidage des valeurs)
858  const repeated_textareas = clone.querySelectorAll('textarea');
859  repeated_textareas.forEach(textarea => {
860    textarea.id = textarea.id.replace(textarea.id.slice(-2), `_${number}`);
861    textarea.name = textarea.name.replace(textarea.name.slice(-2), `_${number}`);
862    textarea.value = '';
863    textarea.style.height = null;
864  });
865
866  // Incrémentation des 'for' des labels
867  const repeated_labels = clone.querySelectorAll('label');
868  repeated_labels.forEach(label => {
869    const forAttribute = label.getAttribute('for');
870    if (forAttribute) {
871      label.setAttribute('for', forAttribute.replace(forAttribute.slice(-2), `_${number}`));
872    }
873  });
874
875  // Incrémentation des 'data-validate-for' des zones d'erreur
876  const repeated_validate = clone.querySelectorAll('.c-form-error');
877  repeated_validate.forEach(validate => {
878    validate.dataset.validateFor = validate.dataset.validateFor.replace(validate.dataset.validateFor.slice(-2), `_${number}`);
879  });
880
881  // Si on a des selects, suppression des tail selects pour les réinitialiser comme il faut par la suite (+ vidage des valeurs)
882  const tomSelects = clone.querySelectorAll('.ts-wrapper');
883  const selects = clone.querySelectorAll('select');
884  if (tomSelects.length && selects.length) {
885    tomSelects.forEach(tomSelect => {
886      tomSelect.remove();
887    });
888    selects.forEach(select => {
889      select.id = select.id.replace(select.id.slice(-2), `_${number}`);
890      select.name = select.name.replace(select.name.slice(-2), `_${number}`);
891      select.classList.remove("tomselected");
892      select.classList.remove("ts-hidden-accessible");
893
894      // TomSelect change l'ordre des options du select de base, donc on doit règler l'ordre grâce aux data-order
895      var tmpAry = new Array();
896      for (var i = 0; i < select.options.length; i++) {
897        tmpAry[i] = new Array();
898        tmpAry[i][0] = select.options[i].text;
899        tmpAry[i][1] = select.options[i].value;
900        tmpAry[i][2] = select.options[i].dataset.order;
901      }
902      tmpAry.sort(function (a, b) {
903        return a[2] - b[2];
904      });
905      while (select.options.length > 0) {
906        select.options[0] = null;
907      }
908      for (var i = 0; i < tmpAry.length; i++) {
909        var op = new Option(tmpAry[i][0], tmpAry[i][1]);
910        op.dataset.order = tmpAry[i][2];
911        select.options[i] = op;
912      }
913    });
914  }
915
916  // Si on a un/des champs calendrier, suppression des datepicker wrappers pour les réinitialiser comme il faut par la suite
917  const calendars = clone.querySelectorAll('.js-datepickerWrapper');
918  if (calendars.length) {
919    calendars.forEach(calendar => {
920      calendar.remove();
921    });
922  }
923  return clone;
924}
925function addButton(e) {
926  const section = e.target.closest('.js-repeater-section'); // Section d'origine
927  let clone = section.cloneNode(true); // Clone de la section
928  $('.js-repeater-buttons', section).css("display", "none"); // Retrait du bouton d'ajout sur la section d'origine
929
930  let number = section.dataset.sectionNumber; // Position de la section d'origine
931  number++; // Incrémentation
932
933  clone = incrementClone(clone, number); // Mettre le nouvel incrément dans la structure du clone
934
935  $('.js-repeater-remove', clone).css("display", "block"); // Ajout du bouton de suppression sur le clone
936
937  if (clone.dataset.maxSections && number >= clone.dataset.maxSections) {
938    // Maximum de section atteint
939    $('.js-repeater-add', clone).css("display", "none"); // Retrait du bouton d'ajout
940  }
941  section.after(clone); // Ajout du clone en dessous de la section d'origine
942
943  removeButtons();
944  refreshScripts(`[data-section-number="${number}"]`);
945}
946function removeButton(e) {
947  const section = e.target.closest('.js-repeater-section'); // Section à supprimer
948  const prevSection = section.previousSibling; // Section précédente
949
950  section.remove(); // Suppression de la section
951  $('.js-repeater-buttons', prevSection).css("display", "block");
952  removeButtons();
953}
954function refreshScripts(newSection) {
955  tomSelect(newSection);
956  initFormBuilder(newSection);
957}
958function removeButtons() {
959  _formbuilder__WEBPACK_IMPORTED_MODULE_0__.OBSERVER.remove('add-button');
960  _formbuilder__WEBPACK_IMPORTED_MODULE_0__.OBSERVER.remove('remove-button');
961}
962function repeaterButtons() {
963  _formbuilder__WEBPACK_IMPORTED_MODULE_0__.OBSERVER.add({
964    name: 'add-button',
965    event: 'click',
966    target: '.js-repeater-add-button',
967    function: addButton
968  });
969  _formbuilder__WEBPACK_IMPORTED_MODULE_0__.OBSERVER.on('add-button');
970  _formbuilder__WEBPACK_IMPORTED_MODULE_0__.OBSERVER.add({
971    name: 'remove-button',
972    event: 'click',
973    target: '.js-repeater-remove-button',
974    function: removeButton
975  });
976  _formbuilder__WEBPACK_IMPORTED_MODULE_0__.OBSERVER.on('remove-button');
977}
978
979/***/ }),
980
981/***/ "./js/vendor/observer.min.js":
982/*!***********************************!*\
983  !*** ./js/vendor/observer.min.js ***!
984  \***********************************/
985/***/ ((module) => {
986
987!function (t, e) {
988   true ? module.exports = e() : 0;
989}(window, function () {
990  return function (t) {
991    var e = {};
992    function n(i) {
993      if (e[i]) return e[i].exports;
994      var s = e[i] = {
995        i: i,
996        l: !1,
997        exports: {}
998      };
999      return t[i].call(s.exports, s, s.exports, n), s.l = !0, s.exports;
1000    }
1001    return n.m = t, n.c = e, n.d = function (t, e, i) {
1002      n.o(t, e) || Object.defineProperty(t, e, {
1003        enumerable: !0,
1004        get: i
1005      });
1006    }, n.r = function (t) {
1007      "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, {
1008        value: "Module"
1009      }), Object.defineProperty(t, "__esModule", {
1010        value: !0
1011      });
1012    }, n.t = function (t, e) {
1013      if (1 & e && (t = n(t)), 8 & e) return t;
1014      if (4 & e && "object" == typeof t && t && t.__esModule) return t;
1015      var i = Object.create(null);
1016      if (n.r(i), Object.defineProperty(i, "default", {
1017        enumerable: !0,
1018        value: t
1019      }), 2 & e && "string" != typeof t) for (var s in t) n.d(i, s, function (e) {
1020        return t[e];
1021      }.bind(null, s));
1022      return i;
1023    }, n.n = function (t) {
1024      var e = t && t.__esModule ? function () {
1025        return t.default;
1026      } : function () {
1027        return t;
1028      };
1029      return n.d(e, "a", e), e;
1030    }, n.o = function (t, e) {
1031      return Object.prototype.hasOwnProperty.call(t, e);
1032    }, n.p = "", n(n.s = 0);
1033  }([function (t, e, n) {
1034    "use strict";
1035
1036    t.exports = n(1).default;
1037  }, function (t, e, n) {
1038    "use strict";
1039
1040    n.r(e), n.d(e, "default", function () {
1041      return s;
1042    });
1043    const i = t => {
1044      let e,
1045        n = 0;
1046      for (e in t) t.hasOwnProperty(e) && n++;
1047      return n;
1048    };
1049    class s {
1050      constructor() {
1051        this.eventList = {};
1052      }
1053      static getInstance() {
1054        return s.instance || (this.instance = new s()), this.instance;
1055      }
1056      on(t) {
1057        this.toggle(e => {
1058          this.eventList[e].name === t && this.condition("addEventListener", !0, e);
1059        });
1060      }
1061      off(t) {
1062        this.toggle(e => {
1063          this.eventList[e].name === t && this.condition("removeEventListener", !1, e);
1064        });
1065      }
1066      allOn() {
1067        this.toggle(t => this.condition("addEventListener", !0, t));
1068      }
1069      allOff() {
1070        this.toggle(t => this.condition("removeEventListener", !1, t));
1071      }
1072      refresh(t) {
1073        this.off(t), this.on(t);
1074      }
1075      refreshAll() {
1076        this.allOff(), this.allOn();
1077      }
1078      add(t) {
1079        const e = "event" + i(this.eventList);
1080        this.eventList[e] = {}, this.eventList[e].name = t.name, this.eventList[e].active = !1, this.eventList[e].event = t.event, this.eventList[e].function = t.function, this.eventList[e].target = void 0 !== t.target ? t.target : "", this.eventList[e].root = void 0 !== t.root ? t.root : document, this.eventList[e].numberOfIteration = 0;
1081      }
1082      remove(t) {
1083        this.toggle(e => {
1084          this.eventList[e].name === t && (this.eventList[e].active ? this.throwMessage(`You must turn off the event with the name '${t}' before removing it`) : delete this.eventList[e]);
1085        });
1086      }
1087      removeAll() {
1088        let t = !0;
1089        this.toggle(e => {
1090          this.eventList[e].active && (t = !1);
1091        }), t ? this.eventList = {} : this.throwMessage("You must turn off all events before clearing clearing the list");
1092      }
1093      throwMessage(t) {
1094        console.warn("Observer => " + t);
1095      }
1096      toggle(t) {
1097        let e, n;
1098        const s = i(this.eventList);
1099        for (e = 0; e < s; e++) n = "event" + e, t(n);
1100      }
1101      condition(t, e, n) {
1102        let i = this.eventList[n].target;
1103        const s = "addEventListener" === t ? "+" : "-",
1104          o = {
1105            "+": t => t + 1,
1106            "-": t => t - 1
1107          };
1108        let r;
1109        if ("addEventListener" === t ? !this.eventList[n].active : this.eventList[n].active) if (this.eventList[n].active = e, "string" == typeof i) {
1110          if ("document" === i) document[t](this.eventList[n].event, this.eventList[n].function), this.eventList[n].numberOfIteration = o[s](this.eventList[n].numberOfIteration);else if ("window" === i) window.window[t](this.eventList[n].event, this.eventList[n].function), this.eventList[n].numberOfIteration = o[s](this.eventList[n].numberOfIteration);else if ("string" == typeof i && "" === i) window[t](this.eventList[n].event, this.eventList[n].function), this.eventList[n].numberOfIteration = o[s](this.eventList[n].numberOfIteration);else if ("string" == typeof i) {
1111            let e = this.eventList[n].root.querySelectorAll(i),
1112              f = e.length;
1113            for (r = 0; r < f; r++) e[r][t](this.eventList[n].event, this.eventList[n].function), this.eventList[n].numberOfIteration = o[s](this.eventList[n].numberOfIteration);
1114          }
1115        } else if (i instanceof NodeList) {
1116          let e = [...i],
1117            f = e.length;
1118          for (r = 0; r < f; r++) e[r][t](this.eventList[n].event, this.eventList[n].function), this.eventList[n].numberOfIteration = o[s](this.eventList[n].numberOfIteration);
1119        } else i instanceof HTMLElement && (i[t](this.eventList[n].event, this.eventList[n].function), this.eventList[n].numberOfIteration = o[s](this.eventList[n].numberOfIteration));
1120      }
1121      get list() {
1122        return this.eventList;
1123      }
1124    }
1125  }]);
1126});
1127
1128/***/ }),
1129
vendor: 105,921 bytes, lines 1130-3743
1130/***/ "./node_modules/eonasdan-bootstrap-datetimepicker/src/js/bootstrap-datetimepicker.js":
1131/*!*******************************************************************************************!*\
1132  !*** ./node_modules/eonasdan-bootstrap-datetimepicker/src/js/bootstrap-datetimepicker.js ***!
1133  \*******************************************************************************************/
1134/***/ ((module, exports, __webpack_require__) => {
1135
1136var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
1137  * Bootstrap Datetime Picker v4.17.49
1138  * Copyright 2015-2020 Jonathan Peterson
1139  * Licensed under MIT (https://github.com/Eonasdan/bootstrap-datetimepicker/blob/master/LICENSE)
1140  */
1141/*global define:false */
1142/*global exports:false */
1143/*global require:false */
1144/*global jQuery:false */
1145/*global moment:false */
1146(function (factory) {
1147    'use strict';
1148    if (true) {
1149        // AMD is used - Register as an anonymous module.
1150        !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js"), __webpack_require__(/*! moment */ "./node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
1151		__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
1152		(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
1153		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
1154    } else // removed by dead control flow
1155{}
1156}(function ($, moment) {
1157    'use strict';
1158    if (!moment) {
1159        throw new Error('bootstrap-datetimepicker requires Moment.js to be loaded first');
1160    }
1161
1162    var dateTimePicker = function (element, options) {
1163        var picker = {},
1164            date,
1165            viewDate,
1166            unset = true,
1167            input,
1168            component = false,
1169            widget = false,
1170            use24Hours,
1171            minViewModeNumber = 0,
1172            actualFormat,
1173            parseFormats,
1174            currentViewMode,
1175            datePickerModes = [
1176                {
1177                    clsName: 'days',
1178                    navFnc: 'M',
1179                    navStep: 1
1180                },
1181                {
1182                    clsName: 'months',
1183                    navFnc: 'y',
1184                    navStep: 1
1185                },
1186                {
1187                    clsName: 'years',
1188                    navFnc: 'y',
1189                    navStep: 10
1190                },
1191                {
1192                    clsName: 'decades',
1193                    navFnc: 'y',
1194                    navStep: 100
1195                }
1196            ],
1197            viewModes = ['days', 'months', 'years', 'decades'],
1198            verticalModes = ['top', 'bottom', 'auto'],
1199            horizontalModes = ['left', 'right', 'auto'],
1200            toolbarPlacements = ['default', 'top', 'bottom'],
1201            keyMap = {
1202                'up': 38,
1203                38: 'up',
1204                'down': 40,
1205                40: 'down',
1206                'left': 37,
1207                37: 'left',
1208                'right': 39,
1209                39: 'right',
1210                'tab': 9,
1211                9: 'tab',
1212                'escape': 27,
1213                27: 'escape',
1214                'enter': 13,
1215                13: 'enter',
1216                'pageUp': 33,
1217                33: 'pageUp',
1218                'pageDown': 34,
1219                34: 'pageDown',
1220                'shift': 16,
1221                16: 'shift',
1222                'control': 17,
1223                17: 'control',
1224                'space': 32,
1225                32: 'space',
1226                't': 84,
1227                84: 't',
1228                'delete': 46,
1229                46: 'delete'
1230            },
1231            keyState = {},
1232
1233            /********************************************************************************
1234             *
1235             * Private functions
1236             *
1237             ********************************************************************************/
1238
1239            hasTimeZone = function () {
1240                return moment.tz !== undefined && options.timeZone !== undefined && options.timeZone !== null && options.timeZone !== '';
1241            },
1242
1243            getMoment = function (d) {
1244                var returnMoment;
1245
1246                if (d === undefined || d === null) {
1247                    returnMoment = moment(); //TODO should this use format? and locale?
1248                } else if (moment.isDate(d) || moment.isMoment(d)) {
1249                    // If the date that is passed in is already a Date() or moment() object,
1250                    // pass it directly to moment.
1251                    returnMoment = moment(d);
1252                } else if (hasTimeZone()) { // There is a string to parse and a default time zone
1253                    // parse with the tz function which takes a default time zone if it is not in the format string
1254                    returnMoment = moment.tz(d, parseFormats, options.useStrict, options.timeZone);
1255                } else {
1256                    returnMoment = moment(d, parseFormats, options.useStrict);
1257                }
1258
1259                if (hasTimeZone()) {
1260                    returnMoment.tz(options.timeZone);
1261                }
1262
1263                return returnMoment;
1264            },
1265
1266            isEnabled = function (granularity) {
1267                if (typeof granularity !== 'string' || granularity.length > 1) {
1268                    throw new TypeError('isEnabled expects a single character string parameter');
1269                }
1270                switch (granularity) {
1271                    case 'y':
1272                        return actualFormat.indexOf('Y') !== -1;
1273                    case 'M':
1274                        return actualFormat.indexOf('M') !== -1;
1275                    case 'd':
1276                        return actualFormat.toLowerCase().indexOf('d') !== -1;
1277                    case 'h':
1278                    case 'H':
1279                        return actualFormat.toLowerCase().indexOf('h') !== -1;
1280                    case 'm':
1281                        return actualFormat.indexOf('m') !== -1;
1282                    case 's':
1283                        return actualFormat.indexOf('s') !== -1;
1284                    default:
1285                        return false;
1286                }
1287            },
1288
1289            hasTime = function () {
1290                return (isEnabled('h') || isEnabled('m') || isEnabled('s'));
1291            },
1292
1293            hasDate = function () {
1294                return (isEnabled('y') || isEnabled('M') || isEnabled('d'));
1295            },
1296
1297            getDatePickerTemplate = function () {
1298                var headTemplate = $('<thead>')
1299                        .append($('<tr>')
1300                            .append($('<th>').addClass('prev').attr('data-action', 'previous')
1301                                .append($('<span>').addClass(options.icons.previous))
1302                                )
1303                            .append($('<th>').addClass('picker-switch').attr('data-action', 'pickerSwitch').attr('colspan', (options.calendarWeeks ? '6' : '5')))
1304                            .append($('<th>').addClass('next').attr('data-action', 'next')
1305                                .append($('<span>').addClass(options.icons.next))
1306                                )
1307                            ),
1308                    contTemplate = $('<tbody>')
1309                        .append($('<tr>')
1310                            .append($('<td>').attr('colspan', (options.calendarWeeks ? '8' : '7')))
1311                            );
1312
1313                return [
1314                    $('<div>').addClass('datepicker-days')
1315                        .append($('<table>').addClass('table-condensed')
1316                            .append(headTemplate)
1317                            .append($('<tbody>'))
1318                            ),
1319                    $('<div>').addClass('datepicker-months')
1320                        .append($('<table>').addClass('table-condensed')
1321                            .append(headTemplate.clone())
1322                            .append(contTemplate.clone())
1323                            ),
1324                    $('<div>').addClass('datepicker-years')
1325                        .append($('<table>').addClass('table-condensed')
1326                            .append(headTemplate.clone())
1327                            .append(contTemplate.clone())
1328                            ),
1329                    $('<div>').addClass('datepicker-decades')
1330                        .append($('<table>').addClass('table-condensed')
1331                            .append(headTemplate.clone())
1332                            .append(contTemplate.clone())
1333                            )
1334                ];
1335            },
1336
1337            getTimePickerMainTemplate = function () {
1338                var topRow = $('<tr>'),
1339                    middleRow = $('<tr>'),
1340                    bottomRow = $('<tr>');
1341
1342                if (isEnabled('h')) {
1343                    topRow.append($('<td>')
1344                        .append($('<a>').attr({ href: '#', tabindex: '-1', 'title': options.tooltips.incrementHour }).addClass('btn').attr('data-action', 'incrementHours').append($('<span>').addClass(options.icons.up))));
1345                    middleRow.append($('<td>')
1346                        .append($('<span>').addClass('timepicker-hour').attr({ 'data-time-component': 'hours', 'title': options.tooltips.pickHour }).attr('data-action', 'showHours')));
1347                    bottomRow.append($('<td>')
1348                        .append($('<a>').attr({ href: '#', tabindex: '-1', 'title': options.tooltips.decrementHour }).addClass('btn').attr('data-action', 'decrementHours').append($('<span>').addClass(options.icons.down))));
1349                }
1350                if (isEnabled('m')) {
1351                    if (isEnabled('h')) {
1352                        topRow.append($('<td>').addClass('separator'));
1353                        middleRow.append($('<td>').addClass('separator').html(':'));
1354                        bottomRow.append($('<td>').addClass('separator'));
1355                    }
1356                    topRow.append($('<td>')
1357                        .append($('<a>').attr({ href: '#', tabindex: '-1', 'title': options.tooltips.incrementMinute }).addClass('btn').attr('data-action', 'incrementMinutes')
1358                            .append($('<span>').addClass(options.icons.up))));
1359                    middleRow.append($('<td>')
1360                        .append($('<span>').addClass('timepicker-minute').attr({ 'data-time-component': 'minutes', 'title': options.tooltips.pickMinute }).attr('data-action', 'showMinutes')));
1361                    bottomRow.append($('<td>')
1362                        .append($('<a>').attr({ href: '#', tabindex: '-1', 'title': options.tooltips.decrementMinute }).addClass('btn').attr('data-action', 'decrementMinutes')
1363                            .append($('<span>').addClass(options.icons.down))));
1364                }
1365                if (isEnabled('s')) {
1366                    if (isEnabled('m')) {
1367                        topRow.append($('<td>').addClass('separator'));
1368                        middleRow.append($('<td>').addClass('separator').html(':'));
1369                        bottomRow.append($('<td>').addClass('separator'));
1370                    }
1371                    topRow.append($('<td>')
1372                        .append($('<a>').attr({ href: '#', tabindex: '-1', 'title': options.tooltips.incrementSecond }).addClass('btn').attr('data-action', 'incrementSeconds')
1373                            .append($('<span>').addClass(options.icons.up))));
1374                    middleRow.append($('<td>')
1375                        .append($('<span>').addClass('timepicker-second').attr({ 'data-time-component': 'seconds', 'title': options.tooltips.pickSecond }).attr('data-action', 'showSeconds')));
1376                    bottomRow.append($('<td>')
1377                        .append($('<a>').attr({ href: '#', tabindex: '-1', 'title': options.tooltips.decrementSecond }).addClass('btn').attr('data-action', 'decrementSeconds')
1378                            .append($('<span>').addClass(options.icons.down))));
1379                }
1380
1381                if (!use24Hours) {
1382                    topRow.append($('<td>').addClass('separator'));
1383                    middleRow.append($('<td>')
1384                        .append($('<button>').addClass('btn btn-primary').attr({ 'data-action': 'togglePeriod', tabindex: '-1', 'title': options.tooltips.togglePeriod })));
1385                    bottomRow.append($('<td>').addClass('separator'));
1386                }
1387
1388                return $('<div>').addClass('timepicker-picker')
1389                    .append($('<table>').addClass('table-condensed')
1390                        .append([topRow, middleRow, bottomRow]));
1391            },
1392
1393            getTimePickerTemplate = function () {
1394                var hoursView = $('<div>').addClass('timepicker-hours')
1395                        .append($('<table>').addClass('table-condensed')),
1396                    minutesView = $('<div>').addClass('timepicker-minutes')
1397                        .append($('<table>').addClass('table-condensed')),
1398                    secondsView = $('<div>').addClass('timepicker-seconds')
1399                        .append($('<table>').addClass('table-condensed')),
1400                    ret = [getTimePickerMainTemplate()];
1401
1402                if (isEnabled('h')) {
1403                    ret.push(hoursView);
1404                }
1405                if (isEnabled('m')) {
1406                    ret.push(minutesView);
1407                }
1408                if (isEnabled('s')) {
1409                    ret.push(secondsView);
1410                }
1411
1412                return ret;
1413            },
1414
1415            getToolbar = function () {
1416                var row = [];
1417                if (options.showTodayButton) {
1418                    row.push($('<td>').append($('<a>').attr({ 'data-action': 'today', 'title': options.tooltips.today }).append($('<span>').addClass(options.icons.today))));
1419                }
1420                if (!options.sideBySide && hasDate() && hasTime()) {
1421                    row.push($('<td>').append($('<a>').attr({ 'data-action': 'togglePicker', 'title': options.tooltips.selectTime }).append($('<span>').addClass(options.icons.time))));
1422                }
1423                if (options.showClear) {
1424                    row.push($('<td>').append($('<a>').attr({ 'data-action': 'clear', 'title': options.tooltips.clear }).append($('<span>').addClass(options.icons.clear))));
1425                }
1426                if (options.showClose) {
1427                    row.push($('<td>').append($('<a>').attr({ 'data-action': 'close', 'title': options.tooltips.close }).append($('<span>').addClass(options.icons.close))));
1428                }
1429                return $('<table>').addClass('table-condensed').append($('<tbody>').append($('<tr>').append(row)));
1430            },
1431
1432            getTemplate = function () {
1433                var template = $('<div>').addClass('bootstrap-datetimepicker-widget dropdown-menu'),
1434                    dateView = $('<div>').addClass('datepicker').append(getDatePickerTemplate()),
1435                    timeView = $('<div>').addClass('timepicker').append(getTimePickerTemplate()),
1436                    content = $('<ul>').addClass('list-unstyled'),
1437                    toolbar = $('<li>').addClass('picker-switch' + (options.collapse ? ' accordion-toggle' : '')).append(getToolbar());
1438
1439                if (options.inline) {
1440                    template.removeClass('dropdown-menu');
1441                }
1442
1443                if (use24Hours) {
1444                    template.addClass('usetwentyfour');
1445                }
1446
1447                if (isEnabled('s') && !use24Hours) {
1448                    template.addClass('wider');
1449                }
1450
1451                if (options.sideBySide && hasDate() && hasTime()) {
1452                    template.addClass('timepicker-sbs');
1453                    if (options.toolbarPlacement === 'top') {
1454                        template.append(toolbar);
1455                    }
1456                    template.append(
1457                        $('<div>').addClass('row')
1458                            .append(dateView.addClass('col-md-6'))
1459                            .append(timeView.addClass('col-md-6'))
1460                    );
1461                    if (options.toolbarPlacement === 'bottom') {
1462                        template.append(toolbar);
1463                    }
1464                    return template;
1465                }
1466
1467                if (options.toolbarPlacement === 'top') {
1468                    content.append(toolbar);
1469                }
1470                if (hasDate()) {
1471                    content.append($('<li>').addClass((options.collapse && hasTime() ? 'collapse in' : '')).append(dateView));
1472                }
1473                if (options.toolbarPlacement === 'default') {
1474                    content.append(toolbar);
1475                }
1476                if (hasTime()) {
1477                    content.append($('<li>').addClass((options.collapse && hasDate() ? 'collapse' : '')).append(timeView));
1478                }
1479                if (options.toolbarPlacement === 'bottom') {
1480                    content.append(toolbar);
1481                }
1482                return template.append(content);
1483            },
1484
1485            dataToOptions = function () {
1486                var eData,
1487                    dataOptions = {};
1488
1489                if (element.is('input') || options.inline) {
1490                    eData = element.data();
1491                } else {
1492                    eData = element.find('input').data();
1493                }
1494
1495                if (eData.dateOptions && eData.dateOptions instanceof Object) {
1496                    dataOptions = $.extend(true, dataOptions, eData.dateOptions);
1497                }
1498
1499                $.each(options, function (key) {
1500                    var attributeName = 'date' + key.charAt(0).toUpperCase() + key.slice(1);
1501                    if (eData[attributeName] !== undefined) {
1502                        dataOptions[key] = eData[attributeName];
1503                    }
1504                });
1505                return dataOptions;
1506            },
1507
1508            place = function () {
1509                var position = (component || element).position(),
1510                    offset = (component || element).offset(),
1511                    vertical = options.widgetPositioning.vertical,
1512                    horizontal = options.widgetPositioning.horizontal,
1513                    parent;
1514
1515                if (options.widgetParent) {
1516                    parent = options.widgetParent.append(widget);
1517                } else if (element.is('input')) {
1518                    parent = element.after(widget).parent();
1519                } else if (options.inline) {
1520                    parent = element.append(widget);
1521                    return;
1522                } else {
1523                    parent = element;
1524                    element.children().first().after(widget);
1525                }
1526
1527                // Top and bottom logic
1528                if (vertical === 'auto') {
1529                    if (offset.top + widget.height() * 1.5 >= $(window).height() + $(window).scrollTop() &&
1530                        widget.height() + element.outerHeight() < offset.top) {
1531                        vertical = 'top';
1532                    } else {
1533                        vertical = 'bottom';
1534                    }
1535                }
1536
1537                // Left and right logic
1538                if (horizontal === 'auto') {
1539                    if (parent.width() < offset.left + widget.outerWidth() / 2 &&
1540                        offset.left + widget.outerWidth() > $(window).width()) {
1541                        horizontal = 'right';
1542                    } else {
1543                        horizontal = 'left';
1544                    }
1545                }
1546
1547                if (vertical === 'top') {
1548                    widget.addClass('top').removeClass('bottom');
1549                } else {
1550                    widget.addClass('bottom').removeClass('top');
1551                }
1552
1553                if (horizontal === 'right') {
1554                    widget.addClass('pull-right');
1555                } else {
1556                    widget.removeClass('pull-right');
1557                }
1558
1559                // find the first parent element that has a non-static css positioning
1560                if (parent.css('position') === 'static') {
1561                    parent = parent.parents().filter(function () {
1562                        return $(this).css('position') !== 'static';
1563                    }).first();
1564                }
1565
1566                if (parent.length === 0) {
1567                    throw new Error('datetimepicker component should be placed within a non-static positioned container');
1568                }
1569
1570                widget.css({
1571                    top: vertical === 'top' ? 'auto' : position.top + element.outerHeight(),
1572                    bottom: vertical === 'top' ? parent.outerHeight() - (parent === element ? 0 : position.top) : 'auto',
1573                    left: horizontal === 'left' ? (parent === element ? 0 : position.left) : 'auto',
1574                    right: horizontal === 'left' ? 'auto' : parent.outerWidth() - element.outerWidth() - (parent === element ? 0 : position.left)
1575                });
1576            },
1577
1578            notifyEvent = function (e) {
1579                if (e.type === 'dp.change' && ((e.date && e.date.isSame(e.oldDate)) || (!e.date && !e.oldDate))) {
1580                    return;
1581                }
1582                element.trigger(e);
1583            },
1584
1585            viewUpdate = function (e) {
1586                if (e === 'y') {
1587                    e = 'YYYY';
1588                }
1589                notifyEvent({
1590                    type: 'dp.update',
1591                    change: e,
1592                    viewDate: viewDate.clone()
1593                });
1594            },
1595
1596            showMode = function (dir) {
1597                if (!widget) {
1598                    return;
1599                }
1600                if (dir) {
1601                    currentViewMode = Math.max(minViewModeNumber, Math.min(3, currentViewMode + dir));
1602                }
1603                widget.find('.datepicker > div').hide().filter('.datepicker-' + datePickerModes[currentViewMode].clsName).show();
1604            },
1605
1606            fillDow = function () {
1607                var row = $('<tr>'),
1608                    currentDate = viewDate.clone().startOf('w').startOf('d');
1609
1610                if (options.calendarWeeks === true) {
1611                    row.append($('<th>').addClass('cw').text('#'));
1612                }
1613
1614                while (currentDate.isBefore(viewDate.clone().endOf('w'))) {
1615                    row.append($('<th>').addClass('dow').text(currentDate.format('dd')));
1616                    currentDate.add(1, 'd');
1617                }
1618                widget.find('.datepicker-days thead').append(row);
1619            },
1620
1621            isInDisabledDates = function (testDate) {
1622                return options.disabledDates[testDate.format('YYYY-MM-DD')] === true;
1623            },
1624
1625            isInEnabledDates = function (testDate) {
1626                return options.enabledDates[testDate.format('YYYY-MM-DD')] === true;
1627            },
1628
1629            isInDisabledHours = function (testDate) {
1630                return options.disabledHours[testDate.format('H')] === true;
1631            },
1632
1633            isInEnabledHours = function (testDate) {
1634                return options.enabledHours[testDate.format('H')] === true;
1635            },
1636
1637            isValid = function (targetMoment, granularity) {
1638                if (!targetMoment.isValid()) {
1639                    return false;
1640                }
1641                if (options.disabledDates && granularity === 'd' && isInDisabledDates(targetMoment)) {
1642                    return false;
1643                }
1644                if (options.enabledDates && granularity === 'd' && !isInEnabledDates(targetMoment)) {
1645                    return false;
1646                }
1647                if (options.minDate && targetMoment.isBefore(options.minDate, granularity)) {
1648                    return false;
1649                }
1650                if (options.maxDate && targetMoment.isAfter(options.maxDate, granularity)) {
1651                    return false;
1652                }
1653                if (options.daysOfWeekDisabled && granularity === 'd' && options.daysOfWeekDisabled.indexOf(targetMoment.day()) !== -1) {
1654                    return false;
1655                }
1656                if (options.disabledHours && (granularity === 'h' || granularity === 'm' || granularity === 's') && isInDisabledHours(targetMoment)) {
1657                    return false;
1658                }
1659                if (options.enabledHours && (granularity === 'h' || granularity === 'm' || granularity === 's') && !isInEnabledHours(targetMoment)) {
1660                    return false;
1661                }
1662                if (options.disabledTimeIntervals && (granularity === 'h' || granularity === 'm' || granularity === 's')) {
1663                    var found = false;
1664                    $.each(options.disabledTimeIntervals, function () {
1665                        if (targetMoment.isBetween(this[0], this[1])) {
1666                            found = true;
1667                            return false;
1668                        }
1669                    });
1670                    if (found) {
1671                        return false;
1672                    }
1673                }
1674                return true;
1675            },
1676
1677            fillMonths = function () {
1678                var spans = [],
1679                    monthsShort = viewDate.clone().startOf('y').startOf('d');
1680                while (monthsShort.isSame(viewDate, 'y')) {
1681                    spans.push($('<span>').attr('data-action', 'selectMonth').addClass('month').text(monthsShort.format('MMM')));
1682                    monthsShort.add(1, 'M');
1683                }
1684                widget.find('.datepicker-months td').empty().append(spans);
1685            },
1686
1687            updateMonths = function () {
1688                var monthsView = widget.find('.datepicker-months'),
1689                    monthsViewHeader = monthsView.find('th'),
1690                    months = monthsView.find('tbody').find('span');
1691
1692                monthsViewHeader.eq(0).find('span').attr('title', options.tooltips.prevYear);
1693                monthsViewHeader.eq(1).attr('title', options.tooltips.selectYear);
1694                monthsViewHeader.eq(2).find('span').attr('title', options.tooltips.nextYear);
1695
1696                monthsView.find('.disabled').removeClass('disabled');
1697
1698                if (!isValid(viewDate.clone().subtract(1, 'y'), 'y')) {
1699                    monthsViewHeader.eq(0).addClass('disabled');
1700                }
1701
1702                monthsViewHeader.eq(1).text(viewDate.year());
1703
1704                if (!isValid(viewDate.clone().add(1, 'y'), 'y')) {
1705                    monthsViewHeader.eq(2).addClass('disabled');
1706                }
1707
1708                months.removeClass('active');
1709                if (date.isSame(viewDate, 'y') && !unset) {
1710                    months.eq(date.month()).addClass('active');
1711                }
1712
1713                months.each(function (index) {
1714                    if (!isValid(viewDate.clone().month(index), 'M')) {
1715                        $(this).addClass('disabled');
1716                    }
1717                });
1718            },
1719
1720            updateYears = function () {
1721                var yearsView = widget.find('.datepicker-years'),
1722                    yearsViewHeader = yearsView.find('th'),
1723                    startYear = viewDate.clone().subtract(5, 'y'),
1724                    endYear = viewDate.clone().add(6, 'y'),
1725                    html = '';
1726
1727                yearsViewHeader.eq(0).find('span').attr('title', options.tooltips.prevDecade);
1728                yearsViewHeader.eq(1).attr('title', options.tooltips.selectDecade);
1729                yearsViewHeader.eq(2).find('span').attr('title', options.tooltips.nextDecade);
1730
1731                yearsView.find('.disabled').removeClass('disabled');
1732
1733                if (options.minDate && options.minDate.isAfter(startYear, 'y')) {
1734                    yearsViewHeader.eq(0).addClass('disabled');
1735                }
1736
1737                yearsViewHeader.eq(1).text(startYear.year() + '-' + endYear.year());
1738
1739                if (options.maxDate && options.maxDate.isBefore(endYear, 'y')) {
1740                    yearsViewHeader.eq(2).addClass('disabled');
1741                }
1742
1743                while (!startYear.isAfter(endYear, 'y')) {
1744                    html += '<span data-action="selectYear" class="year' + (startYear.isSame(date, 'y') && !unset ? ' active' : '') + (!isValid(startYear, 'y') ? ' disabled' : '') + '">' + startYear.year() + '</span>';
1745                    startYear.add(1, 'y');
1746                }
1747
1748                yearsView.find('td').html(html);
1749            },
1750
1751            updateDecades = function () {
1752                var decadesView = widget.find('.datepicker-decades'),
1753                    decadesViewHeader = decadesView.find('th'),
1754                    startDecade = moment({ y: viewDate.year() - (viewDate.year() % 100) - 1 }),
1755                    endDecade = startDecade.clone().add(100, 'y'),
1756                    startedAt = startDecade.clone(),
1757                    minDateDecade = false,
1758                    maxDateDecade = false,
1759                    endDecadeYear,
1760                    html = '';
1761
1762                decadesViewHeader.eq(0).find('span').attr('title', options.tooltips.prevCentury);
1763                decadesViewHeader.eq(2).find('span').attr('title', options.tooltips.nextCentury);
1764
1765                decadesView.find('.disabled').removeClass('disabled');
1766
1767                if (startDecade.isSame(moment({ y: 1900 })) || (options.minDate && options.minDate.isAfter(startDecade, 'y'))) {
1768                    decadesViewHeader.eq(0).addClass('disabled');
1769                }
1770
1771                decadesViewHeader.eq(1).text(startDecade.year() + '-' + endDecade.year());
1772
1773                if (startDecade.isSame(moment({ y: 2000 })) || (options.maxDate && options.maxDate.isBefore(endDecade, 'y'))) {
1774                    decadesViewHeader.eq(2).addClass('disabled');
1775                }
1776
1777                while (!startDecade.isAfter(endDecade, 'y')) {
1778                    endDecadeYear = startDecade.year() + 12;
1779                    minDateDecade = options.minDate && options.minDate.isAfter(startDecade, 'y') && options.minDate.year() <= endDecadeYear;
1780                    maxDateDecade = options.maxDate && options.maxDate.isAfter(startDecade, 'y') && options.maxDate.year() <= endDecadeYear;
1781                    html += '<span data-action="selectDecade" class="decade' + (date.isAfter(startDecade) && date.year() <= endDecadeYear ? ' active' : '') +
1782                        (!isValid(startDecade, 'y') && !minDateDecade && !maxDateDecade ? ' disabled' : '') + '" data-selection="' + (startDecade.year() + 6) + '">' + (startDecade.year() + 1) + ' - ' + (startDecade.year() + 12) + '</span>';
1783                    startDecade.add(12, 'y');
1784                }
1785                html += '<span></span><span></span><span></span>'; //push the dangling block over, at least this way it's even
1786
1787                decadesView.find('td').html(html);
1788                decadesViewHeader.eq(1).text((startedAt.year() + 1) + '-' + (startDecade.year()));
1789            },
1790
1791            fillDate = function () {
1792                var daysView = widget.find('.datepicker-days'),
1793                    daysViewHeader = daysView.find('th'),
1794                    currentDate,
1795                    html = [],
1796                    row,
1797                    clsNames = [],
1798                    i;
1799
1800                if (!hasDate()) {
1801                    return;
1802                }
1803
1804                daysViewHeader.eq(0).find('span').attr('title', options.tooltips.prevMonth);
1805                daysViewHeader.eq(1).attr('title', options.tooltips.selectMonth);
1806                daysViewHeader.eq(2).find('span').attr('title', options.tooltips.nextMonth);
1807
1808                daysView.find('.disabled').removeClass('disabled');
1809                daysViewHeader.eq(1).text(viewDate.format(options.dayViewHeaderFormat));
1810
1811                if (!isValid(viewDate.clone().subtract(1, 'M'), 'M')) {
1812                    daysViewHeader.eq(0).addClass('disabled');
1813                }
1814                if (!isValid(viewDate.clone().add(1, 'M'), 'M')) {
1815                    daysViewHeader.eq(2).addClass('disabled');
1816                }
1817
1818                currentDate = viewDate.clone().startOf('M').startOf('w').startOf('d');
1819
1820                for (i = 0; i < 42; i++) { //always display 42 days (should show 6 weeks)
1821                    if (currentDate.weekday() === 0) {
1822                        row = $('<tr>');
1823                        if (options.calendarWeeks) {
1824                            row.append('<td class="cw">' + currentDate.week() + '</td>');
1825                        }
1826                        html.push(row);
1827                    }
1828                    clsNames = ['day'];
1829                    if (currentDate.isBefore(viewDate, 'M')) {
1830                        clsNames.push('old');
1831                    }
1832                    if (currentDate.isAfter(viewDate, 'M')) {
1833                        clsNames.push('new');
1834                    }
1835                    if (currentDate.isSame(date, 'd') && !unset) {
1836                        clsNames.push('active');
1837                    }
1838                    if (!isValid(currentDate, 'd')) {
1839                        clsNames.push('disabled');
1840                    }
1841                    if (currentDate.isSame(getMoment(), 'd')) {
1842                        clsNames.push('today');
1843                    }
1844                    if (currentDate.day() === 0 || currentDate.day() === 6) {
1845                        clsNames.push('weekend');
1846                    }
1847                    notifyEvent({
1848                        type: 'dp.classify',
1849                        date: currentDate,
1850                        classNames: clsNames
1851                    });
1852                    row.append('<td data-action="selectDay" data-day="' + currentDate.format('L') + '" class="' + clsNames.join(' ') + '">' + currentDate.date() + '</td>');
1853                    currentDate.add(1, 'd');
1854                }
1855
1856                daysView.find('tbody').empty().append(html);
1857
1858                updateMonths();
1859
1860                updateYears();
1861
1862                updateDecades();
1863            },
1864
1865            fillHours = function () {
1866                var table = widget.find('.timepicker-hours table'),
1867                    currentHour = viewDate.clone().startOf('d'),
1868                    html = [],
1869                    row = $('<tr>');
1870
1871                if (viewDate.hour() > 11 && !use24Hours) {
1872                    currentHour.hour(12);
1873                }
1874                while (currentHour.isSame(viewDate, 'd') && (use24Hours || (viewDate.hour() < 12 && currentHour.hour() < 12) || viewDate.hour() > 11)) {
1875                    if (currentHour.hour() % 4 === 0) {
1876                        row = $('<tr>');
1877                        html.push(row);
1878                    }
1879                    row.append('<td data-action="selectHour" class="hour' + (!isValid(currentHour, 'h') ? ' disabled' : '') + '">' + currentHour.format(use24Hours ? 'HH' : 'hh') + '</td>');
1880                    currentHour.add(1, 'h');
1881                }
1882                table.empty().append(html);
1883            },
1884
1885            fillMinutes = function () {
1886                var table = widget.find('.timepicker-minutes table'),
1887                    currentMinute = viewDate.clone().startOf('h'),
1888                    html = [],
1889                    row = $('<tr>'),
1890                    step = options.stepping === 1 ? 5 : options.stepping;
1891
1892                while (viewDate.isSame(currentMinute, 'h')) {
1893                    if (currentMinute.minute() % (step * 4) === 0) {
1894                        row = $('<tr>');
1895                        html.push(row);
1896                    }
1897                    row.append('<td data-action="selectMinute" class="minute' + (!isValid(currentMinute, 'm') ? ' disabled' : '') + '">' + currentMinute.format('mm') + '</td>');
1898                    currentMinute.add(step, 'm');
1899                }
1900                table.empty().append(html);
1901            },
1902
1903            fillSeconds = function () {
1904                var table = widget.find('.timepicker-seconds table'),
1905                    currentSecond = viewDate.clone().startOf('m'),
1906                    html = [],
1907                    row = $('<tr>');
1908
1909                while (viewDate.isSame(currentSecond, 'm')) {
1910                    if (currentSecond.second() % 20 === 0) {
1911                        row = $('<tr>');
1912                        html.push(row);
1913                    }
1914                    row.append('<td data-action="selectSecond" class="second' + (!isValid(currentSecond, 's') ? ' disabled' : '') + '">' + currentSecond.format('ss') + '</td>');
1915                    currentSecond.add(5, 's');
1916                }
1917
1918                table.empty().append(html);
1919            },
1920
1921            fillTime = function () {
1922                var toggle, newDate, timeComponents = widget.find('.timepicker span[data-time-component]');
1923
1924                if (!use24Hours) {
1925                    toggle = widget.find('.timepicker [data-action=togglePeriod]');
1926                    newDate = date.clone().add((date.hours() >= 12) ? -12 : 12, 'h');
1927
1928                    toggle.text(date.format('A'));
1929
1930                    if (isValid(newDate, 'h')) {
1931                        toggle.removeClass('disabled');
1932                    } else {
1933                        toggle.addClass('disabled');
1934                    }
1935                }
1936                timeComponents.filter('[data-time-component=hours]').text(date.format(use24Hours ? 'HH' : 'hh'));
1937                timeComponents.filter('[data-time-component=minutes]').text(date.format('mm'));
1938                timeComponents.filter('[data-time-component=seconds]').text(date.format('ss'));
1939
1940                fillHours();
1941                fillMinutes();
1942                fillSeconds();
1943            },
1944
1945            update = function () {
1946                if (!widget) {
1947                    return;
1948                }
1949                fillDate();
1950                fillTime();
1951            },
1952
1953            setValue = function (targetMoment) {
1954                var oldDate = unset ? null : date;
1955
1956                // case of calling setValue(null or false)
1957                if (!targetMoment) {
1958                    unset = true;
1959                    input.val('');
1960                    element.data('date', '');
1961                    notifyEvent({
1962                        type: 'dp.change',
1963                        date: false,
1964                        oldDate: oldDate
1965                    });
1966                    update();
1967                    return;
1968                }
1969
1970                targetMoment = targetMoment.clone().locale(options.locale);
1971
1972                if (hasTimeZone()) {
1973                    targetMoment.tz(options.timeZone);
1974                }
1975
1976                if (options.stepping !== 1) {
1977                    targetMoment.minutes((Math.round(targetMoment.minutes() / options.stepping) * options.stepping)).seconds(0);
1978
1979                    while (options.minDate && targetMoment.isBefore(options.minDate)) {
1980                        targetMoment.add(options.stepping, 'minutes');
1981                    }
1982                }
1983
1984                if (isValid(targetMoment)) {
1985                    date = targetMoment;
1986                    viewDate = date.clone();
1987                    input.val(date.format(actualFormat));
1988                    element.data('date', date.format(actualFormat));
1989                    unset = false;
1990                    update();
1991                    notifyEvent({
1992                        type: 'dp.change',
1993                        date: date.clone(),
1994                        oldDate: oldDate
1995                    });
1996                } else {
1997                    if (!options.keepInvalid) {
1998                        input.val(unset ? '' : date.format(actualFormat));
1999                    } else {
2000                        notifyEvent({
2001                            type: 'dp.change',
2002                            date: targetMoment,
2003                            oldDate: oldDate
2004                        });
2005                    }
2006                    notifyEvent({
2007                        type: 'dp.error',
2008                        date: targetMoment,
2009                        oldDate: oldDate
2010                    });
2011                }
2012            },
2013
2014            /**
2015             * Hides the widget. Possibly will emit dp.hide
2016             */
2017            hide = function () {
2018                var transitioning = false;
2019                if (!widget) {
2020                    return picker;
2021                }
2022                // Ignore event if in the middle of a picker transition
2023                widget.find('.collapse').each(function () {
2024                    var collapseData = $(this).data('collapse');
2025                    if (collapseData && collapseData.transitioning) {
2026                        transitioning = true;
2027                        return false;
2028                    }
2029                    return true;
2030                });
2031                if (transitioning) {
2032                    return picker;
2033                }
2034                if (component && component.hasClass('btn')) {
2035                    component.toggleClass('active');
2036                }
2037                widget.hide();
2038
2039                $(window).off('resize', place);
2040                widget.off('click', '[data-action]');
2041                widget.off('mousedown', false);
2042
2043                widget.remove();
2044                widget = false;
2045
2046                notifyEvent({
2047                    type: 'dp.hide',
2048                    date: date.clone()
2049                });
2050
2051                input.blur();
2052
2053                viewDate = date.clone();
2054
2055                return picker;
2056            },
2057
2058            clear = function () {
2059                setValue(null);
2060            },
2061
2062            parseInputDate = function (inputDate) {
2063                if (options.parseInputDate === undefined) {
2064                    if (!moment.isMoment(inputDate) || inputDate instanceof Date) {
2065                        inputDate = getMoment(inputDate);
2066                    }
2067                } else {
2068                    inputDate = options.parseInputDate(inputDate);
2069                }
2070                //inputDate.locale(options.locale);
2071                return inputDate;
2072            },
2073
2074            /********************************************************************************
2075             *
2076             * Widget UI interaction functions
2077             *
2078             ********************************************************************************/
2079            actions = {
2080                next: function () {
2081                    var navFnc = datePickerModes[currentViewMode].navFnc;
2082                    viewDate.add(datePickerModes[currentViewMode].navStep, navFnc);
2083                    fillDate();
2084                    viewUpdate(navFnc);
2085                },
2086
2087                previous: function () {
2088                    var navFnc = datePickerModes[currentViewMode].navFnc;
2089                    viewDate.subtract(datePickerModes[currentViewMode].navStep, navFnc);
2090                    fillDate();
2091                    viewUpdate(navFnc);
2092                },
2093
2094                pickerSwitch: function () {
2095                    showMode(1);
2096                },
2097
2098                selectMonth: function (e) {
2099                    var month = $(e.target).closest('tbody').find('span').index($(e.target));
2100                    viewDate.month(month);
2101                    if (currentViewMode === minViewModeNumber) {
2102                        setValue(date.clone().year(viewDate.year()).month(viewDate.month()));
2103                        if (!options.inline) {
2104                            hide();
2105                        }
2106                    } else {
2107                        showMode(-1);
2108                        fillDate();
2109                    }
2110                    viewUpdate('M');
2111                },
2112
2113                selectYear: function (e) {
2114                    var year = parseInt($(e.target).text(), 10) || 0;
2115                    viewDate.year(year);
2116                    if (currentViewMode === minViewModeNumber) {
2117                        setValue(date.clone().year(viewDate.year()));
2118                        if (!options.inline) {
2119                            hide();
2120                        }
2121                    } else {
2122                        showMode(-1);
2123                        fillDate();
2124                    }
2125                    viewUpdate('YYYY');
2126                },
2127
2128                selectDecade: function (e) {
2129                    var year = parseInt($(e.target).data('selection'), 10) || 0;
2130                    viewDate.year(year);
2131                    if (currentViewMode === minViewModeNumber) {
2132                        setValue(date.clone().year(viewDate.year()));
2133                        if (!options.inline) {
2134                            hide();
2135                        }
2136                    } else {
2137                        showMode(-1);
2138                        fillDate();
2139                    }
2140                    viewUpdate('YYYY');
2141                },
2142
2143                selectDay: function (e) {
2144                    var day = viewDate.clone();
2145                    if ($(e.target).is('.old')) {
2146                        day.subtract(1, 'M');
2147                    }
2148                    if ($(e.target).is('.new')) {
2149                        day.add(1, 'M');
2150                    }
2151                    setValue(day.date(parseInt($(e.target).text(), 10)));
2152                    if (!hasTime() && !options.keepOpen && !options.inline) {
2153                        hide();
2154                    }
2155                },
2156
2157                incrementHours: function () {
2158                    var newDate = date.clone().add(1, 'h');
2159                    if (isValid(newDate, 'h')) {
2160                        setValue(newDate);
2161                    }
2162                },
2163
2164                incrementMinutes: function () {
2165                    var newDate = date.clone().add(options.stepping, 'm');
2166                    if (isValid(newDate, 'm')) {
2167                        setValue(newDate);
2168                    }
2169                },
2170
2171                incrementSeconds: function () {
2172                    var newDate = date.clone().add(1, 's');
2173                    if (isValid(newDate, 's')) {
2174                        setValue(newDate);
2175                    }
2176                },
2177
2178                decrementHours: function () {
2179                    var newDate = date.clone().subtract(1, 'h');
2180                    if (isValid(newDate, 'h')) {
2181                        setValue(newDate);
2182                    }
2183                },
2184
2185                decrementMinutes: function () {
2186                    var newDate = date.clone().subtract(options.stepping, 'm');
2187                    if (isValid(newDate, 'm')) {
2188                        setValue(newDate);
2189                    }
2190                },
2191
2192                decrementSeconds: function () {
2193                    var newDate = date.clone().subtract(1, 's');
2194                    if (isValid(newDate, 's')) {
2195                        setValue(newDate);
2196                    }
2197                },
2198
2199                togglePeriod: function () {
2200                    setValue(date.clone().add((date.hours() >= 12) ? -12 : 12, 'h'));
2201                },
2202
2203                togglePicker: function (e) {
2204                    var $this = $(e.target),
2205                        $parent = $this.closest('ul'),
2206                        expanded = $parent.find('.in'),
2207                        closed = $parent.find('.collapse:not(.in)'),
2208                        collapseData;
2209
2210                    if (expanded && expanded.length) {
2211                        collapseData = expanded.data('collapse');
2212                        if (collapseData && collapseData.transitioning) {
2213                            return;
2214                        }
2215                        if (expanded.collapse) { // if collapse plugin is available through bootstrap.js then use it
2216                            expanded.collapse('hide');
2217                            closed.collapse('show');
2218                        } else { // otherwise just toggle in class on the two views
2219                            expanded.removeClass('in');
2220                            closed.addClass('in');
2221                        }
2222                        if ($this.is('span')) {
2223                            $this.toggleClass(options.icons.time + ' ' + options.icons.date);
2224                        } else {
2225                            $this.find('span').toggleClass(options.icons.time + ' ' + options.icons.date);
2226                        }
2227
2228                        // NOTE: uncomment if toggled state will be restored in show()
2229                        //if (component) {
2230                        //    component.find('span').toggleClass(options.icons.time + ' ' + options.icons.date);
2231                        //}
2232                    }
2233                },
2234
2235                showPicker: function () {
2236                    widget.find('.timepicker > div:not(.timepicker-picker)').hide();
2237                    widget.find('.timepicker .timepicker-picker').show();
2238                },
2239
2240                showHours: function () {
2241                    widget.find('.timepicker .timepicker-picker').hide();
2242                    widget.find('.timepicker .timepicker-hours').show();
2243                },
2244
2245                showMinutes: function () {
2246                    widget.find('.timepicker .timepicker-picker').hide();
2247                    widget.find('.timepicker .timepicker-minutes').show();
2248                },
2249
2250                showSeconds: function () {
2251                    widget.find('.timepicker .timepicker-picker').hide();
2252                    widget.find('.timepicker .timepicker-seconds').show();
2253                },
2254
2255                selectHour: function (e) {
2256                    var hour = parseInt($(e.target).text(), 10);
2257
2258                    if (!use24Hours) {
2259                        if (date.hours() >= 12) {
2260                            if (hour !== 12) {
2261                                hour += 12;
2262                            }
2263                        } else {
2264                            if (hour === 12) {
2265                                hour = 0;
2266                            }
2267                        }
2268                    }
2269                    setValue(date.clone().hours(hour));
2270                    actions.showPicker.call(picker);
2271                },
2272
2273                selectMinute: function (e) {
2274                    setValue(date.clone().minutes(parseInt($(e.target).text(), 10)));
2275                    actions.showPicker.call(picker);
2276                },
2277
2278                selectSecond: function (e) {
2279                    setValue(date.clone().seconds(parseInt($(e.target).text(), 10)));
2280                    actions.showPicker.call(picker);
2281                },
2282
2283                clear: clear,
2284
2285                today: function () {
2286                    var todaysDate = getMoment();
2287                    if (isValid(todaysDate, 'd')) {
2288                        setValue(todaysDate);
2289                    }
2290                },
2291
2292                close: hide
2293            },
2294
2295            doAction = function (e) {
2296                if ($(e.currentTarget).is('.disabled')) {
2297                    return false;
2298                }
2299                actions[$(e.currentTarget).data('action')].apply(picker, arguments);
2300                return false;
2301            },
2302
2303            /**
2304             * Shows the widget. Possibly will emit dp.show and dp.change
2305             */
2306            show = function () {
2307                var currentMoment,
2308                    useCurrentGranularity = {
2309                        'year': function (m) {
2310                            return m.month(0).date(1).hours(0).seconds(0).minutes(0);
2311                        },
2312                        'month': function (m) {
2313                            return m.date(1).hours(0).seconds(0).minutes(0);
2314                        },
2315                        'day': function (m) {
2316                            return m.hours(0).seconds(0).minutes(0);
2317                        },
2318                        'hour': function (m) {
2319                            return m.seconds(0).minutes(0);
2320                        },
2321                        'minute': function (m) {
2322                            return m.seconds(0);
2323                        }
2324                    };
2325
2326                if (input.prop('disabled') || (!options.ignoreReadonly && input.prop('readonly')) || widget) {
2327                    return picker;
2328                }
2329                if (input.val() !== undefined && input.val().trim().length !== 0) {
2330                    setValue(parseInputDate(input.val().trim()));
2331                } else if (unset && options.useCurrent && (options.inline || (input.is('input') && input.val().trim().length === 0))) {
2332                    currentMoment = getMoment();
2333                    if (typeof options.useCurrent === 'string') {
2334                        currentMoment = useCurrentGranularity[options.useCurrent](currentMoment);
2335                    }
2336                    setValue(currentMoment);
2337                }
2338                widget = getTemplate();
2339
2340                fillDow();
2341                fillMonths();
2342
2343                widget.find('.timepicker-hours').hide();
2344                widget.find('.timepicker-minutes').hide();
2345                widget.find('.timepicker-seconds').hide();
2346
2347                update();
2348                showMode();
2349
2350                $(window).on('resize', place);
2351                widget.on('click', '[data-action]', doAction); // this handles clicks on the widget
2352                widget.on('mousedown', false);
2353
2354                if (component && component.hasClass('btn')) {
2355                    component.toggleClass('active');
2356                }
2357                place();
2358                widget.show();
2359                if (options.focusOnShow && !input.is(':focus')) {
2360                    input.focus();
2361                }
2362
2363                notifyEvent({
2364                    type: 'dp.show'
2365                });
2366                return picker;
2367            },
2368
2369            /**
2370             * Shows or hides the widget
2371             */
2372            toggle = function () {
2373                return (widget ? hide() : show());
2374            },
2375
2376            keydown = function (e) {
2377                var handler = null,
2378                    index,
2379                    index2,
2380                    pressedKeys = [],
2381                    pressedModifiers = {},
2382                    currentKey = e.which,
2383                    keyBindKeys,
2384                    allModifiersPressed,
2385                    pressed = 'p';
2386
2387                keyState[currentKey] = pressed;
2388
2389                for (index in keyState) {
2390                    if (keyState.hasOwnProperty(index) && keyState[index] === pressed) {
2391                        pressedKeys.push(index);
2392                        if (parseInt(index, 10) !== currentKey) {
2393                            pressedModifiers[index] = true;
2394                        }
2395                    }
2396                }
2397
2398                for (index in options.keyBinds) {
2399                    if (options.keyBinds.hasOwnProperty(index) && typeof (options.keyBinds[index]) === 'function') {
2400                        keyBindKeys = index.split(' ');
2401                        if (keyBindKeys.length === pressedKeys.length && keyMap[currentKey] === keyBindKeys[keyBindKeys.length - 1]) {
2402                            allModifiersPressed = true;
2403                            for (index2 = keyBindKeys.length - 2; index2 >= 0; index2--) {
2404                                if (!(keyMap[keyBindKeys[index2]] in pressedModifiers)) {
2405                                    allModifiersPressed = false;
2406                                    break;
2407                                }
2408                            }
2409                            if (allModifiersPressed) {
2410                                handler = options.keyBinds[index];
2411                                break;
2412                            }
2413                        }
2414                    }
2415                }
2416
2417                if (handler) {
2418                    handler.call(picker, widget);
2419                    e.stopPropagation();
2420                    e.preventDefault();
2421                }
2422            },
2423
2424            keyup = function (e) {
2425                keyState[e.which] = 'r';
2426                e.stopPropagation();
2427                e.preventDefault();
2428            },
2429
2430            change = function (e) {
2431                var val = $(e.target).val().trim(),
2432                    parsedDate = val ? parseInputDate(val) : null;
2433                setValue(parsedDate);
2434                e.stopImmediatePropagation();
2435                return false;
2436            },
2437
2438            attachDatePickerElementEvents = function () {
2439                input.on({
2440                    'change': change,
2441                    'blur': options.debug ? '' : hide,
2442                    'keydown': keydown,
2443                    'keyup': keyup,
2444                    'focus': options.allowInputToggle ? show : ''
2445                });
2446
2447                if (element.is('input')) {
2448                    input.on({
2449                        'focus': show
2450                    });
2451                } else if (component) {
2452                    component.on('click', toggle);
2453                    component.on('mousedown', false);
2454                }
2455            },
2456
2457            detachDatePickerElementEvents = function () {
2458                input.off({
2459                    'change': change,
2460                    'blur': blur,
2461                    'keydown': keydown,
2462                    'keyup': keyup,
2463                    'focus': options.allowInputToggle ? hide : ''
2464                });
2465
2466                if (element.is('input')) {
2467                    input.off({
2468                        'focus': show
2469                    });
2470                } else if (component) {
2471                    component.off('click', toggle);
2472                    component.off('mousedown', false);
2473                }
2474            },
2475
2476            indexGivenDates = function (givenDatesArray) {
2477                // Store given enabledDates and disabledDates as keys.
2478                // This way we can check their existence in O(1) time instead of looping through whole array.
2479                // (for example: options.enabledDates['2014-02-27'] === true)
2480                var givenDatesIndexed = {};
2481                $.each(givenDatesArray, function () {
2482                    var dDate = parseInputDate(this);
2483                    if (dDate.isValid()) {
2484                        givenDatesIndexed[dDate.format('YYYY-MM-DD')] = true;
2485                    }
2486                });
2487                return (Object.keys(givenDatesIndexed).length) ? givenDatesIndexed : false;
2488            },
2489
2490            indexGivenHours = function (givenHoursArray) {
2491                // Store given enabledHours and disabledHours as keys.
2492                // This way we can check their existence in O(1) time instead of looping through whole array.
2493                // (for example: options.enabledHours['2014-02-27'] === true)
2494                var givenHoursIndexed = {};
2495                $.each(givenHoursArray, function () {
2496                    givenHoursIndexed[this] = true;
2497                });
2498                return (Object.keys(givenHoursIndexed).length) ? givenHoursIndexed : false;
2499            },
2500
2501            initFormatting = function () {
2502                var format = options.format || 'L LT';
2503
2504                actualFormat = format.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, function (formatInput) {
2505                    var newinput = date.localeData().longDateFormat(formatInput) || formatInput;
2506                    return newinput.replace(/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, function (formatInput2) { //temp fix for #740
2507                        return date.localeData().longDateFormat(formatInput2) || formatInput2;
2508                    });
2509                });
2510
2511
2512                parseFormats = options.extraFormats ? options.extraFormats.slice() : [];
2513                if (parseFormats.indexOf(format) < 0 && parseFormats.indexOf(actualFormat) < 0) {
2514                    parseFormats.push(actualFormat);
2515                }
2516
2517                use24Hours = (actualFormat.toLowerCase().indexOf('a') < 1 && actualFormat.replace(/\[.*?\]/g, '').indexOf('h') < 1);
2518
2519                if (isEnabled('y')) {
2520                    minViewModeNumber = 2;
2521                }
2522                if (isEnabled('M')) {
2523                    minViewModeNumber = 1;
2524                }
2525                if (isEnabled('d')) {
2526                    minViewModeNumber = 0;
2527                }
2528
2529                currentViewMode = Math.max(minViewModeNumber, currentViewMode);
2530
2531                if (!unset) {
2532                    setValue(date);
2533                }
2534            };
2535
2536        /********************************************************************************
2537         *
2538         * Public API functions
2539         * =====================
2540         *
2541         * Important: Do not expose direct references to private objects or the options
2542         * object to the outer world. Always return a clone when returning values or make
2543         * a clone when setting a private variable.
2544         *
2545         ********************************************************************************/
2546        picker.destroy = function () {
2547            ///<summary>Destroys the widget and removes all attached event listeners</summary>
2548            hide();
2549            detachDatePickerElementEvents();
2550            element.removeData('DateTimePicker');
2551            element.removeData('date');
2552        };
2553
2554        picker.toggle = toggle;
2555
2556        picker.show = show;
2557
2558        picker.hide = hide;
2559
2560        picker.disable = function () {
2561            ///<summary>Disables the input element, the component is attached to, by adding a disabled="true" attribute to it.
2562            ///If the widget was visible before that call it is hidden. Possibly emits dp.hide</summary>
2563            hide();
2564            if (component && component.hasClass('btn')) {
2565                component.addClass('disabled');
2566            }
2567            input.prop('disabled', true);
2568            return picker;
2569        };
2570
2571        picker.enable = function () {
2572            ///<summary>Enables the input element, the component is attached to, by removing disabled attribute from it.</summary>
2573            if (component && component.hasClass('btn')) {
2574                component.removeClass('disabled');
2575            }
2576            input.prop('disabled', false);
2577            return picker;
2578        };
2579
2580        picker.ignoreReadonly = function (ignoreReadonly) {
2581            if (arguments.length === 0) {
2582                return options.ignoreReadonly;
2583            }
2584            if (typeof ignoreReadonly !== 'boolean') {
2585                throw new TypeError('ignoreReadonly () expects a boolean parameter');
2586            }
2587            options.ignoreReadonly = ignoreReadonly;
2588            return picker;
2589        };
2590
2591        picker.options = function (newOptions) {
2592            if (arguments.length === 0) {
2593                return $.extend(true, {}, options);
2594            }
2595
2596            if (!(newOptions instanceof Object)) {
2597                throw new TypeError('options() options parameter should be an object');
2598            }
2599            $.extend(true, options, newOptions);
2600            $.each(options, function (key, value) {
2601                if (picker[key] !== undefined) {
2602                    picker[key](value);
2603                } else {
2604                    throw new TypeError('option ' + key + ' is not recognized!');
2605                }
2606            });
2607            return picker;
2608        };
2609
2610        picker.date = function (newDate) {
2611            ///<signature helpKeyword="$.fn.datetimepicker.date">
2612            ///<summary>Returns the component's model current date, a moment object or null if not set.</summary>
2613            ///<returns type="Moment">date.clone()</returns>
2614            ///</signature>
2615            ///<signature>
2616            ///<summary>Sets the components model current moment to it. Passing a null value unsets the components model current moment. Parsing of the newDate parameter is made using moment library with the options.format and options.useStrict components configuration.</summary>
2617            ///<param name="newDate" locid="$.fn.datetimepicker.date_p:newDate">Takes string, Date, moment, null parameter.</param>
2618            ///</signature>
2619            if (arguments.length === 0) {
2620                if (unset) {
2621                    return null;
2622                }
2623                return date.clone();
2624            }
2625
2626            if (newDate !== null && typeof newDate !== 'string' && !moment.isMoment(newDate) && !(newDate instanceof Date)) {
2627                throw new TypeError('date() parameter must be one of [null, string, moment or Date]');
2628            }
2629
2630            setValue(newDate === null ? null : parseInputDate(newDate));
2631            return picker;
2632        };
2633
2634        picker.format = function (newFormat) {
2635            ///<summary>test su</summary>
2636            ///<param name="newFormat">info about para</param>
2637            ///<returns type="string|boolean">returns foo</returns>
2638            if (arguments.length === 0) {
2639                return options.format;
2640            }
2641
2642            if ((typeof newFormat !== 'string') && ((typeof newFormat !== 'boolean') || (newFormat !== false))) {
2643                throw new TypeError('format() expects a string or boolean:false parameter ' + newFormat);
2644            }
2645
2646            options.format = newFormat;
2647            if (actualFormat) {
2648                initFormatting(); // reinit formatting
2649            }
2650            return picker;
2651        };
2652
2653        picker.timeZone = function (newZone) {
2654            if (arguments.length === 0) {
2655                return options.timeZone;
2656            }
2657
2658            if (typeof newZone !== 'string') {
2659                throw new TypeError('newZone() expects a string parameter');
2660            }
2661
2662            options.timeZone = newZone;
2663
2664            return picker;
2665        };
2666
2667        picker.dayViewHeaderFormat = function (newFormat) {
2668            if (arguments.length === 0) {
2669                return options.dayViewHeaderFormat;
2670            }
2671
2672            if (typeof newFormat !== 'string') {
2673                throw new TypeError('dayViewHeaderFormat() expects a string parameter');
2674            }
2675
2676            options.dayViewHeaderFormat = newFormat;
2677            return picker;
2678        };
2679
2680        picker.extraFormats = function (formats) {
2681            if (arguments.length === 0) {
2682                return options.extraFormats;
2683            }
2684
2685            if (formats !== false && !(formats instanceof Array)) {
2686                throw new TypeError('extraFormats() expects an array or false parameter');
2687            }
2688
2689            options.extraFormats = formats;
2690            if (parseFormats) {
2691                initFormatting(); // reinit formatting
2692            }
2693            return picker;
2694        };
2695
2696        picker.disabledDates = function (dates) {
2697            ///<signature helpKeyword="$.fn.datetimepicker.disabledDates">
2698            ///<summary>Returns an array with the currently set disabled dates on the component.</summary>
2699            ///<returns type="array">options.disabledDates</returns>
2700            ///</signature>
2701            ///<signature>
2702            ///<summary>Setting this takes precedence over options.minDate, options.maxDate configuration. Also calling this function removes the configuration of
2703            ///options.enabledDates if such exist.</summary>
2704            ///<param name="dates" locid="$.fn.datetimepicker.disabledDates_p:dates">Takes an [ string or Date or moment ] of values and allows the user to select only from those days.</param>
2705            ///</signature>
2706            if (arguments.length === 0) {
2707                return (options.disabledDates ? $.extend({}, options.disabledDates) : options.disabledDates);
2708            }
2709
2710            if (!dates) {
2711                options.disabledDates = false;
2712                update();
2713                return picker;
2714            }
2715            if (!(dates instanceof Array)) {
2716                throw new TypeError('disabledDates() expects an array parameter');
2717            }
2718            options.disabledDates = indexGivenDates(dates);
2719            options.enabledDates = false;
2720            update();
2721            return picker;
2722        };
2723
2724        picker.enabledDates = function (dates) {
2725            ///<signature helpKeyword="$.fn.datetimepicker.enabledDates">
2726            ///<summary>Returns an array with the currently set enabled dates on the component.</summary>
2727            ///<returns type="array">options.enabledDates</returns>
2728            ///</signature>
2729            ///<signature>
2730            ///<summary>Setting this takes precedence over options.minDate, options.maxDate configuration. Also calling this function removes the configuration of options.disabledDates if such exist.</summary>
2731            ///<param name="dates" locid="$.fn.datetimepicker.enabledDates_p:dates">Takes an [ string or Date or moment ] of values and allows the user to select only from those days.</param>
2732            ///</signature>
2733            if (arguments.length === 0) {
2734                return (options.enabledDates ? $.extend({}, options.enabledDates) : options.enabledDates);
2735            }
2736
2737            if (!dates) {
2738                options.enabledDates = false;
2739                update();
2740                return picker;
2741            }
2742            if (!(dates instanceof Array)) {
2743                throw new TypeError('enabledDates() expects an array parameter');
2744            }
2745            options.enabledDates = indexGivenDates(dates);
2746            options.disabledDates = false;
2747            update();
2748            return picker;
2749        };
2750
2751        picker.daysOfWeekDisabled = function (daysOfWeekDisabled) {
2752            if (arguments.length === 0) {
2753                return options.daysOfWeekDisabled.splice(0);
2754            }
2755
2756            if ((typeof daysOfWeekDisabled === 'boolean') && !daysOfWeekDisabled) {
2757                options.daysOfWeekDisabled = false;
2758                update();
2759                return picker;
2760            }
2761
2762            if (!(daysOfWeekDisabled instanceof Array)) {
2763                throw new TypeError('daysOfWeekDisabled() expects an array parameter');
2764            }
2765            options.daysOfWeekDisabled = daysOfWeekDisabled.reduce(function (previousValue, currentValue) {
2766                currentValue = parseInt(currentValue, 10);
2767                if (currentValue > 6 || currentValue < 0 || isNaN(currentValue)) {
2768                    return previousValue;
2769                }
2770                if (previousValue.indexOf(currentValue) === -1) {
2771                    previousValue.push(currentValue);
2772                }
2773                return previousValue;
2774            }, []).sort();
2775            if (options.useCurrent && !options.keepInvalid) {
2776                var tries = 0;
2777                while (!isValid(date, 'd')) {
2778                    date.add(1, 'd');
2779                    if (tries === 31) {
2780                        throw 'Tried 31 times to find a valid date';
2781                    }
2782                    tries++;
2783                }
2784                setValue(date);
2785            }
2786            update();
2787            return picker;
2788        };
2789
2790        picker.maxDate = function (maxDate) {
2791            if (arguments.length === 0) {
2792                return options.maxDate ? options.maxDate.clone() : options.maxDate;
2793            }
2794
2795            if ((typeof maxDate === 'boolean') && maxDate === false) {
2796                options.maxDate = false;
2797                update();
2798                return picker;
2799            }
2800
2801            if (typeof maxDate === 'string') {
2802                if (maxDate === 'now' || maxDate === 'moment') {
2803                    maxDate = getMoment();
2804                }
2805            }
2806
2807            var parsedDate = parseInputDate(maxDate);
2808
2809            if (!parsedDate.isValid()) {
2810                throw new TypeError('maxDate() Could not parse date parameter: ' + maxDate);
2811            }
2812            if (options.minDate && parsedDate.isBefore(options.minDate)) {
2813                throw new TypeError('maxDate() date parameter is before options.minDate: ' + parsedDate.format(actualFormat));
2814            }
2815            options.maxDate = parsedDate;
2816            if (options.useCurrent && !options.keepInvalid && date.isAfter(maxDate)) {
2817                setValue(options.maxDate);
2818            }
2819            if (viewDate.isAfter(parsedDate)) {
2820                viewDate = parsedDate.clone().subtract(options.stepping, 'm');
2821            }
2822            update();
2823            return picker;
2824        };
2825
2826        picker.minDate = function (minDate) {
2827            if (arguments.length === 0) {
2828                return options.minDate ? options.minDate.clone() : options.minDate;
2829            }
2830
2831            if ((typeof minDate === 'boolean') && minDate === false) {
2832                options.minDate = false;
2833                update();
2834                return picker;
2835            }
2836
2837            if (typeof minDate === 'string') {
2838                if (minDate === 'now' || minDate === 'moment') {
2839                    minDate = getMoment();
2840                }
2841            }
2842
2843            var parsedDate = parseInputDate(minDate);
2844
2845            if (!parsedDate.isValid()) {
2846                throw new TypeError('minDate() Could not parse date parameter: ' + minDate);
2847            }
2848            if (options.maxDate && parsedDate.isAfter(options.maxDate)) {
2849                throw new TypeError('minDate() date parameter is after options.maxDate: ' + parsedDate.format(actualFormat));
2850            }
2851            options.minDate = parsedDate;
2852            if (options.useCurrent && !options.keepInvalid && date.isBefore(minDate)) {
2853                setValue(options.minDate);
2854            }
2855            if (viewDate.isBefore(parsedDate)) {
2856                viewDate = parsedDate.clone().add(options.stepping, 'm');
2857            }
2858            update();
2859            return picker;
2860        };
2861
2862        picker.defaultDate = function (defaultDate) {
2863            ///<signature helpKeyword="$.fn.datetimepicker.defaultDate">
2864            ///<summary>Returns a moment with the options.defaultDate option configuration or false if not set</summary>
2865            ///<returns type="Moment">date.clone()</returns>
2866            ///</signature>
2867            ///<signature>
2868            ///<summary>Will set the picker's inital date. If a boolean:false value is passed the options.defaultDate parameter is cleared.</summary>
2869            ///<param name="defaultDate" locid="$.fn.datetimepicker.defaultDate_p:defaultDate">Takes a string, Date, moment, boolean:false</param>
2870            ///</signature>
2871            if (arguments.length === 0) {
2872                return options.defaultDate ? options.defaultDate.clone() : options.defaultDate;
2873            }
2874            if (!defaultDate) {
2875                options.defaultDate = false;
2876                return picker;
2877            }
2878
2879            if (typeof defaultDate === 'string') {
2880                if (defaultDate === 'now' || defaultDate === 'moment') {
2881                    defaultDate = getMoment();
2882                } else {
2883                    defaultDate = getMoment(defaultDate);
2884                }
2885            }
2886
2887            var parsedDate = parseInputDate(defaultDate);
2888            if (!parsedDate.isValid()) {
2889                throw new TypeError('defaultDate() Could not parse date parameter: ' + defaultDate);
2890            }
2891            if (!isValid(parsedDate)) {
2892                throw new TypeError('defaultDate() date passed is invalid according to component setup validations');
2893            }
2894
2895            options.defaultDate = parsedDate;
2896
2897            if ((options.defaultDate && options.inline) || input.val().trim() === '') {
2898                setValue(options.defaultDate);
2899            }
2900            return picker;
2901        };
2902
2903        picker.locale = function (locale) {
2904            if (arguments.length === 0) {
2905                return options.locale;
2906            }
2907
2908            if (!moment.localeData(locale)) {
2909                throw new TypeError('locale() locale ' + locale + ' is not loaded from moment locales!');
2910            }
2911
2912            options.locale = locale;
2913            date.locale(options.locale);
2914            viewDate.locale(options.locale);
2915
2916            if (actualFormat) {
2917                initFormatting(); // reinit formatting
2918            }
2919            if (widget) {
2920                hide();
2921                show();
2922            }
2923            return picker;
2924        };
2925
2926        picker.stepping = function (stepping) {
2927            if (arguments.length === 0) {
2928                return options.stepping;
2929            }
2930
2931            stepping = parseInt(stepping, 10);
2932            if (isNaN(stepping) || stepping < 1) {
2933                stepping = 1;
2934            }
2935            options.stepping = stepping;
2936            return picker;
2937        };
2938
2939        picker.useCurrent = function (useCurrent) {
2940            var useCurrentOptions = ['year', 'month', 'day', 'hour', 'minute'];
2941            if (arguments.length === 0) {
2942                return options.useCurrent;
2943            }
2944
2945            if ((typeof useCurrent !== 'boolean') && (typeof useCurrent !== 'string')) {
2946                throw new TypeError('useCurrent() expects a boolean or string parameter');
2947            }
2948            if (typeof useCurrent === 'string' && useCurrentOptions.indexOf(useCurrent.toLowerCase()) === -1) {
2949                throw new TypeError('useCurrent() expects a string parameter of ' + useCurrentOptions.join(', '));
2950            }
2951            options.useCurrent = useCurrent;
2952            return picker;
2953        };
2954
2955        picker.collapse = function (collapse) {
2956            if (arguments.length === 0) {
2957                return options.collapse;
2958            }
2959
2960            if (typeof collapse !== 'boolean') {
2961                throw new TypeError('collapse() expects a boolean parameter');
2962            }
2963            if (options.collapse === collapse) {
2964                return picker;
2965            }
2966            options.collapse = collapse;
2967            if (widget) {
2968                hide();
2969                show();
2970            }
2971            return picker;
2972        };
2973
2974        picker.icons = function (icons) {
2975            if (arguments.length === 0) {
2976                return $.extend({}, options.icons);
2977            }
2978
2979            if (!(icons instanceof Object)) {
2980                throw new TypeError('icons() expects parameter to be an Object');
2981            }
2982            $.extend(options.icons, icons);
2983            if (widget) {
2984                hide();
2985                show();
2986            }
2987            return picker;
2988        };
2989
2990        picker.tooltips = function (tooltips) {
2991            if (arguments.length === 0) {
2992                return $.extend({}, options.tooltips);
2993            }
2994
2995            if (!(tooltips instanceof Object)) {
2996                throw new TypeError('tooltips() expects parameter to be an Object');
2997            }
2998            $.extend(options.tooltips, tooltips);
2999            if (widget) {
3000                hide();
3001                show();
3002            }
3003            return picker;
3004        };
3005
3006        picker.useStrict = function (useStrict) {
3007            if (arguments.length === 0) {
3008                return options.useStrict;
3009            }
3010
3011            if (typeof useStrict !== 'boolean') {
3012                throw new TypeError('useStrict() expects a boolean parameter');
3013            }
3014            options.useStrict = useStrict;
3015            return picker;
3016        };
3017
3018        picker.sideBySide = function (sideBySide) {
3019            if (arguments.length === 0) {
3020                return options.sideBySide;
3021            }
3022
3023            if (typeof sideBySide !== 'boolean') {
3024                throw new TypeError('sideBySide() expects a boolean parameter');
3025            }
3026            options.sideBySide = sideBySide;
3027            if (widget) {
3028                hide();
3029                show();
3030            }
3031            return picker;
3032        };
3033
3034        picker.viewMode = function (viewMode) {
3035            if (arguments.length === 0) {
3036                return options.viewMode;
3037            }
3038
3039            if (typeof viewMode !== 'string') {
3040                throw new TypeError('viewMode() expects a string parameter');
3041            }
3042
3043            if (viewModes.indexOf(viewMode) === -1) {
3044                throw new TypeError('viewMode() parameter must be one of (' + viewModes.join(', ') + ') value');
3045            }
3046
3047            options.viewMode = viewMode;
3048            currentViewMode = Math.max(viewModes.indexOf(viewMode), minViewModeNumber);
3049
3050            showMode();
3051            return picker;
3052        };
3053
3054        picker.toolbarPlacement = function (toolbarPlacement) {
3055            if (arguments.length === 0) {
3056                return options.toolbarPlacement;
3057            }
3058
3059            if (typeof toolbarPlacement !== 'string') {
3060                throw new TypeError('toolbarPlacement() expects a string parameter');
3061            }
3062            if (toolbarPlacements.indexOf(toolbarPlacement) === -1) {
3063                throw new TypeError('toolbarPlacement() parameter must be one of (' + toolbarPlacements.join(', ') + ') value');
3064            }
3065            options.toolbarPlacement = toolbarPlacement;
3066
3067            if (widget) {
3068                hide();
3069                show();
3070            }
3071            return picker;
3072        };
3073
3074        picker.widgetPositioning = function (widgetPositioning) {
3075            if (arguments.length === 0) {
3076                return $.extend({}, options.widgetPositioning);
3077            }
3078
3079            if (({}).toString.call(widgetPositioning) !== '[object Object]') {
3080                throw new TypeError('widgetPositioning() expects an object variable');
3081            }
3082            if (widgetPositioning.horizontal) {
3083                if (typeof widgetPositioning.horizontal !== 'string') {
3084                    throw new TypeError('widgetPositioning() horizontal variable must be a string');
3085                }
3086                widgetPositioning.horizontal = widgetPositioning.horizontal.toLowerCase();
3087                if (horizontalModes.indexOf(widgetPositioning.horizontal) === -1) {
3088                    throw new TypeError('widgetPositioning() expects horizontal parameter to be one of (' + horizontalModes.join(', ') + ')');
3089                }
3090                options.widgetPositioning.horizontal = widgetPositioning.horizontal;
3091            }
3092            if (widgetPositioning.vertical) {
3093                if (typeof widgetPositioning.vertical !== 'string') {
3094                    throw new TypeError('widgetPositioning() vertical variable must be a string');
3095                }
3096                widgetPositioning.vertical = widgetPositioning.vertical.toLowerCase();
3097                if (verticalModes.indexOf(widgetPositioning.vertical) === -1) {
3098                    throw new TypeError('widgetPositioning() expects vertical parameter to be one of (' + verticalModes.join(', ') + ')');
3099                }
3100                options.widgetPositioning.vertical = widgetPositioning.vertical;
3101            }
3102            update();
3103            return picker;
3104        };
3105
3106        picker.calendarWeeks = function (calendarWeeks) {
3107            if (arguments.length === 0) {
3108                return options.calendarWeeks;
3109            }
3110
3111            if (typeof calendarWeeks !== 'boolean') {
3112                throw new TypeError('calendarWeeks() expects parameter to be a boolean value');
3113            }
3114
3115            options.calendarWeeks = calendarWeeks;
3116            update();
3117            return picker;
3118        };
3119
3120        picker.showTodayButton = function (showTodayButton) {
3121            if (arguments.length === 0) {
3122                return options.showTodayButton;
3123            }
3124
3125            if (typeof showTodayButton !== 'boolean') {
3126                throw new TypeError('showTodayButton() expects a boolean parameter');
3127            }
3128
3129            options.showTodayButton = showTodayButton;
3130            if (widget) {
3131                hide();
3132                show();
3133            }
3134            return picker;
3135        };
3136
3137        picker.showClear = function (showClear) {
3138            if (arguments.length === 0) {
3139                return options.showClear;
3140            }
3141
3142            if (typeof showClear !== 'boolean') {
3143                throw new TypeError('showClear() expects a boolean parameter');
3144            }
3145
3146            options.showClear = showClear;
3147            if (widget) {
3148                hide();
3149                show();
3150            }
3151            return picker;
3152        };
3153
3154        picker.widgetParent = function (widgetParent) {
3155            if (arguments.length === 0) {
3156                return options.widgetParent;
3157            }
3158
3159            if (typeof widgetParent === 'string') {
3160                widgetParent = $(widgetParent);
3161            }
3162
3163            if (widgetParent !== null && (typeof widgetParent !== 'string' && !(widgetParent instanceof $))) {
3164                throw new TypeError('widgetParent() expects a string or a jQuery object parameter');
3165            }
3166
3167            options.widgetParent = widgetParent;
3168            if (widget) {
3169                hide();
3170                show();
3171            }
3172            return picker;
3173        };
3174
3175        picker.keepOpen = function (keepOpen) {
3176            if (arguments.length === 0) {
3177                return options.keepOpen;
3178            }
3179
3180            if (typeof keepOpen !== 'boolean') {
3181                throw new TypeError('keepOpen() expects a boolean parameter');
3182            }
3183
3184            options.keepOpen = keepOpen;
3185            return picker;
3186        };
3187
3188        picker.focusOnShow = function (focusOnShow) {
3189            if (arguments.length === 0) {
3190                return options.focusOnShow;
3191            }
3192
3193            if (typeof focusOnShow !== 'boolean') {
3194                throw new TypeError('focusOnShow() expects a boolean parameter');
3195            }
3196
3197            options.focusOnShow = focusOnShow;
3198            return picker;
3199        };
3200
3201        picker.inline = function (inline) {
3202            if (arguments.length === 0) {
3203                return options.inline;
3204            }
3205
3206            if (typeof inline !== 'boolean') {
3207                throw new TypeError('inline() expects a boolean parameter');
3208            }
3209
3210            options.inline = inline;
3211            return picker;
3212        };
3213
3214        picker.clear = function () {
3215            clear();
3216            return picker;
3217        };
3218
3219        picker.keyBinds = function (keyBinds) {
3220            if (arguments.length === 0) {
3221                return options.keyBinds;
3222            }
3223
3224            options.keyBinds = keyBinds;
3225            return picker;
3226        };
3227
3228        picker.getMoment = function (d) {
3229            return getMoment(d);
3230        };
3231
3232        picker.debug = function (debug) {
3233            if (typeof debug !== 'boolean') {
3234                throw new TypeError('debug() expects a boolean parameter');
3235            }
3236
3237            options.debug = debug;
3238            return picker;
3239        };
3240
3241        picker.allowInputToggle = function (allowInputToggle) {
3242            if (arguments.length === 0) {
3243                return options.allowInputToggle;
3244            }
3245
3246            if (typeof allowInputToggle !== 'boolean') {
3247                throw new TypeError('allowInputToggle() expects a boolean parameter');
3248            }
3249
3250            options.allowInputToggle = allowInputToggle;
3251            return picker;
3252        };
3253
3254        picker.showClose = function (showClose) {
3255            if (arguments.length === 0) {
3256                return options.showClose;
3257            }
3258
3259            if (typeof showClose !== 'boolean') {
3260                throw new TypeError('showClose() expects a boolean parameter');
3261            }
3262
3263            options.showClose = showClose;
3264            return picker;
3265        };
3266
3267        picker.keepInvalid = function (keepInvalid) {
3268            if (arguments.length === 0) {
3269                return options.keepInvalid;
3270            }
3271
3272            if (typeof keepInvalid !== 'boolean') {
3273                throw new TypeError('keepInvalid() expects a boolean parameter');
3274            }
3275            options.keepInvalid = keepInvalid;
3276            return picker;
3277        };
3278
3279        picker.datepickerInput = function (datepickerInput) {
3280            if (arguments.length === 0) {
3281                return options.datepickerInput;
3282            }
3283
3284            if (typeof datepickerInput !== 'string') {
3285                throw new TypeError('datepickerInput() expects a string parameter');
3286            }
3287
3288            options.datepickerInput = datepickerInput;
3289            return picker;
3290        };
3291
3292        picker.parseInputDate = function (parseInputDate) {
3293            if (arguments.length === 0) {
3294                return options.parseInputDate;
3295            }
3296
3297            if (typeof parseInputDate !== 'function') {
3298                throw new TypeError('parseInputDate() sholud be as function');
3299            }
3300
3301            options.parseInputDate = parseInputDate;
3302
3303            return picker;
3304        };
3305
3306        picker.disabledTimeIntervals = function (disabledTimeIntervals) {
3307            ///<signature helpKeyword="$.fn.datetimepicker.disabledTimeIntervals">
3308            ///<summary>Returns an array with the currently set disabled dates on the component.</summary>
3309            ///<returns type="array">options.disabledTimeIntervals</returns>
3310            ///</signature>
3311            ///<signature>
3312            ///<summary>Setting this takes precedence over options.minDate, options.maxDate configuration. Also calling this function removes the configuration of
3313            ///options.enabledDates if such exist.</summary>
3314            ///<param name="dates" locid="$.fn.datetimepicker.disabledTimeIntervals_p:dates">Takes an [ string or Date or moment ] of values and allows the user to select only from those days.</param>
3315            ///</signature>
3316            if (arguments.length === 0) {
3317                return (options.disabledTimeIntervals ? $.extend({}, options.disabledTimeIntervals) : options.disabledTimeIntervals);
3318            }
3319
3320            if (!disabledTimeIntervals) {
3321                options.disabledTimeIntervals = false;
3322                update();
3323                return picker;
3324            }
3325            if (!(disabledTimeIntervals instanceof Array)) {
3326                throw new TypeError('disabledTimeIntervals() expects an array parameter');
3327            }
3328            options.disabledTimeIntervals = disabledTimeIntervals;
3329            update();
3330            return picker;
3331        };
3332
3333        picker.disabledHours = function (hours) {
3334            ///<signature helpKeyword="$.fn.datetimepicker.disabledHours">
3335            ///<summary>Returns an array with the currently set disabled hours on the component.</summary>
3336            ///<returns type="array">options.disabledHours</returns>
3337            ///</signature>
3338            ///<signature>
3339            ///<summary>Setting this takes precedence over options.minDate, options.maxDate configuration. Also calling this function removes the configuration of
3340            ///options.enabledHours if such exist.</summary>
3341            ///<param name="hours" locid="$.fn.datetimepicker.disabledHours_p:hours">Takes an [ int ] of values and disallows the user to select only from those hours.</param>
3342            ///</signature>
3343            if (arguments.length === 0) {
3344                return (options.disabledHours ? $.extend({}, options.disabledHours) : options.disabledHours);
3345            }
3346
3347            if (!hours) {
3348                options.disabledHours = false;
3349                update();
3350                return picker;
3351            }
3352            if (!(hours instanceof Array)) {
3353                throw new TypeError('disabledHours() expects an array parameter');
3354            }
3355            options.disabledHours = indexGivenHours(hours);
3356            options.enabledHours = false;
3357            if (options.useCurrent && !options.keepInvalid) {
3358                var tries = 0;
3359                while (!isValid(date, 'h')) {
3360                    date.add(1, 'h');
3361                    if (tries === 24) {
3362                        throw 'Tried 24 times to find a valid date';
3363                    }
3364                    tries++;
3365                }
3366                setValue(date);
3367            }
3368            update();
3369            return picker;
3370        };
3371
3372        picker.enabledHours = function (hours) {
3373            ///<signature helpKeyword="$.fn.datetimepicker.enabledHours">
3374            ///<summary>Returns an array with the currently set enabled hours on the component.</summary>
3375            ///<returns type="array">options.enabledHours</returns>
3376            ///</signature>
3377            ///<signature>
3378            ///<summary>Setting this takes precedence over options.minDate, options.maxDate configuration. Also calling this function removes the configuration of options.disabledHours if such exist.</summary>
3379            ///<param name="hours" locid="$.fn.datetimepicker.enabledHours_p:hours">Takes an [ int ] of values and allows the user to select only from those hours.</param>
3380            ///</signature>
3381            if (arguments.length === 0) {
3382                return (options.enabledHours ? $.extend({}, options.enabledHours) : options.enabledHours);
3383            }
3384
3385            if (!hours) {
3386                options.enabledHours = false;
3387                update();
3388                return picker;
3389            }
3390            if (!(hours instanceof Array)) {
3391                throw new TypeError('enabledHours() expects an array parameter');
3392            }
3393            options.enabledHours = indexGivenHours(hours);
3394            options.disabledHours = false;
3395            if (options.useCurrent && !options.keepInvalid) {
3396                var tries = 0;
3397                while (!isValid(date, 'h')) {
3398                    date.add(1, 'h');
3399                    if (tries === 24) {
3400                        throw 'Tried 24 times to find a valid date';
3401                    }
3402                    tries++;
3403                }
3404                setValue(date);
3405            }
3406            update();
3407            return picker;
3408        };
3409        /**
3410         * Returns the component's model current viewDate, a moment object or null if not set. Passing a null value unsets the components model current moment. Parsing of the newDate parameter is made using moment library with the options.format and options.useStrict components configuration.
3411         * @param {Takes string, viewDate, moment, null parameter.} newDate
3412         * @returns {viewDate.clone()}
3413         */
3414        picker.viewDate = function (newDate) {
3415            if (arguments.length === 0) {
3416                return viewDate.clone();
3417            }
3418
3419            if (!newDate) {
3420                viewDate = date.clone();
3421                return picker;
3422            }
3423
3424            if (typeof newDate !== 'string' && !moment.isMoment(newDate) && !(newDate instanceof Date)) {
3425                throw new TypeError('viewDate() parameter must be one of [string, moment or Date]');
3426            }
3427
3428            viewDate = parseInputDate(newDate);
3429            viewUpdate();
3430            return picker;
3431        };
3432
3433        // initializing element and component attributes
3434        if (element.is('input')) {
3435            input = element;
3436        } else {
3437            input = element.find(options.datepickerInput);
3438            if (input.length === 0) {
3439                input = element.find('input');
3440            } else if (!input.is('input')) {
3441                throw new Error('CSS class "' + options.datepickerInput + '" cannot be applied to non input element');
3442            }
3443        }
3444
3445        if (element.hasClass('input-group')) {
3446            // in case there is more then one 'input-group-addon' Issue #48
3447            if (element.find('.datepickerbutton').length === 0) {
3448                component = element.find('.input-group-addon');
3449            } else {
3450                component = element.find('.datepickerbutton');
3451            }
3452        }
3453
3454        if (!options.inline && !input.is('input')) {
3455            throw new Error('Could not initialize DateTimePicker without an input element');
3456        }
3457
3458        // Set defaults for date here now instead of in var declaration
3459        date = getMoment();
3460        viewDate = date.clone();
3461
3462        $.extend(true, options, dataToOptions());
3463
3464        picker.options(options);
3465
3466        initFormatting();
3467
3468        attachDatePickerElementEvents();
3469
3470        if (input.prop('disabled')) {
3471            picker.disable();
3472        }
3473        if (input.is('input') && input.val().trim().length !== 0) {
3474            setValue(parseInputDate(input.val().trim()));
3475        }
3476        else if (options.defaultDate && input.attr('placeholder') === undefined) {
3477            setValue(options.defaultDate);
3478        }
3479        if (options.inline) {
3480            show();
3481        }
3482        return picker;
3483    };
3484
3485    /********************************************************************************
3486     *
3487     * jQuery plugin constructor and defaults object
3488     *
3489     ********************************************************************************/
3490
3491    /**
3492    * See (http://jquery.com/).
3493    * @name jQuery
3494    * @class
3495    * See the jQuery Library  (http://jquery.com/) for full details.  This just
3496    * documents the function and classes that are added to jQuery by this plug-in.
3497    */
3498    /**
3499     * See (http://jquery.com/)
3500     * @name fn
3501     * @class
3502     * See the jQuery Library  (http://jquery.com/) for full details.  This just
3503     * documents the function and classes that are added to jQuery by this plug-in.
3504     * @memberOf jQuery
3505     */
3506    /**
3507     * Show comments
3508     * @class datetimepicker
3509     * @memberOf jQuery.fn
3510     */
3511    $.fn.datetimepicker = function (options) {
3512        options = options || {};
3513
3514        var args = Array.prototype.slice.call(arguments, 1),
3515            isInstance = true,
3516            thisMethods = ['destroy', 'hide', 'show', 'toggle'],
3517            returnValue;
3518
3519        if (typeof options === 'object') {
3520            return this.each(function () {
3521                var $this = $(this),
3522                    _options;
3523                if (!$this.data('DateTimePicker')) {
3524                    // create a private copy of the defaults object
3525                    _options = $.extend(true, {}, $.fn.datetimepicker.defaults, options);
3526                    $this.data('DateTimePicker', dateTimePicker($this, _options));
3527                }
3528            });
3529        } else if (typeof options === 'string') {
3530            this.each(function () {
3531                var $this = $(this),
3532                    instance = $this.data('DateTimePicker');
3533                if (!instance) {
3534                    throw new Error('bootstrap-datetimepicker("' + options + '") method was called on an element that is not using DateTimePicker');
3535                }
3536
3537                returnValue = instance[options].apply(instance, args);
3538                isInstance = returnValue === instance;
3539            });
3540
3541            if (isInstance || $.inArray(options, thisMethods) > -1) {
3542                return this;
3543            }
3544
3545            return returnValue;
3546        }
3547
3548        throw new TypeError('Invalid arguments for DateTimePicker: ' + options);
3549    };
3550
3551    $.fn.datetimepicker.defaults = {
3552        timeZone: '',
3553        format: false,
3554        dayViewHeaderFormat: 'MMMM YYYY',
3555        extraFormats: false,
3556        stepping: 1,
3557        minDate: false,
3558        maxDate: false,
3559        useCurrent: true,
3560        collapse: true,
3561        locale: moment.locale(),
3562        defaultDate: false,
3563        disabledDates: false,
3564        enabledDates: false,
3565        icons: {
3566            time: 'glyphicon glyphicon-time',
3567            date: 'glyphicon glyphicon-calendar',
3568            up: 'glyphicon glyphicon-chevron-up',
3569            down: 'glyphicon glyphicon-chevron-down',
3570            previous: 'glyphicon glyphicon-chevron-left',
3571            next: 'glyphicon glyphicon-chevron-right',
3572            today: 'glyphicon glyphicon-screenshot',
3573            clear: 'glyphicon glyphicon-trash',
3574            close: 'glyphicon glyphicon-remove'
3575        },
3576        tooltips: {
3577            today: 'Go to today',
3578            clear: 'Clear selection',
3579            close: 'Close the picker',
3580            selectMonth: 'Select Month',
3581            prevMonth: 'Previous Month',
3582            nextMonth: 'Next Month',
3583            selectYear: 'Select Year',
3584            prevYear: 'Previous Year',
3585            nextYear: 'Next Year',
3586            selectDecade: 'Select Decade',
3587            prevDecade: 'Previous Decade',
3588            nextDecade: 'Next Decade',
3589            prevCentury: 'Previous Century',
3590            nextCentury: 'Next Century',
3591            pickHour: 'Pick Hour',
3592            incrementHour: 'Increment Hour',
3593            decrementHour: 'Decrement Hour',
3594            pickMinute: 'Pick Minute',
3595            incrementMinute: 'Increment Minute',
3596            decrementMinute: 'Decrement Minute',
3597            pickSecond: 'Pick Second',
3598            incrementSecond: 'Increment Second',
3599            decrementSecond: 'Decrement Second',
3600            togglePeriod: 'Toggle Period',
3601            selectTime: 'Select Time'
3602        },
3603        useStrict: false,
3604        sideBySide: false,
3605        daysOfWeekDisabled: false,
3606        calendarWeeks: false,
3607        viewMode: 'days',
3608        toolbarPlacement: 'default',
3609        showTodayButton: false,
3610        showClear: false,
3611        showClose: false,
3612        widgetPositioning: {
3613            horizontal: 'auto',
3614            vertical: 'auto'
3615        },
3616        widgetParent: null,
3617        ignoreReadonly: false,
3618        keepOpen: false,
3619        focusOnShow: true,
3620        inline: false,
3621        keepInvalid: false,
3622        datepickerInput: '.datepickerinput',
3623        keyBinds: {
3624            up: function (widget) {
3625                if (!widget) {
3626                    return;
3627                }
3628                var d = this.date() || this.getMoment();
3629                if (widget.find('.datepicker').is(':visible')) {
3630                    this.date(d.clone().subtract(7, 'd'));
3631                } else {
3632                    this.date(d.clone().add(this.stepping(), 'm'));
3633                }
3634            },
3635            down: function (widget) {
3636                if (!widget) {
3637                    this.show();
3638                    return;
3639                }
3640                var d = this.date() || this.getMoment();
3641                if (widget.find('.datepicker').is(':visible')) {
3642                    this.date(d.clone().add(7, 'd'));
3643                } else {
3644                    this.date(d.clone().subtract(this.stepping(), 'm'));
3645                }
3646            },
3647            'control up': function (widget) {
3648                if (!widget) {
3649                    return;
3650                }
3651                var d = this.date() || this.getMoment();
3652                if (widget.find('.datepicker').is(':visible')) {
3653                    this.date(d.clone().subtract(1, 'y'));
3654                } else {
3655                    this.date(d.clone().add(1, 'h'));
3656                }
3657            },
3658            'control down': function (widget) {
3659                if (!widget) {
3660                    return;
3661                }
3662                var d = this.date() || this.getMoment();
3663                if (widget.find('.datepicker').is(':visible')) {
3664                    this.date(d.clone().add(1, 'y'));
3665                } else {
3666                    this.date(d.clone().subtract(1, 'h'));
3667                }
3668            },
3669            left: function (widget) {
3670                if (!widget) {
3671                    return;
3672                }
3673                var d = this.date() || this.getMoment();
3674                if (widget.find('.datepicker').is(':visible')) {
3675                    this.date(d.clone().subtract(1, 'd'));
3676                }
3677            },
3678            right: function (widget) {
3679                if (!widget) {
3680                    return;
3681                }
3682                var d = this.date() || this.getMoment();
3683                if (widget.find('.datepicker').is(':visible')) {
3684                    this.date(d.clone().add(1, 'd'));
3685                }
3686            },
3687            pageUp: function (widget) {
3688                if (!widget) {
3689                    return;
3690                }
3691                var d = this.date() || this.getMoment();
3692                if (widget.find('.datepicker').is(':visible')) {
3693                    this.date(d.clone().subtract(1, 'M'));
3694                }
3695            },
3696            pageDown: function (widget) {
3697                if (!widget) {
3698                    return;
3699                }
3700                var d = this.date() || this.getMoment();
3701                if (widget.find('.datepicker').is(':visible')) {
3702                    this.date(d.clone().add(1, 'M'));
3703                }
3704            },
3705            enter: function () {
3706                this.hide();
3707            },
3708            escape: function () {
3709                this.hide();
3710            },
3711            //tab: function (widget) { //this break the flow of the form. disabling for now
3712            //    var toggle = widget.find('.picker-switch a[data-action="togglePicker"]');
3713            //    if(toggle.length > 0) toggle.click();
3714            //},
3715            'control space': function (widget) {
3716                if (!widget) {
3717                    return;
3718                }
3719                if (widget.find('.timepicker').is(':visible')) {
3720                    widget.find('.btn[data-action="togglePeriod"]').click();
3721                }
3722            },
3723            t: function () {
3724                this.date(this.getMoment());
3725            },
3726            'delete': function () {
3727                this.clear();
3728            }
3729        },
3730        debug: false,
3731        allowInputToggle: false,
3732        disabledTimeIntervals: false,
3733        disabledHours: false,
3734        enabledHours: false,
3735        viewDate: false
3736    };
3737
3738    return $.fn.datetimepicker;
3739}));
3740
3741
3742/***/ }),
3743
vendor: 23,854 bytes, lines 3744-4357
3744/***/ "./node_modules/jquery-mask-plugin/dist/jquery.mask.js":
3745/*!*************************************************************!*\
3746  !*** ./node_modules/jquery-mask-plugin/dist/jquery.mask.js ***!
3747  \*************************************************************/
3748/***/ ((module, exports, __webpack_require__) => {
3749
3750var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
3751 * jquery.mask.js
3752 * @version: v1.14.16
3753 * @author: Igor Escobar
3754 *
3755 * Created by Igor Escobar on 2012-03-10. Please report any bug at github.com/igorescobar/jQuery-Mask-Plugin
3756 *
3757 * Copyright (c) 2012 Igor Escobar http://igorescobar.com
3758 *
3759 * The MIT License (http://www.opensource.org/licenses/mit-license.php)
3760 *
3761 * Permission is hereby granted, free of charge, to any person
3762 * obtaining a copy of this software and associated documentation
3763 * files (the "Software"), to deal in the Software without
3764 * restriction, including without limitation the rights to use,
3765 * copy, modify, merge, publish, distribute, sublicense, and/or sell
3766 * copies of the Software, and to permit persons to whom the
3767 * Software is furnished to do so, subject to the following
3768 * conditions:
3769 *
3770 * The above copyright notice and this permission notice shall be
3771 * included in all copies or substantial portions of the Software.
3772 *
3773 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
3774 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
3775 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
3776 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
3777 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
3778 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
3779 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
3780 * OTHER DEALINGS IN THE SOFTWARE.
3781 */
3782
3783/* jshint laxbreak: true */
3784/* jshint maxcomplexity:17 */
3785/* global define */
3786
3787// UMD (Universal Module Definition) patterns for JavaScript modules that work everywhere.
3788// https://github.com/umdjs/umd/blob/master/templates/jqueryPlugin.js
3789(function (factory, jQuery, Zepto) {
3790
3791    if (true) {
3792        !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
3793		__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
3794		(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
3795		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
3796    } else // removed by dead control flow
3797{}
3798
3799}(function ($) {
3800    'use strict';
3801
3802    var Mask = function (el, mask, options) {
3803
3804        var p = {
3805            invalid: [],
3806            getCaret: function () {
3807                try {
3808                    var sel,
3809                        pos = 0,
3810                        ctrl = el.get(0),
3811                        dSel = document.selection,
3812                        cSelStart = ctrl.selectionStart;
3813
3814                    // IE Support
3815                    if (dSel && navigator.appVersion.indexOf('MSIE 10') === -1) {
3816                        sel = dSel.createRange();
3817                        sel.moveStart('character', -p.val().length);
3818                        pos = sel.text.length;
3819                    }
3820                    // Firefox support
3821                    else if (cSelStart || cSelStart === '0') {
3822                        pos = cSelStart;
3823                    }
3824
3825                    return pos;
3826                } catch (e) {}
3827            },
3828            setCaret: function(pos) {
3829                try {
3830                    if (el.is(':focus')) {
3831                        var range, ctrl = el.get(0);
3832
3833                        // Firefox, WebKit, etc..
3834                        if (ctrl.setSelectionRange) {
3835                            ctrl.setSelectionRange(pos, pos);
3836                        } else { // IE
3837                            range = ctrl.createTextRange();
3838                            range.collapse(true);
3839                            range.moveEnd('character', pos);
3840                            range.moveStart('character', pos);
3841                            range.select();
3842                        }
3843                    }
3844                } catch (e) {}
3845            },
3846            events: function() {
3847                el
3848                .on('keydown.mask', function(e) {
3849                    el.data('mask-keycode', e.keyCode || e.which);
3850                    el.data('mask-previus-value', el.val());
3851                    el.data('mask-previus-caret-pos', p.getCaret());
3852                    p.maskDigitPosMapOld = p.maskDigitPosMap;
3853                })
3854                .on($.jMaskGlobals.useInput ? 'input.mask' : 'keyup.mask', p.behaviour)
3855                .on('paste.mask drop.mask', function() {
3856                    setTimeout(function() {
3857                        el.keydown().keyup();
3858                    }, 100);
3859                })
3860                .on('change.mask', function(){
3861                    el.data('changed', true);
3862                })
3863                .on('blur.mask', function(){
3864                    if (oldValue !== p.val() && !el.data('changed')) {
3865                        el.trigger('change');
3866                    }
3867                    el.data('changed', false);
3868                })
3869                // it's very important that this callback remains in this position
3870                // otherwhise oldValue it's going to work buggy
3871                .on('blur.mask', function() {
3872                    oldValue = p.val();
3873                })
3874                // select all text on focus
3875                .on('focus.mask', function (e) {
3876                    if (options.selectOnFocus === true) {
3877                        $(e.target).select();
3878                    }
3879                })
3880                // clear the value if it not complete the mask
3881                .on('focusout.mask', function() {
3882                    if (options.clearIfNotMatch && !regexMask.test(p.val())) {
3883                       p.val('');
3884                   }
3885                });
3886            },
3887            getRegexMask: function() {
3888                var maskChunks = [], translation, pattern, optional, recursive, oRecursive, r;
3889
3890                for (var i = 0; i < mask.length; i++) {
3891                    translation = jMask.translation[mask.charAt(i)];
3892
3893                    if (translation) {
3894
3895                        pattern = translation.pattern.toString().replace(/.{1}$|^.{1}/g, '');
3896                        optional = translation.optional;
3897                        recursive = translation.recursive;
3898
3899                        if (recursive) {
3900                            maskChunks.push(mask.charAt(i));
3901                            oRecursive = {digit: mask.charAt(i), pattern: pattern};
3902                        } else {
3903                            maskChunks.push(!optional && !recursive ? pattern : (pattern + '?'));
3904                        }
3905
3906                    } else {
3907                        maskChunks.push(mask.charAt(i).replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'));
3908                    }
3909                }
3910
3911                r = maskChunks.join('');
3912
3913                if (oRecursive) {
3914                    r = r.replace(new RegExp('(' + oRecursive.digit + '(.*' + oRecursive.digit + ')?)'), '($1)?')
3915                         .replace(new RegExp(oRecursive.digit, 'g'), oRecursive.pattern);
3916                }
3917
3918                return new RegExp(r);
3919            },
3920            destroyEvents: function() {
3921                el.off(['input', 'keydown', 'keyup', 'paste', 'drop', 'blur', 'focusout', ''].join('.mask '));
3922            },
3923            val: function(v) {
3924                var isInput = el.is('input'),
3925                    method = isInput ? 'val' : 'text',
3926                    r;
3927
3928                if (arguments.length > 0) {
3929                    if (el[method]() !== v) {
3930                        el[method](v);
3931                    }
3932                    r = el;
3933                } else {
3934                    r = el[method]();
3935                }
3936
3937                return r;
3938            },
3939            calculateCaretPosition: function(oldVal) {
3940                var newVal = p.getMasked(),
3941                    caretPosNew = p.getCaret();
3942                if (oldVal !== newVal) {
3943                    var caretPosOld = el.data('mask-previus-caret-pos') || 0,
3944                        newValL = newVal.length,
3945                        oldValL = oldVal.length,
3946                        maskDigitsBeforeCaret = 0,
3947                        maskDigitsAfterCaret = 0,
3948                        maskDigitsBeforeCaretAll = 0,
3949                        maskDigitsBeforeCaretAllOld = 0,
3950                        i = 0;
3951
3952                    for (i = caretPosNew; i < newValL; i++) {
3953                        if (!p.maskDigitPosMap[i]) {
3954                            break;
3955                        }
3956                        maskDigitsAfterCaret++;
3957                    }
3958
3959                    for (i = caretPosNew - 1; i >= 0; i--) {
3960                        if (!p.maskDigitPosMap[i]) {
3961                            break;
3962                        }
3963                        maskDigitsBeforeCaret++;
3964                    }
3965
3966                    for (i = caretPosNew - 1; i >= 0; i--) {
3967                        if (p.maskDigitPosMap[i]) {
3968                            maskDigitsBeforeCaretAll++;
3969                        }
3970                    }
3971
3972                    for (i = caretPosOld - 1; i >= 0; i--) {
3973                        if (p.maskDigitPosMapOld[i]) {
3974                            maskDigitsBeforeCaretAllOld++;
3975                        }
3976                    }
3977
3978                    // if the cursor is at the end keep it there
3979                    if (caretPosNew > oldValL) {
3980                      caretPosNew = newValL * 10;
3981                    } else if (caretPosOld >= caretPosNew && caretPosOld !== oldValL) {
3982                        if (!p.maskDigitPosMapOld[caretPosNew])  {
3983                          var caretPos = caretPosNew;
3984                          caretPosNew -= maskDigitsBeforeCaretAllOld - maskDigitsBeforeCaretAll;
3985                          caretPosNew -= maskDigitsBeforeCaret;
3986                          if (p.maskDigitPosMap[caretPosNew])  {
3987                            caretPosNew = caretPos;
3988                          }
3989                        }
3990                    }
3991                    else if (caretPosNew > caretPosOld) {
3992                        caretPosNew += maskDigitsBeforeCaretAll - maskDigitsBeforeCaretAllOld;
3993                        caretPosNew += maskDigitsAfterCaret;
3994                    }
3995                }
3996                return caretPosNew;
3997            },
3998            behaviour: function(e) {
3999                e = e || window.event;
4000                p.invalid = [];
4001
4002                var keyCode = el.data('mask-keycode');
4003
4004                if ($.inArray(keyCode, jMask.byPassKeys) === -1) {
4005                    var newVal = p.getMasked(),
4006                        caretPos = p.getCaret(),
4007                        oldVal = el.data('mask-previus-value') || '';
4008
4009                    // this is a compensation to devices/browsers that don't compensate
4010                    // caret positioning the right way
4011                    setTimeout(function() {
4012                      p.setCaret(p.calculateCaretPosition(oldVal));
4013                    }, $.jMaskGlobals.keyStrokeCompensation);
4014
4015                    p.val(newVal);
4016                    p.setCaret(caretPos);
4017                    return p.callbacks(e);
4018                }
4019            },
4020            getMasked: function(skipMaskChars, val) {
4021                var buf = [],
4022                    value = val === undefined ? p.val() : val + '',
4023                    m = 0, maskLen = mask.length,
4024                    v = 0, valLen = value.length,
4025                    offset = 1, addMethod = 'push',
4026                    resetPos = -1,
4027                    maskDigitCount = 0,
4028                    maskDigitPosArr = [],
4029                    lastMaskChar,
4030                    check;
4031
4032                if (options.reverse) {
4033                    addMethod = 'unshift';
4034                    offset = -1;
4035                    lastMaskChar = 0;
4036                    m = maskLen - 1;
4037                    v = valLen - 1;
4038                    check = function () {
4039                        return m > -1 && v > -1;
4040                    };
4041                } else {
4042                    lastMaskChar = maskLen - 1;
4043                    check = function () {
4044                        return m < maskLen && v < valLen;
4045                    };
4046                }
4047
4048                var lastUntranslatedMaskChar;
4049                while (check()) {
4050                    var maskDigit = mask.charAt(m),
4051                        valDigit = value.charAt(v),
4052                        translation = jMask.translation[maskDigit];
4053
4054                    if (translation) {
4055                        if (valDigit.match(translation.pattern)) {
4056                            buf[addMethod](valDigit);
4057                             if (translation.recursive) {
4058                                if (resetPos === -1) {
4059                                    resetPos = m;
4060                                } else if (m === lastMaskChar && m !== resetPos) {
4061                                    m = resetPos - offset;
4062                                }
4063
4064                                if (lastMaskChar === resetPos) {
4065                                    m -= offset;
4066                                }
4067                            }
4068                            m += offset;
4069                        } else if (valDigit === lastUntranslatedMaskChar) {
4070                            // matched the last untranslated (raw) mask character that we encountered
4071                            // likely an insert offset the mask character from the last entry; fall
4072                            // through and only increment v
4073                            maskDigitCount--;
4074                            lastUntranslatedMaskChar = undefined;
4075                        } else if (translation.optional) {
4076                            m += offset;
4077                            v -= offset;
4078                        } else if (translation.fallback) {
4079                            buf[addMethod](translation.fallback);
4080                            m += offset;
4081                            v -= offset;
4082                        } else {
4083                          p.invalid.push({p: v, v: valDigit, e: translation.pattern});
4084                        }
4085                        v += offset;
4086                    } else {
4087                        if (!skipMaskChars) {
4088                            buf[addMethod](maskDigit);
4089                        }
4090
4091                        if (valDigit === maskDigit) {
4092                            maskDigitPosArr.push(v);
4093                            v += offset;
4094                        } else {
4095                            lastUntranslatedMaskChar = maskDigit;
4096                            maskDigitPosArr.push(v + maskDigitCount);
4097                            maskDigitCount++;
4098                        }
4099
4100                        m += offset;
4101                    }
4102                }
4103
4104                var lastMaskCharDigit = mask.charAt(lastMaskChar);
4105                if (maskLen === valLen + 1 && !jMask.translation[lastMaskCharDigit]) {
4106                    buf.push(lastMaskCharDigit);
4107                }
4108
4109                var newVal = buf.join('');
4110                p.mapMaskdigitPositions(newVal, maskDigitPosArr, valLen);
4111                return newVal;
4112            },
4113            mapMaskdigitPositions: function(newVal, maskDigitPosArr, valLen) {
4114              var maskDiff = options.reverse ? newVal.length - valLen : 0;
4115              p.maskDigitPosMap = {};
4116              for (var i = 0; i < maskDigitPosArr.length; i++) {
4117                p.maskDigitPosMap[maskDigitPosArr[i] + maskDiff] = 1;
4118              }
4119            },
4120            callbacks: function (e) {
4121                var val = p.val(),
4122                    changed = val !== oldValue,
4123                    defaultArgs = [val, e, el, options],
4124                    callback = function(name, criteria, args) {
4125                        if (typeof options[name] === 'function' && criteria) {
4126                            options[name].apply(this, args);
4127                        }
4128                    };
4129
4130                callback('onChange', changed === true, defaultArgs);
4131                callback('onKeyPress', changed === true, defaultArgs);
4132                callback('onComplete', val.length === mask.length, defaultArgs);
4133                callback('onInvalid', p.invalid.length > 0, [val, e, el, p.invalid, options]);
4134            }
4135        };
4136
4137        el = $(el);
4138        var jMask = this, oldValue = p.val(), regexMask;
4139
4140        mask = typeof mask === 'function' ? mask(p.val(), undefined, el,  options) : mask;
4141
4142        // public methods
4143        jMask.mask = mask;
4144        jMask.options = options;
4145        jMask.remove = function() {
4146            var caret = p.getCaret();
4147            if (jMask.options.placeholder) {
4148                el.removeAttr('placeholder');
4149            }
4150            if (el.data('mask-maxlength')) {
4151                el.removeAttr('maxlength');
4152            }
4153            p.destroyEvents();
4154            p.val(jMask.getCleanVal());
4155            p.setCaret(caret);
4156            return el;
4157        };
4158
4159        // get value without mask
4160        jMask.getCleanVal = function() {
4161           return p.getMasked(true);
4162        };
4163
4164        // get masked value without the value being in the input or element
4165        jMask.getMaskedVal = function(val) {
4166           return p.getMasked(false, val);
4167        };
4168
4169       jMask.init = function(onlyMask) {
4170            onlyMask = onlyMask || false;
4171            options = options || {};
4172
4173            jMask.clearIfNotMatch  = $.jMaskGlobals.clearIfNotMatch;
4174            jMask.byPassKeys       = $.jMaskGlobals.byPassKeys;
4175            jMask.translation      = $.extend({}, $.jMaskGlobals.translation, options.translation);
4176
4177            jMask = $.extend(true, {}, jMask, options);
4178
4179            regexMask = p.getRegexMask();
4180
4181            if (onlyMask) {
4182                p.events();
4183                p.val(p.getMasked());
4184            } else {
4185                if (options.placeholder) {
4186                    el.attr('placeholder' , options.placeholder);
4187                }
4188
4189                // this is necessary, otherwise if the user submit the form
4190                // and then press the "back" button, the autocomplete will erase
4191                // the data. Works fine on IE9+, FF, Opera, Safari.
4192                if (el.data('mask')) {
4193                  el.attr('autocomplete', 'off');
4194                }
4195
4196                // detect if is necessary let the user type freely.
4197                // for is a lot faster than forEach.
4198                for (var i = 0, maxlength = true; i < mask.length; i++) {
4199                    var translation = jMask.translation[mask.charAt(i)];
4200                    if (translation && translation.recursive) {
4201                        maxlength = false;
4202                        break;
4203                    }
4204                }
4205
4206                if (maxlength) {
4207                    el.attr('maxlength', mask.length).data('mask-maxlength', true);
4208                }
4209
4210                p.destroyEvents();
4211                p.events();
4212
4213                var caret = p.getCaret();
4214                p.val(p.getMasked());
4215                p.setCaret(caret);
4216            }
4217        };
4218
4219        jMask.init(!el.is('input'));
4220    };
4221
4222    $.maskWatchers = {};
4223    var HTMLAttributes = function () {
4224        var input = $(this),
4225            options = {},
4226            prefix = 'data-mask-',
4227            mask = input.attr('data-mask');
4228
4229        if (input.attr(prefix + 'reverse')) {
4230            options.reverse = true;
4231        }
4232
4233        if (input.attr(prefix + 'clearifnotmatch')) {
4234            options.clearIfNotMatch = true;
4235        }
4236
4237        if (input.attr(prefix + 'selectonfocus') === 'true') {
4238           options.selectOnFocus = true;
4239        }
4240
4241        if (notSameMaskObject(input, mask, options)) {
4242            return input.data('mask', new Mask(this, mask, options));
4243        }
4244    },
4245    notSameMaskObject = function(field, mask, options) {
4246        options = options || {};
4247        var maskObject = $(field).data('mask'),
4248            stringify = JSON.stringify,
4249            value = $(field).val() || $(field).text();
4250        try {
4251            if (typeof mask === 'function') {
4252                mask = mask(value);
4253            }
4254            return typeof maskObject !== 'object' || stringify(maskObject.options) !== stringify(options) || maskObject.mask !== mask;
4255        } catch (e) {}
4256    },
4257    eventSupported = function(eventName) {
4258        var el = document.createElement('div'), isSupported;
4259
4260        eventName = 'on' + eventName;
4261        isSupported = (eventName in el);
4262
4263        if ( !isSupported ) {
4264            el.setAttribute(eventName, 'return;');
4265            isSupported = typeof el[eventName] === 'function';
4266        }
4267        el = null;
4268
4269        return isSupported;
4270    };
4271
4272    $.fn.mask = function(mask, options) {
4273        options = options || {};
4274        var selector = this.selector,
4275            globals = $.jMaskGlobals,
4276            interval = globals.watchInterval,
4277            watchInputs = options.watchInputs || globals.watchInputs,
4278            maskFunction = function() {
4279                if (notSameMaskObject(this, mask, options)) {
4280                    return $(this).data('mask', new Mask(this, mask, options));
4281                }
4282            };
4283
4284        $(this).each(maskFunction);
4285
4286        if (selector && selector !== '' && watchInputs) {
4287            clearInterval($.maskWatchers[selector]);
4288            $.maskWatchers[selector] = setInterval(function(){
4289                $(document).find(selector).each(maskFunction);
4290            }, interval);
4291        }
4292        return this;
4293    };
4294
4295    $.fn.masked = function(val) {
4296        return this.data('mask').getMaskedVal(val);
4297    };
4298
4299    $.fn.unmask = function() {
4300        clearInterval($.maskWatchers[this.selector]);
4301        delete $.maskWatchers[this.selector];
4302        return this.each(function() {
4303            var dataMask = $(this).data('mask');
4304            if (dataMask) {
4305                dataMask.remove().removeData('mask');
4306            }
4307        });
4308    };
4309
4310    $.fn.cleanVal = function() {
4311        return this.data('mask').getCleanVal();
4312    };
4313
4314    $.applyDataMask = function(selector) {
4315        selector = selector || $.jMaskGlobals.maskElements;
4316        var $selector = (selector instanceof $) ? selector : $(selector);
4317        $selector.filter($.jMaskGlobals.dataMaskAttr).each(HTMLAttributes);
4318    };
4319
4320    var globals = {
4321        maskElements: 'input,td,span,div',
4322        dataMaskAttr: '*[data-mask]',
4323        dataMask: true,
4324        watchInterval: 300,
4325        watchInputs: true,
4326        keyStrokeCompensation: 10,
4327        // old versions of chrome dont work great with input event
4328        useInput: !/Chrome\/[2-4][0-9]|SamsungBrowser/.test(window.navigator.userAgent) && eventSupported('input'),
4329        watchDataMask: false,
4330        byPassKeys: [9, 16, 17, 18, 36, 37, 38, 39, 40, 91],
4331        translation: {
4332            '0': {pattern: /\d/},
4333            '9': {pattern: /\d/, optional: true},
4334            '#': {pattern: /\d/, recursive: true},
4335            'A': {pattern: /[a-zA-Z0-9]/},
4336            'S': {pattern: /[a-zA-Z]/}
4337        }
4338    };
4339
4340    $.jMaskGlobals = $.jMaskGlobals || {};
4341    globals = $.jMaskGlobals = $.extend(true, {}, globals, $.jMaskGlobals);
4342
4343    // looking for inputs with data-mask attribute
4344    if (globals.dataMask) {
4345        $.applyDataMask();
4346    }
4347
4348    setInterval(function() {
4349        if ($.jMaskGlobals.watchDataMask) {
4350            $.applyDataMask();
4351        }
4352    }, globals.watchInterval);
4353}, window.jQuery, window.Zepto));
4354
4355
4356/***/ }),
4357
vendor: 300,529 bytes, lines 4358-15389
4358/***/ "./node_modules/jquery/dist/jquery.js":
4359/*!********************************************!*\
4360  !*** ./node_modules/jquery/dist/jquery.js ***!
4361  \********************************************/
4362/***/ (function(module, exports) {
4363
4364var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
4365 * jQuery JavaScript Library v3.7.1
4366 * https://jquery.com/
4367 *
4368 * Copyright OpenJS Foundation and other contributors
4369 * Released under the MIT license
4370 * https://jquery.org/license
4371 *
4372 * Date: 2023-08-28T13:37Z
4373 */
4374( function( global, factory ) {
4375
4376	"use strict";
4377
4378	if (  true && typeof module.exports === "object" ) {
4379
4380		// For CommonJS and CommonJS-like environments where a proper `window`
4381		// is present, execute the factory and get jQuery.
4382		// For environments that do not have a `window` with a `document`
4383		// (such as Node.js), expose a factory as module.exports.
4384		// This accentuates the need for the creation of a real `window`.
4385		// e.g. var jQuery = require("jquery")(window);
4386		// See ticket trac-14549 for more info.
4387		module.exports = global.document ?
4388			factory( global, true ) :
4389			function( w ) {
4390				if ( !w.document ) {
4391					throw new Error( "jQuery requires a window with a document" );
4392				}
4393				return factory( w );
4394			};
4395	} else {
4396		factory( global );
4397	}
4398
4399// Pass this if window is not defined yet
4400} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
4401
4402// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
4403// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
4404// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
4405// enough that all such attempts are guarded in a try block.
4406"use strict";
4407
4408var arr = [];
4409
4410var getProto = Object.getPrototypeOf;
4411
4412var slice = arr.slice;
4413
4414var flat = arr.flat ? function( array ) {
4415	return arr.flat.call( array );
4416} : function( array ) {
4417	return arr.concat.apply( [], array );
4418};
4419
4420
4421var push = arr.push;
4422
4423var indexOf = arr.indexOf;
4424
4425var class2type = {};
4426
4427var toString = class2type.toString;
4428
4429var hasOwn = class2type.hasOwnProperty;
4430
4431var fnToString = hasOwn.toString;
4432
4433var ObjectFunctionString = fnToString.call( Object );
4434
4435var support = {};
4436
4437var isFunction = function isFunction( obj ) {
4438
4439		// Support: Chrome <=57, Firefox <=52
4440		// In some browsers, typeof returns "function" for HTML <object> elements
4441		// (i.e., `typeof document.createElement( "object" ) === "function"`).
4442		// We don't want to classify *any* DOM node as a function.
4443		// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5
4444		// Plus for old WebKit, typeof returns "function" for HTML collections
4445		// (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756)
4446		return typeof obj === "function" && typeof obj.nodeType !== "number" &&
4447			typeof obj.item !== "function";
4448	};
4449
4450
4451var isWindow = function isWindow( obj ) {
4452		return obj != null && obj === obj.window;
4453	};
4454
4455
4456var document = window.document;
4457
4458
4459
4460	var preservedScriptAttributes = {
4461		type: true,
4462		src: true,
4463		nonce: true,
4464		noModule: true
4465	};
4466
4467	function DOMEval( code, node, doc ) {
4468		doc = doc || document;
4469
4470		var i, val,
4471			script = doc.createElement( "script" );
4472
4473		script.text = code;
4474		if ( node ) {
4475			for ( i in preservedScriptAttributes ) {
4476
4477				// Support: Firefox 64+, Edge 18+
4478				// Some browsers don't support the "nonce" property on scripts.
4479				// On the other hand, just using `getAttribute` is not enough as
4480				// the `nonce` attribute is reset to an empty string whenever it
4481				// becomes browsing-context connected.
4482				// See https://github.com/whatwg/html/issues/2369
4483				// See https://html.spec.whatwg.org/#nonce-attributes
4484				// The `node.getAttribute` check was added for the sake of
4485				// `jQuery.globalEval` so that it can fake a nonce-containing node
4486				// via an object.
4487				val = node[ i ] || node.getAttribute && node.getAttribute( i );
4488				if ( val ) {
4489					script.setAttribute( i, val );
4490				}
4491			}
4492		}
4493		doc.head.appendChild( script ).parentNode.removeChild( script );
4494	}
4495
4496
4497function toType( obj ) {
4498	if ( obj == null ) {
4499		return obj + "";
4500	}
4501
4502	// Support: Android <=2.3 only (functionish RegExp)
4503	return typeof obj === "object" || typeof obj === "function" ?
4504		class2type[ toString.call( obj ) ] || "object" :
4505		typeof obj;
4506}
4507/* global Symbol */
4508// Defining this global in .eslintrc.json would create a danger of using the global
4509// unguarded in another place, it seems safer to define global only for this module
4510
4511
4512
4513var version = "3.7.1",
4514
4515	rhtmlSuffix = /HTML$/i,
4516
4517	// Define a local copy of jQuery
4518	jQuery = function( selector, context ) {
4519
4520		// The jQuery object is actually just the init constructor 'enhanced'
4521		// Need init if jQuery is called (just allow error to be thrown if not included)
4522		return new jQuery.fn.init( selector, context );
4523	};
4524
4525jQuery.fn = jQuery.prototype = {
4526
4527	// The current version of jQuery being used
4528	jquery: version,
4529
4530	constructor: jQuery,
4531
4532	// The default length of a jQuery object is 0
4533	length: 0,
4534
4535	toArray: function() {
4536		return slice.call( this );
4537	},
4538
4539	// Get the Nth element in the matched element set OR
4540	// Get the whole matched element set as a clean array
4541	get: function( num ) {
4542
4543		// Return all the elements in a clean array
4544		if ( num == null ) {
4545			return slice.call( this );
4546		}
4547
4548		// Return just the one element from the set
4549		return num < 0 ? this[ num + this.length ] : this[ num ];
4550	},
4551
4552	// Take an array of elements and push it onto the stack
4553	// (returning the new matched element set)
4554	pushStack: function( elems ) {
4555
4556		// Build a new jQuery matched element set
4557		var ret = jQuery.merge( this.constructor(), elems );
4558
4559		// Add the old object onto the stack (as a reference)
4560		ret.prevObject = this;
4561
4562		// Return the newly-formed element set
4563		return ret;
4564	},
4565
4566	// Execute a callback for every element in the matched set.
4567	each: function( callback ) {
4568		return jQuery.each( this, callback );
4569	},
4570
4571	map: function( callback ) {
4572		return this.pushStack( jQuery.map( this, function( elem, i ) {
4573			return callback.call( elem, i, elem );
4574		} ) );
4575	},
4576
4577	slice: function() {
4578		return this.pushStack( slice.apply( this, arguments ) );
4579	},
4580
4581	first: function() {
4582		return this.eq( 0 );
4583	},
4584
4585	last: function() {
4586		return this.eq( -1 );
4587	},
4588
4589	even: function() {
4590		return this.pushStack( jQuery.grep( this, function( _elem, i ) {
4591			return ( i + 1 ) % 2;
4592		} ) );
4593	},
4594
4595	odd: function() {
4596		return this.pushStack( jQuery.grep( this, function( _elem, i ) {
4597			return i % 2;
4598		} ) );
4599	},
4600
4601	eq: function( i ) {
4602		var len = this.length,
4603			j = +i + ( i < 0 ? len : 0 );
4604		return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
4605	},
4606
4607	end: function() {
4608		return this.prevObject || this.constructor();
4609	},
4610
4611	// For internal use only.
4612	// Behaves like an Array's method, not like a jQuery method.
4613	push: push,
4614	sort: arr.sort,
4615	splice: arr.splice
4616};
4617
4618jQuery.extend = jQuery.fn.extend = function() {
4619	var options, name, src, copy, copyIsArray, clone,
4620		target = arguments[ 0 ] || {},
4621		i = 1,
4622		length = arguments.length,
4623		deep = false;
4624
4625	// Handle a deep copy situation
4626	if ( typeof target === "boolean" ) {
4627		deep = target;
4628
4629		// Skip the boolean and the target
4630		target = arguments[ i ] || {};
4631		i++;
4632	}
4633
4634	// Handle case when target is a string or something (possible in deep copy)
4635	if ( typeof target !== "object" && !isFunction( target ) ) {
4636		target = {};
4637	}
4638
4639	// Extend jQuery itself if only one argument is passed
4640	if ( i === length ) {
4641		target = this;
4642		i--;
4643	}
4644
4645	for ( ; i < length; i++ ) {
4646
4647		// Only deal with non-null/undefined values
4648		if ( ( options = arguments[ i ] ) != null ) {
4649
4650			// Extend the base object
4651			for ( name in options ) {
4652				copy = options[ name ];
4653
4654				// Prevent Object.prototype pollution
4655				// Prevent never-ending loop
4656				if ( name === "__proto__" || target === copy ) {
4657					continue;
4658				}
4659
4660				// Recurse if we're merging plain objects or arrays
4661				if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
4662					( copyIsArray = Array.isArray( copy ) ) ) ) {
4663					src = target[ name ];
4664
4665					// Ensure proper type for the source value
4666					if ( copyIsArray && !Array.isArray( src ) ) {
4667						clone = [];
4668					} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {
4669						clone = {};
4670					} else {
4671						clone = src;
4672					}
4673					copyIsArray = false;
4674
4675					// Never move original objects, clone them
4676					target[ name ] = jQuery.extend( deep, clone, copy );
4677
4678				// Don't bring in undefined values
4679				} else if ( copy !== undefined ) {
4680					target[ name ] = copy;
4681				}
4682			}
4683		}
4684	}
4685
4686	// Return the modified object
4687	return target;
4688};
4689
4690jQuery.extend( {
4691
4692	// Unique for each copy of jQuery on the page
4693	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
4694
4695	// Assume jQuery is ready without the ready module
4696	isReady: true,
4697
4698	error: function( msg ) {
4699		throw new Error( msg );
4700	},
4701
4702	noop: function() {},
4703
4704	isPlainObject: function( obj ) {
4705		var proto, Ctor;
4706
4707		// Detect obvious negatives
4708		// Use toString instead of jQuery.type to catch host objects
4709		if ( !obj || toString.call( obj ) !== "[object Object]" ) {
4710			return false;
4711		}
4712
4713		proto = getProto( obj );
4714
4715		// Objects with no prototype (e.g., `Object.create( null )`) are plain
4716		if ( !proto ) {
4717			return true;
4718		}
4719
4720		// Objects with prototype are plain iff they were constructed by a global Object function
4721		Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
4722		return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
4723	},
4724
4725	isEmptyObject: function( obj ) {
4726		var name;
4727
4728		for ( name in obj ) {
4729			return false;
4730		}
4731		return true;
4732	},
4733
4734	// Evaluates a script in a provided context; falls back to the global one
4735	// if not specified.
4736	globalEval: function( code, options, doc ) {
4737		DOMEval( code, { nonce: options && options.nonce }, doc );
4738	},
4739
4740	each: function( obj, callback ) {
4741		var length, i = 0;
4742
4743		if ( isArrayLike( obj ) ) {
4744			length = obj.length;
4745			for ( ; i < length; i++ ) {
4746				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
4747					break;
4748				}
4749			}
4750		} else {
4751			for ( i in obj ) {
4752				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
4753					break;
4754				}
4755			}
4756		}
4757
4758		return obj;
4759	},
4760
4761
4762	// Retrieve the text value of an array of DOM nodes
4763	text: function( elem ) {
4764		var node,
4765			ret = "",
4766			i = 0,
4767			nodeType = elem.nodeType;
4768
4769		if ( !nodeType ) {
4770
4771			// If no nodeType, this is expected to be an array
4772			while ( ( node = elem[ i++ ] ) ) {
4773
4774				// Do not traverse comment nodes
4775				ret += jQuery.text( node );
4776			}
4777		}
4778		if ( nodeType === 1 || nodeType === 11 ) {
4779			return elem.textContent;
4780		}
4781		if ( nodeType === 9 ) {
4782			return elem.documentElement.textContent;
4783		}
4784		if ( nodeType === 3 || nodeType === 4 ) {
4785			return elem.nodeValue;
4786		}
4787
4788		// Do not include comment or processing instruction nodes
4789
4790		return ret;
4791	},
4792
4793	// results is for internal usage only
4794	makeArray: function( arr, results ) {
4795		var ret = results || [];
4796
4797		if ( arr != null ) {
4798			if ( isArrayLike( Object( arr ) ) ) {
4799				jQuery.merge( ret,
4800					typeof arr === "string" ?
4801						[ arr ] : arr
4802				);
4803			} else {
4804				push.call( ret, arr );
4805			}
4806		}
4807
4808		return ret;
4809	},
4810
4811	inArray: function( elem, arr, i ) {
4812		return arr == null ? -1 : indexOf.call( arr, elem, i );
4813	},
4814
4815	isXMLDoc: function( elem ) {
4816		var namespace = elem && elem.namespaceURI,
4817			docElem = elem && ( elem.ownerDocument || elem ).documentElement;
4818
4819		// Assume HTML when documentElement doesn't yet exist, such as inside
4820		// document fragments.
4821		return !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || "HTML" );
4822	},
4823
4824	// Support: Android <=4.0 only, PhantomJS 1 only
4825	// push.apply(_, arraylike) throws on ancient WebKit
4826	merge: function( first, second ) {
4827		var len = +second.length,
4828			j = 0,
4829			i = first.length;
4830
4831		for ( ; j < len; j++ ) {
4832			first[ i++ ] = second[ j ];
4833		}
4834
4835		first.length = i;
4836
4837		return first;
4838	},
4839
4840	grep: function( elems, callback, invert ) {
4841		var callbackInverse,
4842			matches = [],
4843			i = 0,
4844			length = elems.length,
4845			callbackExpect = !invert;
4846
4847		// Go through the array, only saving the items
4848		// that pass the validator function
4849		for ( ; i < length; i++ ) {
4850			callbackInverse = !callback( elems[ i ], i );
4851			if ( callbackInverse !== callbackExpect ) {
4852				matches.push( elems[ i ] );
4853			}
4854		}
4855
4856		return matches;
4857	},
4858
4859	// arg is for internal usage only
4860	map: function( elems, callback, arg ) {
4861		var length, value,
4862			i = 0,
4863			ret = [];
4864
4865		// Go through the array, translating each of the items to their new values
4866		if ( isArrayLike( elems ) ) {
4867			length = elems.length;
4868			for ( ; i < length; i++ ) {
4869				value = callback( elems[ i ], i, arg );
4870
4871				if ( value != null ) {
4872					ret.push( value );
4873				}
4874			}
4875
4876		// Go through every key on the object,
4877		} else {
4878			for ( i in elems ) {
4879				value = callback( elems[ i ], i, arg );
4880
4881				if ( value != null ) {
4882					ret.push( value );
4883				}
4884			}
4885		}
4886
4887		// Flatten any nested arrays
4888		return flat( ret );
4889	},
4890
4891	// A global GUID counter for objects
4892	guid: 1,
4893
4894	// jQuery.support is not used in Core but other projects attach their
4895	// properties to it so it needs to exist.
4896	support: support
4897} );
4898
4899if ( typeof Symbol === "function" ) {
4900	jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
4901}
4902
4903// Populate the class2type map
4904jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
4905	function( _i, name ) {
4906		class2type[ "[object " + name + "]" ] = name.toLowerCase();
4907	} );
4908
4909function isArrayLike( obj ) {
4910
4911	// Support: real iOS 8.2 only (not reproducible in simulator)
4912	// `in` check used to prevent JIT error (gh-2145)
4913	// hasOwn isn't used here due to false negatives
4914	// regarding Nodelist length in IE
4915	var length = !!obj && "length" in obj && obj.length,
4916		type = toType( obj );
4917
4918	if ( isFunction( obj ) || isWindow( obj ) ) {
4919		return false;
4920	}
4921
4922	return type === "array" || length === 0 ||
4923		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
4924}
4925
4926
4927function nodeName( elem, name ) {
4928
4929	return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
4930
4931}
4932var pop = arr.pop;
4933
4934
4935var sort = arr.sort;
4936
4937
4938var splice = arr.splice;
4939
4940
4941var whitespace = "[\\x20\\t\\r\\n\\f]";
4942
4943
4944var rtrimCSS = new RegExp(
4945	"^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$",
4946	"g"
4947);
4948
4949
4950
4951
4952// Note: an element does not contain itself
4953jQuery.contains = function( a, b ) {
4954	var bup = b && b.parentNode;
4955
4956	return a === bup || !!( bup && bup.nodeType === 1 && (
4957
4958		// Support: IE 9 - 11+
4959		// IE doesn't have `contains` on SVG.
4960		a.contains ?
4961			a.contains( bup ) :
4962			a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
4963	) );
4964};
4965
4966
4967
4968
4969// CSS string/identifier serialization
4970// https://drafts.csswg.org/cssom/#common-serializing-idioms
4971var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;
4972
4973function fcssescape( ch, asCodePoint ) {
4974	if ( asCodePoint ) {
4975
4976		// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
4977		if ( ch === "\0" ) {
4978			return "\uFFFD";
4979		}
4980
4981		// Control characters and (dependent upon position) numbers get escaped as code points
4982		return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
4983	}
4984
4985	// Other potentially-special ASCII characters get backslash-escaped
4986	return "\\" + ch;
4987}
4988
4989jQuery.escapeSelector = function( sel ) {
4990	return ( sel + "" ).replace( rcssescape, fcssescape );
4991};
4992
4993
4994
4995
4996var preferredDoc = document,
4997	pushNative = push;
4998
4999( function() {
5000
5001var i,
5002	Expr,
5003	outermostContext,
5004	sortInput,
5005	hasDuplicate,
5006	push = pushNative,
5007
5008	// Local document vars
5009	document,
5010	documentElement,
5011	documentIsHTML,
5012	rbuggyQSA,
5013	matches,
5014
5015	// Instance-specific data
5016	expando = jQuery.expando,
5017	dirruns = 0,
5018	done = 0,
5019	classCache = createCache(),
5020	tokenCache = createCache(),
5021	compilerCache = createCache(),
5022	nonnativeSelectorCache = createCache(),
5023	sortOrder = function( a, b ) {
5024		if ( a === b ) {
5025			hasDuplicate = true;
5026		}
5027		return 0;
5028	},
5029
5030	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|" +
5031		"loop|multiple|open|readonly|required|scoped",
5032
5033	// Regular expressions
5034
5035	// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram
5036	identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace +
5037		"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",
5038
5039	// Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors
5040	attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
5041
5042		// Operator (capture 2)
5043		"*([*^$|!~]?=)" + whitespace +
5044
5045		// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
5046		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" +
5047		whitespace + "*\\]",
5048
5049	pseudos = ":(" + identifier + ")(?:\\((" +
5050
5051		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
5052		// 1. quoted (capture 3; capture 4 or capture 5)
5053		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
5054
5055		// 2. simple (capture 6)
5056		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
5057
5058		// 3. anything else (capture 2)
5059		".*" +
5060		")\\)|)",
5061
5062	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
5063	rwhitespace = new RegExp( whitespace + "+", "g" ),
5064
5065	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
5066	rleadingCombinator = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" +
5067		whitespace + "*" ),
5068	rdescend = new RegExp( whitespace + "|>" ),
5069
5070	rpseudo = new RegExp( pseudos ),
5071	ridentifier = new RegExp( "^" + identifier + "$" ),
5072
5073	matchExpr = {
5074		ID: new RegExp( "^#(" + identifier + ")" ),
5075		CLASS: new RegExp( "^\\.(" + identifier + ")" ),
5076		TAG: new RegExp( "^(" + identifier + "|[*])" ),
5077		ATTR: new RegExp( "^" + attributes ),
5078		PSEUDO: new RegExp( "^" + pseudos ),
5079		CHILD: new RegExp(
5080			"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" +
5081				whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" +
5082				whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
5083		bool: new RegExp( "^(?:" + booleans + ")$", "i" ),
5084
5085		// For use in libraries implementing .is()
5086		// We use this for POS matching in `select`
5087		needsContext: new RegExp( "^" + whitespace +
5088			"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace +
5089			"*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
5090	},
5091
5092	rinputs = /^(?:input|select|textarea|button)$/i,
5093	rheader = /^h\d$/i,
5094
5095	// Easily-parseable/retrievable ID or TAG or CLASS selectors
5096	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
5097
5098	rsibling = /[+~]/,
5099
5100	// CSS escapes
5101	// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters
5102	runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace +
5103		"?|\\\\([^\\r\\n\\f])", "g" ),
5104	funescape = function( escape, nonHex ) {
5105		var high = "0x" + escape.slice( 1 ) - 0x10000;
5106
5107		if ( nonHex ) {
5108
5109			// Strip the backslash prefix from a non-hex escape sequence
5110			return nonHex;
5111		}
5112
5113		// Replace a hexadecimal escape sequence with the encoded Unicode code point
5114		// Support: IE <=11+
5115		// For values outside the Basic Multilingual Plane (BMP), manually construct a
5116		// surrogate pair
5117		return high < 0 ?
5118			String.fromCharCode( high + 0x10000 ) :
5119			String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
5120	},
5121
5122	// Used for iframes; see `setDocument`.
5123	// Support: IE 9 - 11+, Edge 12 - 18+
5124	// Removing the function wrapper causes a "Permission Denied"
5125	// error in IE/Edge.
5126	unloadHandler = function() {
5127		setDocument();
5128	},
5129
5130	inDisabledFieldset = addCombinator(
5131		function( elem ) {
5132			return elem.disabled === true && nodeName( elem, "fieldset" );
5133		},
5134		{ dir: "parentNode", next: "legend" }
5135	);
5136
5137// Support: IE <=9 only
5138// Accessing document.activeElement can throw unexpectedly
5139// https://bugs.jquery.com/ticket/13393
5140function safeActiveElement() {
5141	try {
5142		return document.activeElement;
5143	} catch ( err ) { }
5144}
5145
5146// Optimize for push.apply( _, NodeList )
5147try {
5148	push.apply(
5149		( arr = slice.call( preferredDoc.childNodes ) ),
5150		preferredDoc.childNodes
5151	);
5152
5153	// Support: Android <=4.0
5154	// Detect silently failing push.apply
5155	// eslint-disable-next-line no-unused-expressions
5156	arr[ preferredDoc.childNodes.length ].nodeType;
5157} catch ( e ) {
5158	push = {
5159		apply: function( target, els ) {
5160			pushNative.apply( target, slice.call( els ) );
5161		},
5162		call: function( target ) {
5163			pushNative.apply( target, slice.call( arguments, 1 ) );
5164		}
5165	};
5166}
5167
5168function find( selector, context, results, seed ) {
5169	var m, i, elem, nid, match, groups, newSelector,
5170		newContext = context && context.ownerDocument,
5171
5172		// nodeType defaults to 9, since context defaults to document
5173		nodeType = context ? context.nodeType : 9;
5174
5175	results = results || [];
5176
5177	// Return early from calls with invalid selector or context
5178	if ( typeof selector !== "string" || !selector ||
5179		nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
5180
5181		return results;
5182	}
5183
5184	// Try to shortcut find operations (as opposed to filters) in HTML documents
5185	if ( !seed ) {
5186		setDocument( context );
5187		context = context || document;
5188
5189		if ( documentIsHTML ) {
5190
5191			// If the selector is sufficiently simple, try using a "get*By*" DOM method
5192			// (excepting DocumentFragment context, where the methods don't exist)
5193			if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {
5194
5195				// ID selector
5196				if ( ( m = match[ 1 ] ) ) {
5197
5198					// Document context
5199					if ( nodeType === 9 ) {
5200						if ( ( elem = context.getElementById( m ) ) ) {
5201
5202							// Support: IE 9 only
5203							// getElementById can match elements by name instead of ID
5204							if ( elem.id === m ) {
5205								push.call( results, elem );
5206								return results;
5207							}
5208						} else {
5209							return results;
5210						}
5211
5212					// Element context
5213					} else {
5214
5215						// Support: IE 9 only
5216						// getElementById can match elements by name instead of ID
5217						if ( newContext && ( elem = newContext.getElementById( m ) ) &&
5218							find.contains( context, elem ) &&
5219							elem.id === m ) {
5220
5221							push.call( results, elem );
5222							return results;
5223						}
5224					}
5225
5226				// Type selector
5227				} else if ( match[ 2 ] ) {
5228					push.apply( results, context.getElementsByTagName( selector ) );
5229					return results;
5230
5231				// Class selector
5232				} else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) {
5233					push.apply( results, context.getElementsByClassName( m ) );
5234					return results;
5235				}
5236			}
5237
5238			// Take advantage of querySelectorAll
5239			if ( !nonnativeSelectorCache[ selector + " " ] &&
5240				( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {
5241
5242				newSelector = selector;
5243				newContext = context;
5244
5245				// qSA considers elements outside a scoping root when evaluating child or
5246				// descendant combinators, which is not what we want.
5247				// In such cases, we work around the behavior by prefixing every selector in the
5248				// list with an ID selector referencing the scope context.
5249				// The technique has to be used as well when a leading combinator is used
5250				// as such selectors are not recognized by querySelectorAll.
5251				// Thanks to Andrew Dupont for this technique.
5252				if ( nodeType === 1 &&
5253					( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) {
5254
5255					// Expand context for sibling selectors
5256					newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
5257						context;
5258
5259					// We can use :scope instead of the ID hack if the browser
5260					// supports it & if we're not changing the context.
5261					// Support: IE 11+, Edge 17 - 18+
5262					// IE/Edge sometimes throw a "Permission denied" error when
5263					// strict-comparing two documents; shallow comparisons work.
5264					// eslint-disable-next-line eqeqeq
5265					if ( newContext != context || !support.scope ) {
5266
5267						// Capture the context ID, setting it first if necessary
5268						if ( ( nid = context.getAttribute( "id" ) ) ) {
5269							nid = jQuery.escapeSelector( nid );
5270						} else {
5271							context.setAttribute( "id", ( nid = expando ) );
5272						}
5273					}
5274
5275					// Prefix every selector in the list
5276					groups = tokenize( selector );
5277					i = groups.length;
5278					while ( i-- ) {
5279						groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " +
5280							toSelector( groups[ i ] );
5281					}
5282					newSelector = groups.join( "," );
5283				}
5284
5285				try {
5286					push.apply( results,
5287						newContext.querySelectorAll( newSelector )
5288					);
5289					return results;
5290				} catch ( qsaError ) {
5291					nonnativeSelectorCache( selector, true );
5292				} finally {
5293					if ( nid === expando ) {
5294						context.removeAttribute( "id" );
5295					}
5296				}
5297			}
5298		}
5299	}
5300
5301	// All others
5302	return select( selector.replace( rtrimCSS, "$1" ), context, results, seed );
5303}
5304
5305/**
5306 * Create key-value caches of limited size
5307 * @returns {function(string, object)} Returns the Object data after storing it on itself with
5308 *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
5309 *	deleting the oldest entry
5310 */
5311function createCache() {
5312	var keys = [];
5313
5314	function cache( key, value ) {
5315
5316		// Use (key + " ") to avoid collision with native prototype properties
5317		// (see https://github.com/jquery/sizzle/issues/157)
5318		if ( keys.push( key + " " ) > Expr.cacheLength ) {
5319
5320			// Only keep the most recent entries
5321			delete cache[ keys.shift() ];
5322		}
5323		return ( cache[ key + " " ] = value );
5324	}
5325	return cache;
5326}
5327
5328/**
5329 * Mark a function for special use by jQuery selector module
5330 * @param {Function} fn The function to mark
5331 */
5332function markFunction( fn ) {
5333	fn[ expando ] = true;
5334	return fn;
5335}
5336
5337/**
5338 * Support testing using an element
5339 * @param {Function} fn Passed the created element and returns a boolean result
5340 */
5341function assert( fn ) {
5342	var el = document.createElement( "fieldset" );
5343
5344	try {
5345		return !!fn( el );
5346	} catch ( e ) {
5347		return false;
5348	} finally {
5349
5350		// Remove from its parent by default
5351		if ( el.parentNode ) {
5352			el.parentNode.removeChild( el );
5353		}
5354
5355		// release memory in IE
5356		el = null;
5357	}
5358}
5359
5360/**
5361 * Returns a function to use in pseudos for input types
5362 * @param {String} type
5363 */
5364function createInputPseudo( type ) {
5365	return function( elem ) {
5366		return nodeName( elem, "input" ) && elem.type === type;
5367	};
5368}
5369
5370/**
5371 * Returns a function to use in pseudos for buttons
5372 * @param {String} type
5373 */
5374function createButtonPseudo( type ) {
5375	return function( elem ) {
5376		return ( nodeName( elem, "input" ) || nodeName( elem, "button" ) ) &&
5377			elem.type === type;
5378	};
5379}
5380
5381/**
5382 * Returns a function to use in pseudos for :enabled/:disabled
5383 * @param {Boolean} disabled true for :disabled; false for :enabled
5384 */
5385function createDisabledPseudo( disabled ) {
5386
5387	// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
5388	return function( elem ) {
5389
5390		// Only certain elements can match :enabled or :disabled
5391		// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
5392		// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
5393		if ( "form" in elem ) {
5394
5395			// Check for inherited disabledness on relevant non-disabled elements:
5396			// * listed form-associated elements in a disabled fieldset
5397			//   https://html.spec.whatwg.org/multipage/forms.html#category-listed
5398			//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
5399			// * option elements in a disabled optgroup
5400			//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
5401			// All such elements have a "form" property.
5402			if ( elem.parentNode && elem.disabled === false ) {
5403
5404				// Option elements defer to a parent optgroup if present
5405				if ( "label" in elem ) {
5406					if ( "label" in elem.parentNode ) {
5407						return elem.parentNode.disabled === disabled;
5408					} else {
5409						return elem.disabled === disabled;
5410					}
5411				}
5412
5413				// Support: IE 6 - 11+
5414				// Use the isDisabled shortcut property to check for disabled fieldset ancestors
5415				return elem.isDisabled === disabled ||
5416
5417					// Where there is no isDisabled, check manually
5418					elem.isDisabled !== !disabled &&
5419						inDisabledFieldset( elem ) === disabled;
5420			}
5421
5422			return elem.disabled === disabled;
5423
5424		// Try to winnow out elements that can't be disabled before trusting the disabled property.
5425		// Some victims get caught in our net (label, legend, menu, track), but it shouldn't
5426		// even exist on them, let alone have a boolean value.
5427		} else if ( "label" in elem ) {
5428			return elem.disabled === disabled;
5429		}
5430
5431		// Remaining elements are neither :enabled nor :disabled
5432		return false;
5433	};
5434}
5435
5436/**
5437 * Returns a function to use in pseudos for positionals
5438 * @param {Function} fn
5439 */
5440function createPositionalPseudo( fn ) {
5441	return markFunction( function( argument ) {
5442		argument = +argument;
5443		return markFunction( function( seed, matches ) {
5444			var j,
5445				matchIndexes = fn( [], seed.length, argument ),
5446				i = matchIndexes.length;
5447
5448			// Match elements found at the specified indexes
5449			while ( i-- ) {
5450				if ( seed[ ( j = matchIndexes[ i ] ) ] ) {
5451					seed[ j ] = !( matches[ j ] = seed[ j ] );
5452				}
5453			}
5454		} );
5455	} );
5456}
5457
5458/**
5459 * Checks a node for validity as a jQuery selector context
5460 * @param {Element|Object=} context
5461 * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
5462 */
5463function testContext( context ) {
5464	return context && typeof context.getElementsByTagName !== "undefined" && context;
5465}
5466
5467/**
5468 * Sets document-related variables once based on the current document
5469 * @param {Element|Object} [node] An element or document object to use to set the document
5470 * @returns {Object} Returns the current document
5471 */
5472function setDocument( node ) {
5473	var subWindow,
5474		doc = node ? node.ownerDocument || node : preferredDoc;
5475
5476	// Return early if doc is invalid or already selected
5477	// Support: IE 11+, Edge 17 - 18+
5478	// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
5479	// two documents; shallow comparisons work.
5480	// eslint-disable-next-line eqeqeq
5481	if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {
5482		return document;
5483	}
5484
5485	// Update global variables
5486	document = doc;
5487	documentElement = document.documentElement;
5488	documentIsHTML = !jQuery.isXMLDoc( document );
5489
5490	// Support: iOS 7 only, IE 9 - 11+
5491	// Older browsers didn't support unprefixed `matches`.
5492	matches = documentElement.matches ||
5493		documentElement.webkitMatchesSelector ||
5494		documentElement.msMatchesSelector;
5495
5496	// Support: IE 9 - 11+, Edge 12 - 18+
5497	// Accessing iframe documents after unload throws "permission denied" errors
5498	// (see trac-13936).
5499	// Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,
5500	// all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.
5501	if ( documentElement.msMatchesSelector &&
5502
5503		// Support: IE 11+, Edge 17 - 18+
5504		// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
5505		// two documents; shallow comparisons work.
5506		// eslint-disable-next-line eqeqeq
5507		preferredDoc != document &&
5508		( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {
5509
5510		// Support: IE 9 - 11+, Edge 12 - 18+
5511		subWindow.addEventListener( "unload", unloadHandler );
5512	}
5513
5514	// Support: IE <10
5515	// Check if getElementById returns elements by name
5516	// The broken getElementById methods don't pick up programmatically-set names,
5517	// so use a roundabout getElementsByName test
5518	support.getById = assert( function( el ) {
5519		documentElement.appendChild( el ).id = jQuery.expando;
5520		return !document.getElementsByName ||
5521			!document.getElementsByName( jQuery.expando ).length;
5522	} );
5523
5524	// Support: IE 9 only
5525	// Check to see if it's possible to do matchesSelector
5526	// on a disconnected node.
5527	support.disconnectedMatch = assert( function( el ) {
5528		return matches.call( el, "*" );
5529	} );
5530
5531	// Support: IE 9 - 11+, Edge 12 - 18+
5532	// IE/Edge don't support the :scope pseudo-class.
5533	support.scope = assert( function() {
5534		return document.querySelectorAll( ":scope" );
5535	} );
5536
5537	// Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only
5538	// Make sure the `:has()` argument is parsed unforgivingly.
5539	// We include `*` in the test to detect buggy implementations that are
5540	// _selectively_ forgiving (specifically when the list includes at least
5541	// one valid selector).
5542	// Note that we treat complete lack of support for `:has()` as if it were
5543	// spec-compliant support, which is fine because use of `:has()` in such
5544	// environments will fail in the qSA path and fall back to jQuery traversal
5545	// anyway.
5546	support.cssHas = assert( function() {
5547		try {
5548			document.querySelector( ":has(*,:jqfake)" );
5549			return false;
5550		} catch ( e ) {
5551			return true;
5552		}
5553	} );
5554
5555	// ID filter and find
5556	if ( support.getById ) {
5557		Expr.filter.ID = function( id ) {
5558			var attrId = id.replace( runescape, funescape );
5559			return function( elem ) {
5560				return elem.getAttribute( "id" ) === attrId;
5561			};
5562		};
5563		Expr.find.ID = function( id, context ) {
5564			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
5565				var elem = context.getElementById( id );
5566				return elem ? [ elem ] : [];
5567			}
5568		};
5569	} else {
5570		Expr.filter.ID =  function( id ) {
5571			var attrId = id.replace( runescape, funescape );
5572			return function( elem ) {
5573				var node = typeof elem.getAttributeNode !== "undefined" &&
5574					elem.getAttributeNode( "id" );
5575				return node && node.value === attrId;
5576			};
5577		};
5578
5579		// Support: IE 6 - 7 only
5580		// getElementById is not reliable as a find shortcut
5581		Expr.find.ID = function( id, context ) {
5582			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
5583				var node, i, elems,
5584					elem = context.getElementById( id );
5585
5586				if ( elem ) {
5587
5588					// Verify the id attribute
5589					node = elem.getAttributeNode( "id" );
5590					if ( node && node.value === id ) {
5591						return [ elem ];
5592					}
5593
5594					// Fall back on getElementsByName
5595					elems = context.getElementsByName( id );
5596					i = 0;
5597					while ( ( elem = elems[ i++ ] ) ) {
5598						node = elem.getAttributeNode( "id" );
5599						if ( node && node.value === id ) {
5600							return [ elem ];
5601						}
5602					}
5603				}
5604
5605				return [];
5606			}
5607		};
5608	}
5609
5610	// Tag
5611	Expr.find.TAG = function( tag, context ) {
5612		if ( typeof context.getElementsByTagName !== "undefined" ) {
5613			return context.getElementsByTagName( tag );
5614
5615		// DocumentFragment nodes don't have gEBTN
5616		} else {
5617			return context.querySelectorAll( tag );
5618		}
5619	};
5620
5621	// Class
5622	Expr.find.CLASS = function( className, context ) {
5623		if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
5624			return context.getElementsByClassName( className );
5625		}
5626	};
5627
5628	/* QSA/matchesSelector
5629	---------------------------------------------------------------------- */
5630
5631	// QSA and matchesSelector support
5632
5633	rbuggyQSA = [];
5634
5635	// Build QSA regex
5636	// Regex strategy adopted from Diego Perini
5637	assert( function( el ) {
5638
5639		var input;
5640
5641		documentElement.appendChild( el ).innerHTML =
5642			"<a id='" + expando + "' href='' disabled='disabled'></a>" +
5643			"<select id='" + expando + "-\r\\' disabled='disabled'>" +
5644			"<option selected=''></option></select>";
5645
5646		// Support: iOS <=7 - 8 only
5647		// Boolean attributes and "value" are not treated correctly in some XML documents
5648		if ( !el.querySelectorAll( "[selected]" ).length ) {
5649			rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
5650		}
5651
5652		// Support: iOS <=7 - 8 only
5653		if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
5654			rbuggyQSA.push( "~=" );
5655		}
5656
5657		// Support: iOS 8 only
5658		// https://bugs.webkit.org/show_bug.cgi?id=136851
5659		// In-page `selector#id sibling-combinator selector` fails
5660		if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
5661			rbuggyQSA.push( ".#.+[+~]" );
5662		}
5663
5664		// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+
5665		// In some of the document kinds, these selectors wouldn't work natively.
5666		// This is probably OK but for backwards compatibility we want to maintain
5667		// handling them through jQuery traversal in jQuery 3.x.
5668		if ( !el.querySelectorAll( ":checked" ).length ) {
5669			rbuggyQSA.push( ":checked" );
5670		}
5671
5672		// Support: Windows 8 Native Apps
5673		// The type and name attributes are restricted during .innerHTML assignment
5674		input = document.createElement( "input" );
5675		input.setAttribute( "type", "hidden" );
5676		el.appendChild( input ).setAttribute( "name", "D" );
5677
5678		// Support: IE 9 - 11+
5679		// IE's :disabled selector does not pick up the children of disabled fieldsets
5680		// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+
5681		// In some of the document kinds, these selectors wouldn't work natively.
5682		// This is probably OK but for backwards compatibility we want to maintain
5683		// handling them through jQuery traversal in jQuery 3.x.
5684		documentElement.appendChild( el ).disabled = true;
5685		if ( el.querySelectorAll( ":disabled" ).length !== 2 ) {
5686			rbuggyQSA.push( ":enabled", ":disabled" );
5687		}
5688
5689		// Support: IE 11+, Edge 15 - 18+
5690		// IE 11/Edge don't find elements on a `[name='']` query in some cases.
5691		// Adding a temporary attribute to the document before the selection works
5692		// around the issue.
5693		// Interestingly, IE 10 & older don't seem to have the issue.
5694		input = document.createElement( "input" );
5695		input.setAttribute( "name", "" );
5696		el.appendChild( input );
5697		if ( !el.querySelectorAll( "[name='']" ).length ) {
5698			rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" +
5699				whitespace + "*(?:''|\"\")" );
5700		}
5701	} );
5702
5703	if ( !support.cssHas ) {
5704
5705		// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+
5706		// Our regular `try-catch` mechanism fails to detect natively-unsupported
5707		// pseudo-classes inside `:has()` (such as `:has(:contains("Foo"))`)
5708		// in browsers that parse the `:has()` argument as a forgiving selector list.
5709		// https://drafts.csswg.org/selectors/#relational now requires the argument
5710		// to be parsed unforgivingly, but browsers have not yet fully adjusted.
5711		rbuggyQSA.push( ":has" );
5712	}
5713
5714	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) );
5715
5716	/* Sorting
5717	---------------------------------------------------------------------- */
5718
5719	// Document order sorting
5720	sortOrder = function( a, b ) {
5721
5722		// Flag for duplicate removal
5723		if ( a === b ) {
5724			hasDuplicate = true;
5725			return 0;
5726		}
5727
5728		// Sort on method existence if only one input has compareDocumentPosition
5729		var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
5730		if ( compare ) {
5731			return compare;
5732		}
5733
5734		// Calculate position if both inputs belong to the same document
5735		// Support: IE 11+, Edge 17 - 18+
5736		// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
5737		// two documents; shallow comparisons work.
5738		// eslint-disable-next-line eqeqeq
5739		compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?
5740			a.compareDocumentPosition( b ) :
5741
5742			// Otherwise we know they are disconnected
5743			1;
5744
5745		// Disconnected nodes
5746		if ( compare & 1 ||
5747			( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {
5748
5749			// Choose the first element that is related to our preferred document
5750			// Support: IE 11+, Edge 17 - 18+
5751			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
5752			// two documents; shallow comparisons work.
5753			// eslint-disable-next-line eqeqeq
5754			if ( a === document || a.ownerDocument == preferredDoc &&
5755				find.contains( preferredDoc, a ) ) {
5756				return -1;
5757			}
5758
5759			// Support: IE 11+, Edge 17 - 18+
5760			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
5761			// two documents; shallow comparisons work.
5762			// eslint-disable-next-line eqeqeq
5763			if ( b === document || b.ownerDocument == preferredDoc &&
5764				find.contains( preferredDoc, b ) ) {
5765				return 1;
5766			}
5767
5768			// Maintain original order
5769			return sortInput ?
5770				( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
5771				0;
5772		}
5773
5774		return compare & 4 ? -1 : 1;
5775	};
5776
5777	return document;
5778}
5779
5780find.matches = function( expr, elements ) {
5781	return find( expr, null, null, elements );
5782};
5783
5784find.matchesSelector = function( elem, expr ) {
5785	setDocument( elem );
5786
5787	if ( documentIsHTML &&
5788		!nonnativeSelectorCache[ expr + " " ] &&
5789		( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
5790
5791		try {
5792			var ret = matches.call( elem, expr );
5793
5794			// IE 9's matchesSelector returns false on disconnected nodes
5795			if ( ret || support.disconnectedMatch ||
5796
5797					// As well, disconnected nodes are said to be in a document
5798					// fragment in IE 9
5799					elem.document && elem.document.nodeType !== 11 ) {
5800				return ret;
5801			}
5802		} catch ( e ) {
5803			nonnativeSelectorCache( expr, true );
5804		}
5805	}
5806
5807	return find( expr, document, null, [ elem ] ).length > 0;
5808};
5809
5810find.contains = function( context, elem ) {
5811
5812	// Set document vars if needed
5813	// Support: IE 11+, Edge 17 - 18+
5814	// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
5815	// two documents; shallow comparisons work.
5816	// eslint-disable-next-line eqeqeq
5817	if ( ( context.ownerDocument || context ) != document ) {
5818		setDocument( context );
5819	}
5820	return jQuery.contains( context, elem );
5821};
5822
5823
5824find.attr = function( elem, name ) {
5825
5826	// Set document vars if needed
5827	// Support: IE 11+, Edge 17 - 18+
5828	// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
5829	// two documents; shallow comparisons work.
5830	// eslint-disable-next-line eqeqeq
5831	if ( ( elem.ownerDocument || elem ) != document ) {
5832		setDocument( elem );
5833	}
5834
5835	var fn = Expr.attrHandle[ name.toLowerCase() ],
5836
5837		// Don't get fooled by Object.prototype properties (see trac-13807)
5838		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
5839			fn( elem, name, !documentIsHTML ) :
5840			undefined;
5841
5842	if ( val !== undefined ) {
5843		return val;
5844	}
5845
5846	return elem.getAttribute( name );
5847};
5848
5849find.error = function( msg ) {
5850	throw new Error( "Syntax error, unrecognized expression: " + msg );
5851};
5852
5853/**
5854 * Document sorting and removing duplicates
5855 * @param {ArrayLike} results
5856 */
5857jQuery.uniqueSort = function( results ) {
5858	var elem,
5859		duplicates = [],
5860		j = 0,
5861		i = 0;
5862
5863	// Unless we *know* we can detect duplicates, assume their presence
5864	//
5865	// Support: Android <=4.0+
5866	// Testing for detecting duplicates is unpredictable so instead assume we can't
5867	// depend on duplicate detection in all browsers without a stable sort.
5868	hasDuplicate = !support.sortStable;
5869	sortInput = !support.sortStable && slice.call( results, 0 );
5870	sort.call( results, sortOrder );
5871
5872	if ( hasDuplicate ) {
5873		while ( ( elem = results[ i++ ] ) ) {
5874			if ( elem === results[ i ] ) {
5875				j = duplicates.push( i );
5876			}
5877		}
5878		while ( j-- ) {
5879			splice.call( results, duplicates[ j ], 1 );
5880		}
5881	}
5882
5883	// Clear input after sorting to release objects
5884	// See https://github.com/jquery/sizzle/pull/225
5885	sortInput = null;
5886
5887	return results;
5888};
5889
5890jQuery.fn.uniqueSort = function() {
5891	return this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );
5892};
5893
5894Expr = jQuery.expr = {
5895
5896	// Can be adjusted by the user
5897	cacheLength: 50,
5898
5899	createPseudo: markFunction,
5900
5901	match: matchExpr,
5902
5903	attrHandle: {},
5904
5905	find: {},
5906
5907	relative: {
5908		">": { dir: "parentNode", first: true },
5909		" ": { dir: "parentNode" },
5910		"+": { dir: "previousSibling", first: true },
5911		"~": { dir: "previousSibling" }
5912	},
5913
5914	preFilter: {
5915		ATTR: function( match ) {
5916			match[ 1 ] = match[ 1 ].replace( runescape, funescape );
5917
5918			// Move the given value to match[3] whether quoted or unquoted
5919			match[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || "" )
5920				.replace( runescape, funescape );
5921
5922			if ( match[ 2 ] === "~=" ) {
5923				match[ 3 ] = " " + match[ 3 ] + " ";
5924			}
5925
5926			return match.slice( 0, 4 );
5927		},
5928
5929		CHILD: function( match ) {
5930
5931			/* matches from matchExpr["CHILD"]
5932				1 type (only|nth|...)
5933				2 what (child|of-type)
5934				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
5935				4 xn-component of xn+y argument ([+-]?\d*n|)
5936				5 sign of xn-component
5937				6 x of xn-component
5938				7 sign of y-component
5939				8 y of y-component
5940			*/
5941			match[ 1 ] = match[ 1 ].toLowerCase();
5942
5943			if ( match[ 1 ].slice( 0, 3 ) === "nth" ) {
5944
5945				// nth-* requires argument
5946				if ( !match[ 3 ] ) {
5947					find.error( match[ 0 ] );
5948				}
5949
5950				// numeric x and y parameters for Expr.filter.CHILD
5951				// remember that false/true cast respectively to 0/1
5952				match[ 4 ] = +( match[ 4 ] ?
5953					match[ 5 ] + ( match[ 6 ] || 1 ) :
5954					2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" )
5955				);
5956				match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" );
5957
5958			// other types prohibit arguments
5959			} else if ( match[ 3 ] ) {
5960				find.error( match[ 0 ] );
5961			}
5962
5963			return match;
5964		},
5965
5966		PSEUDO: function( match ) {
5967			var excess,
5968				unquoted = !match[ 6 ] && match[ 2 ];
5969
5970			if ( matchExpr.CHILD.test( match[ 0 ] ) ) {
5971				return null;
5972			}
5973
5974			// Accept quoted arguments as-is
5975			if ( match[ 3 ] ) {
5976				match[ 2 ] = match[ 4 ] || match[ 5 ] || "";
5977
5978			// Strip excess characters from unquoted arguments
5979			} else if ( unquoted && rpseudo.test( unquoted ) &&
5980
5981				// Get excess from tokenize (recursively)
5982				( excess = tokenize( unquoted, true ) ) &&
5983
5984				// advance to the next closing parenthesis
5985				( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) {
5986
5987				// excess is a negative index
5988				match[ 0 ] = match[ 0 ].slice( 0, excess );
5989				match[ 2 ] = unquoted.slice( 0, excess );
5990			}
5991
5992			// Return only captures needed by the pseudo filter method (type and argument)
5993			return match.slice( 0, 3 );
5994		}
5995	},
5996
5997	filter: {
5998
5999		TAG: function( nodeNameSelector ) {
6000			var expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
6001			return nodeNameSelector === "*" ?
6002				function() {
6003					return true;
6004				} :
6005				function( elem ) {
6006					return nodeName( elem, expectedNodeName );
6007				};
6008		},
6009
6010		CLASS: function( className ) {
6011			var pattern = classCache[ className + " " ];
6012
6013			return pattern ||
6014				( pattern = new RegExp( "(^|" + whitespace + ")" + className +
6015					"(" + whitespace + "|$)" ) ) &&
6016				classCache( className, function( elem ) {
6017					return pattern.test(
6018						typeof elem.className === "string" && elem.className ||
6019							typeof elem.getAttribute !== "undefined" &&
6020								elem.getAttribute( "class" ) ||
6021							""
6022					);
6023				} );
6024		},
6025
6026		ATTR: function( name, operator, check ) {
6027			return function( elem ) {
6028				var result = find.attr( elem, name );
6029
6030				if ( result == null ) {
6031					return operator === "!=";
6032				}
6033				if ( !operator ) {
6034					return true;
6035				}
6036
6037				result += "";
6038
6039				if ( operator === "=" ) {
6040					return result === check;
6041				}
6042				if ( operator === "!=" ) {
6043					return result !== check;
6044				}
6045				if ( operator === "^=" ) {
6046					return check && result.indexOf( check ) === 0;
6047				}
6048				if ( operator === "*=" ) {
6049					return check && result.indexOf( check ) > -1;
6050				}
6051				if ( operator === "$=" ) {
6052					return check && result.slice( -check.length ) === check;
6053				}
6054				if ( operator === "~=" ) {
6055					return ( " " + result.replace( rwhitespace, " " ) + " " )
6056						.indexOf( check ) > -1;
6057				}
6058				if ( operator === "|=" ) {
6059					return result === check || result.slice( 0, check.length + 1 ) === check + "-";
6060				}
6061
6062				return false;
6063			};
6064		},
6065
6066		CHILD: function( type, what, _argument, first, last ) {
6067			var simple = type.slice( 0, 3 ) !== "nth",
6068				forward = type.slice( -4 ) !== "last",
6069				ofType = what === "of-type";
6070
6071			return first === 1 && last === 0 ?
6072
6073				// Shortcut for :nth-*(n)
6074				function( elem ) {
6075					return !!elem.parentNode;
6076				} :
6077
6078				function( elem, _context, xml ) {
6079					var cache, outerCache, node, nodeIndex, start,
6080						dir = simple !== forward ? "nextSibling" : "previousSibling",
6081						parent = elem.parentNode,
6082						name = ofType && elem.nodeName.toLowerCase(),
6083						useCache = !xml && !ofType,
6084						diff = false;
6085
6086					if ( parent ) {
6087
6088						// :(first|last|only)-(child|of-type)
6089						if ( simple ) {
6090							while ( dir ) {
6091								node = elem;
6092								while ( ( node = node[ dir ] ) ) {
6093									if ( ofType ?
6094										nodeName( node, name ) :
6095										node.nodeType === 1 ) {
6096
6097										return false;
6098									}
6099								}
6100
6101								// Reverse direction for :only-* (if we haven't yet done so)
6102								start = dir = type === "only" && !start && "nextSibling";
6103							}
6104							return true;
6105						}
6106
6107						start = [ forward ? parent.firstChild : parent.lastChild ];
6108
6109						// non-xml :nth-child(...) stores cache data on `parent`
6110						if ( forward && useCache ) {
6111
6112							// Seek `elem` from a previously-cached index
6113							outerCache = parent[ expando ] || ( parent[ expando ] = {} );
6114							cache = outerCache[ type ] || [];
6115							nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
6116							diff = nodeIndex && cache[ 2 ];
6117							node = nodeIndex && parent.childNodes[ nodeIndex ];
6118
6119							while ( ( node = ++nodeIndex && node && node[ dir ] ||
6120
6121								// Fallback to seeking `elem` from the start
6122								( diff = nodeIndex = 0 ) || start.pop() ) ) {
6123
6124								// When found, cache indexes on `parent` and break
6125								if ( node.nodeType === 1 && ++diff && node === elem ) {
6126									outerCache[ type ] = [ dirruns, nodeIndex, diff ];
6127									break;
6128								}
6129							}
6130
6131						} else {
6132
6133							// Use previously-cached element index if available
6134							if ( useCache ) {
6135								outerCache = elem[ expando ] || ( elem[ expando ] = {} );
6136								cache = outerCache[ type ] || [];
6137								nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
6138								diff = nodeIndex;
6139							}
6140
6141							// xml :nth-child(...)
6142							// or :nth-last-child(...) or :nth(-last)?-of-type(...)
6143							if ( diff === false ) {
6144
6145								// Use the same loop as above to seek `elem` from the start
6146								while ( ( node = ++nodeIndex && node && node[ dir ] ||
6147									( diff = nodeIndex = 0 ) || start.pop() ) ) {
6148
6149									if ( ( ofType ?
6150										nodeName( node, name ) :
6151										node.nodeType === 1 ) &&
6152										++diff ) {
6153
6154										// Cache the index of each encountered element
6155										if ( useCache ) {
6156											outerCache = node[ expando ] ||
6157												( node[ expando ] = {} );
6158											outerCache[ type ] = [ dirruns, diff ];
6159										}
6160
6161										if ( node === elem ) {
6162											break;
6163										}
6164									}
6165								}
6166							}
6167						}
6168
6169						// Incorporate the offset, then check against cycle size
6170						diff -= last;
6171						return diff === first || ( diff % first === 0 && diff / first >= 0 );
6172					}
6173				};
6174		},
6175
6176		PSEUDO: function( pseudo, argument ) {
6177
6178			// pseudo-class names are case-insensitive
6179			// https://www.w3.org/TR/selectors/#pseudo-classes
6180			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
6181			// Remember that setFilters inherits from pseudos
6182			var args,
6183				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
6184					find.error( "unsupported pseudo: " + pseudo );
6185
6186			// The user may use createPseudo to indicate that
6187			// arguments are needed to create the filter function
6188			// just as jQuery does
6189			if ( fn[ expando ] ) {
6190				return fn( argument );
6191			}
6192
6193			// But maintain support for old signatures
6194			if ( fn.length > 1 ) {
6195				args = [ pseudo, pseudo, "", argument ];
6196				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
6197					markFunction( function( seed, matches ) {
6198						var idx,
6199							matched = fn( seed, argument ),
6200							i = matched.length;
6201						while ( i-- ) {
6202							idx = indexOf.call( seed, matched[ i ] );
6203							seed[ idx ] = !( matches[ idx ] = matched[ i ] );
6204						}
6205					} ) :
6206					function( elem ) {
6207						return fn( elem, 0, args );
6208					};
6209			}
6210
6211			return fn;
6212		}
6213	},
6214
6215	pseudos: {
6216
6217		// Potentially complex pseudos
6218		not: markFunction( function( selector ) {
6219
6220			// Trim the selector passed to compile
6221			// to avoid treating leading and trailing
6222			// spaces as combinators
6223			var input = [],
6224				results = [],
6225				matcher = compile( selector.replace( rtrimCSS, "$1" ) );
6226
6227			return matcher[ expando ] ?
6228				markFunction( function( seed, matches, _context, xml ) {
6229					var elem,
6230						unmatched = matcher( seed, null, xml, [] ),
6231						i = seed.length;
6232
6233					// Match elements unmatched by `matcher`
6234					while ( i-- ) {
6235						if ( ( elem = unmatched[ i ] ) ) {
6236							seed[ i ] = !( matches[ i ] = elem );
6237						}
6238					}
6239				} ) :
6240				function( elem, _context, xml ) {
6241					input[ 0 ] = elem;
6242					matcher( input, null, xml, results );
6243
6244					// Don't keep the element
6245					// (see https://github.com/jquery/sizzle/issues/299)
6246					input[ 0 ] = null;
6247					return !results.pop();
6248				};
6249		} ),
6250
6251		has: markFunction( function( selector ) {
6252			return function( elem ) {
6253				return find( selector, elem ).length > 0;
6254			};
6255		} ),
6256
6257		contains: markFunction( function( text ) {
6258			text = text.replace( runescape, funescape );
6259			return function( elem ) {
6260				return ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1;
6261			};
6262		} ),
6263
6264		// "Whether an element is represented by a :lang() selector
6265		// is based solely on the element's language value
6266		// being equal to the identifier C,
6267		// or beginning with the identifier C immediately followed by "-".
6268		// The matching of C against the element's language value is performed case-insensitively.
6269		// The identifier C does not have to be a valid language name."
6270		// https://www.w3.org/TR/selectors/#lang-pseudo
6271		lang: markFunction( function( lang ) {
6272
6273			// lang value must be a valid identifier
6274			if ( !ridentifier.test( lang || "" ) ) {
6275				find.error( "unsupported lang: " + lang );
6276			}
6277			lang = lang.replace( runescape, funescape ).toLowerCase();
6278			return function( elem ) {
6279				var elemLang;
6280				do {
6281					if ( ( elemLang = documentIsHTML ?
6282						elem.lang :
6283						elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) {
6284
6285						elemLang = elemLang.toLowerCase();
6286						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
6287					}
6288				} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );
6289				return false;
6290			};
6291		} ),
6292
6293		// Miscellaneous
6294		target: function( elem ) {
6295			var hash = window.location && window.location.hash;
6296			return hash && hash.slice( 1 ) === elem.id;
6297		},
6298
6299		root: function( elem ) {
6300			return elem === documentElement;
6301		},
6302
6303		focus: function( elem ) {
6304			return elem === safeActiveElement() &&
6305				document.hasFocus() &&
6306				!!( elem.type || elem.href || ~elem.tabIndex );
6307		},
6308
6309		// Boolean properties
6310		enabled: createDisabledPseudo( false ),
6311		disabled: createDisabledPseudo( true ),
6312
6313		checked: function( elem ) {
6314
6315			// In CSS3, :checked should return both checked and selected elements
6316			// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
6317			return ( nodeName( elem, "input" ) && !!elem.checked ) ||
6318				( nodeName( elem, "option" ) && !!elem.selected );
6319		},
6320
6321		selected: function( elem ) {
6322
6323			// Support: IE <=11+
6324			// Accessing the selectedIndex property
6325			// forces the browser to treat the default option as
6326			// selected when in an optgroup.
6327			if ( elem.parentNode ) {
6328				// eslint-disable-next-line no-unused-expressions
6329				elem.parentNode.selectedIndex;
6330			}
6331
6332			return elem.selected === true;
6333		},
6334
6335		// Contents
6336		empty: function( elem ) {
6337
6338			// https://www.w3.org/TR/selectors/#empty-pseudo
6339			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
6340			//   but not by others (comment: 8; processing instruction: 7; etc.)
6341			// nodeType < 6 works because attributes (2) do not appear as children
6342			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
6343				if ( elem.nodeType < 6 ) {
6344					return false;
6345				}
6346			}
6347			return true;
6348		},
6349
6350		parent: function( elem ) {
6351			return !Expr.pseudos.empty( elem );
6352		},
6353
6354		// Element/input types
6355		header: function( elem ) {
6356			return rheader.test( elem.nodeName );
6357		},
6358
6359		input: function( elem ) {
6360			return rinputs.test( elem.nodeName );
6361		},
6362
6363		button: function( elem ) {
6364			return nodeName( elem, "input" ) && elem.type === "button" ||
6365				nodeName( elem, "button" );
6366		},
6367
6368		text: function( elem ) {
6369			var attr;
6370			return nodeName( elem, "input" ) && elem.type === "text" &&
6371
6372				// Support: IE <10 only
6373				// New HTML5 attribute values (e.g., "search") appear
6374				// with elem.type === "text"
6375				( ( attr = elem.getAttribute( "type" ) ) == null ||
6376					attr.toLowerCase() === "text" );
6377		},
6378
6379		// Position-in-collection
6380		first: createPositionalPseudo( function() {
6381			return [ 0 ];
6382		} ),
6383
6384		last: createPositionalPseudo( function( _matchIndexes, length ) {
6385			return [ length - 1 ];
6386		} ),
6387
6388		eq: createPositionalPseudo( function( _matchIndexes, length, argument ) {
6389			return [ argument < 0 ? argument + length : argument ];
6390		} ),
6391
6392		even: createPositionalPseudo( function( matchIndexes, length ) {
6393			var i = 0;
6394			for ( ; i < length; i += 2 ) {
6395				matchIndexes.push( i );
6396			}
6397			return matchIndexes;
6398		} ),
6399
6400		odd: createPositionalPseudo( function( matchIndexes, length ) {
6401			var i = 1;
6402			for ( ; i < length; i += 2 ) {
6403				matchIndexes.push( i );
6404			}
6405			return matchIndexes;
6406		} ),
6407
6408		lt: createPositionalPseudo( function( matchIndexes, length, argument ) {
6409			var i;
6410
6411			if ( argument < 0 ) {
6412				i = argument + length;
6413			} else if ( argument > length ) {
6414				i = length;
6415			} else {
6416				i = argument;
6417			}
6418
6419			for ( ; --i >= 0; ) {
6420				matchIndexes.push( i );
6421			}
6422			return matchIndexes;
6423		} ),
6424
6425		gt: createPositionalPseudo( function( matchIndexes, length, argument ) {
6426			var i = argument < 0 ? argument + length : argument;
6427			for ( ; ++i < length; ) {
6428				matchIndexes.push( i );
6429			}
6430			return matchIndexes;
6431		} )
6432	}
6433};
6434
6435Expr.pseudos.nth = Expr.pseudos.eq;
6436
6437// Add button/input type pseudos
6438for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
6439	Expr.pseudos[ i ] = createInputPseudo( i );
6440}
6441for ( i in { submit: true, reset: true } ) {
6442	Expr.pseudos[ i ] = createButtonPseudo( i );
6443}
6444
6445// Easy API for creating new setFilters
6446function setFilters() {}
6447setFilters.prototype = Expr.filters = Expr.pseudos;
6448Expr.setFilters = new setFilters();
6449
6450function tokenize( selector, parseOnly ) {
6451	var matched, match, tokens, type,
6452		soFar, groups, preFilters,
6453		cached = tokenCache[ selector + " " ];
6454
6455	if ( cached ) {
6456		return parseOnly ? 0 : cached.slice( 0 );
6457	}
6458
6459	soFar = selector;
6460	groups = [];
6461	preFilters = Expr.preFilter;
6462
6463	while ( soFar ) {
6464
6465		// Comma and first run
6466		if ( !matched || ( match = rcomma.exec( soFar ) ) ) {
6467			if ( match ) {
6468
6469				// Don't consume trailing commas as valid
6470				soFar = soFar.slice( match[ 0 ].length ) || soFar;
6471			}
6472			groups.push( ( tokens = [] ) );
6473		}
6474
6475		matched = false;
6476
6477		// Combinators
6478		if ( ( match = rleadingCombinator.exec( soFar ) ) ) {
6479			matched = match.shift();
6480			tokens.push( {
6481				value: matched,
6482
6483				// Cast descendant combinators to space
6484				type: match[ 0 ].replace( rtrimCSS, " " )
6485			} );
6486			soFar = soFar.slice( matched.length );
6487		}
6488
6489		// Filters
6490		for ( type in Expr.filter ) {
6491			if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||
6492				( match = preFilters[ type ]( match ) ) ) ) {
6493				matched = match.shift();
6494				tokens.push( {
6495					value: matched,
6496					type: type,
6497					matches: match
6498				} );
6499				soFar = soFar.slice( matched.length );
6500			}
6501		}
6502
6503		if ( !matched ) {
6504			break;
6505		}
6506	}
6507
6508	// Return the length of the invalid excess
6509	// if we're just parsing
6510	// Otherwise, throw an error or return tokens
6511	if ( parseOnly ) {
6512		return soFar.length;
6513	}
6514
6515	return soFar ?
6516		find.error( selector ) :
6517
6518		// Cache the tokens
6519		tokenCache( selector, groups ).slice( 0 );
6520}
6521
6522function toSelector( tokens ) {
6523	var i = 0,
6524		len = tokens.length,
6525		selector = "";
6526	for ( ; i < len; i++ ) {
6527		selector += tokens[ i ].value;
6528	}
6529	return selector;
6530}
6531
6532function addCombinator( matcher, combinator, base ) {
6533	var dir = combinator.dir,
6534		skip = combinator.next,
6535		key = skip || dir,
6536		checkNonElements = base && key === "parentNode",
6537		doneName = done++;
6538
6539	return combinator.first ?
6540
6541		// Check against closest ancestor/preceding element
6542		function( elem, context, xml ) {
6543			while ( ( elem = elem[ dir ] ) ) {
6544				if ( elem.nodeType === 1 || checkNonElements ) {
6545					return matcher( elem, context, xml );
6546				}
6547			}
6548			return false;
6549		} :
6550
6551		// Check against all ancestor/preceding elements
6552		function( elem, context, xml ) {
6553			var oldCache, outerCache,
6554				newCache = [ dirruns, doneName ];
6555
6556			// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
6557			if ( xml ) {
6558				while ( ( elem = elem[ dir ] ) ) {
6559					if ( elem.nodeType === 1 || checkNonElements ) {
6560						if ( matcher( elem, context, xml ) ) {
6561							return true;
6562						}
6563					}
6564				}
6565			} else {
6566				while ( ( elem = elem[ dir ] ) ) {
6567					if ( elem.nodeType === 1 || checkNonElements ) {
6568						outerCache = elem[ expando ] || ( elem[ expando ] = {} );
6569
6570						if ( skip && nodeName( elem, skip ) ) {
6571							elem = elem[ dir ] || elem;
6572						} else if ( ( oldCache = outerCache[ key ] ) &&
6573							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
6574
6575							// Assign to newCache so results back-propagate to previous elements
6576							return ( newCache[ 2 ] = oldCache[ 2 ] );
6577						} else {
6578
6579							// Reuse newcache so results back-propagate to previous elements
6580							outerCache[ key ] = newCache;
6581
6582							// A match means we're done; a fail means we have to keep checking
6583							if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {
6584								return true;
6585							}
6586						}
6587					}
6588				}
6589			}
6590			return false;
6591		};
6592}
6593
6594function elementMatcher( matchers ) {
6595	return matchers.length > 1 ?
6596		function( elem, context, xml ) {
6597			var i = matchers.length;
6598			while ( i-- ) {
6599				if ( !matchers[ i ]( elem, context, xml ) ) {
6600					return false;
6601				}
6602			}
6603			return true;
6604		} :
6605		matchers[ 0 ];
6606}
6607
6608function multipleContexts( selector, contexts, results ) {
6609	var i = 0,
6610		len = contexts.length;
6611	for ( ; i < len; i++ ) {
6612		find( selector, contexts[ i ], results );
6613	}
6614	return results;
6615}
6616
6617function condense( unmatched, map, filter, context, xml ) {
6618	var elem,
6619		newUnmatched = [],
6620		i = 0,
6621		len = unmatched.length,
6622		mapped = map != null;
6623
6624	for ( ; i < len; i++ ) {
6625		if ( ( elem = unmatched[ i ] ) ) {
6626			if ( !filter || filter( elem, context, xml ) ) {
6627				newUnmatched.push( elem );
6628				if ( mapped ) {
6629					map.push( i );
6630				}
6631			}
6632		}
6633	}
6634
6635	return newUnmatched;
6636}
6637
6638function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
6639	if ( postFilter && !postFilter[ expando ] ) {
6640		postFilter = setMatcher( postFilter );
6641	}
6642	if ( postFinder && !postFinder[ expando ] ) {
6643		postFinder = setMatcher( postFinder, postSelector );
6644	}
6645	return markFunction( function( seed, results, context, xml ) {
6646		var temp, i, elem, matcherOut,
6647			preMap = [],
6648			postMap = [],
6649			preexisting = results.length,
6650
6651			// Get initial elements from seed or context
6652			elems = seed ||
6653				multipleContexts( selector || "*",
6654					context.nodeType ? [ context ] : context, [] ),
6655
6656			// Prefilter to get matcher input, preserving a map for seed-results synchronization
6657			matcherIn = preFilter && ( seed || !selector ) ?
6658				condense( elems, preMap, preFilter, context, xml ) :
6659				elems;
6660
6661		if ( matcher ) {
6662
6663			// If we have a postFinder, or filtered seed, or non-seed postFilter
6664			// or preexisting results,
6665			matcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
6666
6667				// ...intermediate processing is necessary
6668				[] :
6669
6670				// ...otherwise use results directly
6671				results;
6672
6673			// Find primary matches
6674			matcher( matcherIn, matcherOut, context, xml );
6675		} else {
6676			matcherOut = matcherIn;
6677		}
6678
6679		// Apply postFilter
6680		if ( postFilter ) {
6681			temp = condense( matcherOut, postMap );
6682			postFilter( temp, [], context, xml );
6683
6684			// Un-match failing elements by moving them back to matcherIn
6685			i = temp.length;
6686			while ( i-- ) {
6687				if ( ( elem = temp[ i ] ) ) {
6688					matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );
6689				}
6690			}
6691		}
6692
6693		if ( seed ) {
6694			if ( postFinder || preFilter ) {
6695				if ( postFinder ) {
6696
6697					// Get the final matcherOut by condensing this intermediate into postFinder contexts
6698					temp = [];
6699					i = matcherOut.length;
6700					while ( i-- ) {
6701						if ( ( elem = matcherOut[ i ] ) ) {
6702
6703							// Restore matcherIn since elem is not yet a final match
6704							temp.push( ( matcherIn[ i ] = elem ) );
6705						}
6706					}
6707					postFinder( null, ( matcherOut = [] ), temp, xml );
6708				}
6709
6710				// Move matched elements from seed to results to keep them synchronized
6711				i = matcherOut.length;
6712				while ( i-- ) {
6713					if ( ( elem = matcherOut[ i ] ) &&
6714						( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) {
6715
6716						seed[ temp ] = !( results[ temp ] = elem );
6717					}
6718				}
6719			}
6720
6721		// Add elements to results, through postFinder if defined
6722		} else {
6723			matcherOut = condense(
6724				matcherOut === results ?
6725					matcherOut.splice( preexisting, matcherOut.length ) :
6726					matcherOut
6727			);
6728			if ( postFinder ) {
6729				postFinder( null, results, matcherOut, xml );
6730			} else {
6731				push.apply( results, matcherOut );
6732			}
6733		}
6734	} );
6735}
6736
6737function matcherFromTokens( tokens ) {
6738	var checkContext, matcher, j,
6739		len = tokens.length,
6740		leadingRelative = Expr.relative[ tokens[ 0 ].type ],
6741		implicitRelative = leadingRelative || Expr.relative[ " " ],
6742		i = leadingRelative ? 1 : 0,
6743
6744		// The foundational matcher ensures that elements are reachable from top-level context(s)
6745		matchContext = addCombinator( function( elem ) {
6746			return elem === checkContext;
6747		}, implicitRelative, true ),
6748		matchAnyContext = addCombinator( function( elem ) {
6749			return indexOf.call( checkContext, elem ) > -1;
6750		}, implicitRelative, true ),
6751		matchers = [ function( elem, context, xml ) {
6752
6753			// Support: IE 11+, Edge 17 - 18+
6754			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
6755			// two documents; shallow comparisons work.
6756			// eslint-disable-next-line eqeqeq
6757			var ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (
6758				( checkContext = context ).nodeType ?
6759					matchContext( elem, context, xml ) :
6760					matchAnyContext( elem, context, xml ) );
6761
6762			// Avoid hanging onto element
6763			// (see https://github.com/jquery/sizzle/issues/299)
6764			checkContext = null;
6765			return ret;
6766		} ];
6767
6768	for ( ; i < len; i++ ) {
6769		if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {
6770			matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];
6771		} else {
6772			matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );
6773
6774			// Return special upon seeing a positional matcher
6775			if ( matcher[ expando ] ) {
6776
6777				// Find the next relative operator (if any) for proper handling
6778				j = ++i;
6779				for ( ; j < len; j++ ) {
6780					if ( Expr.relative[ tokens[ j ].type ] ) {
6781						break;
6782					}
6783				}
6784				return setMatcher(
6785					i > 1 && elementMatcher( matchers ),
6786					i > 1 && toSelector(
6787
6788						// If the preceding token was a descendant combinator, insert an implicit any-element `*`
6789						tokens.slice( 0, i - 1 )
6790							.concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } )
6791					).replace( rtrimCSS, "$1" ),
6792					matcher,
6793					i < j && matcherFromTokens( tokens.slice( i, j ) ),
6794					j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),
6795					j < len && toSelector( tokens )
6796				);
6797			}
6798			matchers.push( matcher );
6799		}
6800	}
6801
6802	return elementMatcher( matchers );
6803}
6804
6805function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
6806	var bySet = setMatchers.length > 0,
6807		byElement = elementMatchers.length > 0,
6808		superMatcher = function( seed, context, xml, results, outermost ) {
6809			var elem, j, matcher,
6810				matchedCount = 0,
6811				i = "0",
6812				unmatched = seed && [],
6813				setMatched = [],
6814				contextBackup = outermostContext,
6815
6816				// We must always have either seed elements or outermost context
6817				elems = seed || byElement && Expr.find.TAG( "*", outermost ),
6818
6819				// Use integer dirruns iff this is the outermost matcher
6820				dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),
6821				len = elems.length;
6822
6823			if ( outermost ) {
6824
6825				// Support: IE 11+, Edge 17 - 18+
6826				// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
6827				// two documents; shallow comparisons work.
6828				// eslint-disable-next-line eqeqeq
6829				outermostContext = context == document || context || outermost;
6830			}
6831
6832			// Add elements passing elementMatchers directly to results
6833			// Support: iOS <=7 - 9 only
6834			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching
6835			// elements by id. (see trac-14142)
6836			for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {
6837				if ( byElement && elem ) {
6838					j = 0;
6839
6840					// Support: IE 11+, Edge 17 - 18+
6841					// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
6842					// two documents; shallow comparisons work.
6843					// eslint-disable-next-line eqeqeq
6844					if ( !context && elem.ownerDocument != document ) {
6845						setDocument( elem );
6846						xml = !documentIsHTML;
6847					}
6848					while ( ( matcher = elementMatchers[ j++ ] ) ) {
6849						if ( matcher( elem, context || document, xml ) ) {
6850							push.call( results, elem );
6851							break;
6852						}
6853					}
6854					if ( outermost ) {
6855						dirruns = dirrunsUnique;
6856					}
6857				}
6858
6859				// Track unmatched elements for set filters
6860				if ( bySet ) {
6861
6862					// They will have gone through all possible matchers
6863					if ( ( elem = !matcher && elem ) ) {
6864						matchedCount--;
6865					}
6866
6867					// Lengthen the array for every element, matched or not
6868					if ( seed ) {
6869						unmatched.push( elem );
6870					}
6871				}
6872			}
6873
6874			// `i` is now the count of elements visited above, and adding it to `matchedCount`
6875			// makes the latter nonnegative.
6876			matchedCount += i;
6877
6878			// Apply set filters to unmatched elements
6879			// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
6880			// equals `i`), unless we didn't visit _any_ elements in the above loop because we have
6881			// no element matchers and no seed.
6882			// Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
6883			// case, which will result in a "00" `matchedCount` that differs from `i` but is also
6884			// numerically zero.
6885			if ( bySet && i !== matchedCount ) {
6886				j = 0;
6887				while ( ( matcher = setMatchers[ j++ ] ) ) {
6888					matcher( unmatched, setMatched, context, xml );
6889				}
6890
6891				if ( seed ) {
6892
6893					// Reintegrate element matches to eliminate the need for sorting
6894					if ( matchedCount > 0 ) {
6895						while ( i-- ) {
6896							if ( !( unmatched[ i ] || setMatched[ i ] ) ) {
6897								setMatched[ i ] = pop.call( results );
6898							}
6899						}
6900					}
6901
6902					// Discard index placeholder values to get only actual matches
6903					setMatched = condense( setMatched );
6904				}
6905
6906				// Add matches to results
6907				push.apply( results, setMatched );
6908
6909				// Seedless set matches succeeding multiple successful matchers stipulate sorting
6910				if ( outermost && !seed && setMatched.length > 0 &&
6911					( matchedCount + setMatchers.length ) > 1 ) {
6912
6913					jQuery.uniqueSort( results );
6914				}
6915			}
6916
6917			// Override manipulation of globals by nested matchers
6918			if ( outermost ) {
6919				dirruns = dirrunsUnique;
6920				outermostContext = contextBackup;
6921			}
6922
6923			return unmatched;
6924		};
6925
6926	return bySet ?
6927		markFunction( superMatcher ) :
6928		superMatcher;
6929}
6930
6931function compile( selector, match /* Internal Use Only */ ) {
6932	var i,
6933		setMatchers = [],
6934		elementMatchers = [],
6935		cached = compilerCache[ selector + " " ];
6936
6937	if ( !cached ) {
6938
6939		// Generate a function of recursive functions that can be used to check each element
6940		if ( !match ) {
6941			match = tokenize( selector );
6942		}
6943		i = match.length;
6944		while ( i-- ) {
6945			cached = matcherFromTokens( match[ i ] );
6946			if ( cached[ expando ] ) {
6947				setMatchers.push( cached );
6948			} else {
6949				elementMatchers.push( cached );
6950			}
6951		}
6952
6953		// Cache the compiled function
6954		cached = compilerCache( selector,
6955			matcherFromGroupMatchers( elementMatchers, setMatchers ) );
6956
6957		// Save selector and tokenization
6958		cached.selector = selector;
6959	}
6960	return cached;
6961}
6962
6963/**
6964 * A low-level selection function that works with jQuery's compiled
6965 *  selector functions
6966 * @param {String|Function} selector A selector or a pre-compiled
6967 *  selector function built with jQuery selector compile
6968 * @param {Element} context
6969 * @param {Array} [results]
6970 * @param {Array} [seed] A set of elements to match against
6971 */
6972function select( selector, context, results, seed ) {
6973	var i, tokens, token, type, find,
6974		compiled = typeof selector === "function" && selector,
6975		match = !seed && tokenize( ( selector = compiled.selector || selector ) );
6976
6977	results = results || [];
6978
6979	// Try to minimize operations if there is only one selector in the list and no seed
6980	// (the latter of which guarantees us context)
6981	if ( match.length === 1 ) {
6982
6983		// Reduce context if the leading compound selector is an ID
6984		tokens = match[ 0 ] = match[ 0 ].slice( 0 );
6985		if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" &&
6986				context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {
6987
6988			context = ( Expr.find.ID(
6989				token.matches[ 0 ].replace( runescape, funescape ),
6990				context
6991			) || [] )[ 0 ];
6992			if ( !context ) {
6993				return results;
6994
6995			// Precompiled matchers will still verify ancestry, so step up a level
6996			} else if ( compiled ) {
6997				context = context.parentNode;
6998			}
6999
7000			selector = selector.slice( tokens.shift().value.length );
7001		}
7002
7003		// Fetch a seed set for right-to-left matching
7004		i = matchExpr.needsContext.test( selector ) ? 0 : tokens.length;
7005		while ( i-- ) {
7006			token = tokens[ i ];
7007
7008			// Abort if we hit a combinator
7009			if ( Expr.relative[ ( type = token.type ) ] ) {
7010				break;
7011			}
7012			if ( ( find = Expr.find[ type ] ) ) {
7013
7014				// Search, expanding context for leading sibling combinators
7015				if ( ( seed = find(
7016					token.matches[ 0 ].replace( runescape, funescape ),
7017					rsibling.test( tokens[ 0 ].type ) &&
7018						testContext( context.parentNode ) || context
7019				) ) ) {
7020
7021					// If seed is empty or no tokens remain, we can return early
7022					tokens.splice( i, 1 );
7023					selector = seed.length && toSelector( tokens );
7024					if ( !selector ) {
7025						push.apply( results, seed );
7026						return results;
7027					}
7028
7029					break;
7030				}
7031			}
7032		}
7033	}
7034
7035	// Compile and execute a filtering function if one is not provided
7036	// Provide `match` to avoid retokenization if we modified the selector above
7037	( compiled || compile( selector, match ) )(
7038		seed,
7039		context,
7040		!documentIsHTML,
7041		results,
7042		!context || rsibling.test( selector ) && testContext( context.parentNode ) || context
7043	);
7044	return results;
7045}
7046
7047// One-time assignments
7048
7049// Support: Android <=4.0 - 4.1+
7050// Sort stability
7051support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando;
7052
7053// Initialize against the default document
7054setDocument();
7055
7056// Support: Android <=4.0 - 4.1+
7057// Detached nodes confoundingly follow *each other*
7058support.sortDetached = assert( function( el ) {
7059
7060	// Should return 1, but returns 4 (following)
7061	return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1;
7062} );
7063
7064jQuery.find = find;
7065
7066// Deprecated
7067jQuery.expr[ ":" ] = jQuery.expr.pseudos;
7068jQuery.unique = jQuery.uniqueSort;
7069
7070// These have always been private, but they used to be documented as part of
7071// Sizzle so let's maintain them for now for backwards compatibility purposes.
7072find.compile = compile;
7073find.select = select;
7074find.setDocument = setDocument;
7075find.tokenize = tokenize;
7076
7077find.escape = jQuery.escapeSelector;
7078find.getText = jQuery.text;
7079find.isXML = jQuery.isXMLDoc;
7080find.selectors = jQuery.expr;
7081find.support = jQuery.support;
7082find.uniqueSort = jQuery.uniqueSort;
7083
7084	/* eslint-enable */
7085
7086} )();
7087
7088
7089var dir = function( elem, dir, until ) {
7090	var matched = [],
7091		truncate = until !== undefined;
7092
7093	while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
7094		if ( elem.nodeType === 1 ) {
7095			if ( truncate && jQuery( elem ).is( until ) ) {
7096				break;
7097			}
7098			matched.push( elem );
7099		}
7100	}
7101	return matched;
7102};
7103
7104
7105var siblings = function( n, elem ) {
7106	var matched = [];
7107
7108	for ( ; n; n = n.nextSibling ) {
7109		if ( n.nodeType === 1 && n !== elem ) {
7110			matched.push( n );
7111		}
7112	}
7113
7114	return matched;
7115};
7116
7117
7118var rneedsContext = jQuery.expr.match.needsContext;
7119
7120var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
7121
7122
7123
7124// Implement the identical functionality for filter and not
7125function winnow( elements, qualifier, not ) {
7126	if ( isFunction( qualifier ) ) {
7127		return jQuery.grep( elements, function( elem, i ) {
7128			return !!qualifier.call( elem, i, elem ) !== not;
7129		} );
7130	}
7131
7132	// Single element
7133	if ( qualifier.nodeType ) {
7134		return jQuery.grep( elements, function( elem ) {
7135			return ( elem === qualifier ) !== not;
7136		} );
7137	}
7138
7139	// Arraylike of elements (jQuery, arguments, Array)
7140	if ( typeof qualifier !== "string" ) {
7141		return jQuery.grep( elements, function( elem ) {
7142			return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
7143		} );
7144	}
7145
7146	// Filtered directly for both simple and complex selectors
7147	return jQuery.filter( qualifier, elements, not );
7148}
7149
7150jQuery.filter = function( expr, elems, not ) {
7151	var elem = elems[ 0 ];
7152
7153	if ( not ) {
7154		expr = ":not(" + expr + ")";
7155	}
7156
7157	if ( elems.length === 1 && elem.nodeType === 1 ) {
7158		return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
7159	}
7160
7161	return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
7162		return elem.nodeType === 1;
7163	} ) );
7164};
7165
7166jQuery.fn.extend( {
7167	find: function( selector ) {
7168		var i, ret,
7169			len = this.length,
7170			self = this;
7171
7172		if ( typeof selector !== "string" ) {
7173			return this.pushStack( jQuery( selector ).filter( function() {
7174				for ( i = 0; i < len; i++ ) {
7175					if ( jQuery.contains( self[ i ], this ) ) {
7176						return true;
7177					}
7178				}
7179			} ) );
7180		}
7181
7182		ret = this.pushStack( [] );
7183
7184		for ( i = 0; i < len; i++ ) {
7185			jQuery.find( selector, self[ i ], ret );
7186		}
7187
7188		return len > 1 ? jQuery.uniqueSort( ret ) : ret;
7189	},
7190	filter: function( selector ) {
7191		return this.pushStack( winnow( this, selector || [], false ) );
7192	},
7193	not: function( selector ) {
7194		return this.pushStack( winnow( this, selector || [], true ) );
7195	},
7196	is: function( selector ) {
7197		return !!winnow(
7198			this,
7199
7200			// If this is a positional/relative selector, check membership in the returned set
7201			// so $("p:first").is("p:last") won't return true for a doc with two "p".
7202			typeof selector === "string" && rneedsContext.test( selector ) ?
7203				jQuery( selector ) :
7204				selector || [],
7205			false
7206		).length;
7207	}
7208} );
7209
7210
7211// Initialize a jQuery object
7212
7213
7214// A central reference to the root jQuery(document)
7215var rootjQuery,
7216
7217	// A simple way to check for HTML strings
7218	// Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)
7219	// Strict HTML recognition (trac-11290: must start with <)
7220	// Shortcut simple #id case for speed
7221	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
7222
7223	init = jQuery.fn.init = function( selector, context, root ) {
7224		var match, elem;
7225
7226		// HANDLE: $(""), $(null), $(undefined), $(false)
7227		if ( !selector ) {
7228			return this;
7229		}
7230
7231		// Method init() accepts an alternate rootjQuery
7232		// so migrate can support jQuery.sub (gh-2101)
7233		root = root || rootjQuery;
7234
7235		// Handle HTML strings
7236		if ( typeof selector === "string" ) {
7237			if ( selector[ 0 ] === "<" &&
7238				selector[ selector.length - 1 ] === ">" &&
7239				selector.length >= 3 ) {
7240
7241				// Assume that strings that start and end with <> are HTML and skip the regex check
7242				match = [ null, selector, null ];
7243
7244			} else {
7245				match = rquickExpr.exec( selector );
7246			}
7247
7248			// Match html or make sure no context is specified for #id
7249			if ( match && ( match[ 1 ] || !context ) ) {
7250
7251				// HANDLE: $(html) -> $(array)
7252				if ( match[ 1 ] ) {
7253					context = context instanceof jQuery ? context[ 0 ] : context;
7254
7255					// Option to run scripts is true for back-compat
7256					// Intentionally let the error be thrown if parseHTML is not present
7257					jQuery.merge( this, jQuery.parseHTML(
7258						match[ 1 ],
7259						context && context.nodeType ? context.ownerDocument || context : document,
7260						true
7261					) );
7262
7263					// HANDLE: $(html, props)
7264					if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
7265						for ( match in context ) {
7266
7267							// Properties of context are called as methods if possible
7268							if ( isFunction( this[ match ] ) ) {
7269								this[ match ]( context[ match ] );
7270
7271							// ...and otherwise set as attributes
7272							} else {
7273								this.attr( match, context[ match ] );
7274							}
7275						}
7276					}
7277
7278					return this;
7279
7280				// HANDLE: $(#id)
7281				} else {
7282					elem = document.getElementById( match[ 2 ] );
7283
7284					if ( elem ) {
7285
7286						// Inject the element directly into the jQuery object
7287						this[ 0 ] = elem;
7288						this.length = 1;
7289					}
7290					return this;
7291				}
7292
7293			// HANDLE: $(expr, $(...))
7294			} else if ( !context || context.jquery ) {
7295				return ( context || root ).find( selector );
7296
7297			// HANDLE: $(expr, context)
7298			// (which is just equivalent to: $(context).find(expr)
7299			} else {
7300				return this.constructor( context ).find( selector );
7301			}
7302
7303		// HANDLE: $(DOMElement)
7304		} else if ( selector.nodeType ) {
7305			this[ 0 ] = selector;
7306			this.length = 1;
7307			return this;
7308
7309		// HANDLE: $(function)
7310		// Shortcut for document ready
7311		} else if ( isFunction( selector ) ) {
7312			return root.ready !== undefined ?
7313				root.ready( selector ) :
7314
7315				// Execute immediately if ready is not present
7316				selector( jQuery );
7317		}
7318
7319		return jQuery.makeArray( selector, this );
7320	};
7321
7322// Give the init function the jQuery prototype for later instantiation
7323init.prototype = jQuery.fn;
7324
7325// Initialize central reference
7326rootjQuery = jQuery( document );
7327
7328
7329var rparentsprev = /^(?:parents|prev(?:Until|All))/,
7330
7331	// Methods guaranteed to produce a unique set when starting from a unique set
7332	guaranteedUnique = {
7333		children: true,
7334		contents: true,
7335		next: true,
7336		prev: true
7337	};
7338
7339jQuery.fn.extend( {
7340	has: function( target ) {
7341		var targets = jQuery( target, this ),
7342			l = targets.length;
7343
7344		return this.filter( function() {
7345			var i = 0;
7346			for ( ; i < l; i++ ) {
7347				if ( jQuery.contains( this, targets[ i ] ) ) {
7348					return true;
7349				}
7350			}
7351		} );
7352	},
7353
7354	closest: function( selectors, context ) {
7355		var cur,
7356			i = 0,
7357			l = this.length,
7358			matched = [],
7359			targets = typeof selectors !== "string" && jQuery( selectors );
7360
7361		// Positional selectors never match, since there's no _selection_ context
7362		if ( !rneedsContext.test( selectors ) ) {
7363			for ( ; i < l; i++ ) {
7364				for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
7365
7366					// Always skip document fragments
7367					if ( cur.nodeType < 11 && ( targets ?
7368						targets.index( cur ) > -1 :
7369
7370						// Don't pass non-elements to jQuery#find
7371						cur.nodeType === 1 &&
7372							jQuery.find.matchesSelector( cur, selectors ) ) ) {
7373
7374						matched.push( cur );
7375						break;
7376					}
7377				}
7378			}
7379		}
7380
7381		return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
7382	},
7383
7384	// Determine the position of an element within the set
7385	index: function( elem ) {
7386
7387		// No argument, return index in parent
7388		if ( !elem ) {
7389			return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
7390		}
7391
7392		// Index in selector
7393		if ( typeof elem === "string" ) {
7394			return indexOf.call( jQuery( elem ), this[ 0 ] );
7395		}
7396
7397		// Locate the position of the desired element
7398		return indexOf.call( this,
7399
7400			// If it receives a jQuery object, the first element is used
7401			elem.jquery ? elem[ 0 ] : elem
7402		);
7403	},
7404
7405	add: function( selector, context ) {
7406		return this.pushStack(
7407			jQuery.uniqueSort(
7408				jQuery.merge( this.get(), jQuery( selector, context ) )
7409			)
7410		);
7411	},
7412
7413	addBack: function( selector ) {
7414		return this.add( selector == null ?
7415			this.prevObject : this.prevObject.filter( selector )
7416		);
7417	}
7418} );
7419
7420function sibling( cur, dir ) {
7421	while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
7422	return cur;
7423}
7424
7425jQuery.each( {
7426	parent: function( elem ) {
7427		var parent = elem.parentNode;
7428		return parent && parent.nodeType !== 11 ? parent : null;
7429	},
7430	parents: function( elem ) {
7431		return dir( elem, "parentNode" );
7432	},
7433	parentsUntil: function( elem, _i, until ) {
7434		return dir( elem, "parentNode", until );
7435	},
7436	next: function( elem ) {
7437		return sibling( elem, "nextSibling" );
7438	},
7439	prev: function( elem ) {
7440		return sibling( elem, "previousSibling" );
7441	},
7442	nextAll: function( elem ) {
7443		return dir( elem, "nextSibling" );
7444	},
7445	prevAll: function( elem ) {
7446		return dir( elem, "previousSibling" );
7447	},
7448	nextUntil: function( elem, _i, until ) {
7449		return dir( elem, "nextSibling", until );
7450	},
7451	prevUntil: function( elem, _i, until ) {
7452		return dir( elem, "previousSibling", until );
7453	},
7454	siblings: function( elem ) {
7455		return siblings( ( elem.parentNode || {} ).firstChild, elem );
7456	},
7457	children: function( elem ) {
7458		return siblings( elem.firstChild );
7459	},
7460	contents: function( elem ) {
7461		if ( elem.contentDocument != null &&
7462
7463			// Support: IE 11+
7464			// <object> elements with no `data` attribute has an object
7465			// `contentDocument` with a `null` prototype.
7466			getProto( elem.contentDocument ) ) {
7467
7468			return elem.contentDocument;
7469		}
7470
7471		// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
7472		// Treat the template element as a regular one in browsers that
7473		// don't support it.
7474		if ( nodeName( elem, "template" ) ) {
7475			elem = elem.content || elem;
7476		}
7477
7478		return jQuery.merge( [], elem.childNodes );
7479	}
7480}, function( name, fn ) {
7481	jQuery.fn[ name ] = function( until, selector ) {
7482		var matched = jQuery.map( this, fn, until );
7483
7484		if ( name.slice( -5 ) !== "Until" ) {
7485			selector = until;
7486		}
7487
7488		if ( selector && typeof selector === "string" ) {
7489			matched = jQuery.filter( selector, matched );
7490		}
7491
7492		if ( this.length > 1 ) {
7493
7494			// Remove duplicates
7495			if ( !guaranteedUnique[ name ] ) {
7496				jQuery.uniqueSort( matched );
7497			}
7498
7499			// Reverse order for parents* and prev-derivatives
7500			if ( rparentsprev.test( name ) ) {
7501				matched.reverse();
7502			}
7503		}
7504
7505		return this.pushStack( matched );
7506	};
7507} );
7508var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
7509
7510
7511
7512// Convert String-formatted options into Object-formatted ones
7513function createOptions( options ) {
7514	var object = {};
7515	jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
7516		object[ flag ] = true;
7517	} );
7518	return object;
7519}
7520
7521/*
7522 * Create a callback list using the following parameters:
7523 *
7524 *	options: an optional list of space-separated options that will change how
7525 *			the callback list behaves or a more traditional option object
7526 *
7527 * By default a callback list will act like an event callback list and can be
7528 * "fired" multiple times.
7529 *
7530 * Possible options:
7531 *
7532 *	once:			will ensure the callback list can only be fired once (like a Deferred)
7533 *
7534 *	memory:			will keep track of previous values and will call any callback added
7535 *					after the list has been fired right away with the latest "memorized"
7536 *					values (like a Deferred)
7537 *
7538 *	unique:			will ensure a callback can only be added once (no duplicate in the list)
7539 *
7540 *	stopOnFalse:	interrupt callings when a callback returns false
7541 *
7542 */
7543jQuery.Callbacks = function( options ) {
7544
7545	// Convert options from String-formatted to Object-formatted if needed
7546	// (we check in cache first)
7547	options = typeof options === "string" ?
7548		createOptions( options ) :
7549		jQuery.extend( {}, options );
7550
7551	var // Flag to know if list is currently firing
7552		firing,
7553
7554		// Last fire value for non-forgettable lists
7555		memory,
7556
7557		// Flag to know if list was already fired
7558		fired,
7559
7560		// Flag to prevent firing
7561		locked,
7562
7563		// Actual callback list
7564		list = [],
7565
7566		// Queue of execution data for repeatable lists
7567		queue = [],
7568
7569		// Index of currently firing callback (modified by add/remove as needed)
7570		firingIndex = -1,
7571
7572		// Fire callbacks
7573		fire = function() {
7574
7575			// Enforce single-firing
7576			locked = locked || options.once;
7577
7578			// Execute callbacks for all pending executions,
7579			// respecting firingIndex overrides and runtime changes
7580			fired = firing = true;
7581			for ( ; queue.length; firingIndex = -1 ) {
7582				memory = queue.shift();
7583				while ( ++firingIndex < list.length ) {
7584
7585					// Run callback and check for early termination
7586					if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
7587						options.stopOnFalse ) {
7588
7589						// Jump to end and forget the data so .add doesn't re-fire
7590						firingIndex = list.length;
7591						memory = false;
7592					}
7593				}
7594			}
7595
7596			// Forget the data if we're done with it
7597			if ( !options.memory ) {
7598				memory = false;
7599			}
7600
7601			firing = false;
7602
7603			// Clean up if we're done firing for good
7604			if ( locked ) {
7605
7606				// Keep an empty list if we have data for future add calls
7607				if ( memory ) {
7608					list = [];
7609
7610				// Otherwise, this object is spent
7611				} else {
7612					list = "";
7613				}
7614			}
7615		},
7616
7617		// Actual Callbacks object
7618		self = {
7619
7620			// Add a callback or a collection of callbacks to the list
7621			add: function() {
7622				if ( list ) {
7623
7624					// If we have memory from a past run, we should fire after adding
7625					if ( memory && !firing ) {
7626						firingIndex = list.length - 1;
7627						queue.push( memory );
7628					}
7629
7630					( function add( args ) {
7631						jQuery.each( args, function( _, arg ) {
7632							if ( isFunction( arg ) ) {
7633								if ( !options.unique || !self.has( arg ) ) {
7634									list.push( arg );
7635								}
7636							} else if ( arg && arg.length && toType( arg ) !== "string" ) {
7637
7638								// Inspect recursively
7639								add( arg );
7640							}
7641						} );
7642					} )( arguments );
7643
7644					if ( memory && !firing ) {
7645						fire();
7646					}
7647				}
7648				return this;
7649			},
7650
7651			// Remove a callback from the list
7652			remove: function() {
7653				jQuery.each( arguments, function( _, arg ) {
7654					var index;
7655					while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
7656						list.splice( index, 1 );
7657
7658						// Handle firing indexes
7659						if ( index <= firingIndex ) {
7660							firingIndex--;
7661						}
7662					}
7663				} );
7664				return this;
7665			},
7666
7667			// Check if a given callback is in the list.
7668			// If no argument is given, return whether or not list has callbacks attached.
7669			has: function( fn ) {
7670				return fn ?
7671					jQuery.inArray( fn, list ) > -1 :
7672					list.length > 0;
7673			},
7674
7675			// Remove all callbacks from the list
7676			empty: function() {
7677				if ( list ) {
7678					list = [];
7679				}
7680				return this;
7681			},
7682
7683			// Disable .fire and .add
7684			// Abort any current/pending executions
7685			// Clear all callbacks and values
7686			disable: function() {
7687				locked = queue = [];
7688				list = memory = "";
7689				return this;
7690			},
7691			disabled: function() {
7692				return !list;
7693			},
7694
7695			// Disable .fire
7696			// Also disable .add unless we have memory (since it would have no effect)
7697			// Abort any pending executions
7698			lock: function() {
7699				locked = queue = [];
7700				if ( !memory && !firing ) {
7701					list = memory = "";
7702				}
7703				return this;
7704			},
7705			locked: function() {
7706				return !!locked;
7707			},
7708
7709			// Call all callbacks with the given context and arguments
7710			fireWith: function( context, args ) {
7711				if ( !locked ) {
7712					args = args || [];
7713					args = [ context, args.slice ? args.slice() : args ];
7714					queue.push( args );
7715					if ( !firing ) {
7716						fire();
7717					}
7718				}
7719				return this;
7720			},
7721
7722			// Call all the callbacks with the given arguments
7723			fire: function() {
7724				self.fireWith( this, arguments );
7725				return this;
7726			},
7727
7728			// To know if the callbacks have already been called at least once
7729			fired: function() {
7730				return !!fired;
7731			}
7732		};
7733
7734	return self;
7735};
7736
7737
7738function Identity( v ) {
7739	return v;
7740}
7741function Thrower( ex ) {
7742	throw ex;
7743}
7744
7745function adoptValue( value, resolve, reject, noValue ) {
7746	var method;
7747
7748	try {
7749
7750		// Check for promise aspect first to privilege synchronous behavior
7751		if ( value && isFunction( ( method = value.promise ) ) ) {
7752			method.call( value ).done( resolve ).fail( reject );
7753
7754		// Other thenables
7755		} else if ( value && isFunction( ( method = value.then ) ) ) {
7756			method.call( value, resolve, reject );
7757
7758		// Other non-thenables
7759		} else {
7760
7761			// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
7762			// * false: [ value ].slice( 0 ) => resolve( value )
7763			// * true: [ value ].slice( 1 ) => resolve()
7764			resolve.apply( undefined, [ value ].slice( noValue ) );
7765		}
7766
7767	// For Promises/A+, convert exceptions into rejections
7768	// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
7769	// Deferred#then to conditionally suppress rejection.
7770	} catch ( value ) {
7771
7772		// Support: Android 4.0 only
7773		// Strict mode functions invoked without .call/.apply get global-object context
7774		reject.apply( undefined, [ value ] );
7775	}
7776}
7777
7778jQuery.extend( {
7779
7780	Deferred: function( func ) {
7781		var tuples = [
7782
7783				// action, add listener, callbacks,
7784				// ... .then handlers, argument index, [final state]
7785				[ "notify", "progress", jQuery.Callbacks( "memory" ),
7786					jQuery.Callbacks( "memory" ), 2 ],
7787				[ "resolve", "done", jQuery.Callbacks( "once memory" ),
7788					jQuery.Callbacks( "once memory" ), 0, "resolved" ],
7789				[ "reject", "fail", jQuery.Callbacks( "once memory" ),
7790					jQuery.Callbacks( "once memory" ), 1, "rejected" ]
7791			],
7792			state = "pending",
7793			promise = {
7794				state: function() {
7795					return state;
7796				},
7797				always: function() {
7798					deferred.done( arguments ).fail( arguments );
7799					return this;
7800				},
7801				"catch": function( fn ) {
7802					return promise.then( null, fn );
7803				},
7804
7805				// Keep pipe for back-compat
7806				pipe: function( /* fnDone, fnFail, fnProgress */ ) {
7807					var fns = arguments;
7808
7809					return jQuery.Deferred( function( newDefer ) {
7810						jQuery.each( tuples, function( _i, tuple ) {
7811
7812							// Map tuples (progress, done, fail) to arguments (done, fail, progress)
7813							var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
7814
7815							// deferred.progress(function() { bind to newDefer or newDefer.notify })
7816							// deferred.done(function() { bind to newDefer or newDefer.resolve })
7817							// deferred.fail(function() { bind to newDefer or newDefer.reject })
7818							deferred[ tuple[ 1 ] ]( function() {
7819								var returned = fn && fn.apply( this, arguments );
7820								if ( returned && isFunction( returned.promise ) ) {
7821									returned.promise()
7822										.progress( newDefer.notify )
7823										.done( newDefer.resolve )
7824										.fail( newDefer.reject );
7825								} else {
7826									newDefer[ tuple[ 0 ] + "With" ](
7827										this,
7828										fn ? [ returned ] : arguments
7829									);
7830								}
7831							} );
7832						} );
7833						fns = null;
7834					} ).promise();
7835				},
7836				then: function( onFulfilled, onRejected, onProgress ) {
7837					var maxDepth = 0;
7838					function resolve( depth, deferred, handler, special ) {
7839						return function() {
7840							var that = this,
7841								args = arguments,
7842								mightThrow = function() {
7843									var returned, then;
7844
7845									// Support: Promises/A+ section 2.3.3.3.3
7846									// https://promisesaplus.com/#point-59
7847									// Ignore double-resolution attempts
7848									if ( depth < maxDepth ) {
7849										return;
7850									}
7851
7852									returned = handler.apply( that, args );
7853
7854									// Support: Promises/A+ section 2.3.1
7855									// https://promisesaplus.com/#point-48
7856									if ( returned === deferred.promise() ) {
7857										throw new TypeError( "Thenable self-resolution" );
7858									}
7859
7860									// Support: Promises/A+ sections 2.3.3.1, 3.5
7861									// https://promisesaplus.com/#point-54
7862									// https://promisesaplus.com/#point-75
7863									// Retrieve `then` only once
7864									then = returned &&
7865
7866										// Support: Promises/A+ section 2.3.4
7867										// https://promisesaplus.com/#point-64
7868										// Only check objects and functions for thenability
7869										( typeof returned === "object" ||
7870											typeof returned === "function" ) &&
7871										returned.then;
7872
7873									// Handle a returned thenable
7874									if ( isFunction( then ) ) {
7875
7876										// Special processors (notify) just wait for resolution
7877										if ( special ) {
7878											then.call(
7879												returned,
7880												resolve( maxDepth, deferred, Identity, special ),
7881												resolve( maxDepth, deferred, Thrower, special )
7882											);
7883
7884										// Normal processors (resolve) also hook into progress
7885										} else {
7886
7887											// ...and disregard older resolution values
7888											maxDepth++;
7889
7890											then.call(
7891												returned,
7892												resolve( maxDepth, deferred, Identity, special ),
7893												resolve( maxDepth, deferred, Thrower, special ),
7894												resolve( maxDepth, deferred, Identity,
7895													deferred.notifyWith )
7896											);
7897										}
7898
7899									// Handle all other returned values
7900									} else {
7901
7902										// Only substitute handlers pass on context
7903										// and multiple values (non-spec behavior)
7904										if ( handler !== Identity ) {
7905											that = undefined;
7906											args = [ returned ];
7907										}
7908
7909										// Process the value(s)
7910										// Default process is resolve
7911										( special || deferred.resolveWith )( that, args );
7912									}
7913								},
7914
7915								// Only normal processors (resolve) catch and reject exceptions
7916								process = special ?
7917									mightThrow :
7918									function() {
7919										try {
7920											mightThrow();
7921										} catch ( e ) {
7922
7923											if ( jQuery.Deferred.exceptionHook ) {
7924												jQuery.Deferred.exceptionHook( e,
7925													process.error );
7926											}
7927
7928											// Support: Promises/A+ section 2.3.3.3.4.1
7929											// https://promisesaplus.com/#point-61
7930											// Ignore post-resolution exceptions
7931											if ( depth + 1 >= maxDepth ) {
7932
7933												// Only substitute handlers pass on context
7934												// and multiple values (non-spec behavior)
7935												if ( handler !== Thrower ) {
7936													that = undefined;
7937													args = [ e ];
7938												}
7939
7940												deferred.rejectWith( that, args );
7941											}
7942										}
7943									};
7944
7945							// Support: Promises/A+ section 2.3.3.3.1
7946							// https://promisesaplus.com/#point-57
7947							// Re-resolve promises immediately to dodge false rejection from
7948							// subsequent errors
7949							if ( depth ) {
7950								process();
7951							} else {
7952
7953								// Call an optional hook to record the error, in case of exception
7954								// since it's otherwise lost when execution goes async
7955								if ( jQuery.Deferred.getErrorHook ) {
7956									process.error = jQuery.Deferred.getErrorHook();
7957
7958								// The deprecated alias of the above. While the name suggests
7959								// returning the stack, not an error instance, jQuery just passes
7960								// it directly to `console.warn` so both will work; an instance
7961								// just better cooperates with source maps.
7962								} else if ( jQuery.Deferred.getStackHook ) {
7963									process.error = jQuery.Deferred.getStackHook();
7964								}
7965								window.setTimeout( process );
7966							}
7967						};
7968					}
7969
7970					return jQuery.Deferred( function( newDefer ) {
7971
7972						// progress_handlers.add( ... )
7973						tuples[ 0 ][ 3 ].add(
7974							resolve(
7975								0,
7976								newDefer,
7977								isFunction( onProgress ) ?
7978									onProgress :
7979									Identity,
7980								newDefer.notifyWith
7981							)
7982						);
7983
7984						// fulfilled_handlers.add( ... )
7985						tuples[ 1 ][ 3 ].add(
7986							resolve(
7987								0,
7988								newDefer,
7989								isFunction( onFulfilled ) ?
7990									onFulfilled :
7991									Identity
7992							)
7993						);
7994
7995						// rejected_handlers.add( ... )
7996						tuples[ 2 ][ 3 ].add(
7997							resolve(
7998								0,
7999								newDefer,
8000								isFunction( onRejected ) ?
8001									onRejected :
8002									Thrower
8003							)
8004						);
8005					} ).promise();
8006				},
8007
8008				// Get a promise for this deferred
8009				// If obj is provided, the promise aspect is added to the object
8010				promise: function( obj ) {
8011					return obj != null ? jQuery.extend( obj, promise ) : promise;
8012				}
8013			},
8014			deferred = {};
8015
8016		// Add list-specific methods
8017		jQuery.each( tuples, function( i, tuple ) {
8018			var list = tuple[ 2 ],
8019				stateString = tuple[ 5 ];
8020
8021			// promise.progress = list.add
8022			// promise.done = list.add
8023			// promise.fail = list.add
8024			promise[ tuple[ 1 ] ] = list.add;
8025
8026			// Handle state
8027			if ( stateString ) {
8028				list.add(
8029					function() {
8030
8031						// state = "resolved" (i.e., fulfilled)
8032						// state = "rejected"
8033						state = stateString;
8034					},
8035
8036					// rejected_callbacks.disable
8037					// fulfilled_callbacks.disable
8038					tuples[ 3 - i ][ 2 ].disable,
8039
8040					// rejected_handlers.disable
8041					// fulfilled_handlers.disable
8042					tuples[ 3 - i ][ 3 ].disable,
8043
8044					// progress_callbacks.lock
8045					tuples[ 0 ][ 2 ].lock,
8046
8047					// progress_handlers.lock
8048					tuples[ 0 ][ 3 ].lock
8049				);
8050			}
8051
8052			// progress_handlers.fire
8053			// fulfilled_handlers.fire
8054			// rejected_handlers.fire
8055			list.add( tuple[ 3 ].fire );
8056
8057			// deferred.notify = function() { deferred.notifyWith(...) }
8058			// deferred.resolve = function() { deferred.resolveWith(...) }
8059			// deferred.reject = function() { deferred.rejectWith(...) }
8060			deferred[ tuple[ 0 ] ] = function() {
8061				deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
8062				return this;
8063			};
8064
8065			// deferred.notifyWith = list.fireWith
8066			// deferred.resolveWith = list.fireWith
8067			// deferred.rejectWith = list.fireWith
8068			deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
8069		} );
8070
8071		// Make the deferred a promise
8072		promise.promise( deferred );
8073
8074		// Call given func if any
8075		if ( func ) {
8076			func.call( deferred, deferred );
8077		}
8078
8079		// All done!
8080		return deferred;
8081	},
8082
8083	// Deferred helper
8084	when: function( singleValue ) {
8085		var
8086
8087			// count of uncompleted subordinates
8088			remaining = arguments.length,
8089
8090			// count of unprocessed arguments
8091			i = remaining,
8092
8093			// subordinate fulfillment data
8094			resolveContexts = Array( i ),
8095			resolveValues = slice.call( arguments ),
8096
8097			// the primary Deferred
8098			primary = jQuery.Deferred(),
8099
8100			// subordinate callback factory
8101			updateFunc = function( i ) {
8102				return function( value ) {
8103					resolveContexts[ i ] = this;
8104					resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
8105					if ( !( --remaining ) ) {
8106						primary.resolveWith( resolveContexts, resolveValues );
8107					}
8108				};
8109			};
8110
8111		// Single- and empty arguments are adopted like Promise.resolve
8112		if ( remaining <= 1 ) {
8113			adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,
8114				!remaining );
8115
8116			// Use .then() to unwrap secondary thenables (cf. gh-3000)
8117			if ( primary.state() === "pending" ||
8118				isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
8119
8120				return primary.then();
8121			}
8122		}
8123
8124		// Multiple arguments are aggregated like Promise.all array elements
8125		while ( i-- ) {
8126			adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );
8127		}
8128
8129		return primary.promise();
8130	}
8131} );
8132
8133
8134// These usually indicate a programmer mistake during development,
8135// warn about them ASAP rather than swallowing them by default.
8136var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
8137
8138// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error
8139// captured before the async barrier to get the original error cause
8140// which may otherwise be hidden.
8141jQuery.Deferred.exceptionHook = function( error, asyncError ) {
8142
8143	// Support: IE 8 - 9 only
8144	// Console exists when dev tools are open, which can happen at any time
8145	if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
8146		window.console.warn( "jQuery.Deferred exception: " + error.message,
8147			error.stack, asyncError );
8148	}
8149};
8150
8151
8152
8153
8154jQuery.readyException = function( error ) {
8155	window.setTimeout( function() {
8156		throw error;
8157	} );
8158};
8159
8160
8161
8162
8163// The deferred used on DOM ready
8164var readyList = jQuery.Deferred();
8165
8166jQuery.fn.ready = function( fn ) {
8167
8168	readyList
8169		.then( fn )
8170
8171		// Wrap jQuery.readyException in a function so that the lookup
8172		// happens at the time of error handling instead of callback
8173		// registration.
8174		.catch( function( error ) {
8175			jQuery.readyException( error );
8176		} );
8177
8178	return this;
8179};
8180
8181jQuery.extend( {
8182
8183	// Is the DOM ready to be used? Set to true once it occurs.
8184	isReady: false,
8185
8186	// A counter to track how many items to wait for before
8187	// the ready event fires. See trac-6781
8188	readyWait: 1,
8189
8190	// Handle when the DOM is ready
8191	ready: function( wait ) {
8192
8193		// Abort if there are pending holds or we're already ready
8194		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
8195			return;
8196		}
8197
8198		// Remember that the DOM is ready
8199		jQuery.isReady = true;
8200
8201		// If a normal DOM Ready event fired, decrement, and wait if need be
8202		if ( wait !== true && --jQuery.readyWait > 0 ) {
8203			return;
8204		}
8205
8206		// If there are functions bound, to execute
8207		readyList.resolveWith( document, [ jQuery ] );
8208	}
8209} );
8210
8211jQuery.ready.then = readyList.then;
8212
8213// The ready event handler and self cleanup method
8214function completed() {
8215	document.removeEventListener( "DOMContentLoaded", completed );
8216	window.removeEventListener( "load", completed );
8217	jQuery.ready();
8218}
8219
8220// Catch cases where $(document).ready() is called
8221// after the browser event has already occurred.
8222// Support: IE <=9 - 10 only
8223// Older IE sometimes signals "interactive" too soon
8224if ( document.readyState === "complete" ||
8225	( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
8226
8227	// Handle it asynchronously to allow scripts the opportunity to delay ready
8228	window.setTimeout( jQuery.ready );
8229
8230} else {
8231
8232	// Use the handy event callback
8233	document.addEventListener( "DOMContentLoaded", completed );
8234
8235	// A fallback to window.onload, that will always work
8236	window.addEventListener( "load", completed );
8237}
8238
8239
8240
8241
8242// Multifunctional method to get and set values of a collection
8243// The value/s can optionally be executed if it's a function
8244var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
8245	var i = 0,
8246		len = elems.length,
8247		bulk = key == null;
8248
8249	// Sets many values
8250	if ( toType( key ) === "object" ) {
8251		chainable = true;
8252		for ( i in key ) {
8253			access( elems, fn, i, key[ i ], true, emptyGet, raw );
8254		}
8255
8256	// Sets one value
8257	} else if ( value !== undefined ) {
8258		chainable = true;
8259
8260		if ( !isFunction( value ) ) {
8261			raw = true;
8262		}
8263
8264		if ( bulk ) {
8265
8266			// Bulk operations run against the entire set
8267			if ( raw ) {
8268				fn.call( elems, value );
8269				fn = null;
8270
8271			// ...except when executing function values
8272			} else {
8273				bulk = fn;
8274				fn = function( elem, _key, value ) {
8275					return bulk.call( jQuery( elem ), value );
8276				};
8277			}
8278		}
8279
8280		if ( fn ) {
8281			for ( ; i < len; i++ ) {
8282				fn(
8283					elems[ i ], key, raw ?
8284						value :
8285						value.call( elems[ i ], i, fn( elems[ i ], key ) )
8286				);
8287			}
8288		}
8289	}
8290
8291	if ( chainable ) {
8292		return elems;
8293	}
8294
8295	// Gets
8296	if ( bulk ) {
8297		return fn.call( elems );
8298	}
8299
8300	return len ? fn( elems[ 0 ], key ) : emptyGet;
8301};
8302
8303
8304// Matches dashed string for camelizing
8305var rmsPrefix = /^-ms-/,
8306	rdashAlpha = /-([a-z])/g;
8307
8308// Used by camelCase as callback to replace()
8309function fcamelCase( _all, letter ) {
8310	return letter.toUpperCase();
8311}
8312
8313// Convert dashed to camelCase; used by the css and data modules
8314// Support: IE <=9 - 11, Edge 12 - 15
8315// Microsoft forgot to hump their vendor prefix (trac-9572)
8316function camelCase( string ) {
8317	return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
8318}
8319var acceptData = function( owner ) {
8320
8321	// Accepts only:
8322	//  - Node
8323	//    - Node.ELEMENT_NODE
8324	//    - Node.DOCUMENT_NODE
8325	//  - Object
8326	//    - Any
8327	return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
8328};
8329
8330
8331
8332
8333function Data() {
8334	this.expando = jQuery.expando + Data.uid++;
8335}
8336
8337Data.uid = 1;
8338
8339Data.prototype = {
8340
8341	cache: function( owner ) {
8342
8343		// Check if the owner object already has a cache
8344		var value = owner[ this.expando ];
8345
8346		// If not, create one
8347		if ( !value ) {
8348			value = {};
8349
8350			// We can accept data for non-element nodes in modern browsers,
8351			// but we should not, see trac-8335.
8352			// Always return an empty object.
8353			if ( acceptData( owner ) ) {
8354
8355				// If it is a node unlikely to be stringify-ed or looped over
8356				// use plain assignment
8357				if ( owner.nodeType ) {
8358					owner[ this.expando ] = value;
8359
8360				// Otherwise secure it in a non-enumerable property
8361				// configurable must be true to allow the property to be
8362				// deleted when data is removed
8363				} else {
8364					Object.defineProperty( owner, this.expando, {
8365						value: value,
8366						configurable: true
8367					} );
8368				}
8369			}
8370		}
8371
8372		return value;
8373	},
8374	set: function( owner, data, value ) {
8375		var prop,
8376			cache = this.cache( owner );
8377
8378		// Handle: [ owner, key, value ] args
8379		// Always use camelCase key (gh-2257)
8380		if ( typeof data === "string" ) {
8381			cache[ camelCase( data ) ] = value;
8382
8383		// Handle: [ owner, { properties } ] args
8384		} else {
8385
8386			// Copy the properties one-by-one to the cache object
8387			for ( prop in data ) {
8388				cache[ camelCase( prop ) ] = data[ prop ];
8389			}
8390		}
8391		return cache;
8392	},
8393	get: function( owner, key ) {
8394		return key === undefined ?
8395			this.cache( owner ) :
8396
8397			// Always use camelCase key (gh-2257)
8398			owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];
8399	},
8400	access: function( owner, key, value ) {
8401
8402		// In cases where either:
8403		//
8404		//   1. No key was specified
8405		//   2. A string key was specified, but no value provided
8406		//
8407		// Take the "read" path and allow the get method to determine
8408		// which value to return, respectively either:
8409		//
8410		//   1. The entire cache object
8411		//   2. The data stored at the key
8412		//
8413		if ( key === undefined ||
8414				( ( key && typeof key === "string" ) && value === undefined ) ) {
8415
8416			return this.get( owner, key );
8417		}
8418
8419		// When the key is not a string, or both a key and value
8420		// are specified, set or extend (existing objects) with either:
8421		//
8422		//   1. An object of properties
8423		//   2. A key and value
8424		//
8425		this.set( owner, key, value );
8426
8427		// Since the "set" path can have two possible entry points
8428		// return the expected data based on which path was taken[*]
8429		return value !== undefined ? value : key;
8430	},
8431	remove: function( owner, key ) {
8432		var i,
8433			cache = owner[ this.expando ];
8434
8435		if ( cache === undefined ) {
8436			return;
8437		}
8438
8439		if ( key !== undefined ) {
8440
8441			// Support array or space separated string of keys
8442			if ( Array.isArray( key ) ) {
8443
8444				// If key is an array of keys...
8445				// We always set camelCase keys, so remove that.
8446				key = key.map( camelCase );
8447			} else {
8448				key = camelCase( key );
8449
8450				// If a key with the spaces exists, use it.
8451				// Otherwise, create an array by matching non-whitespace
8452				key = key in cache ?
8453					[ key ] :
8454					( key.match( rnothtmlwhite ) || [] );
8455			}
8456
8457			i = key.length;
8458
8459			while ( i-- ) {
8460				delete cache[ key[ i ] ];
8461			}
8462		}
8463
8464		// Remove the expando if there's no more data
8465		if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
8466
8467			// Support: Chrome <=35 - 45
8468			// Webkit & Blink performance suffers when deleting properties
8469			// from DOM nodes, so set to undefined instead
8470			// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
8471			if ( owner.nodeType ) {
8472				owner[ this.expando ] = undefined;
8473			} else {
8474				delete owner[ this.expando ];
8475			}
8476		}
8477	},
8478	hasData: function( owner ) {
8479		var cache = owner[ this.expando ];
8480		return cache !== undefined && !jQuery.isEmptyObject( cache );
8481	}
8482};
8483var dataPriv = new Data();
8484
8485var dataUser = new Data();
8486
8487
8488
8489//	Implementation Summary
8490//
8491//	1. Enforce API surface and semantic compatibility with 1.9.x branch
8492//	2. Improve the module's maintainability by reducing the storage
8493//		paths to a single mechanism.
8494//	3. Use the same single mechanism to support "private" and "user" data.
8495//	4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
8496//	5. Avoid exposing implementation details on user objects (eg. expando properties)
8497//	6. Provide a clear path for implementation upgrade to WeakMap in 2014
8498
8499var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
8500	rmultiDash = /[A-Z]/g;
8501
8502function getData( data ) {
8503	if ( data === "true" ) {
8504		return true;
8505	}
8506
8507	if ( data === "false" ) {
8508		return false;
8509	}
8510
8511	if ( data === "null" ) {
8512		return null;
8513	}
8514
8515	// Only convert to a number if it doesn't change the string
8516	if ( data === +data + "" ) {
8517		return +data;
8518	}
8519
8520	if ( rbrace.test( data ) ) {
8521		return JSON.parse( data );
8522	}
8523
8524	return data;
8525}
8526
8527function dataAttr( elem, key, data ) {
8528	var name;
8529
8530	// If nothing was found internally, try to fetch any
8531	// data from the HTML5 data-* attribute
8532	if ( data === undefined && elem.nodeType === 1 ) {
8533		name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
8534		data = elem.getAttribute( name );
8535
8536		if ( typeof data === "string" ) {
8537			try {
8538				data = getData( data );
8539			} catch ( e ) {}
8540
8541			// Make sure we set the data so it isn't changed later
8542			dataUser.set( elem, key, data );
8543		} else {
8544			data = undefined;
8545		}
8546	}
8547	return data;
8548}
8549
8550jQuery.extend( {
8551	hasData: function( elem ) {
8552		return dataUser.hasData( elem ) || dataPriv.hasData( elem );
8553	},
8554
8555	data: function( elem, name, data ) {
8556		return dataUser.access( elem, name, data );
8557	},
8558
8559	removeData: function( elem, name ) {
8560		dataUser.remove( elem, name );
8561	},
8562
8563	// TODO: Now that all calls to _data and _removeData have been replaced
8564	// with direct calls to dataPriv methods, these can be deprecated.
8565	_data: function( elem, name, data ) {
8566		return dataPriv.access( elem, name, data );
8567	},
8568
8569	_removeData: function( elem, name ) {
8570		dataPriv.remove( elem, name );
8571	}
8572} );
8573
8574jQuery.fn.extend( {
8575	data: function( key, value ) {
8576		var i, name, data,
8577			elem = this[ 0 ],
8578			attrs = elem && elem.attributes;
8579
8580		// Gets all values
8581		if ( key === undefined ) {
8582			if ( this.length ) {
8583				data = dataUser.get( elem );
8584
8585				if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
8586					i = attrs.length;
8587					while ( i-- ) {
8588
8589						// Support: IE 11 only
8590						// The attrs elements can be null (trac-14894)
8591						if ( attrs[ i ] ) {
8592							name = attrs[ i ].name;
8593							if ( name.indexOf( "data-" ) === 0 ) {
8594								name = camelCase( name.slice( 5 ) );
8595								dataAttr( elem, name, data[ name ] );
8596							}
8597						}
8598					}
8599					dataPriv.set( elem, "hasDataAttrs", true );
8600				}
8601			}
8602
8603			return data;
8604		}
8605
8606		// Sets multiple values
8607		if ( typeof key === "object" ) {
8608			return this.each( function() {
8609				dataUser.set( this, key );
8610			} );
8611		}
8612
8613		return access( this, function( value ) {
8614			var data;
8615
8616			// The calling jQuery object (element matches) is not empty
8617			// (and therefore has an element appears at this[ 0 ]) and the
8618			// `value` parameter was not undefined. An empty jQuery object
8619			// will result in `undefined` for elem = this[ 0 ] which will
8620			// throw an exception if an attempt to read a data cache is made.
8621			if ( elem && value === undefined ) {
8622
8623				// Attempt to get data from the cache
8624				// The key will always be camelCased in Data
8625				data = dataUser.get( elem, key );
8626				if ( data !== undefined ) {
8627					return data;
8628				}
8629
8630				// Attempt to "discover" the data in
8631				// HTML5 custom data-* attrs
8632				data = dataAttr( elem, key );
8633				if ( data !== undefined ) {
8634					return data;
8635				}
8636
8637				// We tried really hard, but the data doesn't exist.
8638				return;
8639			}
8640
8641			// Set the data...
8642			this.each( function() {
8643
8644				// We always store the camelCased key
8645				dataUser.set( this, key, value );
8646			} );
8647		}, null, value, arguments.length > 1, null, true );
8648	},
8649
8650	removeData: function( key ) {
8651		return this.each( function() {
8652			dataUser.remove( this, key );
8653		} );
8654	}
8655} );
8656
8657
8658jQuery.extend( {
8659	queue: function( elem, type, data ) {
8660		var queue;
8661
8662		if ( elem ) {
8663			type = ( type || "fx" ) + "queue";
8664			queue = dataPriv.get( elem, type );
8665
8666			// Speed up dequeue by getting out quickly if this is just a lookup
8667			if ( data ) {
8668				if ( !queue || Array.isArray( data ) ) {
8669					queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
8670				} else {
8671					queue.push( data );
8672				}
8673			}
8674			return queue || [];
8675		}
8676	},
8677
8678	dequeue: function( elem, type ) {
8679		type = type || "fx";
8680
8681		var queue = jQuery.queue( elem, type ),
8682			startLength = queue.length,
8683			fn = queue.shift(),
8684			hooks = jQuery._queueHooks( elem, type ),
8685			next = function() {
8686				jQuery.dequeue( elem, type );
8687			};
8688
8689		// If the fx queue is dequeued, always remove the progress sentinel
8690		if ( fn === "inprogress" ) {
8691			fn = queue.shift();
8692			startLength--;
8693		}
8694
8695		if ( fn ) {
8696
8697			// Add a progress sentinel to prevent the fx queue from being
8698			// automatically dequeued
8699			if ( type === "fx" ) {
8700				queue.unshift( "inprogress" );
8701			}
8702
8703			// Clear up the last queue stop function
8704			delete hooks.stop;
8705			fn.call( elem, next, hooks );
8706		}
8707
8708		if ( !startLength && hooks ) {
8709			hooks.empty.fire();
8710		}
8711	},
8712
8713	// Not public - generate a queueHooks object, or return the current one
8714	_queueHooks: function( elem, type ) {
8715		var key = type + "queueHooks";
8716		return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
8717			empty: jQuery.Callbacks( "once memory" ).add( function() {
8718				dataPriv.remove( elem, [ type + "queue", key ] );
8719			} )
8720		} );
8721	}
8722} );
8723
8724jQuery.fn.extend( {
8725	queue: function( type, data ) {
8726		var setter = 2;
8727
8728		if ( typeof type !== "string" ) {
8729			data = type;
8730			type = "fx";
8731			setter--;
8732		}
8733
8734		if ( arguments.length < setter ) {
8735			return jQuery.queue( this[ 0 ], type );
8736		}
8737
8738		return data === undefined ?
8739			this :
8740			this.each( function() {
8741				var queue = jQuery.queue( this, type, data );
8742
8743				// Ensure a hooks for this queue
8744				jQuery._queueHooks( this, type );
8745
8746				if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
8747					jQuery.dequeue( this, type );
8748				}
8749			} );
8750	},
8751	dequeue: function( type ) {
8752		return this.each( function() {
8753			jQuery.dequeue( this, type );
8754		} );
8755	},
8756	clearQueue: function( type ) {
8757		return this.queue( type || "fx", [] );
8758	},
8759
8760	// Get a promise resolved when queues of a certain type
8761	// are emptied (fx is the type by default)
8762	promise: function( type, obj ) {
8763		var tmp,
8764			count = 1,
8765			defer = jQuery.Deferred(),
8766			elements = this,
8767			i = this.length,
8768			resolve = function() {
8769				if ( !( --count ) ) {
8770					defer.resolveWith( elements, [ elements ] );
8771				}
8772			};
8773
8774		if ( typeof type !== "string" ) {
8775			obj = type;
8776			type = undefined;
8777		}
8778		type = type || "fx";
8779
8780		while ( i-- ) {
8781			tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
8782			if ( tmp && tmp.empty ) {
8783				count++;
8784				tmp.empty.add( resolve );
8785			}
8786		}
8787		resolve();
8788		return defer.promise( obj );
8789	}
8790} );
8791var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
8792
8793var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
8794
8795
8796var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
8797
8798var documentElement = document.documentElement;
8799
8800
8801
8802	var isAttached = function( elem ) {
8803			return jQuery.contains( elem.ownerDocument, elem );
8804		},
8805		composed = { composed: true };
8806
8807	// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only
8808	// Check attachment across shadow DOM boundaries when possible (gh-3504)
8809	// Support: iOS 10.0-10.2 only
8810	// Early iOS 10 versions support `attachShadow` but not `getRootNode`,
8811	// leading to errors. We need to check for `getRootNode`.
8812	if ( documentElement.getRootNode ) {
8813		isAttached = function( elem ) {
8814			return jQuery.contains( elem.ownerDocument, elem ) ||
8815				elem.getRootNode( composed ) === elem.ownerDocument;
8816		};
8817	}
8818var isHiddenWithinTree = function( elem, el ) {
8819
8820		// isHiddenWithinTree might be called from jQuery#filter function;
8821		// in that case, element will be second argument
8822		elem = el || elem;
8823
8824		// Inline style trumps all
8825		return elem.style.display === "none" ||
8826			elem.style.display === "" &&
8827
8828			// Otherwise, check computed style
8829			// Support: Firefox <=43 - 45
8830			// Disconnected elements can have computed display: none, so first confirm that elem is
8831			// in the document.
8832			isAttached( elem ) &&
8833
8834			jQuery.css( elem, "display" ) === "none";
8835	};
8836
8837
8838
8839function adjustCSS( elem, prop, valueParts, tween ) {
8840	var adjusted, scale,
8841		maxIterations = 20,
8842		currentValue = tween ?
8843			function() {
8844				return tween.cur();
8845			} :
8846			function() {
8847				return jQuery.css( elem, prop, "" );
8848			},
8849		initial = currentValue(),
8850		unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
8851
8852		// Starting value computation is required for potential unit mismatches
8853		initialInUnit = elem.nodeType &&
8854			( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
8855			rcssNum.exec( jQuery.css( elem, prop ) );
8856
8857	if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
8858
8859		// Support: Firefox <=54
8860		// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)
8861		initial = initial / 2;
8862
8863		// Trust units reported by jQuery.css
8864		unit = unit || initialInUnit[ 3 ];
8865
8866		// Iteratively approximate from a nonzero starting point
8867		initialInUnit = +initial || 1;
8868
8869		while ( maxIterations-- ) {
8870
8871			// Evaluate and update our best guess (doubling guesses that zero out).
8872			// Finish if the scale equals or crosses 1 (making the old*new product non-positive).
8873			jQuery.style( elem, prop, initialInUnit + unit );
8874			if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {
8875				maxIterations = 0;
8876			}
8877			initialInUnit = initialInUnit / scale;
8878
8879		}
8880
8881		initialInUnit = initialInUnit * 2;
8882		jQuery.style( elem, prop, initialInUnit + unit );
8883
8884		// Make sure we update the tween properties later on
8885		valueParts = valueParts || [];
8886	}
8887
8888	if ( valueParts ) {
8889		initialInUnit = +initialInUnit || +initial || 0;
8890
8891		// Apply relative offset (+=/-=) if specified
8892		adjusted = valueParts[ 1 ] ?
8893			initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
8894			+valueParts[ 2 ];
8895		if ( tween ) {
8896			tween.unit = unit;
8897			tween.start = initialInUnit;
8898			tween.end = adjusted;
8899		}
8900	}
8901	return adjusted;
8902}
8903
8904
8905var defaultDisplayMap = {};
8906
8907function getDefaultDisplay( elem ) {
8908	var temp,
8909		doc = elem.ownerDocument,
8910		nodeName = elem.nodeName,
8911		display = defaultDisplayMap[ nodeName ];
8912
8913	if ( display ) {
8914		return display;
8915	}
8916
8917	temp = doc.body.appendChild( doc.createElement( nodeName ) );
8918	display = jQuery.css( temp, "display" );
8919
8920	temp.parentNode.removeChild( temp );
8921
8922	if ( display === "none" ) {
8923		display = "block";
8924	}
8925	defaultDisplayMap[ nodeName ] = display;
8926
8927	return display;
8928}
8929
8930function showHide( elements, show ) {
8931	var display, elem,
8932		values = [],
8933		index = 0,
8934		length = elements.length;
8935
8936	// Determine new display value for elements that need to change
8937	for ( ; index < length; index++ ) {
8938		elem = elements[ index ];
8939		if ( !elem.style ) {
8940			continue;
8941		}
8942
8943		display = elem.style.display;
8944		if ( show ) {
8945
8946			// Since we force visibility upon cascade-hidden elements, an immediate (and slow)
8947			// check is required in this first loop unless we have a nonempty display value (either
8948			// inline or about-to-be-restored)
8949			if ( display === "none" ) {
8950				values[ index ] = dataPriv.get( elem, "display" ) || null;
8951				if ( !values[ index ] ) {
8952					elem.style.display = "";
8953				}
8954			}
8955			if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
8956				values[ index ] = getDefaultDisplay( elem );
8957			}
8958		} else {
8959			if ( display !== "none" ) {
8960				values[ index ] = "none";
8961
8962				// Remember what we're overwriting
8963				dataPriv.set( elem, "display", display );
8964			}
8965		}
8966	}
8967
8968	// Set the display of the elements in a second loop to avoid constant reflow
8969	for ( index = 0; index < length; index++ ) {
8970		if ( values[ index ] != null ) {
8971			elements[ index ].style.display = values[ index ];
8972		}
8973	}
8974
8975	return elements;
8976}
8977
8978jQuery.fn.extend( {
8979	show: function() {
8980		return showHide( this, true );
8981	},
8982	hide: function() {
8983		return showHide( this );
8984	},
8985	toggle: function( state ) {
8986		if ( typeof state === "boolean" ) {
8987			return state ? this.show() : this.hide();
8988		}
8989
8990		return this.each( function() {
8991			if ( isHiddenWithinTree( this ) ) {
8992				jQuery( this ).show();
8993			} else {
8994				jQuery( this ).hide();
8995			}
8996		} );
8997	}
8998} );
8999var rcheckableType = ( /^(?:checkbox|radio)$/i );
9000
9001var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i );
9002
9003var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
9004
9005
9006
9007( function() {
9008	var fragment = document.createDocumentFragment(),
9009		div = fragment.appendChild( document.createElement( "div" ) ),
9010		input = document.createElement( "input" );
9011
9012	// Support: Android 4.0 - 4.3 only
9013	// Check state lost if the name is set (trac-11217)
9014	// Support: Windows Web Apps (WWA)
9015	// `name` and `type` must use .setAttribute for WWA (trac-14901)
9016	input.setAttribute( "type", "radio" );
9017	input.setAttribute( "checked", "checked" );
9018	input.setAttribute( "name", "t" );
9019
9020	div.appendChild( input );
9021
9022	// Support: Android <=4.1 only
9023	// Older WebKit doesn't clone checked state correctly in fragments
9024	support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
9025
9026	// Support: IE <=11 only
9027	// Make sure textarea (and checkbox) defaultValue is properly cloned
9028	div.innerHTML = "<textarea>x</textarea>";
9029	support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
9030
9031	// Support: IE <=9 only
9032	// IE <=9 replaces <option> tags with their contents when inserted outside of
9033	// the select element.
9034	div.innerHTML = "<option></option>";
9035	support.option = !!div.lastChild;
9036} )();
9037
9038
9039// We have to close these tags to support XHTML (trac-13200)
9040var wrapMap = {
9041
9042	// XHTML parsers do not magically insert elements in the
9043	// same way that tag soup parsers do. So we cannot shorten
9044	// this by omitting <tbody> or other required elements.
9045	thead: [ 1, "<table>", "</table>" ],
9046	col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
9047	tr: [ 2, "<table><tbody>", "</tbody></table>" ],
9048	td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
9049
9050	_default: [ 0, "", "" ]
9051};
9052
9053wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
9054wrapMap.th = wrapMap.td;
9055
9056// Support: IE <=9 only
9057if ( !support.option ) {
9058	wrapMap.optgroup = wrapMap.option = [ 1, "<select multiple='multiple'>", "</select>" ];
9059}
9060
9061
9062function getAll( context, tag ) {
9063
9064	// Support: IE <=9 - 11 only
9065	// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)
9066	var ret;
9067
9068	if ( typeof context.getElementsByTagName !== "undefined" ) {
9069		ret = context.getElementsByTagName( tag || "*" );
9070
9071	} else if ( typeof context.querySelectorAll !== "undefined" ) {
9072		ret = context.querySelectorAll( tag || "*" );
9073
9074	} else {
9075		ret = [];
9076	}
9077
9078	if ( tag === undefined || tag && nodeName( context, tag ) ) {
9079		return jQuery.merge( [ context ], ret );
9080	}
9081
9082	return ret;
9083}
9084
9085
9086// Mark scripts as having already been evaluated
9087function setGlobalEval( elems, refElements ) {
9088	var i = 0,
9089		l = elems.length;
9090
9091	for ( ; i < l; i++ ) {
9092		dataPriv.set(
9093			elems[ i ],
9094			"globalEval",
9095			!refElements || dataPriv.get( refElements[ i ], "globalEval" )
9096		);
9097	}
9098}
9099
9100
9101var rhtml = /<|&#?\w+;/;
9102
9103function buildFragment( elems, context, scripts, selection, ignored ) {
9104	var elem, tmp, tag, wrap, attached, j,
9105		fragment = context.createDocumentFragment(),
9106		nodes = [],
9107		i = 0,
9108		l = elems.length;
9109
9110	for ( ; i < l; i++ ) {
9111		elem = elems[ i ];
9112
9113		if ( elem || elem === 0 ) {
9114
9115			// Add nodes directly
9116			if ( toType( elem ) === "object" ) {
9117
9118				// Support: Android <=4.0 only, PhantomJS 1 only
9119				// push.apply(_, arraylike) throws on ancient WebKit
9120				jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
9121
9122			// Convert non-html into a text node
9123			} else if ( !rhtml.test( elem ) ) {
9124				nodes.push( context.createTextNode( elem ) );
9125
9126			// Convert html into DOM nodes
9127			} else {
9128				tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
9129
9130				// Deserialize a standard representation
9131				tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
9132				wrap = wrapMap[ tag ] || wrapMap._default;
9133				tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
9134
9135				// Descend through wrappers to the right content
9136				j = wrap[ 0 ];
9137				while ( j-- ) {
9138					tmp = tmp.lastChild;
9139				}
9140
9141				// Support: Android <=4.0 only, PhantomJS 1 only
9142				// push.apply(_, arraylike) throws on ancient WebKit
9143				jQuery.merge( nodes, tmp.childNodes );
9144
9145				// Remember the top-level container
9146				tmp = fragment.firstChild;
9147
9148				// Ensure the created nodes are orphaned (trac-12392)
9149				tmp.textContent = "";
9150			}
9151		}
9152	}
9153
9154	// Remove wrapper from fragment
9155	fragment.textContent = "";
9156
9157	i = 0;
9158	while ( ( elem = nodes[ i++ ] ) ) {
9159
9160		// Skip elements already in the context collection (trac-4087)
9161		if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
9162			if ( ignored ) {
9163				ignored.push( elem );
9164			}
9165			continue;
9166		}
9167
9168		attached = isAttached( elem );
9169
9170		// Append to fragment
9171		tmp = getAll( fragment.appendChild( elem ), "script" );
9172
9173		// Preserve script evaluation history
9174		if ( attached ) {
9175			setGlobalEval( tmp );
9176		}
9177
9178		// Capture executables
9179		if ( scripts ) {
9180			j = 0;
9181			while ( ( elem = tmp[ j++ ] ) ) {
9182				if ( rscriptType.test( elem.type || "" ) ) {
9183					scripts.push( elem );
9184				}
9185			}
9186		}
9187	}
9188
9189	return fragment;
9190}
9191
9192
9193var rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
9194
9195function returnTrue() {
9196	return true;
9197}
9198
9199function returnFalse() {
9200	return false;
9201}
9202
9203function on( elem, types, selector, data, fn, one ) {
9204	var origFn, type;
9205
9206	// Types can be a map of types/handlers
9207	if ( typeof types === "object" ) {
9208
9209		// ( types-Object, selector, data )
9210		if ( typeof selector !== "string" ) {
9211
9212			// ( types-Object, data )
9213			data = data || selector;
9214			selector = undefined;
9215		}
9216		for ( type in types ) {
9217			on( elem, type, selector, data, types[ type ], one );
9218		}
9219		return elem;
9220	}
9221
9222	if ( data == null && fn == null ) {
9223
9224		// ( types, fn )
9225		fn = selector;
9226		data = selector = undefined;
9227	} else if ( fn == null ) {
9228		if ( typeof selector === "string" ) {
9229
9230			// ( types, selector, fn )
9231			fn = data;
9232			data = undefined;
9233		} else {
9234
9235			// ( types, data, fn )
9236			fn = data;
9237			data = selector;
9238			selector = undefined;
9239		}
9240	}
9241	if ( fn === false ) {
9242		fn = returnFalse;
9243	} else if ( !fn ) {
9244		return elem;
9245	}
9246
9247	if ( one === 1 ) {
9248		origFn = fn;
9249		fn = function( event ) {
9250
9251			// Can use an empty set, since event contains the info
9252			jQuery().off( event );
9253			return origFn.apply( this, arguments );
9254		};
9255
9256		// Use same guid so caller can remove using origFn
9257		fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
9258	}
9259	return elem.each( function() {
9260		jQuery.event.add( this, types, fn, data, selector );
9261	} );
9262}
9263
9264/*
9265 * Helper functions for managing events -- not part of the public interface.
9266 * Props to Dean Edwards' addEvent library for many of the ideas.
9267 */
9268jQuery.event = {
9269
9270	global: {},
9271
9272	add: function( elem, types, handler, data, selector ) {
9273
9274		var handleObjIn, eventHandle, tmp,
9275			events, t, handleObj,
9276			special, handlers, type, namespaces, origType,
9277			elemData = dataPriv.get( elem );
9278
9279		// Only attach events to objects that accept data
9280		if ( !acceptData( elem ) ) {
9281			return;
9282		}
9283
9284		// Caller can pass in an object of custom data in lieu of the handler
9285		if ( handler.handler ) {
9286			handleObjIn = handler;
9287			handler = handleObjIn.handler;
9288			selector = handleObjIn.selector;
9289		}
9290
9291		// Ensure that invalid selectors throw exceptions at attach time
9292		// Evaluate against documentElement in case elem is a non-element node (e.g., document)
9293		if ( selector ) {
9294			jQuery.find.matchesSelector( documentElement, selector );
9295		}
9296
9297		// Make sure that the handler has a unique ID, used to find/remove it later
9298		if ( !handler.guid ) {
9299			handler.guid = jQuery.guid++;
9300		}
9301
9302		// Init the element's event structure and main handler, if this is the first
9303		if ( !( events = elemData.events ) ) {
9304			events = elemData.events = Object.create( null );
9305		}
9306		if ( !( eventHandle = elemData.handle ) ) {
9307			eventHandle = elemData.handle = function( e ) {
9308
9309				// Discard the second event of a jQuery.event.trigger() and
9310				// when an event is called after a page has unloaded
9311				return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
9312					jQuery.event.dispatch.apply( elem, arguments ) : undefined;
9313			};
9314		}
9315
9316		// Handle multiple events separated by a space
9317		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
9318		t = types.length;
9319		while ( t-- ) {
9320			tmp = rtypenamespace.exec( types[ t ] ) || [];
9321			type = origType = tmp[ 1 ];
9322			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
9323
9324			// There *must* be a type, no attaching namespace-only handlers
9325			if ( !type ) {
9326				continue;
9327			}
9328
9329			// If event changes its type, use the special event handlers for the changed type
9330			special = jQuery.event.special[ type ] || {};
9331
9332			// If selector defined, determine special event api type, otherwise given type
9333			type = ( selector ? special.delegateType : special.bindType ) || type;
9334
9335			// Update special based on newly reset type
9336			special = jQuery.event.special[ type ] || {};
9337
9338			// handleObj is passed to all event handlers
9339			handleObj = jQuery.extend( {
9340				type: type,
9341				origType: origType,
9342				data: data,
9343				handler: handler,
9344				guid: handler.guid,
9345				selector: selector,
9346				needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
9347				namespace: namespaces.join( "." )
9348			}, handleObjIn );
9349
9350			// Init the event handler queue if we're the first
9351			if ( !( handlers = events[ type ] ) ) {
9352				handlers = events[ type ] = [];
9353				handlers.delegateCount = 0;
9354
9355				// Only use addEventListener if the special events handler returns false
9356				if ( !special.setup ||
9357					special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
9358
9359					if ( elem.addEventListener ) {
9360						elem.addEventListener( type, eventHandle );
9361					}
9362				}
9363			}
9364
9365			if ( special.add ) {
9366				special.add.call( elem, handleObj );
9367
9368				if ( !handleObj.handler.guid ) {
9369					handleObj.handler.guid = handler.guid;
9370				}
9371			}
9372
9373			// Add to the element's handler list, delegates in front
9374			if ( selector ) {
9375				handlers.splice( handlers.delegateCount++, 0, handleObj );
9376			} else {
9377				handlers.push( handleObj );
9378			}
9379
9380			// Keep track of which events have ever been used, for event optimization
9381			jQuery.event.global[ type ] = true;
9382		}
9383
9384	},
9385
9386	// Detach an event or set of events from an element
9387	remove: function( elem, types, handler, selector, mappedTypes ) {
9388
9389		var j, origCount, tmp,
9390			events, t, handleObj,
9391			special, handlers, type, namespaces, origType,
9392			elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
9393
9394		if ( !elemData || !( events = elemData.events ) ) {
9395			return;
9396		}
9397
9398		// Once for each type.namespace in types; type may be omitted
9399		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
9400		t = types.length;
9401		while ( t-- ) {
9402			tmp = rtypenamespace.exec( types[ t ] ) || [];
9403			type = origType = tmp[ 1 ];
9404			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
9405
9406			// Unbind all events (on this namespace, if provided) for the element
9407			if ( !type ) {
9408				for ( type in events ) {
9409					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
9410				}
9411				continue;
9412			}
9413
9414			special = jQuery.event.special[ type ] || {};
9415			type = ( selector ? special.delegateType : special.bindType ) || type;
9416			handlers = events[ type ] || [];
9417			tmp = tmp[ 2 ] &&
9418				new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
9419
9420			// Remove matching events
9421			origCount = j = handlers.length;
9422			while ( j-- ) {
9423				handleObj = handlers[ j ];
9424
9425				if ( ( mappedTypes || origType === handleObj.origType ) &&
9426					( !handler || handler.guid === handleObj.guid ) &&
9427					( !tmp || tmp.test( handleObj.namespace ) ) &&
9428					( !selector || selector === handleObj.selector ||
9429						selector === "**" && handleObj.selector ) ) {
9430					handlers.splice( j, 1 );
9431
9432					if ( handleObj.selector ) {
9433						handlers.delegateCount--;
9434					}
9435					if ( special.remove ) {
9436						special.remove.call( elem, handleObj );
9437					}
9438				}
9439			}
9440
9441			// Remove generic event handler if we removed something and no more handlers exist
9442			// (avoids potential for endless recursion during removal of special event handlers)
9443			if ( origCount && !handlers.length ) {
9444				if ( !special.teardown ||
9445					special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
9446
9447					jQuery.removeEvent( elem, type, elemData.handle );
9448				}
9449
9450				delete events[ type ];
9451			}
9452		}
9453
9454		// Remove data and the expando if it's no longer used
9455		if ( jQuery.isEmptyObject( events ) ) {
9456			dataPriv.remove( elem, "handle events" );
9457		}
9458	},
9459
9460	dispatch: function( nativeEvent ) {
9461
9462		var i, j, ret, matched, handleObj, handlerQueue,
9463			args = new Array( arguments.length ),
9464
9465			// Make a writable jQuery.Event from the native event object
9466			event = jQuery.event.fix( nativeEvent ),
9467
9468			handlers = (
9469				dataPriv.get( this, "events" ) || Object.create( null )
9470			)[ event.type ] || [],
9471			special = jQuery.event.special[ event.type ] || {};
9472
9473		// Use the fix-ed jQuery.Event rather than the (read-only) native event
9474		args[ 0 ] = event;
9475
9476		for ( i = 1; i < arguments.length; i++ ) {
9477			args[ i ] = arguments[ i ];
9478		}
9479
9480		event.delegateTarget = this;
9481
9482		// Call the preDispatch hook for the mapped type, and let it bail if desired
9483		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
9484			return;
9485		}
9486
9487		// Determine handlers
9488		handlerQueue = jQuery.event.handlers.call( this, event, handlers );
9489
9490		// Run delegates first; they may want to stop propagation beneath us
9491		i = 0;
9492		while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
9493			event.currentTarget = matched.elem;
9494
9495			j = 0;
9496			while ( ( handleObj = matched.handlers[ j++ ] ) &&
9497				!event.isImmediatePropagationStopped() ) {
9498
9499				// If the event is namespaced, then each handler is only invoked if it is
9500				// specially universal or its namespaces are a superset of the event's.
9501				if ( !event.rnamespace || handleObj.namespace === false ||
9502					event.rnamespace.test( handleObj.namespace ) ) {
9503
9504					event.handleObj = handleObj;
9505					event.data = handleObj.data;
9506
9507					ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
9508						handleObj.handler ).apply( matched.elem, args );
9509
9510					if ( ret !== undefined ) {
9511						if ( ( event.result = ret ) === false ) {
9512							event.preventDefault();
9513							event.stopPropagation();
9514						}
9515					}
9516				}
9517			}
9518		}
9519
9520		// Call the postDispatch hook for the mapped type
9521		if ( special.postDispatch ) {
9522			special.postDispatch.call( this, event );
9523		}
9524
9525		return event.result;
9526	},
9527
9528	handlers: function( event, handlers ) {
9529		var i, handleObj, sel, matchedHandlers, matchedSelectors,
9530			handlerQueue = [],
9531			delegateCount = handlers.delegateCount,
9532			cur = event.target;
9533
9534		// Find delegate handlers
9535		if ( delegateCount &&
9536
9537			// Support: IE <=9
9538			// Black-hole SVG <use> instance trees (trac-13180)
9539			cur.nodeType &&
9540
9541			// Support: Firefox <=42
9542			// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
9543			// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
9544			// Support: IE 11 only
9545			// ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
9546			!( event.type === "click" && event.button >= 1 ) ) {
9547
9548			for ( ; cur !== this; cur = cur.parentNode || this ) {
9549
9550				// Don't check non-elements (trac-13208)
9551				// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)
9552				if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
9553					matchedHandlers = [];
9554					matchedSelectors = {};
9555					for ( i = 0; i < delegateCount; i++ ) {
9556						handleObj = handlers[ i ];
9557
9558						// Don't conflict with Object.prototype properties (trac-13203)
9559						sel = handleObj.selector + " ";
9560
9561						if ( matchedSelectors[ sel ] === undefined ) {
9562							matchedSelectors[ sel ] = handleObj.needsContext ?
9563								jQuery( sel, this ).index( cur ) > -1 :
9564								jQuery.find( sel, this, null, [ cur ] ).length;
9565						}
9566						if ( matchedSelectors[ sel ] ) {
9567							matchedHandlers.push( handleObj );
9568						}
9569					}
9570					if ( matchedHandlers.length ) {
9571						handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
9572					}
9573				}
9574			}
9575		}
9576
9577		// Add the remaining (directly-bound) handlers
9578		cur = this;
9579		if ( delegateCount < handlers.length ) {
9580			handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
9581		}
9582
9583		return handlerQueue;
9584	},
9585
9586	addProp: function( name, hook ) {
9587		Object.defineProperty( jQuery.Event.prototype, name, {
9588			enumerable: true,
9589			configurable: true,
9590
9591			get: isFunction( hook ) ?
9592				function() {
9593					if ( this.originalEvent ) {
9594						return hook( this.originalEvent );
9595					}
9596				} :
9597				function() {
9598					if ( this.originalEvent ) {
9599						return this.originalEvent[ name ];
9600					}
9601				},
9602
9603			set: function( value ) {
9604				Object.defineProperty( this, name, {
9605					enumerable: true,
9606					configurable: true,
9607					writable: true,
9608					value: value
9609				} );
9610			}
9611		} );
9612	},
9613
9614	fix: function( originalEvent ) {
9615		return originalEvent[ jQuery.expando ] ?
9616			originalEvent :
9617			new jQuery.Event( originalEvent );
9618	},
9619
9620	special: {
9621		load: {
9622
9623			// Prevent triggered image.load events from bubbling to window.load
9624			noBubble: true
9625		},
9626		click: {
9627
9628			// Utilize native event to ensure correct state for checkable inputs
9629			setup: function( data ) {
9630
9631				// For mutual compressibility with _default, replace `this` access with a local var.
9632				// `|| data` is dead code meant only to preserve the variable through minification.
9633				var el = this || data;
9634
9635				// Claim the first handler
9636				if ( rcheckableType.test( el.type ) &&
9637					el.click && nodeName( el, "input" ) ) {
9638
9639					// dataPriv.set( el, "click", ... )
9640					leverageNative( el, "click", true );
9641				}
9642
9643				// Return false to allow normal processing in the caller
9644				return false;
9645			},
9646			trigger: function( data ) {
9647
9648				// For mutual compressibility with _default, replace `this` access with a local var.
9649				// `|| data` is dead code meant only to preserve the variable through minification.
9650				var el = this || data;
9651
9652				// Force setup before triggering a click
9653				if ( rcheckableType.test( el.type ) &&
9654					el.click && nodeName( el, "input" ) ) {
9655
9656					leverageNative( el, "click" );
9657				}
9658
9659				// Return non-false to allow normal event-path propagation
9660				return true;
9661			},
9662
9663			// For cross-browser consistency, suppress native .click() on links
9664			// Also prevent it if we're currently inside a leveraged native-event stack
9665			_default: function( event ) {
9666				var target = event.target;
9667				return rcheckableType.test( target.type ) &&
9668					target.click && nodeName( target, "input" ) &&
9669					dataPriv.get( target, "click" ) ||
9670					nodeName( target, "a" );
9671			}
9672		},
9673
9674		beforeunload: {
9675			postDispatch: function( event ) {
9676
9677				// Support: Firefox 20+
9678				// Firefox doesn't alert if the returnValue field is not set.
9679				if ( event.result !== undefined && event.originalEvent ) {
9680					event.originalEvent.returnValue = event.result;
9681				}
9682			}
9683		}
9684	}
9685};
9686
9687// Ensure the presence of an event listener that handles manually-triggered
9688// synthetic events by interrupting progress until reinvoked in response to
9689// *native* events that it fires directly, ensuring that state changes have
9690// already occurred before other listeners are invoked.
9691function leverageNative( el, type, isSetup ) {
9692
9693	// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add
9694	if ( !isSetup ) {
9695		if ( dataPriv.get( el, type ) === undefined ) {
9696			jQuery.event.add( el, type, returnTrue );
9697		}
9698		return;
9699	}
9700
9701	// Register the controller as a special universal handler for all event namespaces
9702	dataPriv.set( el, type, false );
9703	jQuery.event.add( el, type, {
9704		namespace: false,
9705		handler: function( event ) {
9706			var result,
9707				saved = dataPriv.get( this, type );
9708
9709			if ( ( event.isTrigger & 1 ) && this[ type ] ) {
9710
9711				// Interrupt processing of the outer synthetic .trigger()ed event
9712				if ( !saved ) {
9713
9714					// Store arguments for use when handling the inner native event
9715					// There will always be at least one argument (an event object), so this array
9716					// will not be confused with a leftover capture object.
9717					saved = slice.call( arguments );
9718					dataPriv.set( this, type, saved );
9719
9720					// Trigger the native event and capture its result
9721					this[ type ]();
9722					result = dataPriv.get( this, type );
9723					dataPriv.set( this, type, false );
9724
9725					if ( saved !== result ) {
9726
9727						// Cancel the outer synthetic event
9728						event.stopImmediatePropagation();
9729						event.preventDefault();
9730
9731						return result;
9732					}
9733
9734				// If this is an inner synthetic event for an event with a bubbling surrogate
9735				// (focus or blur), assume that the surrogate already propagated from triggering
9736				// the native event and prevent that from happening again here.
9737				// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the
9738				// bubbling surrogate propagates *after* the non-bubbling base), but that seems
9739				// less bad than duplication.
9740				} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {
9741					event.stopPropagation();
9742				}
9743
9744			// If this is a native event triggered above, everything is now in order
9745			// Fire an inner synthetic event with the original arguments
9746			} else if ( saved ) {
9747
9748				// ...and capture the result
9749				dataPriv.set( this, type, jQuery.event.trigger(
9750					saved[ 0 ],
9751					saved.slice( 1 ),
9752					this
9753				) );
9754
9755				// Abort handling of the native event by all jQuery handlers while allowing
9756				// native handlers on the same element to run. On target, this is achieved
9757				// by stopping immediate propagation just on the jQuery event. However,
9758				// the native event is re-wrapped by a jQuery one on each level of the
9759				// propagation so the only way to stop it for jQuery is to stop it for
9760				// everyone via native `stopPropagation()`. This is not a problem for
9761				// focus/blur which don't bubble, but it does also stop click on checkboxes
9762				// and radios. We accept this limitation.
9763				event.stopPropagation();
9764				event.isImmediatePropagationStopped = returnTrue;
9765			}
9766		}
9767	} );
9768}
9769
9770jQuery.removeEvent = function( elem, type, handle ) {
9771
9772	// This "if" is needed for plain objects
9773	if ( elem.removeEventListener ) {
9774		elem.removeEventListener( type, handle );
9775	}
9776};
9777
9778jQuery.Event = function( src, props ) {
9779
9780	// Allow instantiation without the 'new' keyword
9781	if ( !( this instanceof jQuery.Event ) ) {
9782		return new jQuery.Event( src, props );
9783	}
9784
9785	// Event object
9786	if ( src && src.type ) {
9787		this.originalEvent = src;
9788		this.type = src.type;
9789
9790		// Events bubbling up the document may have been marked as prevented
9791		// by a handler lower down the tree; reflect the correct value.
9792		this.isDefaultPrevented = src.defaultPrevented ||
9793				src.defaultPrevented === undefined &&
9794
9795				// Support: Android <=2.3 only
9796				src.returnValue === false ?
9797			returnTrue :
9798			returnFalse;
9799
9800		// Create target properties
9801		// Support: Safari <=6 - 7 only
9802		// Target should not be a text node (trac-504, trac-13143)
9803		this.target = ( src.target && src.target.nodeType === 3 ) ?
9804			src.target.parentNode :
9805			src.target;
9806
9807		this.currentTarget = src.currentTarget;
9808		this.relatedTarget = src.relatedTarget;
9809
9810	// Event type
9811	} else {
9812		this.type = src;
9813	}
9814
9815	// Put explicitly provided properties onto the event object
9816	if ( props ) {
9817		jQuery.extend( this, props );
9818	}
9819
9820	// Create a timestamp if incoming event doesn't have one
9821	this.timeStamp = src && src.timeStamp || Date.now();
9822
9823	// Mark it as fixed
9824	this[ jQuery.expando ] = true;
9825};
9826
9827// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
9828// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
9829jQuery.Event.prototype = {
9830	constructor: jQuery.Event,
9831	isDefaultPrevented: returnFalse,
9832	isPropagationStopped: returnFalse,
9833	isImmediatePropagationStopped: returnFalse,
9834	isSimulated: false,
9835
9836	preventDefault: function() {
9837		var e = this.originalEvent;
9838
9839		this.isDefaultPrevented = returnTrue;
9840
9841		if ( e && !this.isSimulated ) {
9842			e.preventDefault();
9843		}
9844	},
9845	stopPropagation: function() {
9846		var e = this.originalEvent;
9847
9848		this.isPropagationStopped = returnTrue;
9849
9850		if ( e && !this.isSimulated ) {
9851			e.stopPropagation();
9852		}
9853	},
9854	stopImmediatePropagation: function() {
9855		var e = this.originalEvent;
9856
9857		this.isImmediatePropagationStopped = returnTrue;
9858
9859		if ( e && !this.isSimulated ) {
9860			e.stopImmediatePropagation();
9861		}
9862
9863		this.stopPropagation();
9864	}
9865};
9866
9867// Includes all common event props including KeyEvent and MouseEvent specific props
9868jQuery.each( {
9869	altKey: true,
9870	bubbles: true,
9871	cancelable: true,
9872	changedTouches: true,
9873	ctrlKey: true,
9874	detail: true,
9875	eventPhase: true,
9876	metaKey: true,
9877	pageX: true,
9878	pageY: true,
9879	shiftKey: true,
9880	view: true,
9881	"char": true,
9882	code: true,
9883	charCode: true,
9884	key: true,
9885	keyCode: true,
9886	button: true,
9887	buttons: true,
9888	clientX: true,
9889	clientY: true,
9890	offsetX: true,
9891	offsetY: true,
9892	pointerId: true,
9893	pointerType: true,
9894	screenX: true,
9895	screenY: true,
9896	targetTouches: true,
9897	toElement: true,
9898	touches: true,
9899	which: true
9900}, jQuery.event.addProp );
9901
9902jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) {
9903
9904	function focusMappedHandler( nativeEvent ) {
9905		if ( document.documentMode ) {
9906
9907			// Support: IE 11+
9908			// Attach a single focusin/focusout handler on the document while someone wants
9909			// focus/blur. This is because the former are synchronous in IE while the latter
9910			// are async. In other browsers, all those handlers are invoked synchronously.
9911
9912			// `handle` from private data would already wrap the event, but we need
9913			// to change the `type` here.
9914			var handle = dataPriv.get( this, "handle" ),
9915				event = jQuery.event.fix( nativeEvent );
9916			event.type = nativeEvent.type === "focusin" ? "focus" : "blur";
9917			event.isSimulated = true;
9918
9919			// First, handle focusin/focusout
9920			handle( nativeEvent );
9921
9922			// ...then, handle focus/blur
9923			//
9924			// focus/blur don't bubble while focusin/focusout do; simulate the former by only
9925			// invoking the handler at the lower level.
9926			if ( event.target === event.currentTarget ) {
9927
9928				// The setup part calls `leverageNative`, which, in turn, calls
9929				// `jQuery.event.add`, so event handle will already have been set
9930				// by this point.
9931				handle( event );
9932			}
9933		} else {
9934
9935			// For non-IE browsers, attach a single capturing handler on the document
9936			// while someone wants focusin/focusout.
9937			jQuery.event.simulate( delegateType, nativeEvent.target,
9938				jQuery.event.fix( nativeEvent ) );
9939		}
9940	}
9941
9942	jQuery.event.special[ type ] = {
9943
9944		// Utilize native event if possible so blur/focus sequence is correct
9945		setup: function() {
9946
9947			var attaches;
9948
9949			// Claim the first handler
9950			// dataPriv.set( this, "focus", ... )
9951			// dataPriv.set( this, "blur", ... )
9952			leverageNative( this, type, true );
9953
9954			if ( document.documentMode ) {
9955
9956				// Support: IE 9 - 11+
9957				// We use the same native handler for focusin & focus (and focusout & blur)
9958				// so we need to coordinate setup & teardown parts between those events.
9959				// Use `delegateType` as the key as `type` is already used by `leverageNative`.
9960				attaches = dataPriv.get( this, delegateType );
9961				if ( !attaches ) {
9962					this.addEventListener( delegateType, focusMappedHandler );
9963				}
9964				dataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );
9965			} else {
9966
9967				// Return false to allow normal processing in the caller
9968				return false;
9969			}
9970		},
9971		trigger: function() {
9972
9973			// Force setup before trigger
9974			leverageNative( this, type );
9975
9976			// Return non-false to allow normal event-path propagation
9977			return true;
9978		},
9979
9980		teardown: function() {
9981			var attaches;
9982
9983			if ( document.documentMode ) {
9984				attaches = dataPriv.get( this, delegateType ) - 1;
9985				if ( !attaches ) {
9986					this.removeEventListener( delegateType, focusMappedHandler );
9987					dataPriv.remove( this, delegateType );
9988				} else {
9989					dataPriv.set( this, delegateType, attaches );
9990				}
9991			} else {
9992
9993				// Return false to indicate standard teardown should be applied
9994				return false;
9995			}
9996		},
9997
9998		// Suppress native focus or blur if we're currently inside
9999		// a leveraged native-event stack
10000		_default: function( event ) {
10001			return dataPriv.get( event.target, type );
10002		},
10003
10004		delegateType: delegateType
10005	};
10006
10007	// Support: Firefox <=44
10008	// Firefox doesn't have focus(in | out) events
10009	// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
10010	//
10011	// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
10012	// focus(in | out) events fire after focus & blur events,
10013	// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
10014	// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
10015	//
10016	// Support: IE 9 - 11+
10017	// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,
10018	// attach a single handler for both events in IE.
10019	jQuery.event.special[ delegateType ] = {
10020		setup: function() {
10021
10022			// Handle: regular nodes (via `this.ownerDocument`), window
10023			// (via `this.document`) & document (via `this`).
10024			var doc = this.ownerDocument || this.document || this,
10025				dataHolder = document.documentMode ? this : doc,
10026				attaches = dataPriv.get( dataHolder, delegateType );
10027
10028			// Support: IE 9 - 11+
10029			// We use the same native handler for focusin & focus (and focusout & blur)
10030			// so we need to coordinate setup & teardown parts between those events.
10031			// Use `delegateType` as the key as `type` is already used by `leverageNative`.
10032			if ( !attaches ) {
10033				if ( document.documentMode ) {
10034					this.addEventListener( delegateType, focusMappedHandler );
10035				} else {
10036					doc.addEventListener( type, focusMappedHandler, true );
10037				}
10038			}
10039			dataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );
10040		},
10041		teardown: function() {
10042			var doc = this.ownerDocument || this.document || this,
10043				dataHolder = document.documentMode ? this : doc,
10044				attaches = dataPriv.get( dataHolder, delegateType ) - 1;
10045
10046			if ( !attaches ) {
10047				if ( document.documentMode ) {
10048					this.removeEventListener( delegateType, focusMappedHandler );
10049				} else {
10050					doc.removeEventListener( type, focusMappedHandler, true );
10051				}
10052				dataPriv.remove( dataHolder, delegateType );
10053			} else {
10054				dataPriv.set( dataHolder, delegateType, attaches );
10055			}
10056		}
10057	};
10058} );
10059
10060// Create mouseenter/leave events using mouseover/out and event-time checks
10061// so that event delegation works in jQuery.
10062// Do the same for pointerenter/pointerleave and pointerover/pointerout
10063//
10064// Support: Safari 7 only
10065// Safari sends mouseenter too often; see:
10066// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
10067// for the description of the bug (it existed in older Chrome versions as well).
10068jQuery.each( {
10069	mouseenter: "mouseover",
10070	mouseleave: "mouseout",
10071	pointerenter: "pointerover",
10072	pointerleave: "pointerout"
10073}, function( orig, fix ) {
10074	jQuery.event.special[ orig ] = {
10075		delegateType: fix,
10076		bindType: fix,
10077
10078		handle: function( event ) {
10079			var ret,
10080				target = this,
10081				related = event.relatedTarget,
10082				handleObj = event.handleObj;
10083
10084			// For mouseenter/leave call the handler if related is outside the target.
10085			// NB: No relatedTarget if the mouse left/entered the browser window
10086			if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
10087				event.type = handleObj.origType;
10088				ret = handleObj.handler.apply( this, arguments );
10089				event.type = fix;
10090			}
10091			return ret;
10092		}
10093	};
10094} );
10095
10096jQuery.fn.extend( {
10097
10098	on: function( types, selector, data, fn ) {
10099		return on( this, types, selector, data, fn );
10100	},
10101	one: function( types, selector, data, fn ) {
10102		return on( this, types, selector, data, fn, 1 );
10103	},
10104	off: function( types, selector, fn ) {
10105		var handleObj, type;
10106		if ( types && types.preventDefault && types.handleObj ) {
10107
10108			// ( event )  dispatched jQuery.Event
10109			handleObj = types.handleObj;
10110			jQuery( types.delegateTarget ).off(
10111				handleObj.namespace ?
10112					handleObj.origType + "." + handleObj.namespace :
10113					handleObj.origType,
10114				handleObj.selector,
10115				handleObj.handler
10116			);
10117			return this;
10118		}
10119		if ( typeof types === "object" ) {
10120
10121			// ( types-object [, selector] )
10122			for ( type in types ) {
10123				this.off( type, selector, types[ type ] );
10124			}
10125			return this;
10126		}
10127		if ( selector === false || typeof selector === "function" ) {
10128
10129			// ( types [, fn] )
10130			fn = selector;
10131			selector = undefined;
10132		}
10133		if ( fn === false ) {
10134			fn = returnFalse;
10135		}
10136		return this.each( function() {
10137			jQuery.event.remove( this, types, fn, selector );
10138		} );
10139	}
10140} );
10141
10142
10143var
10144
10145	// Support: IE <=10 - 11, Edge 12 - 13 only
10146	// In IE/Edge using regex groups here causes severe slowdowns.
10147	// See https://connect.microsoft.com/IE/feedback/details/1736512/
10148	rnoInnerhtml = /<script|<style|<link/i,
10149
10150	// checked="checked" or checked
10151	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
10152
10153	rcleanScript = /^\s*<!\[CDATA\[|\]\]>\s*$/g;
10154
10155// Prefer a tbody over its parent table for containing new rows
10156function manipulationTarget( elem, content ) {
10157	if ( nodeName( elem, "table" ) &&
10158		nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
10159
10160		return jQuery( elem ).children( "tbody" )[ 0 ] || elem;
10161	}
10162
10163	return elem;
10164}
10165
10166// Replace/restore the type attribute of script elements for safe DOM manipulation
10167function disableScript( elem ) {
10168	elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
10169	return elem;
10170}
10171function restoreScript( elem ) {
10172	if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) {
10173		elem.type = elem.type.slice( 5 );
10174	} else {
10175		elem.removeAttribute( "type" );
10176	}
10177
10178	return elem;
10179}
10180
10181function cloneCopyEvent( src, dest ) {
10182	var i, l, type, pdataOld, udataOld, udataCur, events;
10183
10184	if ( dest.nodeType !== 1 ) {
10185		return;
10186	}
10187
10188	// 1. Copy private data: events, handlers, etc.
10189	if ( dataPriv.hasData( src ) ) {
10190		pdataOld = dataPriv.get( src );
10191		events = pdataOld.events;
10192
10193		if ( events ) {
10194			dataPriv.remove( dest, "handle events" );
10195
10196			for ( type in events ) {
10197				for ( i = 0, l = events[ type ].length; i < l; i++ ) {
10198					jQuery.event.add( dest, type, events[ type ][ i ] );
10199				}
10200			}
10201		}
10202	}
10203
10204	// 2. Copy user data
10205	if ( dataUser.hasData( src ) ) {
10206		udataOld = dataUser.access( src );
10207		udataCur = jQuery.extend( {}, udataOld );
10208
10209		dataUser.set( dest, udataCur );
10210	}
10211}
10212
10213// Fix IE bugs, see support tests
10214function fixInput( src, dest ) {
10215	var nodeName = dest.nodeName.toLowerCase();
10216
10217	// Fails to persist the checked state of a cloned checkbox or radio button.
10218	if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
10219		dest.checked = src.checked;
10220
10221	// Fails to return the selected option to the default selected state when cloning options
10222	} else if ( nodeName === "input" || nodeName === "textarea" ) {
10223		dest.defaultValue = src.defaultValue;
10224	}
10225}
10226
10227function domManip( collection, args, callback, ignored ) {
10228
10229	// Flatten any nested arrays
10230	args = flat( args );
10231
10232	var fragment, first, scripts, hasScripts, node, doc,
10233		i = 0,
10234		l = collection.length,
10235		iNoClone = l - 1,
10236		value = args[ 0 ],
10237		valueIsFunction = isFunction( value );
10238
10239	// We can't cloneNode fragments that contain checked, in WebKit
10240	if ( valueIsFunction ||
10241			( l > 1 && typeof value === "string" &&
10242				!support.checkClone && rchecked.test( value ) ) ) {
10243		return collection.each( function( index ) {
10244			var self = collection.eq( index );
10245			if ( valueIsFunction ) {
10246				args[ 0 ] = value.call( this, index, self.html() );
10247			}
10248			domManip( self, args, callback, ignored );
10249		} );
10250	}
10251
10252	if ( l ) {
10253		fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
10254		first = fragment.firstChild;
10255
10256		if ( fragment.childNodes.length === 1 ) {
10257			fragment = first;
10258		}
10259
10260		// Require either new content or an interest in ignored elements to invoke the callback
10261		if ( first || ignored ) {
10262			scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
10263			hasScripts = scripts.length;
10264
10265			// Use the original fragment for the last item
10266			// instead of the first because it can end up
10267			// being emptied incorrectly in certain situations (trac-8070).
10268			for ( ; i < l; i++ ) {
10269				node = fragment;
10270
10271				if ( i !== iNoClone ) {
10272					node = jQuery.clone( node, true, true );
10273
10274					// Keep references to cloned scripts for later restoration
10275					if ( hasScripts ) {
10276
10277						// Support: Android <=4.0 only, PhantomJS 1 only
10278						// push.apply(_, arraylike) throws on ancient WebKit
10279						jQuery.merge( scripts, getAll( node, "script" ) );
10280					}
10281				}
10282
10283				callback.call( collection[ i ], node, i );
10284			}
10285
10286			if ( hasScripts ) {
10287				doc = scripts[ scripts.length - 1 ].ownerDocument;
10288
10289				// Re-enable scripts
10290				jQuery.map( scripts, restoreScript );
10291
10292				// Evaluate executable scripts on first document insertion
10293				for ( i = 0; i < hasScripts; i++ ) {
10294					node = scripts[ i ];
10295					if ( rscriptType.test( node.type || "" ) &&
10296						!dataPriv.access( node, "globalEval" ) &&
10297						jQuery.contains( doc, node ) ) {
10298
10299						if ( node.src && ( node.type || "" ).toLowerCase()  !== "module" ) {
10300
10301							// Optional AJAX dependency, but won't run scripts if not present
10302							if ( jQuery._evalUrl && !node.noModule ) {
10303								jQuery._evalUrl( node.src, {
10304									nonce: node.nonce || node.getAttribute( "nonce" )
10305								}, doc );
10306							}
10307						} else {
10308
10309							// Unwrap a CDATA section containing script contents. This shouldn't be
10310							// needed as in XML documents they're already not visible when
10311							// inspecting element contents and in HTML documents they have no
10312							// meaning but we're preserving that logic for backwards compatibility.
10313							// This will be removed completely in 4.0. See gh-4904.
10314							DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc );
10315						}
10316					}
10317				}
10318			}
10319		}
10320	}
10321
10322	return collection;
10323}
10324
10325function remove( elem, selector, keepData ) {
10326	var node,
10327		nodes = selector ? jQuery.filter( selector, elem ) : elem,
10328		i = 0;
10329
10330	for ( ; ( node = nodes[ i ] ) != null; i++ ) {
10331		if ( !keepData && node.nodeType === 1 ) {
10332			jQuery.cleanData( getAll( node ) );
10333		}
10334
10335		if ( node.parentNode ) {
10336			if ( keepData && isAttached( node ) ) {
10337				setGlobalEval( getAll( node, "script" ) );
10338			}
10339			node.parentNode.removeChild( node );
10340		}
10341	}
10342
10343	return elem;
10344}
10345
10346jQuery.extend( {
10347	htmlPrefilter: function( html ) {
10348		return html;
10349	},
10350
10351	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
10352		var i, l, srcElements, destElements,
10353			clone = elem.cloneNode( true ),
10354			inPage = isAttached( elem );
10355
10356		// Fix IE cloning issues
10357		if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
10358				!jQuery.isXMLDoc( elem ) ) {
10359
10360			// We eschew jQuery#find here for performance reasons:
10361			// https://jsperf.com/getall-vs-sizzle/2
10362			destElements = getAll( clone );
10363			srcElements = getAll( elem );
10364
10365			for ( i = 0, l = srcElements.length; i < l; i++ ) {
10366				fixInput( srcElements[ i ], destElements[ i ] );
10367			}
10368		}
10369
10370		// Copy the events from the original to the clone
10371		if ( dataAndEvents ) {
10372			if ( deepDataAndEvents ) {
10373				srcElements = srcElements || getAll( elem );
10374				destElements = destElements || getAll( clone );
10375
10376				for ( i = 0, l = srcElements.length; i < l; i++ ) {
10377					cloneCopyEvent( srcElements[ i ], destElements[ i ] );
10378				}
10379			} else {
10380				cloneCopyEvent( elem, clone );
10381			}
10382		}
10383
10384		// Preserve script evaluation history
10385		destElements = getAll( clone, "script" );
10386		if ( destElements.length > 0 ) {
10387			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
10388		}
10389
10390		// Return the cloned set
10391		return clone;
10392	},
10393
10394	cleanData: function( elems ) {
10395		var data, elem, type,
10396			special = jQuery.event.special,
10397			i = 0;
10398
10399		for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
10400			if ( acceptData( elem ) ) {
10401				if ( ( data = elem[ dataPriv.expando ] ) ) {
10402					if ( data.events ) {
10403						for ( type in data.events ) {
10404							if ( special[ type ] ) {
10405								jQuery.event.remove( elem, type );
10406
10407							// This is a shortcut to avoid jQuery.event.remove's overhead
10408							} else {
10409								jQuery.removeEvent( elem, type, data.handle );
10410							}
10411						}
10412					}
10413
10414					// Support: Chrome <=35 - 45+
10415					// Assign undefined instead of using delete, see Data#remove
10416					elem[ dataPriv.expando ] = undefined;
10417				}
10418				if ( elem[ dataUser.expando ] ) {
10419
10420					// Support: Chrome <=35 - 45+
10421					// Assign undefined instead of using delete, see Data#remove
10422					elem[ dataUser.expando ] = undefined;
10423				}
10424			}
10425		}
10426	}
10427} );
10428
10429jQuery.fn.extend( {
10430	detach: function( selector ) {
10431		return remove( this, selector, true );
10432	},
10433
10434	remove: function( selector ) {
10435		return remove( this, selector );
10436	},
10437
10438	text: function( value ) {
10439		return access( this, function( value ) {
10440			return value === undefined ?
10441				jQuery.text( this ) :
10442				this.empty().each( function() {
10443					if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
10444						this.textContent = value;
10445					}
10446				} );
10447		}, null, value, arguments.length );
10448	},
10449
10450	append: function() {
10451		return domManip( this, arguments, function( elem ) {
10452			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
10453				var target = manipulationTarget( this, elem );
10454				target.appendChild( elem );
10455			}
10456		} );
10457	},
10458
10459	prepend: function() {
10460		return domManip( this, arguments, function( elem ) {
10461			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
10462				var target = manipulationTarget( this, elem );
10463				target.insertBefore( elem, target.firstChild );
10464			}
10465		} );
10466	},
10467
10468	before: function() {
10469		return domManip( this, arguments, function( elem ) {
10470			if ( this.parentNode ) {
10471				this.parentNode.insertBefore( elem, this );
10472			}
10473		} );
10474	},
10475
10476	after: function() {
10477		return domManip( this, arguments, function( elem ) {
10478			if ( this.parentNode ) {
10479				this.parentNode.insertBefore( elem, this.nextSibling );
10480			}
10481		} );
10482	},
10483
10484	empty: function() {
10485		var elem,
10486			i = 0;
10487
10488		for ( ; ( elem = this[ i ] ) != null; i++ ) {
10489			if ( elem.nodeType === 1 ) {
10490
10491				// Prevent memory leaks
10492				jQuery.cleanData( getAll( elem, false ) );
10493
10494				// Remove any remaining nodes
10495				elem.textContent = "";
10496			}
10497		}
10498
10499		return this;
10500	},
10501
10502	clone: function( dataAndEvents, deepDataAndEvents ) {
10503		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
10504		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
10505
10506		return this.map( function() {
10507			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
10508		} );
10509	},
10510
10511	html: function( value ) {
10512		return access( this, function( value ) {
10513			var elem = this[ 0 ] || {},
10514				i = 0,
10515				l = this.length;
10516
10517			if ( value === undefined && elem.nodeType === 1 ) {
10518				return elem.innerHTML;
10519			}
10520
10521			// See if we can take a shortcut and just use innerHTML
10522			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
10523				!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
10524
10525				value = jQuery.htmlPrefilter( value );
10526
10527				try {
10528					for ( ; i < l; i++ ) {
10529						elem = this[ i ] || {};
10530
10531						// Remove element nodes and prevent memory leaks
10532						if ( elem.nodeType === 1 ) {
10533							jQuery.cleanData( getAll( elem, false ) );
10534							elem.innerHTML = value;
10535						}
10536					}
10537
10538					elem = 0;
10539
10540				// If using innerHTML throws an exception, use the fallback method
10541				} catch ( e ) {}
10542			}
10543
10544			if ( elem ) {
10545				this.empty().append( value );
10546			}
10547		}, null, value, arguments.length );
10548	},
10549
10550	replaceWith: function() {
10551		var ignored = [];
10552
10553		// Make the changes, replacing each non-ignored context element with the new content
10554		return domManip( this, arguments, function( elem ) {
10555			var parent = this.parentNode;
10556
10557			if ( jQuery.inArray( this, ignored ) < 0 ) {
10558				jQuery.cleanData( getAll( this ) );
10559				if ( parent ) {
10560					parent.replaceChild( elem, this );
10561				}
10562			}
10563
10564		// Force callback invocation
10565		}, ignored );
10566	}
10567} );
10568
10569jQuery.each( {
10570	appendTo: "append",
10571	prependTo: "prepend",
10572	insertBefore: "before",
10573	insertAfter: "after",
10574	replaceAll: "replaceWith"
10575}, function( name, original ) {
10576	jQuery.fn[ name ] = function( selector ) {
10577		var elems,
10578			ret = [],
10579			insert = jQuery( selector ),
10580			last = insert.length - 1,
10581			i = 0;
10582
10583		for ( ; i <= last; i++ ) {
10584			elems = i === last ? this : this.clone( true );
10585			jQuery( insert[ i ] )[ original ]( elems );
10586
10587			// Support: Android <=4.0 only, PhantomJS 1 only
10588			// .get() because push.apply(_, arraylike) throws on ancient WebKit
10589			push.apply( ret, elems.get() );
10590		}
10591
10592		return this.pushStack( ret );
10593	};
10594} );
10595var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
10596
10597var rcustomProp = /^--/;
10598
10599
10600var getStyles = function( elem ) {
10601
10602		// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)
10603		// IE throws on elements created in popups
10604		// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
10605		var view = elem.ownerDocument.defaultView;
10606
10607		if ( !view || !view.opener ) {
10608			view = window;
10609		}
10610
10611		return view.getComputedStyle( elem );
10612	};
10613
10614var swap = function( elem, options, callback ) {
10615	var ret, name,
10616		old = {};
10617
10618	// Remember the old values, and insert the new ones
10619	for ( name in options ) {
10620		old[ name ] = elem.style[ name ];
10621		elem.style[ name ] = options[ name ];
10622	}
10623
10624	ret = callback.call( elem );
10625
10626	// Revert the old values
10627	for ( name in options ) {
10628		elem.style[ name ] = old[ name ];
10629	}
10630
10631	return ret;
10632};
10633
10634
10635var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
10636
10637
10638
10639( function() {
10640
10641	// Executing both pixelPosition & boxSizingReliable tests require only one layout
10642	// so they're executed at the same time to save the second computation.
10643	function computeStyleTests() {
10644
10645		// This is a singleton, we need to execute it only once
10646		if ( !div ) {
10647			return;
10648		}
10649
10650		container.style.cssText = "position:absolute;left:-11111px;width:60px;" +
10651			"margin-top:1px;padding:0;border:0";
10652		div.style.cssText =
10653			"position:relative;display:block;box-sizing:border-box;overflow:scroll;" +
10654			"margin:auto;border:1px;padding:1px;" +
10655			"width:60%;top:1%";
10656		documentElement.appendChild( container ).appendChild( div );
10657
10658		var divStyle = window.getComputedStyle( div );
10659		pixelPositionVal = divStyle.top !== "1%";
10660
10661		// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
10662		reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;
10663
10664		// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3
10665		// Some styles come back with percentage values, even though they shouldn't
10666		div.style.right = "60%";
10667		pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;
10668
10669		// Support: IE 9 - 11 only
10670		// Detect misreporting of content dimensions for box-sizing:border-box elements
10671		boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;
10672
10673		// Support: IE 9 only
10674		// Detect overflow:scroll screwiness (gh-3699)
10675		// Support: Chrome <=64
10676		// Don't get tricked when zoom affects offsetWidth (gh-4029)
10677		div.style.position = "absolute";
10678		scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;
10679
10680		documentElement.removeChild( container );
10681
10682		// Nullify the div so it wouldn't be stored in the memory and
10683		// it will also be a sign that checks already performed
10684		div = null;
10685	}
10686
10687	function roundPixelMeasures( measure ) {
10688		return Math.round( parseFloat( measure ) );
10689	}
10690
10691	var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,
10692		reliableTrDimensionsVal, reliableMarginLeftVal,
10693		container = document.createElement( "div" ),
10694		div = document.createElement( "div" );
10695
10696	// Finish early in limited (non-browser) environments
10697	if ( !div.style ) {
10698		return;
10699	}
10700
10701	// Support: IE <=9 - 11 only
10702	// Style of cloned element affects source element cloned (trac-8908)
10703	div.style.backgroundClip = "content-box";
10704	div.cloneNode( true ).style.backgroundClip = "";
10705	support.clearCloneStyle = div.style.backgroundClip === "content-box";
10706
10707	jQuery.extend( support, {
10708		boxSizingReliable: function() {
10709			computeStyleTests();
10710			return boxSizingReliableVal;
10711		},
10712		pixelBoxStyles: function() {
10713			computeStyleTests();
10714			return pixelBoxStylesVal;
10715		},
10716		pixelPosition: function() {
10717			computeStyleTests();
10718			return pixelPositionVal;
10719		},
10720		reliableMarginLeft: function() {
10721			computeStyleTests();
10722			return reliableMarginLeftVal;
10723		},
10724		scrollboxSize: function() {
10725			computeStyleTests();
10726			return scrollboxSizeVal;
10727		},
10728
10729		// Support: IE 9 - 11+, Edge 15 - 18+
10730		// IE/Edge misreport `getComputedStyle` of table rows with width/height
10731		// set in CSS while `offset*` properties report correct values.
10732		// Behavior in IE 9 is more subtle than in newer versions & it passes
10733		// some versions of this test; make sure not to make it pass there!
10734		//
10735		// Support: Firefox 70+
10736		// Only Firefox includes border widths
10737		// in computed dimensions. (gh-4529)
10738		reliableTrDimensions: function() {
10739			var table, tr, trChild, trStyle;
10740			if ( reliableTrDimensionsVal == null ) {
10741				table = document.createElement( "table" );
10742				tr = document.createElement( "tr" );
10743				trChild = document.createElement( "div" );
10744
10745				table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate";
10746				tr.style.cssText = "box-sizing:content-box;border:1px solid";
10747
10748				// Support: Chrome 86+
10749				// Height set through cssText does not get applied.
10750				// Computed height then comes back as 0.
10751				tr.style.height = "1px";
10752				trChild.style.height = "9px";
10753
10754				// Support: Android 8 Chrome 86+
10755				// In our bodyBackground.html iframe,
10756				// display for all div elements is set to "inline",
10757				// which causes a problem only in Android 8 Chrome 86.
10758				// Ensuring the div is `display: block`
10759				// gets around this issue.
10760				trChild.style.display = "block";
10761
10762				documentElement
10763					.appendChild( table )
10764					.appendChild( tr )
10765					.appendChild( trChild );
10766
10767				trStyle = window.getComputedStyle( tr );
10768				reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +
10769					parseInt( trStyle.borderTopWidth, 10 ) +
10770					parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;
10771
10772				documentElement.removeChild( table );
10773			}
10774			return reliableTrDimensionsVal;
10775		}
10776	} );
10777} )();
10778
10779
10780function curCSS( elem, name, computed ) {
10781	var width, minWidth, maxWidth, ret,
10782		isCustomProp = rcustomProp.test( name ),
10783
10784		// Support: Firefox 51+
10785		// Retrieving style before computed somehow
10786		// fixes an issue with getting wrong values
10787		// on detached elements
10788		style = elem.style;
10789
10790	computed = computed || getStyles( elem );
10791
10792	// getPropertyValue is needed for:
10793	//   .css('filter') (IE 9 only, trac-12537)
10794	//   .css('--customProperty) (gh-3144)
10795	if ( computed ) {
10796
10797		// Support: IE <=9 - 11+
10798		// IE only supports `"float"` in `getPropertyValue`; in computed styles
10799		// it's only available as `"cssFloat"`. We no longer modify properties
10800		// sent to `.css()` apart from camelCasing, so we need to check both.
10801		// Normally, this would create difference in behavior: if
10802		// `getPropertyValue` returns an empty string, the value returned
10803		// by `.css()` would be `undefined`. This is usually the case for
10804		// disconnected elements. However, in IE even disconnected elements
10805		// with no styles return `"none"` for `getPropertyValue( "float" )`
10806		ret = computed.getPropertyValue( name ) || computed[ name ];
10807
10808		if ( isCustomProp && ret ) {
10809
10810			// Support: Firefox 105+, Chrome <=105+
10811			// Spec requires trimming whitespace for custom properties (gh-4926).
10812			// Firefox only trims leading whitespace. Chrome just collapses
10813			// both leading & trailing whitespace to a single space.
10814			//
10815			// Fall back to `undefined` if empty string returned.
10816			// This collapses a missing definition with property defined
10817			// and set to an empty string but there's no standard API
10818			// allowing us to differentiate them without a performance penalty
10819			// and returning `undefined` aligns with older jQuery.
10820			//
10821			// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED
10822			// as whitespace while CSS does not, but this is not a problem
10823			// because CSS preprocessing replaces them with U+000A LINE FEED
10824			// (which *is* CSS whitespace)
10825			// https://www.w3.org/TR/css-syntax-3/#input-preprocessing
10826			ret = ret.replace( rtrimCSS, "$1" ) || undefined;
10827		}
10828
10829		if ( ret === "" && !isAttached( elem ) ) {
10830			ret = jQuery.style( elem, name );
10831		}
10832
10833		// A tribute to the "awesome hack by Dean Edwards"
10834		// Android Browser returns percentage for some values,
10835		// but width seems to be reliably pixels.
10836		// This is against the CSSOM draft spec:
10837		// https://drafts.csswg.org/cssom/#resolved-values
10838		if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {
10839
10840			// Remember the original values
10841			width = style.width;
10842			minWidth = style.minWidth;
10843			maxWidth = style.maxWidth;
10844
10845			// Put in the new values to get a computed value out
10846			style.minWidth = style.maxWidth = style.width = ret;
10847			ret = computed.width;
10848
10849			// Revert the changed values
10850			style.width = width;
10851			style.minWidth = minWidth;
10852			style.maxWidth = maxWidth;
10853		}
10854	}
10855
10856	return ret !== undefined ?
10857
10858		// Support: IE <=9 - 11 only
10859		// IE returns zIndex value as an integer.
10860		ret + "" :
10861		ret;
10862}
10863
10864
10865function addGetHookIf( conditionFn, hookFn ) {
10866
10867	// Define the hook, we'll check on the first run if it's really needed.
10868	return {
10869		get: function() {
10870			if ( conditionFn() ) {
10871
10872				// Hook not needed (or it's not possible to use it due
10873				// to missing dependency), remove it.
10874				delete this.get;
10875				return;
10876			}
10877
10878			// Hook needed; redefine it so that the support test is not executed again.
10879			return ( this.get = hookFn ).apply( this, arguments );
10880		}
10881	};
10882}
10883
10884
10885var cssPrefixes = [ "Webkit", "Moz", "ms" ],
10886	emptyStyle = document.createElement( "div" ).style,
10887	vendorProps = {};
10888
10889// Return a vendor-prefixed property or undefined
10890function vendorPropName( name ) {
10891
10892	// Check for vendor prefixed names
10893	var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
10894		i = cssPrefixes.length;
10895
10896	while ( i-- ) {
10897		name = cssPrefixes[ i ] + capName;
10898		if ( name in emptyStyle ) {
10899			return name;
10900		}
10901	}
10902}
10903
10904// Return a potentially-mapped jQuery.cssProps or vendor prefixed property
10905function finalPropName( name ) {
10906	var final = jQuery.cssProps[ name ] || vendorProps[ name ];
10907
10908	if ( final ) {
10909		return final;
10910	}
10911	if ( name in emptyStyle ) {
10912		return name;
10913	}
10914	return vendorProps[ name ] = vendorPropName( name ) || name;
10915}
10916
10917
10918var
10919
10920	// Swappable if display is none or starts with table
10921	// except "table", "table-cell", or "table-caption"
10922	// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
10923	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
10924	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
10925	cssNormalTransform = {
10926		letterSpacing: "0",
10927		fontWeight: "400"
10928	};
10929
10930function setPositiveNumber( _elem, value, subtract ) {
10931
10932	// Any relative (+/-) values have already been
10933	// normalized at this point
10934	var matches = rcssNum.exec( value );
10935	return matches ?
10936
10937		// Guard against undefined "subtract", e.g., when used as in cssHooks
10938		Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
10939		value;
10940}
10941
10942function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {
10943	var i = dimension === "width" ? 1 : 0,
10944		extra = 0,
10945		delta = 0,
10946		marginDelta = 0;
10947
10948	// Adjustment may not be necessary
10949	if ( box === ( isBorderBox ? "border" : "content" ) ) {
10950		return 0;
10951	}
10952
10953	for ( ; i < 4; i += 2 ) {
10954
10955		// Both box models exclude margin
10956		// Count margin delta separately to only add it after scroll gutter adjustment.
10957		// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).
10958		if ( box === "margin" ) {
10959			marginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );
10960		}
10961
10962		// If we get here with a content-box, we're seeking "padding" or "border" or "margin"
10963		if ( !isBorderBox ) {
10964
10965			// Add padding
10966			delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
10967
10968			// For "border" or "margin", add border
10969			if ( box !== "padding" ) {
10970				delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
10971
10972			// But still keep track of it otherwise
10973			} else {
10974				extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
10975			}
10976
10977		// If we get here with a border-box (content + padding + border), we're seeking "content" or
10978		// "padding" or "margin"
10979		} else {
10980
10981			// For "content", subtract padding
10982			if ( box === "content" ) {
10983				delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
10984			}
10985
10986			// For "content" or "padding", subtract border
10987			if ( box !== "margin" ) {
10988				delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
10989			}
10990		}
10991	}
10992
10993	// Account for positive content-box scroll gutter when requested by providing computedVal
10994	if ( !isBorderBox && computedVal >= 0 ) {
10995
10996		// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border
10997		// Assuming integer scroll gutter, subtract the rest and round down
10998		delta += Math.max( 0, Math.ceil(
10999			elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
11000			computedVal -
11001			delta -
11002			extra -
11003			0.5
11004
11005		// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter
11006		// Use an explicit zero to avoid NaN (gh-3964)
11007		) ) || 0;
11008	}
11009
11010	return delta + marginDelta;
11011}
11012
11013function getWidthOrHeight( elem, dimension, extra ) {
11014
11015	// Start with computed style
11016	var styles = getStyles( elem ),
11017
11018		// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).
11019		// Fake content-box until we know it's needed to know the true value.
11020		boxSizingNeeded = !support.boxSizingReliable() || extra,
11021		isBorderBox = boxSizingNeeded &&
11022			jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
11023		valueIsBorderBox = isBorderBox,
11024
11025		val = curCSS( elem, dimension, styles ),
11026		offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );
11027
11028	// Support: Firefox <=54
11029	// Return a confounding non-pixel value or feign ignorance, as appropriate.
11030	if ( rnumnonpx.test( val ) ) {
11031		if ( !extra ) {
11032			return val;
11033		}
11034		val = "auto";
11035	}
11036
11037
11038	// Support: IE 9 - 11 only
11039	// Use offsetWidth/offsetHeight for when box sizing is unreliable.
11040	// In those cases, the computed value can be trusted to be border-box.
11041	if ( ( !support.boxSizingReliable() && isBorderBox ||
11042
11043		// Support: IE 10 - 11+, Edge 15 - 18+
11044		// IE/Edge misreport `getComputedStyle` of table rows with width/height
11045		// set in CSS while `offset*` properties report correct values.
11046		// Interestingly, in some cases IE 9 doesn't suffer from this issue.
11047		!support.reliableTrDimensions() && nodeName( elem, "tr" ) ||
11048
11049		// Fall back to offsetWidth/offsetHeight when value is "auto"
11050		// This happens for inline elements with no explicit setting (gh-3571)
11051		val === "auto" ||
11052
11053		// Support: Android <=4.1 - 4.3 only
11054		// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
11055		!parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) &&
11056
11057		// Make sure the element is visible & connected
11058		elem.getClientRects().length ) {
11059
11060		isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
11061
11062		// Where available, offsetWidth/offsetHeight approximate border box dimensions.
11063		// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the
11064		// retrieved value as a content box dimension.
11065		valueIsBorderBox = offsetProp in elem;
11066		if ( valueIsBorderBox ) {
11067			val = elem[ offsetProp ];
11068		}
11069	}
11070
11071	// Normalize "" and auto
11072	val = parseFloat( val ) || 0;
11073
11074	// Adjust for the element's box model
11075	return ( val +
11076		boxModelAdjustment(
11077			elem,
11078			dimension,
11079			extra || ( isBorderBox ? "border" : "content" ),
11080			valueIsBorderBox,
11081			styles,
11082
11083			// Provide the current computed size to request scroll gutter calculation (gh-3589)
11084			val
11085		)
11086	) + "px";
11087}
11088
11089jQuery.extend( {
11090
11091	// Add in style property hooks for overriding the default
11092	// behavior of getting and setting a style property
11093	cssHooks: {
11094		opacity: {
11095			get: function( elem, computed ) {
11096				if ( computed ) {
11097
11098					// We should always get a number back from opacity
11099					var ret = curCSS( elem, "opacity" );
11100					return ret === "" ? "1" : ret;
11101				}
11102			}
11103		}
11104	},
11105
11106	// Don't automatically add "px" to these possibly-unitless properties
11107	cssNumber: {
11108		animationIterationCount: true,
11109		aspectRatio: true,
11110		borderImageSlice: true,
11111		columnCount: true,
11112		flexGrow: true,
11113		flexShrink: true,
11114		fontWeight: true,
11115		gridArea: true,
11116		gridColumn: true,
11117		gridColumnEnd: true,
11118		gridColumnStart: true,
11119		gridRow: true,
11120		gridRowEnd: true,
11121		gridRowStart: true,
11122		lineHeight: true,
11123		opacity: true,
11124		order: true,
11125		orphans: true,
11126		scale: true,
11127		widows: true,
11128		zIndex: true,
11129		zoom: true,
11130
11131		// SVG-related
11132		fillOpacity: true,
11133		floodOpacity: true,
11134		stopOpacity: true,
11135		strokeMiterlimit: true,
11136		strokeOpacity: true
11137	},
11138
11139	// Add in properties whose names you wish to fix before
11140	// setting or getting the value
11141	cssProps: {},
11142
11143	// Get and set the style property on a DOM Node
11144	style: function( elem, name, value, extra ) {
11145
11146		// Don't set styles on text and comment nodes
11147		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
11148			return;
11149		}
11150
11151		// Make sure that we're working with the right name
11152		var ret, type, hooks,
11153			origName = camelCase( name ),
11154			isCustomProp = rcustomProp.test( name ),
11155			style = elem.style;
11156
11157		// Make sure that we're working with the right name. We don't
11158		// want to query the value if it is a CSS custom property
11159		// since they are user-defined.
11160		if ( !isCustomProp ) {
11161			name = finalPropName( origName );
11162		}
11163
11164		// Gets hook for the prefixed version, then unprefixed version
11165		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
11166
11167		// Check if we're setting a value
11168		if ( value !== undefined ) {
11169			type = typeof value;
11170
11171			// Convert "+=" or "-=" to relative numbers (trac-7345)
11172			if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
11173				value = adjustCSS( elem, name, ret );
11174
11175				// Fixes bug trac-9237
11176				type = "number";
11177			}
11178
11179			// Make sure that null and NaN values aren't set (trac-7116)
11180			if ( value == null || value !== value ) {
11181				return;
11182			}
11183
11184			// If a number was passed in, add the unit (except for certain CSS properties)
11185			// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append
11186			// "px" to a few hardcoded values.
11187			if ( type === "number" && !isCustomProp ) {
11188				value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
11189			}
11190
11191			// background-* props affect original clone's values
11192			if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
11193				style[ name ] = "inherit";
11194			}
11195
11196			// If a hook was provided, use that value, otherwise just set the specified value
11197			if ( !hooks || !( "set" in hooks ) ||
11198				( value = hooks.set( elem, value, extra ) ) !== undefined ) {
11199
11200				if ( isCustomProp ) {
11201					style.setProperty( name, value );
11202				} else {
11203					style[ name ] = value;
11204				}
11205			}
11206
11207		} else {
11208
11209			// If a hook was provided get the non-computed value from there
11210			if ( hooks && "get" in hooks &&
11211				( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
11212
11213				return ret;
11214			}
11215
11216			// Otherwise just get the value from the style object
11217			return style[ name ];
11218		}
11219	},
11220
11221	css: function( elem, name, extra, styles ) {
11222		var val, num, hooks,
11223			origName = camelCase( name ),
11224			isCustomProp = rcustomProp.test( name );
11225
11226		// Make sure that we're working with the right name. We don't
11227		// want to modify the value if it is a CSS custom property
11228		// since they are user-defined.
11229		if ( !isCustomProp ) {
11230			name = finalPropName( origName );
11231		}
11232
11233		// Try prefixed name followed by the unprefixed name
11234		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
11235
11236		// If a hook was provided get the computed value from there
11237		if ( hooks && "get" in hooks ) {
11238			val = hooks.get( elem, true, extra );
11239		}
11240
11241		// Otherwise, if a way to get the computed value exists, use that
11242		if ( val === undefined ) {
11243			val = curCSS( elem, name, styles );
11244		}
11245
11246		// Convert "normal" to computed value
11247		if ( val === "normal" && name in cssNormalTransform ) {
11248			val = cssNormalTransform[ name ];
11249		}
11250
11251		// Make numeric if forced or a qualifier was provided and val looks numeric
11252		if ( extra === "" || extra ) {
11253			num = parseFloat( val );
11254			return extra === true || isFinite( num ) ? num || 0 : val;
11255		}
11256
11257		return val;
11258	}
11259} );
11260
11261jQuery.each( [ "height", "width" ], function( _i, dimension ) {
11262	jQuery.cssHooks[ dimension ] = {
11263		get: function( elem, computed, extra ) {
11264			if ( computed ) {
11265
11266				// Certain elements can have dimension info if we invisibly show them
11267				// but it must have a current display style that would benefit
11268				return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
11269
11270					// Support: Safari 8+
11271					// Table columns in Safari have non-zero offsetWidth & zero
11272					// getBoundingClientRect().width unless display is changed.
11273					// Support: IE <=11 only
11274					// Running getBoundingClientRect on a disconnected node
11275					// in IE throws an error.
11276					( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
11277					swap( elem, cssShow, function() {
11278						return getWidthOrHeight( elem, dimension, extra );
11279					} ) :
11280					getWidthOrHeight( elem, dimension, extra );
11281			}
11282		},
11283
11284		set: function( elem, value, extra ) {
11285			var matches,
11286				styles = getStyles( elem ),
11287
11288				// Only read styles.position if the test has a chance to fail
11289				// to avoid forcing a reflow.
11290				scrollboxSizeBuggy = !support.scrollboxSize() &&
11291					styles.position === "absolute",
11292
11293				// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)
11294				boxSizingNeeded = scrollboxSizeBuggy || extra,
11295				isBorderBox = boxSizingNeeded &&
11296					jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
11297				subtract = extra ?
11298					boxModelAdjustment(
11299						elem,
11300						dimension,
11301						extra,
11302						isBorderBox,
11303						styles
11304					) :
11305					0;
11306
11307			// Account for unreliable border-box dimensions by comparing offset* to computed and
11308			// faking a content-box to get border and padding (gh-3699)
11309			if ( isBorderBox && scrollboxSizeBuggy ) {
11310				subtract -= Math.ceil(
11311					elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
11312					parseFloat( styles[ dimension ] ) -
11313					boxModelAdjustment( elem, dimension, "border", false, styles ) -
11314					0.5
11315				);
11316			}
11317
11318			// Convert to pixels if value adjustment is needed
11319			if ( subtract && ( matches = rcssNum.exec( value ) ) &&
11320				( matches[ 3 ] || "px" ) !== "px" ) {
11321
11322				elem.style[ dimension ] = value;
11323				value = jQuery.css( elem, dimension );
11324			}
11325
11326			return setPositiveNumber( elem, value, subtract );
11327		}
11328	};
11329} );
11330
11331jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
11332	function( elem, computed ) {
11333		if ( computed ) {
11334			return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
11335				elem.getBoundingClientRect().left -
11336					swap( elem, { marginLeft: 0 }, function() {
11337						return elem.getBoundingClientRect().left;
11338					} )
11339			) + "px";
11340		}
11341	}
11342);
11343
11344// These hooks are used by animate to expand properties
11345jQuery.each( {
11346	margin: "",
11347	padding: "",
11348	border: "Width"
11349}, function( prefix, suffix ) {
11350	jQuery.cssHooks[ prefix + suffix ] = {
11351		expand: function( value ) {
11352			var i = 0,
11353				expanded = {},
11354
11355				// Assumes a single number if not a string
11356				parts = typeof value === "string" ? value.split( " " ) : [ value ];
11357
11358			for ( ; i < 4; i++ ) {
11359				expanded[ prefix + cssExpand[ i ] + suffix ] =
11360					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
11361			}
11362
11363			return expanded;
11364		}
11365	};
11366
11367	if ( prefix !== "margin" ) {
11368		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
11369	}
11370} );
11371
11372jQuery.fn.extend( {
11373	css: function( name, value ) {
11374		return access( this, function( elem, name, value ) {
11375			var styles, len,
11376				map = {},
11377				i = 0;
11378
11379			if ( Array.isArray( name ) ) {
11380				styles = getStyles( elem );
11381				len = name.length;
11382
11383				for ( ; i < len; i++ ) {
11384					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
11385				}
11386
11387				return map;
11388			}
11389
11390			return value !== undefined ?
11391				jQuery.style( elem, name, value ) :
11392				jQuery.css( elem, name );
11393		}, name, value, arguments.length > 1 );
11394	}
11395} );
11396
11397
11398function Tween( elem, options, prop, end, easing ) {
11399	return new Tween.prototype.init( elem, options, prop, end, easing );
11400}
11401jQuery.Tween = Tween;
11402
11403Tween.prototype = {
11404	constructor: Tween,
11405	init: function( elem, options, prop, end, easing, unit ) {
11406		this.elem = elem;
11407		this.prop = prop;
11408		this.easing = easing || jQuery.easing._default;
11409		this.options = options;
11410		this.start = this.now = this.cur();
11411		this.end = end;
11412		this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
11413	},
11414	cur: function() {
11415		var hooks = Tween.propHooks[ this.prop ];
11416
11417		return hooks && hooks.get ?
11418			hooks.get( this ) :
11419			Tween.propHooks._default.get( this );
11420	},
11421	run: function( percent ) {
11422		var eased,
11423			hooks = Tween.propHooks[ this.prop ];
11424
11425		if ( this.options.duration ) {
11426			this.pos = eased = jQuery.easing[ this.easing ](
11427				percent, this.options.duration * percent, 0, 1, this.options.duration
11428			);
11429		} else {
11430			this.pos = eased = percent;
11431		}
11432		this.now = ( this.end - this.start ) * eased + this.start;
11433
11434		if ( this.options.step ) {
11435			this.options.step.call( this.elem, this.now, this );
11436		}
11437
11438		if ( hooks && hooks.set ) {
11439			hooks.set( this );
11440		} else {
11441			Tween.propHooks._default.set( this );
11442		}
11443		return this;
11444	}
11445};
11446
11447Tween.prototype.init.prototype = Tween.prototype;
11448
11449Tween.propHooks = {
11450	_default: {
11451		get: function( tween ) {
11452			var result;
11453
11454			// Use a property on the element directly when it is not a DOM element,
11455			// or when there is no matching style property that exists.
11456			if ( tween.elem.nodeType !== 1 ||
11457				tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
11458				return tween.elem[ tween.prop ];
11459			}
11460
11461			// Passing an empty string as a 3rd parameter to .css will automatically
11462			// attempt a parseFloat and fallback to a string if the parse fails.
11463			// Simple values such as "10px" are parsed to Float;
11464			// complex values such as "rotate(1rad)" are returned as-is.
11465			result = jQuery.css( tween.elem, tween.prop, "" );
11466
11467			// Empty strings, null, undefined and "auto" are converted to 0.
11468			return !result || result === "auto" ? 0 : result;
11469		},
11470		set: function( tween ) {
11471
11472			// Use step hook for back compat.
11473			// Use cssHook if its there.
11474			// Use .style if available and use plain properties where available.
11475			if ( jQuery.fx.step[ tween.prop ] ) {
11476				jQuery.fx.step[ tween.prop ]( tween );
11477			} else if ( tween.elem.nodeType === 1 && (
11478				jQuery.cssHooks[ tween.prop ] ||
11479					tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {
11480				jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
11481			} else {
11482				tween.elem[ tween.prop ] = tween.now;
11483			}
11484		}
11485	}
11486};
11487
11488// Support: IE <=9 only
11489// Panic based approach to setting things on disconnected nodes
11490Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
11491	set: function( tween ) {
11492		if ( tween.elem.nodeType && tween.elem.parentNode ) {
11493			tween.elem[ tween.prop ] = tween.now;
11494		}
11495	}
11496};
11497
11498jQuery.easing = {
11499	linear: function( p ) {
11500		return p;
11501	},
11502	swing: function( p ) {
11503		return 0.5 - Math.cos( p * Math.PI ) / 2;
11504	},
11505	_default: "swing"
11506};
11507
11508jQuery.fx = Tween.prototype.init;
11509
11510// Back compat <1.8 extension point
11511jQuery.fx.step = {};
11512
11513
11514
11515
11516var
11517	fxNow, inProgress,
11518	rfxtypes = /^(?:toggle|show|hide)$/,
11519	rrun = /queueHooks$/;
11520
11521function schedule() {
11522	if ( inProgress ) {
11523		if ( document.hidden === false && window.requestAnimationFrame ) {
11524			window.requestAnimationFrame( schedule );
11525		} else {
11526			window.setTimeout( schedule, jQuery.fx.interval );
11527		}
11528
11529		jQuery.fx.tick();
11530	}
11531}
11532
11533// Animations created synchronously will run synchronously
11534function createFxNow() {
11535	window.setTimeout( function() {
11536		fxNow = undefined;
11537	} );
11538	return ( fxNow = Date.now() );
11539}
11540
11541// Generate parameters to create a standard animation
11542function genFx( type, includeWidth ) {
11543	var which,
11544		i = 0,
11545		attrs = { height: type };
11546
11547	// If we include width, step value is 1 to do all cssExpand values,
11548	// otherwise step value is 2 to skip over Left and Right
11549	includeWidth = includeWidth ? 1 : 0;
11550	for ( ; i < 4; i += 2 - includeWidth ) {
11551		which = cssExpand[ i ];
11552		attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
11553	}
11554
11555	if ( includeWidth ) {
11556		attrs.opacity = attrs.width = type;
11557	}
11558
11559	return attrs;
11560}
11561
11562function createTween( value, prop, animation ) {
11563	var tween,
11564		collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
11565		index = 0,
11566		length = collection.length;
11567	for ( ; index < length; index++ ) {
11568		if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
11569
11570			// We're done with this property
11571			return tween;
11572		}
11573	}
11574}
11575
11576function defaultPrefilter( elem, props, opts ) {
11577	var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,
11578		isBox = "width" in props || "height" in props,
11579		anim = this,
11580		orig = {},
11581		style = elem.style,
11582		hidden = elem.nodeType && isHiddenWithinTree( elem ),
11583		dataShow = dataPriv.get( elem, "fxshow" );
11584
11585	// Queue-skipping animations hijack the fx hooks
11586	if ( !opts.queue ) {
11587		hooks = jQuery._queueHooks( elem, "fx" );
11588		if ( hooks.unqueued == null ) {
11589			hooks.unqueued = 0;
11590			oldfire = hooks.empty.fire;
11591			hooks.empty.fire = function() {
11592				if ( !hooks.unqueued ) {
11593					oldfire();
11594				}
11595			};
11596		}
11597		hooks.unqueued++;
11598
11599		anim.always( function() {
11600
11601			// Ensure the complete handler is called before this completes
11602			anim.always( function() {
11603				hooks.unqueued--;
11604				if ( !jQuery.queue( elem, "fx" ).length ) {
11605					hooks.empty.fire();
11606				}
11607			} );
11608		} );
11609	}
11610
11611	// Detect show/hide animations
11612	for ( prop in props ) {
11613		value = props[ prop ];
11614		if ( rfxtypes.test( value ) ) {
11615			delete props[ prop ];
11616			toggle = toggle || value === "toggle";
11617			if ( value === ( hidden ? "hide" : "show" ) ) {
11618
11619				// Pretend to be hidden if this is a "show" and
11620				// there is still data from a stopped show/hide
11621				if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
11622					hidden = true;
11623
11624				// Ignore all other no-op show/hide data
11625				} else {
11626					continue;
11627				}
11628			}
11629			orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
11630		}
11631	}
11632
11633	// Bail out if this is a no-op like .hide().hide()
11634	propTween = !jQuery.isEmptyObject( props );
11635	if ( !propTween && jQuery.isEmptyObject( orig ) ) {
11636		return;
11637	}
11638
11639	// Restrict "overflow" and "display" styles during box animations
11640	if ( isBox && elem.nodeType === 1 ) {
11641
11642		// Support: IE <=9 - 11, Edge 12 - 15
11643		// Record all 3 overflow attributes because IE does not infer the shorthand
11644		// from identically-valued overflowX and overflowY and Edge just mirrors
11645		// the overflowX value there.
11646		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
11647
11648		// Identify a display type, preferring old show/hide data over the CSS cascade
11649		restoreDisplay = dataShow && dataShow.display;
11650		if ( restoreDisplay == null ) {
11651			restoreDisplay = dataPriv.get( elem, "display" );
11652		}
11653		display = jQuery.css( elem, "display" );
11654		if ( display === "none" ) {
11655			if ( restoreDisplay ) {
11656				display = restoreDisplay;
11657			} else {
11658
11659				// Get nonempty value(s) by temporarily forcing visibility
11660				showHide( [ elem ], true );
11661				restoreDisplay = elem.style.display || restoreDisplay;
11662				display = jQuery.css( elem, "display" );
11663				showHide( [ elem ] );
11664			}
11665		}
11666
11667		// Animate inline elements as inline-block
11668		if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {
11669			if ( jQuery.css( elem, "float" ) === "none" ) {
11670
11671				// Restore the original display value at the end of pure show/hide animations
11672				if ( !propTween ) {
11673					anim.done( function() {
11674						style.display = restoreDisplay;
11675					} );
11676					if ( restoreDisplay == null ) {
11677						display = style.display;
11678						restoreDisplay = display === "none" ? "" : display;
11679					}
11680				}
11681				style.display = "inline-block";
11682			}
11683		}
11684	}
11685
11686	if ( opts.overflow ) {
11687		style.overflow = "hidden";
11688		anim.always( function() {
11689			style.overflow = opts.overflow[ 0 ];
11690			style.overflowX = opts.overflow[ 1 ];
11691			style.overflowY = opts.overflow[ 2 ];
11692		} );
11693	}
11694
11695	// Implement show/hide animations
11696	propTween = false;
11697	for ( prop in orig ) {
11698
11699		// General show/hide setup for this element animation
11700		if ( !propTween ) {
11701			if ( dataShow ) {
11702				if ( "hidden" in dataShow ) {
11703					hidden = dataShow.hidden;
11704				}
11705			} else {
11706				dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );
11707			}
11708
11709			// Store hidden/visible for toggle so `.stop().toggle()` "reverses"
11710			if ( toggle ) {
11711				dataShow.hidden = !hidden;
11712			}
11713
11714			// Show elements before animating them
11715			if ( hidden ) {
11716				showHide( [ elem ], true );
11717			}
11718
11719			/* eslint-disable no-loop-func */
11720
11721			anim.done( function() {
11722
11723				/* eslint-enable no-loop-func */
11724
11725				// The final step of a "hide" animation is actually hiding the element
11726				if ( !hidden ) {
11727					showHide( [ elem ] );
11728				}
11729				dataPriv.remove( elem, "fxshow" );
11730				for ( prop in orig ) {
11731					jQuery.style( elem, prop, orig[ prop ] );
11732				}
11733			} );
11734		}
11735
11736		// Per-property setup
11737		propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
11738		if ( !( prop in dataShow ) ) {
11739			dataShow[ prop ] = propTween.start;
11740			if ( hidden ) {
11741				propTween.end = propTween.start;
11742				propTween.start = 0;
11743			}
11744		}
11745	}
11746}
11747
11748function propFilter( props, specialEasing ) {
11749	var index, name, easing, value, hooks;
11750
11751	// camelCase, specialEasing and expand cssHook pass
11752	for ( index in props ) {
11753		name = camelCase( index );
11754		easing = specialEasing[ name ];
11755		value = props[ index ];
11756		if ( Array.isArray( value ) ) {
11757			easing = value[ 1 ];
11758			value = props[ index ] = value[ 0 ];
11759		}
11760
11761		if ( index !== name ) {
11762			props[ name ] = value;
11763			delete props[ index ];
11764		}
11765
11766		hooks = jQuery.cssHooks[ name ];
11767		if ( hooks && "expand" in hooks ) {
11768			value = hooks.expand( value );
11769			delete props[ name ];
11770
11771			// Not quite $.extend, this won't overwrite existing keys.
11772			// Reusing 'index' because we have the correct "name"
11773			for ( index in value ) {
11774				if ( !( index in props ) ) {
11775					props[ index ] = value[ index ];
11776					specialEasing[ index ] = easing;
11777				}
11778			}
11779		} else {
11780			specialEasing[ name ] = easing;
11781		}
11782	}
11783}
11784
11785function Animation( elem, properties, options ) {
11786	var result,
11787		stopped,
11788		index = 0,
11789		length = Animation.prefilters.length,
11790		deferred = jQuery.Deferred().always( function() {
11791
11792			// Don't match elem in the :animated selector
11793			delete tick.elem;
11794		} ),
11795		tick = function() {
11796			if ( stopped ) {
11797				return false;
11798			}
11799			var currentTime = fxNow || createFxNow(),
11800				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
11801
11802				// Support: Android 2.3 only
11803				// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)
11804				temp = remaining / animation.duration || 0,
11805				percent = 1 - temp,
11806				index = 0,
11807				length = animation.tweens.length;
11808
11809			for ( ; index < length; index++ ) {
11810				animation.tweens[ index ].run( percent );
11811			}
11812
11813			deferred.notifyWith( elem, [ animation, percent, remaining ] );
11814
11815			// If there's more to do, yield
11816			if ( percent < 1 && length ) {
11817				return remaining;
11818			}
11819
11820			// If this was an empty animation, synthesize a final progress notification
11821			if ( !length ) {
11822				deferred.notifyWith( elem, [ animation, 1, 0 ] );
11823			}
11824
11825			// Resolve the animation and report its conclusion
11826			deferred.resolveWith( elem, [ animation ] );
11827			return false;
11828		},
11829		animation = deferred.promise( {
11830			elem: elem,
11831			props: jQuery.extend( {}, properties ),
11832			opts: jQuery.extend( true, {
11833				specialEasing: {},
11834				easing: jQuery.easing._default
11835			}, options ),
11836			originalProperties: properties,
11837			originalOptions: options,
11838			startTime: fxNow || createFxNow(),
11839			duration: options.duration,
11840			tweens: [],
11841			createTween: function( prop, end ) {
11842				var tween = jQuery.Tween( elem, animation.opts, prop, end,
11843					animation.opts.specialEasing[ prop ] || animation.opts.easing );
11844				animation.tweens.push( tween );
11845				return tween;
11846			},
11847			stop: function( gotoEnd ) {
11848				var index = 0,
11849
11850					// If we are going to the end, we want to run all the tweens
11851					// otherwise we skip this part
11852					length = gotoEnd ? animation.tweens.length : 0;
11853				if ( stopped ) {
11854					return this;
11855				}
11856				stopped = true;
11857				for ( ; index < length; index++ ) {
11858					animation.tweens[ index ].run( 1 );
11859				}
11860
11861				// Resolve when we played the last frame; otherwise, reject
11862				if ( gotoEnd ) {
11863					deferred.notifyWith( elem, [ animation, 1, 0 ] );
11864					deferred.resolveWith( elem, [ animation, gotoEnd ] );
11865				} else {
11866					deferred.rejectWith( elem, [ animation, gotoEnd ] );
11867				}
11868				return this;
11869			}
11870		} ),
11871		props = animation.props;
11872
11873	propFilter( props, animation.opts.specialEasing );
11874
11875	for ( ; index < length; index++ ) {
11876		result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
11877		if ( result ) {
11878			if ( isFunction( result.stop ) ) {
11879				jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
11880					result.stop.bind( result );
11881			}
11882			return result;
11883		}
11884	}
11885
11886	jQuery.map( props, createTween, animation );
11887
11888	if ( isFunction( animation.opts.start ) ) {
11889		animation.opts.start.call( elem, animation );
11890	}
11891
11892	// Attach callbacks from options
11893	animation
11894		.progress( animation.opts.progress )
11895		.done( animation.opts.done, animation.opts.complete )
11896		.fail( animation.opts.fail )
11897		.always( animation.opts.always );
11898
11899	jQuery.fx.timer(
11900		jQuery.extend( tick, {
11901			elem: elem,
11902			anim: animation,
11903			queue: animation.opts.queue
11904		} )
11905	);
11906
11907	return animation;
11908}
11909
11910jQuery.Animation = jQuery.extend( Animation, {
11911
11912	tweeners: {
11913		"*": [ function( prop, value ) {
11914			var tween = this.createTween( prop, value );
11915			adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
11916			return tween;
11917		} ]
11918	},
11919
11920	tweener: function( props, callback ) {
11921		if ( isFunction( props ) ) {
11922			callback = props;
11923			props = [ "*" ];
11924		} else {
11925			props = props.match( rnothtmlwhite );
11926		}
11927
11928		var prop,
11929			index = 0,
11930			length = props.length;
11931
11932		for ( ; index < length; index++ ) {
11933			prop = props[ index ];
11934			Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
11935			Animation.tweeners[ prop ].unshift( callback );
11936		}
11937	},
11938
11939	prefilters: [ defaultPrefilter ],
11940
11941	prefilter: function( callback, prepend ) {
11942		if ( prepend ) {
11943			Animation.prefilters.unshift( callback );
11944		} else {
11945			Animation.prefilters.push( callback );
11946		}
11947	}
11948} );
11949
11950jQuery.speed = function( speed, easing, fn ) {
11951	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
11952		complete: fn || !fn && easing ||
11953			isFunction( speed ) && speed,
11954		duration: speed,
11955		easing: fn && easing || easing && !isFunction( easing ) && easing
11956	};
11957
11958	// Go to the end state if fx are off
11959	if ( jQuery.fx.off ) {
11960		opt.duration = 0;
11961
11962	} else {
11963		if ( typeof opt.duration !== "number" ) {
11964			if ( opt.duration in jQuery.fx.speeds ) {
11965				opt.duration = jQuery.fx.speeds[ opt.duration ];
11966
11967			} else {
11968				opt.duration = jQuery.fx.speeds._default;
11969			}
11970		}
11971	}
11972
11973	// Normalize opt.queue - true/undefined/null -> "fx"
11974	if ( opt.queue == null || opt.queue === true ) {
11975		opt.queue = "fx";
11976	}
11977
11978	// Queueing
11979	opt.old = opt.complete;
11980
11981	opt.complete = function() {
11982		if ( isFunction( opt.old ) ) {
11983			opt.old.call( this );
11984		}
11985
11986		if ( opt.queue ) {
11987			jQuery.dequeue( this, opt.queue );
11988		}
11989	};
11990
11991	return opt;
11992};
11993
11994jQuery.fn.extend( {
11995	fadeTo: function( speed, to, easing, callback ) {
11996
11997		// Show any hidden elements after setting opacity to 0
11998		return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()
11999
12000			// Animate to the value specified
12001			.end().animate( { opacity: to }, speed, easing, callback );
12002	},
12003	animate: function( prop, speed, easing, callback ) {
12004		var empty = jQuery.isEmptyObject( prop ),
12005			optall = jQuery.speed( speed, easing, callback ),
12006			doAnimation = function() {
12007
12008				// Operate on a copy of prop so per-property easing won't be lost
12009				var anim = Animation( this, jQuery.extend( {}, prop ), optall );
12010
12011				// Empty animations, or finishing resolves immediately
12012				if ( empty || dataPriv.get( this, "finish" ) ) {
12013					anim.stop( true );
12014				}
12015			};
12016
12017		doAnimation.finish = doAnimation;
12018
12019		return empty || optall.queue === false ?
12020			this.each( doAnimation ) :
12021			this.queue( optall.queue, doAnimation );
12022	},
12023	stop: function( type, clearQueue, gotoEnd ) {
12024		var stopQueue = function( hooks ) {
12025			var stop = hooks.stop;
12026			delete hooks.stop;
12027			stop( gotoEnd );
12028		};
12029
12030		if ( typeof type !== "string" ) {
12031			gotoEnd = clearQueue;
12032			clearQueue = type;
12033			type = undefined;
12034		}
12035		if ( clearQueue ) {
12036			this.queue( type || "fx", [] );
12037		}
12038
12039		return this.each( function() {
12040			var dequeue = true,
12041				index = type != null && type + "queueHooks",
12042				timers = jQuery.timers,
12043				data = dataPriv.get( this );
12044
12045			if ( index ) {
12046				if ( data[ index ] && data[ index ].stop ) {
12047					stopQueue( data[ index ] );
12048				}
12049			} else {
12050				for ( index in data ) {
12051					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
12052						stopQueue( data[ index ] );
12053					}
12054				}
12055			}
12056
12057			for ( index = timers.length; index--; ) {
12058				if ( timers[ index ].elem === this &&
12059					( type == null || timers[ index ].queue === type ) ) {
12060
12061					timers[ index ].anim.stop( gotoEnd );
12062					dequeue = false;
12063					timers.splice( index, 1 );
12064				}
12065			}
12066
12067			// Start the next in the queue if the last step wasn't forced.
12068			// Timers currently will call their complete callbacks, which
12069			// will dequeue but only if they were gotoEnd.
12070			if ( dequeue || !gotoEnd ) {
12071				jQuery.dequeue( this, type );
12072			}
12073		} );
12074	},
12075	finish: function( type ) {
12076		if ( type !== false ) {
12077			type = type || "fx";
12078		}
12079		return this.each( function() {
12080			var index,
12081				data = dataPriv.get( this ),
12082				queue = data[ type + "queue" ],
12083				hooks = data[ type + "queueHooks" ],
12084				timers = jQuery.timers,
12085				length = queue ? queue.length : 0;
12086
12087			// Enable finishing flag on private data
12088			data.finish = true;
12089
12090			// Empty the queue first
12091			jQuery.queue( this, type, [] );
12092
12093			if ( hooks && hooks.stop ) {
12094				hooks.stop.call( this, true );
12095			}
12096
12097			// Look for any active animations, and finish them
12098			for ( index = timers.length; index--; ) {
12099				if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
12100					timers[ index ].anim.stop( true );
12101					timers.splice( index, 1 );
12102				}
12103			}
12104
12105			// Look for any animations in the old queue and finish them
12106			for ( index = 0; index < length; index++ ) {
12107				if ( queue[ index ] && queue[ index ].finish ) {
12108					queue[ index ].finish.call( this );
12109				}
12110			}
12111
12112			// Turn off finishing flag
12113			delete data.finish;
12114		} );
12115	}
12116} );
12117
12118jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) {
12119	var cssFn = jQuery.fn[ name ];
12120	jQuery.fn[ name ] = function( speed, easing, callback ) {
12121		return speed == null || typeof speed === "boolean" ?
12122			cssFn.apply( this, arguments ) :
12123			this.animate( genFx( name, true ), speed, easing, callback );
12124	};
12125} );
12126
12127// Generate shortcuts for custom animations
12128jQuery.each( {
12129	slideDown: genFx( "show" ),
12130	slideUp: genFx( "hide" ),
12131	slideToggle: genFx( "toggle" ),
12132	fadeIn: { opacity: "show" },
12133	fadeOut: { opacity: "hide" },
12134	fadeToggle: { opacity: "toggle" }
12135}, function( name, props ) {
12136	jQuery.fn[ name ] = function( speed, easing, callback ) {
12137		return this.animate( props, speed, easing, callback );
12138	};
12139} );
12140
12141jQuery.timers = [];
12142jQuery.fx.tick = function() {
12143	var timer,
12144		i = 0,
12145		timers = jQuery.timers;
12146
12147	fxNow = Date.now();
12148
12149	for ( ; i < timers.length; i++ ) {
12150		timer = timers[ i ];
12151
12152		// Run the timer and safely remove it when done (allowing for external removal)
12153		if ( !timer() && timers[ i ] === timer ) {
12154			timers.splice( i--, 1 );
12155		}
12156	}
12157
12158	if ( !timers.length ) {
12159		jQuery.fx.stop();
12160	}
12161	fxNow = undefined;
12162};
12163
12164jQuery.fx.timer = function( timer ) {
12165	jQuery.timers.push( timer );
12166	jQuery.fx.start();
12167};
12168
12169jQuery.fx.interval = 13;
12170jQuery.fx.start = function() {
12171	if ( inProgress ) {
12172		return;
12173	}
12174
12175	inProgress = true;
12176	schedule();
12177};
12178
12179jQuery.fx.stop = function() {
12180	inProgress = null;
12181};
12182
12183jQuery.fx.speeds = {
12184	slow: 600,
12185	fast: 200,
12186
12187	// Default speed
12188	_default: 400
12189};
12190
12191
12192// Based off of the plugin by Clint Helfers, with permission.
12193jQuery.fn.delay = function( time, type ) {
12194	time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
12195	type = type || "fx";
12196
12197	return this.queue( type, function( next, hooks ) {
12198		var timeout = window.setTimeout( next, time );
12199		hooks.stop = function() {
12200			window.clearTimeout( timeout );
12201		};
12202	} );
12203};
12204
12205
12206( function() {
12207	var input = document.createElement( "input" ),
12208		select = document.createElement( "select" ),
12209		opt = select.appendChild( document.createElement( "option" ) );
12210
12211	input.type = "checkbox";
12212
12213	// Support: Android <=4.3 only
12214	// Default value for a checkbox should be "on"
12215	support.checkOn = input.value !== "";
12216
12217	// Support: IE <=11 only
12218	// Must access selectedIndex to make default options select
12219	support.optSelected = opt.selected;
12220
12221	// Support: IE <=11 only
12222	// An input loses its value after becoming a radio
12223	input = document.createElement( "input" );
12224	input.value = "t";
12225	input.type = "radio";
12226	support.radioValue = input.value === "t";
12227} )();
12228
12229
12230var boolHook,
12231	attrHandle = jQuery.expr.attrHandle;
12232
12233jQuery.fn.extend( {
12234	attr: function( name, value ) {
12235		return access( this, jQuery.attr, name, value, arguments.length > 1 );
12236	},
12237
12238	removeAttr: function( name ) {
12239		return this.each( function() {
12240			jQuery.removeAttr( this, name );
12241		} );
12242	}
12243} );
12244
12245jQuery.extend( {
12246	attr: function( elem, name, value ) {
12247		var ret, hooks,
12248			nType = elem.nodeType;
12249
12250		// Don't get/set attributes on text, comment and attribute nodes
12251		if ( nType === 3 || nType === 8 || nType === 2 ) {
12252			return;
12253		}
12254
12255		// Fallback to prop when attributes are not supported
12256		if ( typeof elem.getAttribute === "undefined" ) {
12257			return jQuery.prop( elem, name, value );
12258		}
12259
12260		// Attribute hooks are determined by the lowercase version
12261		// Grab necessary hook if one is defined
12262		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
12263			hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
12264				( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
12265		}
12266
12267		if ( value !== undefined ) {
12268			if ( value === null ) {
12269				jQuery.removeAttr( elem, name );
12270				return;
12271			}
12272
12273			if ( hooks && "set" in hooks &&
12274				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
12275				return ret;
12276			}
12277
12278			elem.setAttribute( name, value + "" );
12279			return value;
12280		}
12281
12282		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
12283			return ret;
12284		}
12285
12286		ret = jQuery.find.attr( elem, name );
12287
12288		// Non-existent attributes return null, we normalize to undefined
12289		return ret == null ? undefined : ret;
12290	},
12291
12292	attrHooks: {
12293		type: {
12294			set: function( elem, value ) {
12295				if ( !support.radioValue && value === "radio" &&
12296					nodeName( elem, "input" ) ) {
12297					var val = elem.value;
12298					elem.setAttribute( "type", value );
12299					if ( val ) {
12300						elem.value = val;
12301					}
12302					return value;
12303				}
12304			}
12305		}
12306	},
12307
12308	removeAttr: function( elem, value ) {
12309		var name,
12310			i = 0,
12311
12312			// Attribute names can contain non-HTML whitespace characters
12313			// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
12314			attrNames = value && value.match( rnothtmlwhite );
12315
12316		if ( attrNames && elem.nodeType === 1 ) {
12317			while ( ( name = attrNames[ i++ ] ) ) {
12318				elem.removeAttribute( name );
12319			}
12320		}
12321	}
12322} );
12323
12324// Hooks for boolean attributes
12325boolHook = {
12326	set: function( elem, value, name ) {
12327		if ( value === false ) {
12328
12329			// Remove boolean attributes when set to false
12330			jQuery.removeAttr( elem, name );
12331		} else {
12332			elem.setAttribute( name, name );
12333		}
12334		return name;
12335	}
12336};
12337
12338jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) {
12339	var getter = attrHandle[ name ] || jQuery.find.attr;
12340
12341	attrHandle[ name ] = function( elem, name, isXML ) {
12342		var ret, handle,
12343			lowercaseName = name.toLowerCase();
12344
12345		if ( !isXML ) {
12346
12347			// Avoid an infinite loop by temporarily removing this function from the getter
12348			handle = attrHandle[ lowercaseName ];
12349			attrHandle[ lowercaseName ] = ret;
12350			ret = getter( elem, name, isXML ) != null ?
12351				lowercaseName :
12352				null;
12353			attrHandle[ lowercaseName ] = handle;
12354		}
12355		return ret;
12356	};
12357} );
12358
12359
12360
12361
12362var rfocusable = /^(?:input|select|textarea|button)$/i,
12363	rclickable = /^(?:a|area)$/i;
12364
12365jQuery.fn.extend( {
12366	prop: function( name, value ) {
12367		return access( this, jQuery.prop, name, value, arguments.length > 1 );
12368	},
12369
12370	removeProp: function( name ) {
12371		return this.each( function() {
12372			delete this[ jQuery.propFix[ name ] || name ];
12373		} );
12374	}
12375} );
12376
12377jQuery.extend( {
12378	prop: function( elem, name, value ) {
12379		var ret, hooks,
12380			nType = elem.nodeType;
12381
12382		// Don't get/set properties on text, comment and attribute nodes
12383		if ( nType === 3 || nType === 8 || nType === 2 ) {
12384			return;
12385		}
12386
12387		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
12388
12389			// Fix name and attach hooks
12390			name = jQuery.propFix[ name ] || name;
12391			hooks = jQuery.propHooks[ name ];
12392		}
12393
12394		if ( value !== undefined ) {
12395			if ( hooks && "set" in hooks &&
12396				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
12397				return ret;
12398			}
12399
12400			return ( elem[ name ] = value );
12401		}
12402
12403		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
12404			return ret;
12405		}
12406
12407		return elem[ name ];
12408	},
12409
12410	propHooks: {
12411		tabIndex: {
12412			get: function( elem ) {
12413
12414				// Support: IE <=9 - 11 only
12415				// elem.tabIndex doesn't always return the
12416				// correct value when it hasn't been explicitly set
12417				// Use proper attribute retrieval (trac-12072)
12418				var tabindex = jQuery.find.attr( elem, "tabindex" );
12419
12420				if ( tabindex ) {
12421					return parseInt( tabindex, 10 );
12422				}
12423
12424				if (
12425					rfocusable.test( elem.nodeName ) ||
12426					rclickable.test( elem.nodeName ) &&
12427					elem.href
12428				) {
12429					return 0;
12430				}
12431
12432				return -1;
12433			}
12434		}
12435	},
12436
12437	propFix: {
12438		"for": "htmlFor",
12439		"class": "className"
12440	}
12441} );
12442
12443// Support: IE <=11 only
12444// Accessing the selectedIndex property
12445// forces the browser to respect setting selected
12446// on the option
12447// The getter ensures a default option is selected
12448// when in an optgroup
12449// eslint rule "no-unused-expressions" is disabled for this code
12450// since it considers such accessions noop
12451if ( !support.optSelected ) {
12452	jQuery.propHooks.selected = {
12453		get: function( elem ) {
12454
12455			/* eslint no-unused-expressions: "off" */
12456
12457			var parent = elem.parentNode;
12458			if ( parent && parent.parentNode ) {
12459				parent.parentNode.selectedIndex;
12460			}
12461			return null;
12462		},
12463		set: function( elem ) {
12464
12465			/* eslint no-unused-expressions: "off" */
12466
12467			var parent = elem.parentNode;
12468			if ( parent ) {
12469				parent.selectedIndex;
12470
12471				if ( parent.parentNode ) {
12472					parent.parentNode.selectedIndex;
12473				}
12474			}
12475		}
12476	};
12477}
12478
12479jQuery.each( [
12480	"tabIndex",
12481	"readOnly",
12482	"maxLength",
12483	"cellSpacing",
12484	"cellPadding",
12485	"rowSpan",
12486	"colSpan",
12487	"useMap",
12488	"frameBorder",
12489	"contentEditable"
12490], function() {
12491	jQuery.propFix[ this.toLowerCase() ] = this;
12492} );
12493
12494
12495
12496
12497	// Strip and collapse whitespace according to HTML spec
12498	// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace
12499	function stripAndCollapse( value ) {
12500		var tokens = value.match( rnothtmlwhite ) || [];
12501		return tokens.join( " " );
12502	}
12503
12504
12505function getClass( elem ) {
12506	return elem.getAttribute && elem.getAttribute( "class" ) || "";
12507}
12508
12509function classesToArray( value ) {
12510	if ( Array.isArray( value ) ) {
12511		return value;
12512	}
12513	if ( typeof value === "string" ) {
12514		return value.match( rnothtmlwhite ) || [];
12515	}
12516	return [];
12517}
12518
12519jQuery.fn.extend( {
12520	addClass: function( value ) {
12521		var classNames, cur, curValue, className, i, finalValue;
12522
12523		if ( isFunction( value ) ) {
12524			return this.each( function( j ) {
12525				jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
12526			} );
12527		}
12528
12529		classNames = classesToArray( value );
12530
12531		if ( classNames.length ) {
12532			return this.each( function() {
12533				curValue = getClass( this );
12534				cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
12535
12536				if ( cur ) {
12537					for ( i = 0; i < classNames.length; i++ ) {
12538						className = classNames[ i ];
12539						if ( cur.indexOf( " " + className + " " ) < 0 ) {
12540							cur += className + " ";
12541						}
12542					}
12543
12544					// Only assign if different to avoid unneeded rendering.
12545					finalValue = stripAndCollapse( cur );
12546					if ( curValue !== finalValue ) {
12547						this.setAttribute( "class", finalValue );
12548					}
12549				}
12550			} );
12551		}
12552
12553		return this;
12554	},
12555
12556	removeClass: function( value ) {
12557		var classNames, cur, curValue, className, i, finalValue;
12558
12559		if ( isFunction( value ) ) {
12560			return this.each( function( j ) {
12561				jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
12562			} );
12563		}
12564
12565		if ( !arguments.length ) {
12566			return this.attr( "class", "" );
12567		}
12568
12569		classNames = classesToArray( value );
12570
12571		if ( classNames.length ) {
12572			return this.each( function() {
12573				curValue = getClass( this );
12574
12575				// This expression is here for better compressibility (see addClass)
12576				cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
12577
12578				if ( cur ) {
12579					for ( i = 0; i < classNames.length; i++ ) {
12580						className = classNames[ i ];
12581
12582						// Remove *all* instances
12583						while ( cur.indexOf( " " + className + " " ) > -1 ) {
12584							cur = cur.replace( " " + className + " ", " " );
12585						}
12586					}
12587
12588					// Only assign if different to avoid unneeded rendering.
12589					finalValue = stripAndCollapse( cur );
12590					if ( curValue !== finalValue ) {
12591						this.setAttribute( "class", finalValue );
12592					}
12593				}
12594			} );
12595		}
12596
12597		return this;
12598	},
12599
12600	toggleClass: function( value, stateVal ) {
12601		var classNames, className, i, self,
12602			type = typeof value,
12603			isValidValue = type === "string" || Array.isArray( value );
12604
12605		if ( isFunction( value ) ) {
12606			return this.each( function( i ) {
12607				jQuery( this ).toggleClass(
12608					value.call( this, i, getClass( this ), stateVal ),
12609					stateVal
12610				);
12611			} );
12612		}
12613
12614		if ( typeof stateVal === "boolean" && isValidValue ) {
12615			return stateVal ? this.addClass( value ) : this.removeClass( value );
12616		}
12617
12618		classNames = classesToArray( value );
12619
12620		return this.each( function() {
12621			if ( isValidValue ) {
12622
12623				// Toggle individual class names
12624				self = jQuery( this );
12625
12626				for ( i = 0; i < classNames.length; i++ ) {
12627					className = classNames[ i ];
12628
12629					// Check each className given, space separated list
12630					if ( self.hasClass( className ) ) {
12631						self.removeClass( className );
12632					} else {
12633						self.addClass( className );
12634					}
12635				}
12636
12637			// Toggle whole class name
12638			} else if ( value === undefined || type === "boolean" ) {
12639				className = getClass( this );
12640				if ( className ) {
12641
12642					// Store className if set
12643					dataPriv.set( this, "__className__", className );
12644				}
12645
12646				// If the element has a class name or if we're passed `false`,
12647				// then remove the whole classname (if there was one, the above saved it).
12648				// Otherwise bring back whatever was previously saved (if anything),
12649				// falling back to the empty string if nothing was stored.
12650				if ( this.setAttribute ) {
12651					this.setAttribute( "class",
12652						className || value === false ?
12653							"" :
12654							dataPriv.get( this, "__className__" ) || ""
12655					);
12656				}
12657			}
12658		} );
12659	},
12660
12661	hasClass: function( selector ) {
12662		var className, elem,
12663			i = 0;
12664
12665		className = " " + selector + " ";
12666		while ( ( elem = this[ i++ ] ) ) {
12667			if ( elem.nodeType === 1 &&
12668				( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
12669				return true;
12670			}
12671		}
12672
12673		return false;
12674	}
12675} );
12676
12677
12678
12679
12680var rreturn = /\r/g;
12681
12682jQuery.fn.extend( {
12683	val: function( value ) {
12684		var hooks, ret, valueIsFunction,
12685			elem = this[ 0 ];
12686
12687		if ( !arguments.length ) {
12688			if ( elem ) {
12689				hooks = jQuery.valHooks[ elem.type ] ||
12690					jQuery.valHooks[ elem.nodeName.toLowerCase() ];
12691
12692				if ( hooks &&
12693					"get" in hooks &&
12694					( ret = hooks.get( elem, "value" ) ) !== undefined
12695				) {
12696					return ret;
12697				}
12698
12699				ret = elem.value;
12700
12701				// Handle most common string cases
12702				if ( typeof ret === "string" ) {
12703					return ret.replace( rreturn, "" );
12704				}
12705
12706				// Handle cases where value is null/undef or number
12707				return ret == null ? "" : ret;
12708			}
12709
12710			return;
12711		}
12712
12713		valueIsFunction = isFunction( value );
12714
12715		return this.each( function( i ) {
12716			var val;
12717
12718			if ( this.nodeType !== 1 ) {
12719				return;
12720			}
12721
12722			if ( valueIsFunction ) {
12723				val = value.call( this, i, jQuery( this ).val() );
12724			} else {
12725				val = value;
12726			}
12727
12728			// Treat null/undefined as ""; convert numbers to string
12729			if ( val == null ) {
12730				val = "";
12731
12732			} else if ( typeof val === "number" ) {
12733				val += "";
12734
12735			} else if ( Array.isArray( val ) ) {
12736				val = jQuery.map( val, function( value ) {
12737					return value == null ? "" : value + "";
12738				} );
12739			}
12740
12741			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
12742
12743			// If set returns undefined, fall back to normal setting
12744			if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
12745				this.value = val;
12746			}
12747		} );
12748	}
12749} );
12750
12751jQuery.extend( {
12752	valHooks: {
12753		option: {
12754			get: function( elem ) {
12755
12756				var val = jQuery.find.attr( elem, "value" );
12757				return val != null ?
12758					val :
12759
12760					// Support: IE <=10 - 11 only
12761					// option.text throws exceptions (trac-14686, trac-14858)
12762					// Strip and collapse whitespace
12763					// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
12764					stripAndCollapse( jQuery.text( elem ) );
12765			}
12766		},
12767		select: {
12768			get: function( elem ) {
12769				var value, option, i,
12770					options = elem.options,
12771					index = elem.selectedIndex,
12772					one = elem.type === "select-one",
12773					values = one ? null : [],
12774					max = one ? index + 1 : options.length;
12775
12776				if ( index < 0 ) {
12777					i = max;
12778
12779				} else {
12780					i = one ? index : 0;
12781				}
12782
12783				// Loop through all the selected options
12784				for ( ; i < max; i++ ) {
12785					option = options[ i ];
12786
12787					// Support: IE <=9 only
12788					// IE8-9 doesn't update selected after form reset (trac-2551)
12789					if ( ( option.selected || i === index ) &&
12790
12791							// Don't return options that are disabled or in a disabled optgroup
12792							!option.disabled &&
12793							( !option.parentNode.disabled ||
12794								!nodeName( option.parentNode, "optgroup" ) ) ) {
12795
12796						// Get the specific value for the option
12797						value = jQuery( option ).val();
12798
12799						// We don't need an array for one selects
12800						if ( one ) {
12801							return value;
12802						}
12803
12804						// Multi-Selects return an array
12805						values.push( value );
12806					}
12807				}
12808
12809				return values;
12810			},
12811
12812			set: function( elem, value ) {
12813				var optionSet, option,
12814					options = elem.options,
12815					values = jQuery.makeArray( value ),
12816					i = options.length;
12817
12818				while ( i-- ) {
12819					option = options[ i ];
12820
12821					/* eslint-disable no-cond-assign */
12822
12823					if ( option.selected =
12824						jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
12825					) {
12826						optionSet = true;
12827					}
12828
12829					/* eslint-enable no-cond-assign */
12830				}
12831
12832				// Force browsers to behave consistently when non-matching value is set
12833				if ( !optionSet ) {
12834					elem.selectedIndex = -1;
12835				}
12836				return values;
12837			}
12838		}
12839	}
12840} );
12841
12842// Radios and checkboxes getter/setter
12843jQuery.each( [ "radio", "checkbox" ], function() {
12844	jQuery.valHooks[ this ] = {
12845		set: function( elem, value ) {
12846			if ( Array.isArray( value ) ) {
12847				return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
12848			}
12849		}
12850	};
12851	if ( !support.checkOn ) {
12852		jQuery.valHooks[ this ].get = function( elem ) {
12853			return elem.getAttribute( "value" ) === null ? "on" : elem.value;
12854		};
12855	}
12856} );
12857
12858
12859
12860
12861// Return jQuery for attributes-only inclusion
12862var location = window.location;
12863
12864var nonce = { guid: Date.now() };
12865
12866var rquery = ( /\?/ );
12867
12868
12869
12870// Cross-browser xml parsing
12871jQuery.parseXML = function( data ) {
12872	var xml, parserErrorElem;
12873	if ( !data || typeof data !== "string" ) {
12874		return null;
12875	}
12876
12877	// Support: IE 9 - 11 only
12878	// IE throws on parseFromString with invalid input.
12879	try {
12880		xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
12881	} catch ( e ) {}
12882
12883	parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ];
12884	if ( !xml || parserErrorElem ) {
12885		jQuery.error( "Invalid XML: " + (
12886			parserErrorElem ?
12887				jQuery.map( parserErrorElem.childNodes, function( el ) {
12888					return el.textContent;
12889				} ).join( "\n" ) :
12890				data
12891		) );
12892	}
12893	return xml;
12894};
12895
12896
12897var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
12898	stopPropagationCallback = function( e ) {
12899		e.stopPropagation();
12900	};
12901
12902jQuery.extend( jQuery.event, {
12903
12904	trigger: function( event, data, elem, onlyHandlers ) {
12905
12906		var i, cur, tmp, bubbleType, ontype, handle, special, lastElement,
12907			eventPath = [ elem || document ],
12908			type = hasOwn.call( event, "type" ) ? event.type : event,
12909			namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
12910
12911		cur = lastElement = tmp = elem = elem || document;
12912
12913		// Don't do events on text and comment nodes
12914		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
12915			return;
12916		}
12917
12918		// focus/blur morphs to focusin/out; ensure we're not firing them right now
12919		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
12920			return;
12921		}
12922
12923		if ( type.indexOf( "." ) > -1 ) {
12924
12925			// Namespaced trigger; create a regexp to match event type in handle()
12926			namespaces = type.split( "." );
12927			type = namespaces.shift();
12928			namespaces.sort();
12929		}
12930		ontype = type.indexOf( ":" ) < 0 && "on" + type;
12931
12932		// Caller can pass in a jQuery.Event object, Object, or just an event type string
12933		event = event[ jQuery.expando ] ?
12934			event :
12935			new jQuery.Event( type, typeof event === "object" && event );
12936
12937		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
12938		event.isTrigger = onlyHandlers ? 2 : 3;
12939		event.namespace = namespaces.join( "." );
12940		event.rnamespace = event.namespace ?
12941			new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
12942			null;
12943
12944		// Clean up the event in case it is being reused
12945		event.result = undefined;
12946		if ( !event.target ) {
12947			event.target = elem;
12948		}
12949
12950		// Clone any incoming data and prepend the event, creating the handler arg list
12951		data = data == null ?
12952			[ event ] :
12953			jQuery.makeArray( data, [ event ] );
12954
12955		// Allow special events to draw outside the lines
12956		special = jQuery.event.special[ type ] || {};
12957		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
12958			return;
12959		}
12960
12961		// Determine event propagation path in advance, per W3C events spec (trac-9951)
12962		// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)
12963		if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {
12964
12965			bubbleType = special.delegateType || type;
12966			if ( !rfocusMorph.test( bubbleType + type ) ) {
12967				cur = cur.parentNode;
12968			}
12969			for ( ; cur; cur = cur.parentNode ) {
12970				eventPath.push( cur );
12971				tmp = cur;
12972			}
12973
12974			// Only add window if we got to document (e.g., not plain obj or detached DOM)
12975			if ( tmp === ( elem.ownerDocument || document ) ) {
12976				eventPath.push( tmp.defaultView || tmp.parentWindow || window );
12977			}
12978		}
12979
12980		// Fire handlers on the event path
12981		i = 0;
12982		while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
12983			lastElement = cur;
12984			event.type = i > 1 ?
12985				bubbleType :
12986				special.bindType || type;
12987
12988			// jQuery handler
12989			handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] &&
12990				dataPriv.get( cur, "handle" );
12991			if ( handle ) {
12992				handle.apply( cur, data );
12993			}
12994
12995			// Native handler
12996			handle = ontype && cur[ ontype ];
12997			if ( handle && handle.apply && acceptData( cur ) ) {
12998				event.result = handle.apply( cur, data );
12999				if ( event.result === false ) {
13000					event.preventDefault();
13001				}
13002			}
13003		}
13004		event.type = type;
13005
13006		// If nobody prevented the default action, do it now
13007		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
13008
13009			if ( ( !special._default ||
13010				special._default.apply( eventPath.pop(), data ) === false ) &&
13011				acceptData( elem ) ) {
13012
13013				// Call a native DOM method on the target with the same name as the event.
13014				// Don't do default actions on window, that's where global variables be (trac-6170)
13015				if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {
13016
13017					// Don't re-trigger an onFOO event when we call its FOO() method
13018					tmp = elem[ ontype ];
13019
13020					if ( tmp ) {
13021						elem[ ontype ] = null;
13022					}
13023
13024					// Prevent re-triggering of the same event, since we already bubbled it above
13025					jQuery.event.triggered = type;
13026
13027					if ( event.isPropagationStopped() ) {
13028						lastElement.addEventListener( type, stopPropagationCallback );
13029					}
13030
13031					elem[ type ]();
13032
13033					if ( event.isPropagationStopped() ) {
13034						lastElement.removeEventListener( type, stopPropagationCallback );
13035					}
13036
13037					jQuery.event.triggered = undefined;
13038
13039					if ( tmp ) {
13040						elem[ ontype ] = tmp;
13041					}
13042				}
13043			}
13044		}
13045
13046		return event.result;
13047	},
13048
13049	// Piggyback on a donor event to simulate a different one
13050	// Used only for `focus(in | out)` events
13051	simulate: function( type, elem, event ) {
13052		var e = jQuery.extend(
13053			new jQuery.Event(),
13054			event,
13055			{
13056				type: type,
13057				isSimulated: true
13058			}
13059		);
13060
13061		jQuery.event.trigger( e, null, elem );
13062	}
13063
13064} );
13065
13066jQuery.fn.extend( {
13067
13068	trigger: function( type, data ) {
13069		return this.each( function() {
13070			jQuery.event.trigger( type, data, this );
13071		} );
13072	},
13073	triggerHandler: function( type, data ) {
13074		var elem = this[ 0 ];
13075		if ( elem ) {
13076			return jQuery.event.trigger( type, data, elem, true );
13077		}
13078	}
13079} );
13080
13081
13082var
13083	rbracket = /\[\]$/,
13084	rCRLF = /\r?\n/g,
13085	rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
13086	rsubmittable = /^(?:input|select|textarea|keygen)/i;
13087
13088function buildParams( prefix, obj, traditional, add ) {
13089	var name;
13090
13091	if ( Array.isArray( obj ) ) {
13092
13093		// Serialize array item.
13094		jQuery.each( obj, function( i, v ) {
13095			if ( traditional || rbracket.test( prefix ) ) {
13096
13097				// Treat each array item as a scalar.
13098				add( prefix, v );
13099
13100			} else {
13101
13102				// Item is non-scalar (array or object), encode its numeric index.
13103				buildParams(
13104					prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
13105					v,
13106					traditional,
13107					add
13108				);
13109			}
13110		} );
13111
13112	} else if ( !traditional && toType( obj ) === "object" ) {
13113
13114		// Serialize object item.
13115		for ( name in obj ) {
13116			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
13117		}
13118
13119	} else {
13120
13121		// Serialize scalar item.
13122		add( prefix, obj );
13123	}
13124}
13125
13126// Serialize an array of form elements or a set of
13127// key/values into a query string
13128jQuery.param = function( a, traditional ) {
13129	var prefix,
13130		s = [],
13131		add = function( key, valueOrFunction ) {
13132
13133			// If value is a function, invoke it and use its return value
13134			var value = isFunction( valueOrFunction ) ?
13135				valueOrFunction() :
13136				valueOrFunction;
13137
13138			s[ s.length ] = encodeURIComponent( key ) + "=" +
13139				encodeURIComponent( value == null ? "" : value );
13140		};
13141
13142	if ( a == null ) {
13143		return "";
13144	}
13145
13146	// If an array was passed in, assume that it is an array of form elements.
13147	if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
13148
13149		// Serialize the form elements
13150		jQuery.each( a, function() {
13151			add( this.name, this.value );
13152		} );
13153
13154	} else {
13155
13156		// If traditional, encode the "old" way (the way 1.3.2 or older
13157		// did it), otherwise encode params recursively.
13158		for ( prefix in a ) {
13159			buildParams( prefix, a[ prefix ], traditional, add );
13160		}
13161	}
13162
13163	// Return the resulting serialization
13164	return s.join( "&" );
13165};
13166
13167jQuery.fn.extend( {
13168	serialize: function() {
13169		return jQuery.param( this.serializeArray() );
13170	},
13171	serializeArray: function() {
13172		return this.map( function() {
13173
13174			// Can add propHook for "elements" to filter or add form elements
13175			var elements = jQuery.prop( this, "elements" );
13176			return elements ? jQuery.makeArray( elements ) : this;
13177		} ).filter( function() {
13178			var type = this.type;
13179
13180			// Use .is( ":disabled" ) so that fieldset[disabled] works
13181			return this.name && !jQuery( this ).is( ":disabled" ) &&
13182				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
13183				( this.checked || !rcheckableType.test( type ) );
13184		} ).map( function( _i, elem ) {
13185			var val = jQuery( this ).val();
13186
13187			if ( val == null ) {
13188				return null;
13189			}
13190
13191			if ( Array.isArray( val ) ) {
13192				return jQuery.map( val, function( val ) {
13193					return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
13194				} );
13195			}
13196
13197			return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
13198		} ).get();
13199	}
13200} );
13201
13202
13203var
13204	r20 = /%20/g,
13205	rhash = /#.*$/,
13206	rantiCache = /([?&])_=[^&]*/,
13207	rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
13208
13209	// trac-7653, trac-8125, trac-8152: local protocol detection
13210	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
13211	rnoContent = /^(?:GET|HEAD)$/,
13212	rprotocol = /^\/\//,
13213
13214	/* Prefilters
13215	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
13216	 * 2) These are called:
13217	 *    - BEFORE asking for a transport
13218	 *    - AFTER param serialization (s.data is a string if s.processData is true)
13219	 * 3) key is the dataType
13220	 * 4) the catchall symbol "*" can be used
13221	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
13222	 */
13223	prefilters = {},
13224
13225	/* Transports bindings
13226	 * 1) key is the dataType
13227	 * 2) the catchall symbol "*" can be used
13228	 * 3) selection will start with transport dataType and THEN go to "*" if needed
13229	 */
13230	transports = {},
13231
13232	// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression
13233	allTypes = "*/".concat( "*" ),
13234
13235	// Anchor tag for parsing the document origin
13236	originAnchor = document.createElement( "a" );
13237
13238originAnchor.href = location.href;
13239
13240// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
13241function addToPrefiltersOrTransports( structure ) {
13242
13243	// dataTypeExpression is optional and defaults to "*"
13244	return function( dataTypeExpression, func ) {
13245
13246		if ( typeof dataTypeExpression !== "string" ) {
13247			func = dataTypeExpression;
13248			dataTypeExpression = "*";
13249		}
13250
13251		var dataType,
13252			i = 0,
13253			dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];
13254
13255		if ( isFunction( func ) ) {
13256
13257			// For each dataType in the dataTypeExpression
13258			while ( ( dataType = dataTypes[ i++ ] ) ) {
13259
13260				// Prepend if requested
13261				if ( dataType[ 0 ] === "+" ) {
13262					dataType = dataType.slice( 1 ) || "*";
13263					( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
13264
13265				// Otherwise append
13266				} else {
13267					( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
13268				}
13269			}
13270		}
13271	};
13272}
13273
13274// Base inspection function for prefilters and transports
13275function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
13276
13277	var inspected = {},
13278		seekingTransport = ( structure === transports );
13279
13280	function inspect( dataType ) {
13281		var selected;
13282		inspected[ dataType ] = true;
13283		jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
13284			var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
13285			if ( typeof dataTypeOrTransport === "string" &&
13286				!seekingTransport && !inspected[ dataTypeOrTransport ] ) {
13287
13288				options.dataTypes.unshift( dataTypeOrTransport );
13289				inspect( dataTypeOrTransport );
13290				return false;
13291			} else if ( seekingTransport ) {
13292				return !( selected = dataTypeOrTransport );
13293			}
13294		} );
13295		return selected;
13296	}
13297
13298	return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
13299}
13300
13301// A special extend for ajax options
13302// that takes "flat" options (not to be deep extended)
13303// Fixes trac-9887
13304function ajaxExtend( target, src ) {
13305	var key, deep,
13306		flatOptions = jQuery.ajaxSettings.flatOptions || {};
13307
13308	for ( key in src ) {
13309		if ( src[ key ] !== undefined ) {
13310			( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
13311		}
13312	}
13313	if ( deep ) {
13314		jQuery.extend( true, target, deep );
13315	}
13316
13317	return target;
13318}
13319
13320/* Handles responses to an ajax request:
13321 * - finds the right dataType (mediates between content-type and expected dataType)
13322 * - returns the corresponding response
13323 */
13324function ajaxHandleResponses( s, jqXHR, responses ) {
13325
13326	var ct, type, finalDataType, firstDataType,
13327		contents = s.contents,
13328		dataTypes = s.dataTypes;
13329
13330	// Remove auto dataType and get content-type in the process
13331	while ( dataTypes[ 0 ] === "*" ) {
13332		dataTypes.shift();
13333		if ( ct === undefined ) {
13334			ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
13335		}
13336	}
13337
13338	// Check if we're dealing with a known content-type
13339	if ( ct ) {
13340		for ( type in contents ) {
13341			if ( contents[ type ] && contents[ type ].test( ct ) ) {
13342				dataTypes.unshift( type );
13343				break;
13344			}
13345		}
13346	}
13347
13348	// Check to see if we have a response for the expected dataType
13349	if ( dataTypes[ 0 ] in responses ) {
13350		finalDataType = dataTypes[ 0 ];
13351	} else {
13352
13353		// Try convertible dataTypes
13354		for ( type in responses ) {
13355			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
13356				finalDataType = type;
13357				break;
13358			}
13359			if ( !firstDataType ) {
13360				firstDataType = type;
13361			}
13362		}
13363
13364		// Or just use first one
13365		finalDataType = finalDataType || firstDataType;
13366	}
13367
13368	// If we found a dataType
13369	// We add the dataType to the list if needed
13370	// and return the corresponding response
13371	if ( finalDataType ) {
13372		if ( finalDataType !== dataTypes[ 0 ] ) {
13373			dataTypes.unshift( finalDataType );
13374		}
13375		return responses[ finalDataType ];
13376	}
13377}
13378
13379/* Chain conversions given the request and the original response
13380 * Also sets the responseXXX fields on the jqXHR instance
13381 */
13382function ajaxConvert( s, response, jqXHR, isSuccess ) {
13383	var conv2, current, conv, tmp, prev,
13384		converters = {},
13385
13386		// Work with a copy of dataTypes in case we need to modify it for conversion
13387		dataTypes = s.dataTypes.slice();
13388
13389	// Create converters map with lowercased keys
13390	if ( dataTypes[ 1 ] ) {
13391		for ( conv in s.converters ) {
13392			converters[ conv.toLowerCase() ] = s.converters[ conv ];
13393		}
13394	}
13395
13396	current = dataTypes.shift();
13397
13398	// Convert to each sequential dataType
13399	while ( current ) {
13400
13401		if ( s.responseFields[ current ] ) {
13402			jqXHR[ s.responseFields[ current ] ] = response;
13403		}
13404
13405		// Apply the dataFilter if provided
13406		if ( !prev && isSuccess && s.dataFilter ) {
13407			response = s.dataFilter( response, s.dataType );
13408		}
13409
13410		prev = current;
13411		current = dataTypes.shift();
13412
13413		if ( current ) {
13414
13415			// There's only work to do if current dataType is non-auto
13416			if ( current === "*" ) {
13417
13418				current = prev;
13419
13420			// Convert response if prev dataType is non-auto and differs from current
13421			} else if ( prev !== "*" && prev !== current ) {
13422
13423				// Seek a direct converter
13424				conv = converters[ prev + " " + current ] || converters[ "* " + current ];
13425
13426				// If none found, seek a pair
13427				if ( !conv ) {
13428					for ( conv2 in converters ) {
13429
13430						// If conv2 outputs current
13431						tmp = conv2.split( " " );
13432						if ( tmp[ 1 ] === current ) {
13433
13434							// If prev can be converted to accepted input
13435							conv = converters[ prev + " " + tmp[ 0 ] ] ||
13436								converters[ "* " + tmp[ 0 ] ];
13437							if ( conv ) {
13438
13439								// Condense equivalence converters
13440								if ( conv === true ) {
13441									conv = converters[ conv2 ];
13442
13443								// Otherwise, insert the intermediate dataType
13444								} else if ( converters[ conv2 ] !== true ) {
13445									current = tmp[ 0 ];
13446									dataTypes.unshift( tmp[ 1 ] );
13447								}
13448								break;
13449							}
13450						}
13451					}
13452				}
13453
13454				// Apply converter (if not an equivalence)
13455				if ( conv !== true ) {
13456
13457					// Unless errors are allowed to bubble, catch and return them
13458					if ( conv && s.throws ) {
13459						response = conv( response );
13460					} else {
13461						try {
13462							response = conv( response );
13463						} catch ( e ) {
13464							return {
13465								state: "parsererror",
13466								error: conv ? e : "No conversion from " + prev + " to " + current
13467							};
13468						}
13469					}
13470				}
13471			}
13472		}
13473	}
13474
13475	return { state: "success", data: response };
13476}
13477
13478jQuery.extend( {
13479
13480	// Counter for holding the number of active queries
13481	active: 0,
13482
13483	// Last-Modified header cache for next request
13484	lastModified: {},
13485	etag: {},
13486
13487	ajaxSettings: {
13488		url: location.href,
13489		type: "GET",
13490		isLocal: rlocalProtocol.test( location.protocol ),
13491		global: true,
13492		processData: true,
13493		async: true,
13494		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
13495
13496		/*
13497		timeout: 0,
13498		data: null,
13499		dataType: null,
13500		username: null,
13501		password: null,
13502		cache: null,
13503		throws: false,
13504		traditional: false,
13505		headers: {},
13506		*/
13507
13508		accepts: {
13509			"*": allTypes,
13510			text: "text/plain",
13511			html: "text/html",
13512			xml: "application/xml, text/xml",
13513			json: "application/json, text/javascript"
13514		},
13515
13516		contents: {
13517			xml: /\bxml\b/,
13518			html: /\bhtml/,
13519			json: /\bjson\b/
13520		},
13521
13522		responseFields: {
13523			xml: "responseXML",
13524			text: "responseText",
13525			json: "responseJSON"
13526		},
13527
13528		// Data converters
13529		// Keys separate source (or catchall "*") and destination types with a single space
13530		converters: {
13531
13532			// Convert anything to text
13533			"* text": String,
13534
13535			// Text to html (true = no transformation)
13536			"text html": true,
13537
13538			// Evaluate text as a json expression
13539			"text json": JSON.parse,
13540
13541			// Parse text as xml
13542			"text xml": jQuery.parseXML
13543		},
13544
13545		// For options that shouldn't be deep extended:
13546		// you can add your own custom options here if
13547		// and when you create one that shouldn't be
13548		// deep extended (see ajaxExtend)
13549		flatOptions: {
13550			url: true,
13551			context: true
13552		}
13553	},
13554
13555	// Creates a full fledged settings object into target
13556	// with both ajaxSettings and settings fields.
13557	// If target is omitted, writes into ajaxSettings.
13558	ajaxSetup: function( target, settings ) {
13559		return settings ?
13560
13561			// Building a settings object
13562			ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
13563
13564			// Extending ajaxSettings
13565			ajaxExtend( jQuery.ajaxSettings, target );
13566	},
13567
13568	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
13569	ajaxTransport: addToPrefiltersOrTransports( transports ),
13570
13571	// Main method
13572	ajax: function( url, options ) {
13573
13574		// If url is an object, simulate pre-1.5 signature
13575		if ( typeof url === "object" ) {
13576			options = url;
13577			url = undefined;
13578		}
13579
13580		// Force options to be an object
13581		options = options || {};
13582
13583		var transport,
13584
13585			// URL without anti-cache param
13586			cacheURL,
13587
13588			// Response headers
13589			responseHeadersString,
13590			responseHeaders,
13591
13592			// timeout handle
13593			timeoutTimer,
13594
13595			// Url cleanup var
13596			urlAnchor,
13597
13598			// Request state (becomes false upon send and true upon completion)
13599			completed,
13600
13601			// To know if global events are to be dispatched
13602			fireGlobals,
13603
13604			// Loop variable
13605			i,
13606
13607			// uncached part of the url
13608			uncached,
13609
13610			// Create the final options object
13611			s = jQuery.ajaxSetup( {}, options ),
13612
13613			// Callbacks context
13614			callbackContext = s.context || s,
13615
13616			// Context for global events is callbackContext if it is a DOM node or jQuery collection
13617			globalEventContext = s.context &&
13618				( callbackContext.nodeType || callbackContext.jquery ) ?
13619				jQuery( callbackContext ) :
13620				jQuery.event,
13621
13622			// Deferreds
13623			deferred = jQuery.Deferred(),
13624			completeDeferred = jQuery.Callbacks( "once memory" ),
13625
13626			// Status-dependent callbacks
13627			statusCode = s.statusCode || {},
13628
13629			// Headers (they are sent all at once)
13630			requestHeaders = {},
13631			requestHeadersNames = {},
13632
13633			// Default abort message
13634			strAbort = "canceled",
13635
13636			// Fake xhr
13637			jqXHR = {
13638				readyState: 0,
13639
13640				// Builds headers hashtable if needed
13641				getResponseHeader: function( key ) {
13642					var match;
13643					if ( completed ) {
13644						if ( !responseHeaders ) {
13645							responseHeaders = {};
13646							while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
13647								responseHeaders[ match[ 1 ].toLowerCase() + " " ] =
13648									( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] )
13649										.concat( match[ 2 ] );
13650							}
13651						}
13652						match = responseHeaders[ key.toLowerCase() + " " ];
13653					}
13654					return match == null ? null : match.join( ", " );
13655				},
13656
13657				// Raw string
13658				getAllResponseHeaders: function() {
13659					return completed ? responseHeadersString : null;
13660				},
13661
13662				// Caches the header
13663				setRequestHeader: function( name, value ) {
13664					if ( completed == null ) {
13665						name = requestHeadersNames[ name.toLowerCase() ] =
13666							requestHeadersNames[ name.toLowerCase() ] || name;
13667						requestHeaders[ name ] = value;
13668					}
13669					return this;
13670				},
13671
13672				// Overrides response content-type header
13673				overrideMimeType: function( type ) {
13674					if ( completed == null ) {
13675						s.mimeType = type;
13676					}
13677					return this;
13678				},
13679
13680				// Status-dependent callbacks
13681				statusCode: function( map ) {
13682					var code;
13683					if ( map ) {
13684						if ( completed ) {
13685
13686							// Execute the appropriate callbacks
13687							jqXHR.always( map[ jqXHR.status ] );
13688						} else {
13689
13690							// Lazy-add the new callbacks in a way that preserves old ones
13691							for ( code in map ) {
13692								statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
13693							}
13694						}
13695					}
13696					return this;
13697				},
13698
13699				// Cancel the request
13700				abort: function( statusText ) {
13701					var finalText = statusText || strAbort;
13702					if ( transport ) {
13703						transport.abort( finalText );
13704					}
13705					done( 0, finalText );
13706					return this;
13707				}
13708			};
13709
13710		// Attach deferreds
13711		deferred.promise( jqXHR );
13712
13713		// Add protocol if not provided (prefilters might expect it)
13714		// Handle falsy url in the settings object (trac-10093: consistency with old signature)
13715		// We also use the url parameter if available
13716		s.url = ( ( url || s.url || location.href ) + "" )
13717			.replace( rprotocol, location.protocol + "//" );
13718
13719		// Alias method option to type as per ticket trac-12004
13720		s.type = options.method || options.type || s.method || s.type;
13721
13722		// Extract dataTypes list
13723		s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];
13724
13725		// A cross-domain request is in order when the origin doesn't match the current origin.
13726		if ( s.crossDomain == null ) {
13727			urlAnchor = document.createElement( "a" );
13728
13729			// Support: IE <=8 - 11, Edge 12 - 15
13730			// IE throws exception on accessing the href property if url is malformed,
13731			// e.g. http://example.com:80x/
13732			try {
13733				urlAnchor.href = s.url;
13734
13735				// Support: IE <=8 - 11 only
13736				// Anchor's host property isn't correctly set when s.url is relative
13737				urlAnchor.href = urlAnchor.href;
13738				s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
13739					urlAnchor.protocol + "//" + urlAnchor.host;
13740			} catch ( e ) {
13741
13742				// If there is an error parsing the URL, assume it is crossDomain,
13743				// it can be rejected by the transport if it is invalid
13744				s.crossDomain = true;
13745			}
13746		}
13747
13748		// Convert data if not already a string
13749		if ( s.data && s.processData && typeof s.data !== "string" ) {
13750			s.data = jQuery.param( s.data, s.traditional );
13751		}
13752
13753		// Apply prefilters
13754		inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
13755
13756		// If request was aborted inside a prefilter, stop there
13757		if ( completed ) {
13758			return jqXHR;
13759		}
13760
13761		// We can fire global events as of now if asked to
13762		// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)
13763		fireGlobals = jQuery.event && s.global;
13764
13765		// Watch for a new set of requests
13766		if ( fireGlobals && jQuery.active++ === 0 ) {
13767			jQuery.event.trigger( "ajaxStart" );
13768		}
13769
13770		// Uppercase the type
13771		s.type = s.type.toUpperCase();
13772
13773		// Determine if request has content
13774		s.hasContent = !rnoContent.test( s.type );
13775
13776		// Save the URL in case we're toying with the If-Modified-Since
13777		// and/or If-None-Match header later on
13778		// Remove hash to simplify url manipulation
13779		cacheURL = s.url.replace( rhash, "" );
13780
13781		// More options handling for requests with no content
13782		if ( !s.hasContent ) {
13783
13784			// Remember the hash so we can put it back
13785			uncached = s.url.slice( cacheURL.length );
13786
13787			// If data is available and should be processed, append data to url
13788			if ( s.data && ( s.processData || typeof s.data === "string" ) ) {
13789				cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
13790
13791				// trac-9682: remove data so that it's not used in an eventual retry
13792				delete s.data;
13793			}
13794
13795			// Add or update anti-cache param if needed
13796			if ( s.cache === false ) {
13797				cacheURL = cacheURL.replace( rantiCache, "$1" );
13798				uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) +
13799					uncached;
13800			}
13801
13802			// Put hash and anti-cache on the URL that will be requested (gh-1732)
13803			s.url = cacheURL + uncached;
13804
13805		// Change '%20' to '+' if this is encoded form body content (gh-2658)
13806		} else if ( s.data && s.processData &&
13807			( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) {
13808			s.data = s.data.replace( r20, "+" );
13809		}
13810
13811		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
13812		if ( s.ifModified ) {
13813			if ( jQuery.lastModified[ cacheURL ] ) {
13814				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
13815			}
13816			if ( jQuery.etag[ cacheURL ] ) {
13817				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
13818			}
13819		}
13820
13821		// Set the correct header, if data is being sent
13822		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
13823			jqXHR.setRequestHeader( "Content-Type", s.contentType );
13824		}
13825
13826		// Set the Accepts header for the server, depending on the dataType
13827		jqXHR.setRequestHeader(
13828			"Accept",
13829			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
13830				s.accepts[ s.dataTypes[ 0 ] ] +
13831					( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
13832				s.accepts[ "*" ]
13833		);
13834
13835		// Check for headers option
13836		for ( i in s.headers ) {
13837			jqXHR.setRequestHeader( i, s.headers[ i ] );
13838		}
13839
13840		// Allow custom headers/mimetypes and early abort
13841		if ( s.beforeSend &&
13842			( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {
13843
13844			// Abort if not done already and return
13845			return jqXHR.abort();
13846		}
13847
13848		// Aborting is no longer a cancellation
13849		strAbort = "abort";
13850
13851		// Install callbacks on deferreds
13852		completeDeferred.add( s.complete );
13853		jqXHR.done( s.success );
13854		jqXHR.fail( s.error );
13855
13856		// Get transport
13857		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
13858
13859		// If no transport, we auto-abort
13860		if ( !transport ) {
13861			done( -1, "No Transport" );
13862		} else {
13863			jqXHR.readyState = 1;
13864
13865			// Send global event
13866			if ( fireGlobals ) {
13867				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
13868			}
13869
13870			// If request was aborted inside ajaxSend, stop there
13871			if ( completed ) {
13872				return jqXHR;
13873			}
13874
13875			// Timeout
13876			if ( s.async && s.timeout > 0 ) {
13877				timeoutTimer = window.setTimeout( function() {
13878					jqXHR.abort( "timeout" );
13879				}, s.timeout );
13880			}
13881
13882			try {
13883				completed = false;
13884				transport.send( requestHeaders, done );
13885			} catch ( e ) {
13886
13887				// Rethrow post-completion exceptions
13888				if ( completed ) {
13889					throw e;
13890				}
13891
13892				// Propagate others as results
13893				done( -1, e );
13894			}
13895		}
13896
13897		// Callback for when everything is done
13898		function done( status, nativeStatusText, responses, headers ) {
13899			var isSuccess, success, error, response, modified,
13900				statusText = nativeStatusText;
13901
13902			// Ignore repeat invocations
13903			if ( completed ) {
13904				return;
13905			}
13906
13907			completed = true;
13908
13909			// Clear timeout if it exists
13910			if ( timeoutTimer ) {
13911				window.clearTimeout( timeoutTimer );
13912			}
13913
13914			// Dereference transport for early garbage collection
13915			// (no matter how long the jqXHR object will be used)
13916			transport = undefined;
13917
13918			// Cache response headers
13919			responseHeadersString = headers || "";
13920
13921			// Set readyState
13922			jqXHR.readyState = status > 0 ? 4 : 0;
13923
13924			// Determine if successful
13925			isSuccess = status >= 200 && status < 300 || status === 304;
13926
13927			// Get response data
13928			if ( responses ) {
13929				response = ajaxHandleResponses( s, jqXHR, responses );
13930			}
13931
13932			// Use a noop converter for missing script but not if jsonp
13933			if ( !isSuccess &&
13934				jQuery.inArray( "script", s.dataTypes ) > -1 &&
13935				jQuery.inArray( "json", s.dataTypes ) < 0 ) {
13936				s.converters[ "text script" ] = function() {};
13937			}
13938
13939			// Convert no matter what (that way responseXXX fields are always set)
13940			response = ajaxConvert( s, response, jqXHR, isSuccess );
13941
13942			// If successful, handle type chaining
13943			if ( isSuccess ) {
13944
13945				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
13946				if ( s.ifModified ) {
13947					modified = jqXHR.getResponseHeader( "Last-Modified" );
13948					if ( modified ) {
13949						jQuery.lastModified[ cacheURL ] = modified;
13950					}
13951					modified = jqXHR.getResponseHeader( "etag" );
13952					if ( modified ) {
13953						jQuery.etag[ cacheURL ] = modified;
13954					}
13955				}
13956
13957				// if no content
13958				if ( status === 204 || s.type === "HEAD" ) {
13959					statusText = "nocontent";
13960
13961				// if not modified
13962				} else if ( status === 304 ) {
13963					statusText = "notmodified";
13964
13965				// If we have data, let's convert it
13966				} else {
13967					statusText = response.state;
13968					success = response.data;
13969					error = response.error;
13970					isSuccess = !error;
13971				}
13972			} else {
13973
13974				// Extract error from statusText and normalize for non-aborts
13975				error = statusText;
13976				if ( status || !statusText ) {
13977					statusText = "error";
13978					if ( status < 0 ) {
13979						status = 0;
13980					}
13981				}
13982			}
13983
13984			// Set data for the fake xhr object
13985			jqXHR.status = status;
13986			jqXHR.statusText = ( nativeStatusText || statusText ) + "";
13987
13988			// Success/Error
13989			if ( isSuccess ) {
13990				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
13991			} else {
13992				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
13993			}
13994
13995			// Status-dependent callbacks
13996			jqXHR.statusCode( statusCode );
13997			statusCode = undefined;
13998
13999			if ( fireGlobals ) {
14000				globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
14001					[ jqXHR, s, isSuccess ? success : error ] );
14002			}
14003
14004			// Complete
14005			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
14006
14007			if ( fireGlobals ) {
14008				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
14009
14010				// Handle the global AJAX counter
14011				if ( !( --jQuery.active ) ) {
14012					jQuery.event.trigger( "ajaxStop" );
14013				}
14014			}
14015		}
14016
14017		return jqXHR;
14018	},
14019
14020	getJSON: function( url, data, callback ) {
14021		return jQuery.get( url, data, callback, "json" );
14022	},
14023
14024	getScript: function( url, callback ) {
14025		return jQuery.get( url, undefined, callback, "script" );
14026	}
14027} );
14028
14029jQuery.each( [ "get", "post" ], function( _i, method ) {
14030	jQuery[ method ] = function( url, data, callback, type ) {
14031
14032		// Shift arguments if data argument was omitted
14033		if ( isFunction( data ) ) {
14034			type = type || callback;
14035			callback = data;
14036			data = undefined;
14037		}
14038
14039		// The url can be an options object (which then must have .url)
14040		return jQuery.ajax( jQuery.extend( {
14041			url: url,
14042			type: method,
14043			dataType: type,
14044			data: data,
14045			success: callback
14046		}, jQuery.isPlainObject( url ) && url ) );
14047	};
14048} );
14049
14050jQuery.ajaxPrefilter( function( s ) {
14051	var i;
14052	for ( i in s.headers ) {
14053		if ( i.toLowerCase() === "content-type" ) {
14054			s.contentType = s.headers[ i ] || "";
14055		}
14056	}
14057} );
14058
14059
14060jQuery._evalUrl = function( url, options, doc ) {
14061	return jQuery.ajax( {
14062		url: url,
14063
14064		// Make this explicit, since user can override this through ajaxSetup (trac-11264)
14065		type: "GET",
14066		dataType: "script",
14067		cache: true,
14068		async: false,
14069		global: false,
14070
14071		// Only evaluate the response if it is successful (gh-4126)
14072		// dataFilter is not invoked for failure responses, so using it instead
14073		// of the default converter is kludgy but it works.
14074		converters: {
14075			"text script": function() {}
14076		},
14077		dataFilter: function( response ) {
14078			jQuery.globalEval( response, options, doc );
14079		}
14080	} );
14081};
14082
14083
14084jQuery.fn.extend( {
14085	wrapAll: function( html ) {
14086		var wrap;
14087
14088		if ( this[ 0 ] ) {
14089			if ( isFunction( html ) ) {
14090				html = html.call( this[ 0 ] );
14091			}
14092
14093			// The elements to wrap the target around
14094			wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
14095
14096			if ( this[ 0 ].parentNode ) {
14097				wrap.insertBefore( this[ 0 ] );
14098			}
14099
14100			wrap.map( function() {
14101				var elem = this;
14102
14103				while ( elem.firstElementChild ) {
14104					elem = elem.firstElementChild;
14105				}
14106
14107				return elem;
14108			} ).append( this );
14109		}
14110
14111		return this;
14112	},
14113
14114	wrapInner: function( html ) {
14115		if ( isFunction( html ) ) {
14116			return this.each( function( i ) {
14117				jQuery( this ).wrapInner( html.call( this, i ) );
14118			} );
14119		}
14120
14121		return this.each( function() {
14122			var self = jQuery( this ),
14123				contents = self.contents();
14124
14125			if ( contents.length ) {
14126				contents.wrapAll( html );
14127
14128			} else {
14129				self.append( html );
14130			}
14131		} );
14132	},
14133
14134	wrap: function( html ) {
14135		var htmlIsFunction = isFunction( html );
14136
14137		return this.each( function( i ) {
14138			jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );
14139		} );
14140	},
14141
14142	unwrap: function( selector ) {
14143		this.parent( selector ).not( "body" ).each( function() {
14144			jQuery( this ).replaceWith( this.childNodes );
14145		} );
14146		return this;
14147	}
14148} );
14149
14150
14151jQuery.expr.pseudos.hidden = function( elem ) {
14152	return !jQuery.expr.pseudos.visible( elem );
14153};
14154jQuery.expr.pseudos.visible = function( elem ) {
14155	return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
14156};
14157
14158
14159
14160
14161jQuery.ajaxSettings.xhr = function() {
14162	try {
14163		return new window.XMLHttpRequest();
14164	} catch ( e ) {}
14165};
14166
14167var xhrSuccessStatus = {
14168
14169		// File protocol always yields status code 0, assume 200
14170		0: 200,
14171
14172		// Support: IE <=9 only
14173		// trac-1450: sometimes IE returns 1223 when it should be 204
14174		1223: 204
14175	},
14176	xhrSupported = jQuery.ajaxSettings.xhr();
14177
14178support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
14179support.ajax = xhrSupported = !!xhrSupported;
14180
14181jQuery.ajaxTransport( function( options ) {
14182	var callback, errorCallback;
14183
14184	// Cross domain only allowed if supported through XMLHttpRequest
14185	if ( support.cors || xhrSupported && !options.crossDomain ) {
14186		return {
14187			send: function( headers, complete ) {
14188				var i,
14189					xhr = options.xhr();
14190
14191				xhr.open(
14192					options.type,
14193					options.url,
14194					options.async,
14195					options.username,
14196					options.password
14197				);
14198
14199				// Apply custom fields if provided
14200				if ( options.xhrFields ) {
14201					for ( i in options.xhrFields ) {
14202						xhr[ i ] = options.xhrFields[ i ];
14203					}
14204				}
14205
14206				// Override mime type if needed
14207				if ( options.mimeType && xhr.overrideMimeType ) {
14208					xhr.overrideMimeType( options.mimeType );
14209				}
14210
14211				// X-Requested-With header
14212				// For cross-domain requests, seeing as conditions for a preflight are
14213				// akin to a jigsaw puzzle, we simply never set it to be sure.
14214				// (it can always be set on a per-request basis or even using ajaxSetup)
14215				// For same-domain requests, won't change header if already provided.
14216				if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
14217					headers[ "X-Requested-With" ] = "XMLHttpRequest";
14218				}
14219
14220				// Set headers
14221				for ( i in headers ) {
14222					xhr.setRequestHeader( i, headers[ i ] );
14223				}
14224
14225				// Callback
14226				callback = function( type ) {
14227					return function() {
14228						if ( callback ) {
14229							callback = errorCallback = xhr.onload =
14230								xhr.onerror = xhr.onabort = xhr.ontimeout =
14231									xhr.onreadystatechange = null;
14232
14233							if ( type === "abort" ) {
14234								xhr.abort();
14235							} else if ( type === "error" ) {
14236
14237								// Support: IE <=9 only
14238								// On a manual native abort, IE9 throws
14239								// errors on any property access that is not readyState
14240								if ( typeof xhr.status !== "number" ) {
14241									complete( 0, "error" );
14242								} else {
14243									complete(
14244
14245										// File: protocol always yields status 0; see trac-8605, trac-14207
14246										xhr.status,
14247										xhr.statusText
14248									);
14249								}
14250							} else {
14251								complete(
14252									xhrSuccessStatus[ xhr.status ] || xhr.status,
14253									xhr.statusText,
14254
14255									// Support: IE <=9 only
14256									// IE9 has no XHR2 but throws on binary (trac-11426)
14257									// For XHR2 non-text, let the caller handle it (gh-2498)
14258									( xhr.responseType || "text" ) !== "text"  ||
14259									typeof xhr.responseText !== "string" ?
14260										{ binary: xhr.response } :
14261										{ text: xhr.responseText },
14262									xhr.getAllResponseHeaders()
14263								);
14264							}
14265						}
14266					};
14267				};
14268
14269				// Listen to events
14270				xhr.onload = callback();
14271				errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" );
14272
14273				// Support: IE 9 only
14274				// Use onreadystatechange to replace onabort
14275				// to handle uncaught aborts
14276				if ( xhr.onabort !== undefined ) {
14277					xhr.onabort = errorCallback;
14278				} else {
14279					xhr.onreadystatechange = function() {
14280
14281						// Check readyState before timeout as it changes
14282						if ( xhr.readyState === 4 ) {
14283
14284							// Allow onerror to be called first,
14285							// but that will not handle a native abort
14286							// Also, save errorCallback to a variable
14287							// as xhr.onerror cannot be accessed
14288							window.setTimeout( function() {
14289								if ( callback ) {
14290									errorCallback();
14291								}
14292							} );
14293						}
14294					};
14295				}
14296
14297				// Create the abort callback
14298				callback = callback( "abort" );
14299
14300				try {
14301
14302					// Do send the request (this may raise an exception)
14303					xhr.send( options.hasContent && options.data || null );
14304				} catch ( e ) {
14305
14306					// trac-14683: Only rethrow if this hasn't been notified as an error yet
14307					if ( callback ) {
14308						throw e;
14309					}
14310				}
14311			},
14312
14313			abort: function() {
14314				if ( callback ) {
14315					callback();
14316				}
14317			}
14318		};
14319	}
14320} );
14321
14322
14323
14324
14325// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
14326jQuery.ajaxPrefilter( function( s ) {
14327	if ( s.crossDomain ) {
14328		s.contents.script = false;
14329	}
14330} );
14331
14332// Install script dataType
14333jQuery.ajaxSetup( {
14334	accepts: {
14335		script: "text/javascript, application/javascript, " +
14336			"application/ecmascript, application/x-ecmascript"
14337	},
14338	contents: {
14339		script: /\b(?:java|ecma)script\b/
14340	},
14341	converters: {
14342		"text script": function( text ) {
14343			jQuery.globalEval( text );
14344			return text;
14345		}
14346	}
14347} );
14348
14349// Handle cache's special case and crossDomain
14350jQuery.ajaxPrefilter( "script", function( s ) {
14351	if ( s.cache === undefined ) {
14352		s.cache = false;
14353	}
14354	if ( s.crossDomain ) {
14355		s.type = "GET";
14356	}
14357} );
14358
14359// Bind script tag hack transport
14360jQuery.ajaxTransport( "script", function( s ) {
14361
14362	// This transport only deals with cross domain or forced-by-attrs requests
14363	if ( s.crossDomain || s.scriptAttrs ) {
14364		var script, callback;
14365		return {
14366			send: function( _, complete ) {
14367				script = jQuery( "<script>" )
14368					.attr( s.scriptAttrs || {} )
14369					.prop( { charset: s.scriptCharset, src: s.url } )
14370					.on( "load error", callback = function( evt ) {
14371						script.remove();
14372						callback = null;
14373						if ( evt ) {
14374							complete( evt.type === "error" ? 404 : 200, evt.type );
14375						}
14376					} );
14377
14378				// Use native DOM manipulation to avoid our domManip AJAX trickery
14379				document.head.appendChild( script[ 0 ] );
14380			},
14381			abort: function() {
14382				if ( callback ) {
14383					callback();
14384				}
14385			}
14386		};
14387	}
14388} );
14389
14390
14391
14392
14393var oldCallbacks = [],
14394	rjsonp = /(=)\?(?=&|$)|\?\?/;
14395
14396// Default jsonp settings
14397jQuery.ajaxSetup( {
14398	jsonp: "callback",
14399	jsonpCallback: function() {
14400		var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce.guid++ ) );
14401		this[ callback ] = true;
14402		return callback;
14403	}
14404} );
14405
14406// Detect, normalize options and install callbacks for jsonp requests
14407jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
14408
14409	var callbackName, overwritten, responseContainer,
14410		jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
14411			"url" :
14412			typeof s.data === "string" &&
14413				( s.contentType || "" )
14414					.indexOf( "application/x-www-form-urlencoded" ) === 0 &&
14415				rjsonp.test( s.data ) && "data"
14416		);
14417
14418	// Handle iff the expected data type is "jsonp" or we have a parameter to set
14419	if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
14420
14421		// Get callback name, remembering preexisting value associated with it
14422		callbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?
14423			s.jsonpCallback() :
14424			s.jsonpCallback;
14425
14426		// Insert callback into url or form data
14427		if ( jsonProp ) {
14428			s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
14429		} else if ( s.jsonp !== false ) {
14430			s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
14431		}
14432
14433		// Use data converter to retrieve json after script execution
14434		s.converters[ "script json" ] = function() {
14435			if ( !responseContainer ) {
14436				jQuery.error( callbackName + " was not called" );
14437			}
14438			return responseContainer[ 0 ];
14439		};
14440
14441		// Force json dataType
14442		s.dataTypes[ 0 ] = "json";
14443
14444		// Install callback
14445		overwritten = window[ callbackName ];
14446		window[ callbackName ] = function() {
14447			responseContainer = arguments;
14448		};
14449
14450		// Clean-up function (fires after converters)
14451		jqXHR.always( function() {
14452
14453			// If previous value didn't exist - remove it
14454			if ( overwritten === undefined ) {
14455				jQuery( window ).removeProp( callbackName );
14456
14457			// Otherwise restore preexisting value
14458			} else {
14459				window[ callbackName ] = overwritten;
14460			}
14461
14462			// Save back as free
14463			if ( s[ callbackName ] ) {
14464
14465				// Make sure that re-using the options doesn't screw things around
14466				s.jsonpCallback = originalSettings.jsonpCallback;
14467
14468				// Save the callback name for future use
14469				oldCallbacks.push( callbackName );
14470			}
14471
14472			// Call if it was a function and we have a response
14473			if ( responseContainer && isFunction( overwritten ) ) {
14474				overwritten( responseContainer[ 0 ] );
14475			}
14476
14477			responseContainer = overwritten = undefined;
14478		} );
14479
14480		// Delegate to script
14481		return "script";
14482	}
14483} );
14484
14485
14486
14487
14488// Support: Safari 8 only
14489// In Safari 8 documents created via document.implementation.createHTMLDocument
14490// collapse sibling forms: the second one becomes a child of the first one.
14491// Because of that, this security measure has to be disabled in Safari 8.
14492// https://bugs.webkit.org/show_bug.cgi?id=137337
14493support.createHTMLDocument = ( function() {
14494	var body = document.implementation.createHTMLDocument( "" ).body;
14495	body.innerHTML = "<form></form><form></form>";
14496	return body.childNodes.length === 2;
14497} )();
14498
14499
14500// Argument "data" should be string of html
14501// context (optional): If specified, the fragment will be created in this context,
14502// defaults to document
14503// keepScripts (optional): If true, will include scripts passed in the html string
14504jQuery.parseHTML = function( data, context, keepScripts ) {
14505	if ( typeof data !== "string" ) {
14506		return [];
14507	}
14508	if ( typeof context === "boolean" ) {
14509		keepScripts = context;
14510		context = false;
14511	}
14512
14513	var base, parsed, scripts;
14514
14515	if ( !context ) {
14516
14517		// Stop scripts or inline event handlers from being executed immediately
14518		// by using document.implementation
14519		if ( support.createHTMLDocument ) {
14520			context = document.implementation.createHTMLDocument( "" );
14521
14522			// Set the base href for the created document
14523			// so any parsed elements with URLs
14524			// are based on the document's URL (gh-2965)
14525			base = context.createElement( "base" );
14526			base.href = document.location.href;
14527			context.head.appendChild( base );
14528		} else {
14529			context = document;
14530		}
14531	}
14532
14533	parsed = rsingleTag.exec( data );
14534	scripts = !keepScripts && [];
14535
14536	// Single tag
14537	if ( parsed ) {
14538		return [ context.createElement( parsed[ 1 ] ) ];
14539	}
14540
14541	parsed = buildFragment( [ data ], context, scripts );
14542
14543	if ( scripts && scripts.length ) {
14544		jQuery( scripts ).remove();
14545	}
14546
14547	return jQuery.merge( [], parsed.childNodes );
14548};
14549
14550
14551/**
14552 * Load a url into a page
14553 */
14554jQuery.fn.load = function( url, params, callback ) {
14555	var selector, type, response,
14556		self = this,
14557		off = url.indexOf( " " );
14558
14559	if ( off > -1 ) {
14560		selector = stripAndCollapse( url.slice( off ) );
14561		url = url.slice( 0, off );
14562	}
14563
14564	// If it's a function
14565	if ( isFunction( params ) ) {
14566
14567		// We assume that it's the callback
14568		callback = params;
14569		params = undefined;
14570
14571	// Otherwise, build a param string
14572	} else if ( params && typeof params === "object" ) {
14573		type = "POST";
14574	}
14575
14576	// If we have elements to modify, make the request
14577	if ( self.length > 0 ) {
14578		jQuery.ajax( {
14579			url: url,
14580
14581			// If "type" variable is undefined, then "GET" method will be used.
14582			// Make value of this field explicit since
14583			// user can override it through ajaxSetup method
14584			type: type || "GET",
14585			dataType: "html",
14586			data: params
14587		} ).done( function( responseText ) {
14588
14589			// Save response for use in complete callback
14590			response = arguments;
14591
14592			self.html( selector ?
14593
14594				// If a selector was specified, locate the right elements in a dummy div
14595				// Exclude scripts to avoid IE 'Permission Denied' errors
14596				jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
14597
14598				// Otherwise use the full result
14599				responseText );
14600
14601		// If the request succeeds, this function gets "data", "status", "jqXHR"
14602		// but they are ignored because response was set above.
14603		// If it fails, this function gets "jqXHR", "status", "error"
14604		} ).always( callback && function( jqXHR, status ) {
14605			self.each( function() {
14606				callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
14607			} );
14608		} );
14609	}
14610
14611	return this;
14612};
14613
14614
14615
14616
14617jQuery.expr.pseudos.animated = function( elem ) {
14618	return jQuery.grep( jQuery.timers, function( fn ) {
14619		return elem === fn.elem;
14620	} ).length;
14621};
14622
14623
14624
14625
14626jQuery.offset = {
14627	setOffset: function( elem, options, i ) {
14628		var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
14629			position = jQuery.css( elem, "position" ),
14630			curElem = jQuery( elem ),
14631			props = {};
14632
14633		// Set position first, in-case top/left are set even on static elem
14634		if ( position === "static" ) {
14635			elem.style.position = "relative";
14636		}
14637
14638		curOffset = curElem.offset();
14639		curCSSTop = jQuery.css( elem, "top" );
14640		curCSSLeft = jQuery.css( elem, "left" );
14641		calculatePosition = ( position === "absolute" || position === "fixed" ) &&
14642			( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
14643
14644		// Need to be able to calculate position if either
14645		// top or left is auto and position is either absolute or fixed
14646		if ( calculatePosition ) {
14647			curPosition = curElem.position();
14648			curTop = curPosition.top;
14649			curLeft = curPosition.left;
14650
14651		} else {
14652			curTop = parseFloat( curCSSTop ) || 0;
14653			curLeft = parseFloat( curCSSLeft ) || 0;
14654		}
14655
14656		if ( isFunction( options ) ) {
14657
14658			// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
14659			options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
14660		}
14661
14662		if ( options.top != null ) {
14663			props.top = ( options.top - curOffset.top ) + curTop;
14664		}
14665		if ( options.left != null ) {
14666			props.left = ( options.left - curOffset.left ) + curLeft;
14667		}
14668
14669		if ( "using" in options ) {
14670			options.using.call( elem, props );
14671
14672		} else {
14673			curElem.css( props );
14674		}
14675	}
14676};
14677
14678jQuery.fn.extend( {
14679
14680	// offset() relates an element's border box to the document origin
14681	offset: function( options ) {
14682
14683		// Preserve chaining for setter
14684		if ( arguments.length ) {
14685			return options === undefined ?
14686				this :
14687				this.each( function( i ) {
14688					jQuery.offset.setOffset( this, options, i );
14689				} );
14690		}
14691
14692		var rect, win,
14693			elem = this[ 0 ];
14694
14695		if ( !elem ) {
14696			return;
14697		}
14698
14699		// Return zeros for disconnected and hidden (display: none) elements (gh-2310)
14700		// Support: IE <=11 only
14701		// Running getBoundingClientRect on a
14702		// disconnected node in IE throws an error
14703		if ( !elem.getClientRects().length ) {
14704			return { top: 0, left: 0 };
14705		}
14706
14707		// Get document-relative position by adding viewport scroll to viewport-relative gBCR
14708		rect = elem.getBoundingClientRect();
14709		win = elem.ownerDocument.defaultView;
14710		return {
14711			top: rect.top + win.pageYOffset,
14712			left: rect.left + win.pageXOffset
14713		};
14714	},
14715
14716	// position() relates an element's margin box to its offset parent's padding box
14717	// This corresponds to the behavior of CSS absolute positioning
14718	position: function() {
14719		if ( !this[ 0 ] ) {
14720			return;
14721		}
14722
14723		var offsetParent, offset, doc,
14724			elem = this[ 0 ],
14725			parentOffset = { top: 0, left: 0 };
14726
14727		// position:fixed elements are offset from the viewport, which itself always has zero offset
14728		if ( jQuery.css( elem, "position" ) === "fixed" ) {
14729
14730			// Assume position:fixed implies availability of getBoundingClientRect
14731			offset = elem.getBoundingClientRect();
14732
14733		} else {
14734			offset = this.offset();
14735
14736			// Account for the *real* offset parent, which can be the document or its root element
14737			// when a statically positioned element is identified
14738			doc = elem.ownerDocument;
14739			offsetParent = elem.offsetParent || doc.documentElement;
14740			while ( offsetParent &&
14741				( offsetParent === doc.body || offsetParent === doc.documentElement ) &&
14742				jQuery.css( offsetParent, "position" ) === "static" ) {
14743
14744				offsetParent = offsetParent.parentNode;
14745			}
14746			if ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {
14747
14748				// Incorporate borders into its offset, since they are outside its content origin
14749				parentOffset = jQuery( offsetParent ).offset();
14750				parentOffset.top += jQuery.css( offsetParent, "borderTopWidth", true );
14751				parentOffset.left += jQuery.css( offsetParent, "borderLeftWidth", true );
14752			}
14753		}
14754
14755		// Subtract parent offsets and element margins
14756		return {
14757			top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
14758			left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
14759		};
14760	},
14761
14762	// This method will return documentElement in the following cases:
14763	// 1) For the element inside the iframe without offsetParent, this method will return
14764	//    documentElement of the parent window
14765	// 2) For the hidden or detached element
14766	// 3) For body or html element, i.e. in case of the html node - it will return itself
14767	//
14768	// but those exceptions were never presented as a real life use-cases
14769	// and might be considered as more preferable results.
14770	//
14771	// This logic, however, is not guaranteed and can change at any point in the future
14772	offsetParent: function() {
14773		return this.map( function() {
14774			var offsetParent = this.offsetParent;
14775
14776			while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
14777				offsetParent = offsetParent.offsetParent;
14778			}
14779
14780			return offsetParent || documentElement;
14781		} );
14782	}
14783} );
14784
14785// Create scrollLeft and scrollTop methods
14786jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
14787	var top = "pageYOffset" === prop;
14788
14789	jQuery.fn[ method ] = function( val ) {
14790		return access( this, function( elem, method, val ) {
14791
14792			// Coalesce documents and windows
14793			var win;
14794			if ( isWindow( elem ) ) {
14795				win = elem;
14796			} else if ( elem.nodeType === 9 ) {
14797				win = elem.defaultView;
14798			}
14799
14800			if ( val === undefined ) {
14801				return win ? win[ prop ] : elem[ method ];
14802			}
14803
14804			if ( win ) {
14805				win.scrollTo(
14806					!top ? val : win.pageXOffset,
14807					top ? val : win.pageYOffset
14808				);
14809
14810			} else {
14811				elem[ method ] = val;
14812			}
14813		}, method, val, arguments.length );
14814	};
14815} );
14816
14817// Support: Safari <=7 - 9.1, Chrome <=37 - 49
14818// Add the top/left cssHooks using jQuery.fn.position
14819// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
14820// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
14821// getComputedStyle returns percent when specified for top/left/bottom/right;
14822// rather than make the css module depend on the offset module, just check for it here
14823jQuery.each( [ "top", "left" ], function( _i, prop ) {
14824	jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
14825		function( elem, computed ) {
14826			if ( computed ) {
14827				computed = curCSS( elem, prop );
14828
14829				// If curCSS returns percentage, fallback to offset
14830				return rnumnonpx.test( computed ) ?
14831					jQuery( elem ).position()[ prop ] + "px" :
14832					computed;
14833			}
14834		}
14835	);
14836} );
14837
14838
14839// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
14840jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
14841	jQuery.each( {
14842		padding: "inner" + name,
14843		content: type,
14844		"": "outer" + name
14845	}, function( defaultExtra, funcName ) {
14846
14847		// Margin is only for outerHeight, outerWidth
14848		jQuery.fn[ funcName ] = function( margin, value ) {
14849			var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
14850				extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
14851
14852			return access( this, function( elem, type, value ) {
14853				var doc;
14854
14855				if ( isWindow( elem ) ) {
14856
14857					// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
14858					return funcName.indexOf( "outer" ) === 0 ?
14859						elem[ "inner" + name ] :
14860						elem.document.documentElement[ "client" + name ];
14861				}
14862
14863				// Get document width or height
14864				if ( elem.nodeType === 9 ) {
14865					doc = elem.documentElement;
14866
14867					// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
14868					// whichever is greatest
14869					return Math.max(
14870						elem.body[ "scroll" + name ], doc[ "scroll" + name ],
14871						elem.body[ "offset" + name ], doc[ "offset" + name ],
14872						doc[ "client" + name ]
14873					);
14874				}
14875
14876				return value === undefined ?
14877
14878					// Get width or height on the element, requesting but not forcing parseFloat
14879					jQuery.css( elem, type, extra ) :
14880
14881					// Set width or height on the element
14882					jQuery.style( elem, type, value, extra );
14883			}, type, chainable ? margin : undefined, chainable );
14884		};
14885	} );
14886} );
14887
14888
14889jQuery.each( [
14890	"ajaxStart",
14891	"ajaxStop",
14892	"ajaxComplete",
14893	"ajaxError",
14894	"ajaxSuccess",
14895	"ajaxSend"
14896], function( _i, type ) {
14897	jQuery.fn[ type ] = function( fn ) {
14898		return this.on( type, fn );
14899	};
14900} );
14901
14902
14903
14904
14905jQuery.fn.extend( {
14906
14907	bind: function( types, data, fn ) {
14908		return this.on( types, null, data, fn );
14909	},
14910	unbind: function( types, fn ) {
14911		return this.off( types, null, fn );
14912	},
14913
14914	delegate: function( selector, types, data, fn ) {
14915		return this.on( types, selector, data, fn );
14916	},
14917	undelegate: function( selector, types, fn ) {
14918
14919		// ( namespace ) or ( selector, types [, fn] )
14920		return arguments.length === 1 ?
14921			this.off( selector, "**" ) :
14922			this.off( types, selector || "**", fn );
14923	},
14924
14925	hover: function( fnOver, fnOut ) {
14926		return this
14927			.on( "mouseenter", fnOver )
14928			.on( "mouseleave", fnOut || fnOver );
14929	}
14930} );
14931
14932jQuery.each(
14933	( "blur focus focusin focusout resize scroll click dblclick " +
14934	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
14935	"change select submit keydown keypress keyup contextmenu" ).split( " " ),
14936	function( _i, name ) {
14937
14938		// Handle event binding
14939		jQuery.fn[ name ] = function( data, fn ) {
14940			return arguments.length > 0 ?
14941				this.on( name, null, data, fn ) :
14942				this.trigger( name );
14943		};
14944	}
14945);
14946
14947
14948
14949
14950// Support: Android <=4.0 only
14951// Make sure we trim BOM and NBSP
14952// Require that the "whitespace run" starts from a non-whitespace
14953// to avoid O(N^2) behavior when the engine would try matching "\s+$" at each space position.
14954var rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;
14955
14956// Bind a function to a context, optionally partially applying any
14957// arguments.
14958// jQuery.proxy is deprecated to promote standards (specifically Function#bind)
14959// However, it is not slated for removal any time soon
14960jQuery.proxy = function( fn, context ) {
14961	var tmp, args, proxy;
14962
14963	if ( typeof context === "string" ) {
14964		tmp = fn[ context ];
14965		context = fn;
14966		fn = tmp;
14967	}
14968
14969	// Quick check to determine if target is callable, in the spec
14970	// this throws a TypeError, but we will just return undefined.
14971	if ( !isFunction( fn ) ) {
14972		return undefined;
14973	}
14974
14975	// Simulated bind
14976	args = slice.call( arguments, 2 );
14977	proxy = function() {
14978		return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
14979	};
14980
14981	// Set the guid of unique handler to the same of original handler, so it can be removed
14982	proxy.guid = fn.guid = fn.guid || jQuery.guid++;
14983
14984	return proxy;
14985};
14986
14987jQuery.holdReady = function( hold ) {
14988	if ( hold ) {
14989		jQuery.readyWait++;
14990	} else {
14991		jQuery.ready( true );
14992	}
14993};
14994jQuery.isArray = Array.isArray;
14995jQuery.parseJSON = JSON.parse;
14996jQuery.nodeName = nodeName;
14997jQuery.isFunction = isFunction;
14998jQuery.isWindow = isWindow;
14999jQuery.camelCase = camelCase;
15000jQuery.type = toType;
15001
15002jQuery.now = Date.now;
15003
15004jQuery.isNumeric = function( obj ) {
15005
15006	// As of jQuery 3.0, isNumeric is limited to
15007	// strings and numbers (primitives or objects)
15008	// that can be coerced to finite numbers (gh-2662)
15009	var type = jQuery.type( obj );
15010	return ( type === "number" || type === "string" ) &&
15011
15012		// parseFloat NaNs numeric-cast false positives ("")
15013		// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
15014		// subtraction forces infinities to NaN
15015		!isNaN( obj - parseFloat( obj ) );
15016};
15017
15018jQuery.trim = function( text ) {
15019	return text == null ?
15020		"" :
15021		( text + "" ).replace( rtrim, "$1" );
15022};
15023
15024
15025
15026// Register as a named AMD module, since jQuery can be concatenated with other
15027// files that may use define, but not via a proper concatenation script that
15028// understands anonymous AMD modules. A named AMD is safest and most robust
15029// way to register. Lowercase jquery is used because AMD module names are
15030// derived from file names, and jQuery is normally delivered in a lowercase
15031// file name. Do this after creating the global so that if an AMD module wants
15032// to call noConflict to hide this version of jQuery, it will work.
15033
15034// Note that for maximum portability, libraries that are not jQuery should
15035// declare themselves as anonymous modules, and avoid setting a global if an
15036// AMD loader is present. jQuery is a special case. For more information, see
15037// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
15038
15039if ( true ) {
15040	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function() {
15041		return jQuery;
15042	}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
15043		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
15044}
15045
15046
15047
15048
15049var
15050
15051	// Map over jQuery in case of overwrite
15052	_jQuery = window.jQuery,
15053
15054	// Map over the $ in case of overwrite
15055	_$ = window.$;
15056
15057jQuery.noConflict = function( deep ) {
15058	if ( window.$ === jQuery ) {
15059		window.$ = _$;
15060	}
15061
15062	if ( deep && window.jQuery === jQuery ) {
15063		window.jQuery = _jQuery;
15064	}
15065
15066	return jQuery;
15067};
15068
15069// Expose jQuery and $ identifiers, even in AMD
15070// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)
15071// and CommonJS for browser emulators (trac-13566)
15072if ( typeof noGlobal === "undefined" ) {
15073	window.jQuery = window.$ = jQuery;
15074}
15075
15076
15077
15078
15079return jQuery;
15080} );
15081
15082
15083/***/ }),
15084
15085/***/ "./node_modules/moment/locale sync recursive ^\\.\\/.*$":
15086/*!***************************************************!*\
15087  !*** ./node_modules/moment/locale/ sync ^\.\/.*$ ***!
15088  \***************************************************/
15089/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
15090
15091var map = {
15092	"./af": "./node_modules/moment/locale/af.js",
15093	"./af.js": "./node_modules/moment/locale/af.js",
15094	"./ar": "./node_modules/moment/locale/ar.js",
15095	"./ar-dz": "./node_modules/moment/locale/ar-dz.js",
15096	"./ar-dz.js": "./node_modules/moment/locale/ar-dz.js",
15097	"./ar-kw": "./node_modules/moment/locale/ar-kw.js",
15098	"./ar-kw.js": "./node_modules/moment/locale/ar-kw.js",
15099	"./ar-ly": "./node_modules/moment/locale/ar-ly.js",
15100	"./ar-ly.js": "./node_modules/moment/locale/ar-ly.js",
15101	"./ar-ma": "./node_modules/moment/locale/ar-ma.js",
15102	"./ar-ma.js": "./node_modules/moment/locale/ar-ma.js",
15103	"./ar-ps": "./node_modules/moment/locale/ar-ps.js",
15104	"./ar-ps.js": "./node_modules/moment/locale/ar-ps.js",
15105	"./ar-sa": "./node_modules/moment/locale/ar-sa.js",
15106	"./ar-sa.js": "./node_modules/moment/locale/ar-sa.js",
15107	"./ar-tn": "./node_modules/moment/locale/ar-tn.js",
15108	"./ar-tn.js": "./node_modules/moment/locale/ar-tn.js",
15109	"./ar.js": "./node_modules/moment/locale/ar.js",
15110	"./az": "./node_modules/moment/locale/az.js",
15111	"./az.js": "./node_modules/moment/locale/az.js",
15112	"./be": "./node_modules/moment/locale/be.js",
15113	"./be.js": "./node_modules/moment/locale/be.js",
15114	"./bg": "./node_modules/moment/locale/bg.js",
15115	"./bg.js": "./node_modules/moment/locale/bg.js",
15116	"./bm": "./node_modules/moment/locale/bm.js",
15117	"./bm.js": "./node_modules/moment/locale/bm.js",
15118	"./bn": "./node_modules/moment/locale/bn.js",
15119	"./bn-bd": "./node_modules/moment/locale/bn-bd.js",
15120	"./bn-bd.js": "./node_modules/moment/locale/bn-bd.js",
15121	"./bn.js": "./node_modules/moment/locale/bn.js",
15122	"./bo": "./node_modules/moment/locale/bo.js",
15123	"./bo.js": "./node_modules/moment/locale/bo.js",
15124	"./br": "./node_modules/moment/locale/br.js",
15125	"./br.js": "./node_modules/moment/locale/br.js",
15126	"./bs": "./node_modules/moment/locale/bs.js",
15127	"./bs.js": "./node_modules/moment/locale/bs.js",
15128	"./ca": "./node_modules/moment/locale/ca.js",
15129	"./ca.js": "./node_modules/moment/locale/ca.js",
15130	"./cs": "./node_modules/moment/locale/cs.js",
15131	"./cs.js": "./node_modules/moment/locale/cs.js",
15132	"./cv": "./node_modules/moment/locale/cv.js",
15133	"./cv.js": "./node_modules/moment/locale/cv.js",
15134	"./cy": "./node_modules/moment/locale/cy.js",
15135	"./cy.js": "./node_modules/moment/locale/cy.js",
15136	"./da": "./node_modules/moment/locale/da.js",
15137	"./da.js": "./node_modules/moment/locale/da.js",
15138	"./de": "./node_modules/moment/locale/de.js",
15139	"./de-at": "./node_modules/moment/locale/de-at.js",
15140	"./de-at.js": "./node_modules/moment/locale/de-at.js",
15141	"./de-ch": "./node_modules/moment/locale/de-ch.js",
15142	"./de-ch.js": "./node_modules/moment/locale/de-ch.js",
15143	"./de.js": "./node_modules/moment/locale/de.js",
15144	"./dv": "./node_modules/moment/locale/dv.js",
15145	"./dv.js": "./node_modules/moment/locale/dv.js",
15146	"./el": "./node_modules/moment/locale/el.js",
15147	"./el.js": "./node_modules/moment/locale/el.js",
15148	"./en-au": "./node_modules/moment/locale/en-au.js",
15149	"./en-au.js": "./node_modules/moment/locale/en-au.js",
15150	"./en-ca": "./node_modules/moment/locale/en-ca.js",
15151	"./en-ca.js": "./node_modules/moment/locale/en-ca.js",
15152	"./en-gb": "./node_modules/moment/locale/en-gb.js",
15153	"./en-gb.js": "./node_modules/moment/locale/en-gb.js",
15154	"./en-ie": "./node_modules/moment/locale/en-ie.js",
15155	"./en-ie.js": "./node_modules/moment/locale/en-ie.js",
15156	"./en-il": "./node_modules/moment/locale/en-il.js",
15157	"./en-il.js": "./node_modules/moment/locale/en-il.js",
15158	"./en-in": "./node_modules/moment/locale/en-in.js",
15159	"./en-in.js": "./node_modules/moment/locale/en-in.js",
15160	"./en-nz": "./node_modules/moment/locale/en-nz.js",
15161	"./en-nz.js": "./node_modules/moment/locale/en-nz.js",
15162	"./en-sg": "./node_modules/moment/locale/en-sg.js",
15163	"./en-sg.js": "./node_modules/moment/locale/en-sg.js",
15164	"./eo": "./node_modules/moment/locale/eo.js",
15165	"./eo.js": "./node_modules/moment/locale/eo.js",
15166	"./es": "./node_modules/moment/locale/es.js",
15167	"./es-do": "./node_modules/moment/locale/es-do.js",
15168	"./es-do.js": "./node_modules/moment/locale/es-do.js",
15169	"./es-mx": "./node_modules/moment/locale/es-mx.js",
15170	"./es-mx.js": "./node_modules/moment/locale/es-mx.js",
15171	"./es-us": "./node_modules/moment/locale/es-us.js",
15172	"./es-us.js": "./node_modules/moment/locale/es-us.js",
15173	"./es.js": "./node_modules/moment/locale/es.js",
15174	"./et": "./node_modules/moment/locale/et.js",
15175	"./et.js": "./node_modules/moment/locale/et.js",
15176	"./eu": "./node_modules/moment/locale/eu.js",
15177	"./eu.js": "./node_modules/moment/locale/eu.js",
15178	"./fa": "./node_modules/moment/locale/fa.js",
15179	"./fa.js": "./node_modules/moment/locale/fa.js",
15180	"./fi": "./node_modules/moment/locale/fi.js",
15181	"./fi.js": "./node_modules/moment/locale/fi.js",
15182	"./fil": "./node_modules/moment/locale/fil.js",
15183	"./fil.js": "./node_modules/moment/locale/fil.js",
15184	"./fo": "./node_modules/moment/locale/fo.js",
15185	"./fo.js": "./node_modules/moment/locale/fo.js",
15186	"./fr": "./node_modules/moment/locale/fr.js",
15187	"./fr-ca": "./node_modules/moment/locale/fr-ca.js",
15188	"./fr-ca.js": "./node_modules/moment/locale/fr-ca.js",
15189	"./fr-ch": "./node_modules/moment/locale/fr-ch.js",
15190	"./fr-ch.js": "./node_modules/moment/locale/fr-ch.js",
15191	"./fr.js": "./node_modules/moment/locale/fr.js",
15192	"./fy": "./node_modules/moment/locale/fy.js",
15193	"./fy.js": "./node_modules/moment/locale/fy.js",
15194	"./ga": "./node_modules/moment/locale/ga.js",
15195	"./ga.js": "./node_modules/moment/locale/ga.js",
15196	"./gd": "./node_modules/moment/locale/gd.js",
15197	"./gd.js": "./node_modules/moment/locale/gd.js",
15198	"./gl": "./node_modules/moment/locale/gl.js",
15199	"./gl.js": "./node_modules/moment/locale/gl.js",
15200	"./gom-deva": "./node_modules/moment/locale/gom-deva.js",
15201	"./gom-deva.js": "./node_modules/moment/locale/gom-deva.js",
15202	"./gom-latn": "./node_modules/moment/locale/gom-latn.js",
15203	"./gom-latn.js": "./node_modules/moment/locale/gom-latn.js",
15204	"./gu": "./node_modules/moment/locale/gu.js",
15205	"./gu.js": "./node_modules/moment/locale/gu.js",
15206	"./he": "./node_modules/moment/locale/he.js",
15207	"./he.js": "./node_modules/moment/locale/he.js",
15208	"./hi": "./node_modules/moment/locale/hi.js",
15209	"./hi.js": "./node_modules/moment/locale/hi.js",
15210	"./hr": "./node_modules/moment/locale/hr.js",
15211	"./hr.js": "./node_modules/moment/locale/hr.js",
15212	"./hu": "./node_modules/moment/locale/hu.js",
15213	"./hu.js": "./node_modules/moment/locale/hu.js",
15214	"./hy-am": "./node_modules/moment/locale/hy-am.js",
15215	"./hy-am.js": "./node_modules/moment/locale/hy-am.js",
15216	"./id": "./node_modules/moment/locale/id.js",
15217	"./id.js": "./node_modules/moment/locale/id.js",
15218	"./is": "./node_modules/moment/locale/is.js",
15219	"./is.js": "./node_modules/moment/locale/is.js",
15220	"./it": "./node_modules/moment/locale/it.js",
15221	"./it-ch": "./node_modules/moment/locale/it-ch.js",
15222	"./it-ch.js": "./node_modules/moment/locale/it-ch.js",
15223	"./it.js": "./node_modules/moment/locale/it.js",
15224	"./ja": "./node_modules/moment/locale/ja.js",
15225	"./ja.js": "./node_modules/moment/locale/ja.js",
15226	"./jv": "./node_modules/moment/locale/jv.js",
15227	"./jv.js": "./node_modules/moment/locale/jv.js",
15228	"./ka": "./node_modules/moment/locale/ka.js",
15229	"./ka.js": "./node_modules/moment/locale/ka.js",
15230	"./kk": "./node_modules/moment/locale/kk.js",
15231	"./kk.js": "./node_modules/moment/locale/kk.js",
15232	"./km": "./node_modules/moment/locale/km.js",
15233	"./km.js": "./node_modules/moment/locale/km.js",
15234	"./kn": "./node_modules/moment/locale/kn.js",
15235	"./kn.js": "./node_modules/moment/locale/kn.js",
15236	"./ko": "./node_modules/moment/locale/ko.js",
15237	"./ko.js": "./node_modules/moment/locale/ko.js",
15238	"./ku": "./node_modules/moment/locale/ku.js",
15239	"./ku-kmr": "./node_modules/moment/locale/ku-kmr.js",
15240	"./ku-kmr.js": "./node_modules/moment/locale/ku-kmr.js",
15241	"./ku.js": "./node_modules/moment/locale/ku.js",
15242	"./ky": "./node_modules/moment/locale/ky.js",
15243	"./ky.js": "./node_modules/moment/locale/ky.js",
15244	"./lb": "./node_modules/moment/locale/lb.js",
15245	"./lb.js": "./node_modules/moment/locale/lb.js",
15246	"./lo": "./node_modules/moment/locale/lo.js",
15247	"./lo.js": "./node_modules/moment/locale/lo.js",
15248	"./lt": "./node_modules/moment/locale/lt.js",
15249	"./lt.js": "./node_modules/moment/locale/lt.js",
15250	"./lv": "./node_modules/moment/locale/lv.js",
15251	"./lv.js": "./node_modules/moment/locale/lv.js",
15252	"./me": "./node_modules/moment/locale/me.js",
15253	"./me.js": "./node_modules/moment/locale/me.js",
15254	"./mi": "./node_modules/moment/locale/mi.js",
15255	"./mi.js": "./node_modules/moment/locale/mi.js",
15256	"./mk": "./node_modules/moment/locale/mk.js",
15257	"./mk.js": "./node_modules/moment/locale/mk.js",
15258	"./ml": "./node_modules/moment/locale/ml.js",
15259	"./ml.js": "./node_modules/moment/locale/ml.js",
15260	"./mn": "./node_modules/moment/locale/mn.js",
15261	"./mn.js": "./node_modules/moment/locale/mn.js",
15262	"./mr": "./node_modules/moment/locale/mr.js",
15263	"./mr.js": "./node_modules/moment/locale/mr.js",
15264	"./ms": "./node_modules/moment/locale/ms.js",
15265	"./ms-my": "./node_modules/moment/locale/ms-my.js",
15266	"./ms-my.js": "./node_modules/moment/locale/ms-my.js",
15267	"./ms.js": "./node_modules/moment/locale/ms.js",
15268	"./mt": "./node_modules/moment/locale/mt.js",
15269	"./mt.js": "./node_modules/moment/locale/mt.js",
15270	"./my": "./node_modules/moment/locale/my.js",
15271	"./my.js": "./node_modules/moment/locale/my.js",
15272	"./nb": "./node_modules/moment/locale/nb.js",
15273	"./nb.js": "./node_modules/moment/locale/nb.js",
15274	"./ne": "./node_modules/moment/locale/ne.js",
15275	"./ne.js": "./node_modules/moment/locale/ne.js",
15276	"./nl": "./node_modules/moment/locale/nl.js",
15277	"./nl-be": "./node_modules/moment/locale/nl-be.js",
15278	"./nl-be.js": "./node_modules/moment/locale/nl-be.js",
15279	"./nl.js": "./node_modules/moment/locale/nl.js",
15280	"./nn": "./node_modules/moment/locale/nn.js",
15281	"./nn.js": "./node_modules/moment/locale/nn.js",
15282	"./oc-lnc": "./node_modules/moment/locale/oc-lnc.js",
15283	"./oc-lnc.js": "./node_modules/moment/locale/oc-lnc.js",
15284	"./pa-in": "./node_modules/moment/locale/pa-in.js",
15285	"./pa-in.js": "./node_modules/moment/locale/pa-in.js",
15286	"./pl": "./node_modules/moment/locale/pl.js",
15287	"./pl.js": "./node_modules/moment/locale/pl.js",
15288	"./pt": "./node_modules/moment/locale/pt.js",
15289	"./pt-br": "./node_modules/moment/locale/pt-br.js",
15290	"./pt-br.js": "./node_modules/moment/locale/pt-br.js",
15291	"./pt.js": "./node_modules/moment/locale/pt.js",
15292	"./ro": "./node_modules/moment/locale/ro.js",
15293	"./ro.js": "./node_modules/moment/locale/ro.js",
15294	"./ru": "./node_modules/moment/locale/ru.js",
15295	"./ru.js": "./node_modules/moment/locale/ru.js",
15296	"./sd": "./node_modules/moment/locale/sd.js",
15297	"./sd.js": "./node_modules/moment/locale/sd.js",
15298	"./se": "./node_modules/moment/locale/se.js",
15299	"./se.js": "./node_modules/moment/locale/se.js",
15300	"./si": "./node_modules/moment/locale/si.js",
15301	"./si.js": "./node_modules/moment/locale/si.js",
15302	"./sk": "./node_modules/moment/locale/sk.js",
15303	"./sk.js": "./node_modules/moment/locale/sk.js",
15304	"./sl": "./node_modules/moment/locale/sl.js",
15305	"./sl.js": "./node_modules/moment/locale/sl.js",
15306	"./sq": "./node_modules/moment/locale/sq.js",
15307	"./sq.js": "./node_modules/moment/locale/sq.js",
15308	"./sr": "./node_modules/moment/locale/sr.js",
15309	"./sr-cyrl": "./node_modules/moment/locale/sr-cyrl.js",
15310	"./sr-cyrl.js": "./node_modules/moment/locale/sr-cyrl.js",
15311	"./sr.js": "./node_modules/moment/locale/sr.js",
15312	"./ss": "./node_modules/moment/locale/ss.js",
15313	"./ss.js": "./node_modules/moment/locale/ss.js",
15314	"./sv": "./node_modules/moment/locale/sv.js",
15315	"./sv.js": "./node_modules/moment/locale/sv.js",
15316	"./sw": "./node_modules/moment/locale/sw.js",
15317	"./sw.js": "./node_modules/moment/locale/sw.js",
15318	"./ta": "./node_modules/moment/locale/ta.js",
15319	"./ta.js": "./node_modules/moment/locale/ta.js",
15320	"./te": "./node_modules/moment/locale/te.js",
15321	"./te.js": "./node_modules/moment/locale/te.js",
15322	"./tet": "./node_modules/moment/locale/tet.js",
15323	"./tet.js": "./node_modules/moment/locale/tet.js",
15324	"./tg": "./node_modules/moment/locale/tg.js",
15325	"./tg.js": "./node_modules/moment/locale/tg.js",
15326	"./th": "./node_modules/moment/locale/th.js",
15327	"./th.js": "./node_modules/moment/locale/th.js",
15328	"./tk": "./node_modules/moment/locale/tk.js",
15329	"./tk.js": "./node_modules/moment/locale/tk.js",
15330	"./tl-ph": "./node_modules/moment/locale/tl-ph.js",
15331	"./tl-ph.js": "./node_modules/moment/locale/tl-ph.js",
15332	"./tlh": "./node_modules/moment/locale/tlh.js",
15333	"./tlh.js": "./node_modules/moment/locale/tlh.js",
15334	"./tr": "./node_modules/moment/locale/tr.js",
15335	"./tr.js": "./node_modules/moment/locale/tr.js",
15336	"./tzl": "./node_modules/moment/locale/tzl.js",
15337	"./tzl.js": "./node_modules/moment/locale/tzl.js",
15338	"./tzm": "./node_modules/moment/locale/tzm.js",
15339	"./tzm-latn": "./node_modules/moment/locale/tzm-latn.js",
15340	"./tzm-latn.js": "./node_modules/moment/locale/tzm-latn.js",
15341	"./tzm.js": "./node_modules/moment/locale/tzm.js",
15342	"./ug-cn": "./node_modules/moment/locale/ug-cn.js",
15343	"./ug-cn.js": "./node_modules/moment/locale/ug-cn.js",
15344	"./uk": "./node_modules/moment/locale/uk.js",
15345	"./uk.js": "./node_modules/moment/locale/uk.js",
15346	"./ur": "./node_modules/moment/locale/ur.js",
15347	"./ur.js": "./node_modules/moment/locale/ur.js",
15348	"./uz": "./node_modules/moment/locale/uz.js",
15349	"./uz-latn": "./node_modules/moment/locale/uz-latn.js",
15350	"./uz-latn.js": "./node_modules/moment/locale/uz-latn.js",
15351	"./uz.js": "./node_modules/moment/locale/uz.js",
15352	"./vi": "./node_modules/moment/locale/vi.js",
15353	"./vi.js": "./node_modules/moment/locale/vi.js",
15354	"./x-pseudo": "./node_modules/moment/locale/x-pseudo.js",
15355	"./x-pseudo.js": "./node_modules/moment/locale/x-pseudo.js",
15356	"./yo": "./node_modules/moment/locale/yo.js",
15357	"./yo.js": "./node_modules/moment/locale/yo.js",
15358	"./zh-cn": "./node_modules/moment/locale/zh-cn.js",
15359	"./zh-cn.js": "./node_modules/moment/locale/zh-cn.js",
15360	"./zh-hk": "./node_modules/moment/locale/zh-hk.js",
15361	"./zh-hk.js": "./node_modules/moment/locale/zh-hk.js",
15362	"./zh-mo": "./node_modules/moment/locale/zh-mo.js",
15363	"./zh-mo.js": "./node_modules/moment/locale/zh-mo.js",
15364	"./zh-tw": "./node_modules/moment/locale/zh-tw.js",
15365	"./zh-tw.js": "./node_modules/moment/locale/zh-tw.js"
15366};
15367
15368
15369function webpackContext(req) {
15370	var id = webpackContextResolve(req);
15371	return __webpack_require__(id);
15372}
15373function webpackContextResolve(req) {
15374	if(!__webpack_require__.o(map, req)) {
15375		var e = new Error("Cannot find module '" + req + "'");
15376		e.code = 'MODULE_NOT_FOUND';
15377		throw e;
15378	}
15379	return map[req];
15380}
15381webpackContext.keys = function webpackContextKeys() {
15382	return Object.keys(map);
15383};
15384webpackContext.resolve = webpackContextResolve;
15385module.exports = webpackContext;
15386webpackContext.id = "./node_modules/moment/locale sync recursive ^\\.\\/.*$";
15387
15388/***/ }),
15389
vendor: 2,898 bytes, lines 15390-15479
15390/***/ "./node_modules/moment/locale/af.js":
15391/*!******************************************!*\
15392  !*** ./node_modules/moment/locale/af.js ***!
15393  \******************************************/
15394/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
15395
15396//! moment.js locale configuration
15397//! locale : Afrikaans [af]
15398//! author : Werner Mollentze : https://github.com/wernerm
15399
15400;(function (global, factory) {
15401    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
15402   0
15403}(this, (function (moment) { 'use strict';
15404
15405    //! moment.js locale configuration
15406
15407    var af = moment.defineLocale('af', {
15408        months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(
15409            '_'
15410        ),
15411        monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
15412        weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(
15413            '_'
15414        ),
15415        weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
15416        weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
15417        meridiemParse: /vm|nm/i,
15418        isPM: function (input) {
15419            return /^nm$/i.test(input);
15420        },
15421        meridiem: function (hours, minutes, isLower) {
15422            if (hours < 12) {
15423                return isLower ? 'vm' : 'VM';
15424            } else {
15425                return isLower ? 'nm' : 'NM';
15426            }
15427        },
15428        longDateFormat: {
15429            LT: 'HH:mm',
15430            LTS: 'HH:mm:ss',
15431            L: 'DD/MM/YYYY',
15432            LL: 'D MMMM YYYY',
15433            LLL: 'D MMMM YYYY HH:mm',
15434            LLLL: 'dddd, D MMMM YYYY HH:mm',
15435        },
15436        calendar: {
15437            sameDay: '[Vandag om] LT',
15438            nextDay: '[Môre om] LT',
15439            nextWeek: 'dddd [om] LT',
15440            lastDay: '[Gister om] LT',
15441            lastWeek: '[Laas] dddd [om] LT',
15442            sameElse: 'L',
15443        },
15444        relativeTime: {
15445            future: 'oor %s',
15446            past: '%s gelede',
15447            s: "'n paar sekondes",
15448            ss: '%d sekondes',
15449            m: "'n minuut",
15450            mm: '%d minute',
15451            h: "'n uur",
15452            hh: '%d ure',
15453            d: "'n dag",
15454            dd: '%d dae',
15455            M: "'n maand",
15456            MM: '%d maande',
15457            y: "'n jaar",
15458            yy: '%d jaar',
15459        },
15460        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
15461        ordinal: function (number) {
15462            return (
15463                number +
15464                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
15465            ); // Thanks to Joris Röling : https://github.com/jjupiter
15466        },
15467        week: {
15468            dow: 1, // Maandag is die eerste dag van die week.
15469            doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
15470        },
15471    });
15472
15473    return af;
15474
15475})));
15476
15477
15478/***/ }),
15479
vendor: 5,574 bytes, lines 15480-15654
15480/***/ "./node_modules/moment/locale/ar-dz.js":
15481/*!*********************************************!*\
15482  !*** ./node_modules/moment/locale/ar-dz.js ***!
15483  \*********************************************/
15484/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
15485
15486//! moment.js locale configuration
15487//! locale : Arabic (Algeria) [ar-dz]
15488//! author : Amine Roukh: https://github.com/Amine27
15489//! author : Abdel Said: https://github.com/abdelsaid
15490//! author : Ahmed Elkhatib
15491//! author : forabi https://github.com/forabi
15492//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem
15493
15494;(function (global, factory) {
15495    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
15496   0
15497}(this, (function (moment) { 'use strict';
15498
15499    //! moment.js locale configuration
15500
15501    var pluralForm = function (n) {
15502            return n === 0
15503                ? 0
15504                : n === 1
15505                  ? 1
15506                  : n === 2
15507                    ? 2
15508                    : n % 100 >= 3 && n % 100 <= 10
15509                      ? 3
15510                      : n % 100 >= 11
15511                        ? 4
15512                        : 5;
15513        },
15514        plurals = {
15515            s: [
15516                'أقل من ثانية',
15517                'ثانية واحدة',
15518                ['ثانيتان', 'ثانيتين'],
15519                '%d ثوان',
15520                '%d ثانية',
15521                '%d ثانية',
15522            ],
15523            m: [
15524                'أقل من دقيقة',
15525                'دقيقة واحدة',
15526                ['دقيقتان', 'دقيقتين'],
15527                '%d دقائق',
15528                '%d دقيقة',
15529                '%d دقيقة',
15530            ],
15531            h: [
15532                'أقل من ساعة',
15533                'ساعة واحدة',
15534                ['ساعتان', 'ساعتين'],
15535                '%d ساعات',
15536                '%d ساعة',
15537                '%d ساعة',
15538            ],
15539            d: [
15540                'أقل من يوم',
15541                'يوم واحد',
15542                ['يومان', 'يومين'],
15543                '%d أيام',
15544                '%d يومًا',
15545                '%d يوم',
15546            ],
15547            M: [
15548                'أقل من شهر',
15549                'شهر واحد',
15550                ['شهران', 'شهرين'],
15551                '%d أشهر',
15552                '%d شهرا',
15553                '%d شهر',
15554            ],
15555            y: [
15556                'أقل من عام',
15557                'عام واحد',
15558                ['عامان', 'عامين'],
15559                '%d أعوام',
15560                '%d عامًا',
15561                '%d عام',
15562            ],
15563        },
15564        pluralize = function (u) {
15565            return function (number, withoutSuffix, string, isFuture) {
15566                var f = pluralForm(number),
15567                    str = plurals[u][pluralForm(number)];
15568                if (f === 2) {
15569                    str = str[withoutSuffix ? 0 : 1];
15570                }
15571                return str.replace(/%d/i, number);
15572            };
15573        },
15574        months = [
15575            'جانفي',
15576            'فيفري',
15577            'مارس',
15578            'أفريل',
15579            'ماي',
15580            'جوان',
15581            'جويلية',
15582            'أوت',
15583            'سبتمبر',
15584            'أكتوبر',
15585            'نوفمبر',
15586            'ديسمبر',
15587        ];
15588
15589    var arDz = moment.defineLocale('ar-dz', {
15590        months: months,
15591        monthsShort: months,
15592        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
15593        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
15594        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
15595        weekdaysParseExact: true,
15596        longDateFormat: {
15597            LT: 'HH:mm',
15598            LTS: 'HH:mm:ss',
15599            L: 'D/\u200FM/\u200FYYYY',
15600            LL: 'D MMMM YYYY',
15601            LLL: 'D MMMM YYYY HH:mm',
15602            LLLL: 'dddd D MMMM YYYY HH:mm',
15603        },
15604        meridiemParse: /ص|م/,
15605        isPM: function (input) {
15606            return 'م' === input;
15607        },
15608        meridiem: function (hour, minute, isLower) {
15609            if (hour < 12) {
15610                return 'ص';
15611            } else {
15612                return 'م';
15613            }
15614        },
15615        calendar: {
15616            sameDay: '[اليوم عند الساعة] LT',
15617            nextDay: '[غدًا عند الساعة] LT',
15618            nextWeek: 'dddd [عند الساعة] LT',
15619            lastDay: '[أمس عند الساعة] LT',
15620            lastWeek: 'dddd [عند الساعة] LT',
15621            sameElse: 'L',
15622        },
15623        relativeTime: {
15624            future: 'بعد %s',
15625            past: 'منذ %s',
15626            s: pluralize('s'),
15627            ss: pluralize('s'),
15628            m: pluralize('m'),
15629            mm: pluralize('m'),
15630            h: pluralize('h'),
15631            hh: pluralize('h'),
15632            d: pluralize('d'),
15633            dd: pluralize('d'),
15634            M: pluralize('M'),
15635            MM: pluralize('M'),
15636            y: pluralize('y'),
15637            yy: pluralize('y'),
15638        },
15639        postformat: function (string) {
15640            return string.replace(/,/g, '،');
15641        },
15642        week: {
15643            dow: 0, // Sunday is the first day of the week.
15644            doy: 4, // The week that contains Jan 4th is the first week of the year.
15645        },
15646    });
15647
15648    return arDz;
15649
15650})));
15651
15652
15653/***/ }),
15654
vendor: 2,635 bytes, lines 15655-15728
15655/***/ "./node_modules/moment/locale/ar-kw.js":
15656/*!*********************************************!*\
15657  !*** ./node_modules/moment/locale/ar-kw.js ***!
15658  \*********************************************/
15659/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
15660
15661//! moment.js locale configuration
15662//! locale : Arabic (Kuwait) [ar-kw]
15663//! author : Nusret Parlak: https://github.com/nusretparlak
15664
15665;(function (global, factory) {
15666    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
15667   0
15668}(this, (function (moment) { 'use strict';
15669
15670    //! moment.js locale configuration
15671
15672    var arKw = moment.defineLocale('ar-kw', {
15673        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
15674            '_'
15675        ),
15676        monthsShort:
15677            'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
15678                '_'
15679            ),
15680        weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
15681        weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
15682        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
15683        weekdaysParseExact: true,
15684        longDateFormat: {
15685            LT: 'HH:mm',
15686            LTS: 'HH:mm:ss',
15687            L: 'DD/MM/YYYY',
15688            LL: 'D MMMM YYYY',
15689            LLL: 'D MMMM YYYY HH:mm',
15690            LLLL: 'dddd D MMMM YYYY HH:mm',
15691        },
15692        calendar: {
15693            sameDay: '[اليوم على الساعة] LT',
15694            nextDay: '[غدا على الساعة] LT',
15695            nextWeek: 'dddd [على الساعة] LT',
15696            lastDay: '[أمس على الساعة] LT',
15697            lastWeek: 'dddd [على الساعة] LT',
15698            sameElse: 'L',
15699        },
15700        relativeTime: {
15701            future: 'في %s',
15702            past: 'منذ %s',
15703            s: 'ثوان',
15704            ss: '%d ثانية',
15705            m: 'دقيقة',
15706            mm: '%d دقائق',
15707            h: 'ساعة',
15708            hh: '%d ساعات',
15709            d: 'يوم',
15710            dd: '%d أيام',
15711            M: 'شهر',
15712            MM: '%d أشهر',
15713            y: 'سنة',
15714            yy: '%d سنوات',
15715        },
15716        week: {
15717            dow: 0, // Sunday is the first day of the week.
15718            doy: 12, // The week that contains Jan 12th is the first week of the year.
15719        },
15720    });
15721
15722    return arKw;
15723
15724})));
15725
15726
15727/***/ }),
15728
vendor: 5,849 bytes, lines 15729-15918
15729/***/ "./node_modules/moment/locale/ar-ly.js":
15730/*!*********************************************!*\
15731  !*** ./node_modules/moment/locale/ar-ly.js ***!
15732  \*********************************************/
15733/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
15734
15735//! moment.js locale configuration
15736//! locale : Arabic (Libya) [ar-ly]
15737//! author : Ali Hmer: https://github.com/kikoanis
15738
15739;(function (global, factory) {
15740    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
15741   0
15742}(this, (function (moment) { 'use strict';
15743
15744    //! moment.js locale configuration
15745
15746    var symbolMap = {
15747            1: '1',
15748            2: '2',
15749            3: '3',
15750            4: '4',
15751            5: '5',
15752            6: '6',
15753            7: '7',
15754            8: '8',
15755            9: '9',
15756            0: '0',
15757        },
15758        pluralForm = function (n) {
15759            return n === 0
15760                ? 0
15761                : n === 1
15762                  ? 1
15763                  : n === 2
15764                    ? 2
15765                    : n % 100 >= 3 && n % 100 <= 10
15766                      ? 3
15767                      : n % 100 >= 11
15768                        ? 4
15769                        : 5;
15770        },
15771        plurals = {
15772            s: [
15773                'أقل من ثانية',
15774                'ثانية واحدة',
15775                ['ثانيتان', 'ثانيتين'],
15776                '%d ثوان',
15777                '%d ثانية',
15778                '%d ثانية',
15779            ],
15780            m: [
15781                'أقل من دقيقة',
15782                'دقيقة واحدة',
15783                ['دقيقتان', 'دقيقتين'],
15784                '%d دقائق',
15785                '%d دقيقة',
15786                '%d دقيقة',
15787            ],
15788            h: [
15789                'أقل من ساعة',
15790                'ساعة واحدة',
15791                ['ساعتان', 'ساعتين'],
15792                '%d ساعات',
15793                '%d ساعة',
15794                '%d ساعة',
15795            ],
15796            d: [
15797                'أقل من يوم',
15798                'يوم واحد',
15799                ['يومان', 'يومين'],
15800                '%d أيام',
15801                '%d يومًا',
15802                '%d يوم',
15803            ],
15804            M: [
15805                'أقل من شهر',
15806                'شهر واحد',
15807                ['شهران', 'شهرين'],
15808                '%d أشهر',
15809                '%d شهرا',
15810                '%d شهر',
15811            ],
15812            y: [
15813                'أقل من عام',
15814                'عام واحد',
15815                ['عامان', 'عامين'],
15816                '%d أعوام',
15817                '%d عامًا',
15818                '%d عام',
15819            ],
15820        },
15821        pluralize = function (u) {
15822            return function (number, withoutSuffix, string, isFuture) {
15823                var f = pluralForm(number),
15824                    str = plurals[u][pluralForm(number)];
15825                if (f === 2) {
15826                    str = str[withoutSuffix ? 0 : 1];
15827                }
15828                return str.replace(/%d/i, number);
15829            };
15830        },
15831        months = [
15832            'يناير',
15833            'فبراير',
15834            'مارس',
15835            'أبريل',
15836            'مايو',
15837            'يونيو',
15838            'يوليو',
15839            'أغسطس',
15840            'سبتمبر',
15841            'أكتوبر',
15842            'نوفمبر',
15843            'ديسمبر',
15844        ];
15845
15846    var arLy = moment.defineLocale('ar-ly', {
15847        months: months,
15848        monthsShort: months,
15849        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
15850        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
15851        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
15852        weekdaysParseExact: true,
15853        longDateFormat: {
15854            LT: 'HH:mm',
15855            LTS: 'HH:mm:ss',
15856            L: 'D/\u200FM/\u200FYYYY',
15857            LL: 'D MMMM YYYY',
15858            LLL: 'D MMMM YYYY HH:mm',
15859            LLLL: 'dddd D MMMM YYYY HH:mm',
15860        },
15861        meridiemParse: /ص|م/,
15862        isPM: function (input) {
15863            return 'م' === input;
15864        },
15865        meridiem: function (hour, minute, isLower) {
15866            if (hour < 12) {
15867                return 'ص';
15868            } else {
15869                return 'م';
15870            }
15871        },
15872        calendar: {
15873            sameDay: '[اليوم عند الساعة] LT',
15874            nextDay: '[غدًا عند الساعة] LT',
15875            nextWeek: 'dddd [عند الساعة] LT',
15876            lastDay: '[أمس عند الساعة] LT',
15877            lastWeek: 'dddd [عند الساعة] LT',
15878            sameElse: 'L',
15879        },
15880        relativeTime: {
15881            future: 'بعد %s',
15882            past: 'منذ %s',
15883            s: pluralize('s'),
15884            ss: pluralize('s'),
15885            m: pluralize('m'),
15886            mm: pluralize('m'),
15887            h: pluralize('h'),
15888            hh: pluralize('h'),
15889            d: pluralize('d'),
15890            dd: pluralize('d'),
15891            M: pluralize('M'),
15892            MM: pluralize('M'),
15893            y: pluralize('y'),
15894            yy: pluralize('y'),
15895        },
15896        preparse: function (string) {
15897            return string.replace(/،/g, ',');
15898        },
15899        postformat: function (string) {
15900            return string
15901                .replace(/\d/g, function (match) {
15902                    return symbolMap[match];
15903                })
15904                .replace(/,/g, '،');
15905        },
15906        week: {
15907            dow: 6, // Saturday is the first day of the week.
15908            doy: 12, // The week that contains Jan 12th is the first week of the year.
15909        },
15910    });
15911
15912    return arLy;
15913
15914})));
15915
15916
15917/***/ }),
15918
vendor: 2,690 bytes, lines 15919-15993
15919/***/ "./node_modules/moment/locale/ar-ma.js":
15920/*!*********************************************!*\
15921  !*** ./node_modules/moment/locale/ar-ma.js ***!
15922  \*********************************************/
15923/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
15924
15925//! moment.js locale configuration
15926//! locale : Arabic (Morocco) [ar-ma]
15927//! author : ElFadili Yassine : https://github.com/ElFadiliY
15928//! author : Abdel Said : https://github.com/abdelsaid
15929
15930;(function (global, factory) {
15931    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
15932   0
15933}(this, (function (moment) { 'use strict';
15934
15935    //! moment.js locale configuration
15936
15937    var arMa = moment.defineLocale('ar-ma', {
15938        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
15939            '_'
15940        ),
15941        monthsShort:
15942            'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
15943                '_'
15944            ),
15945        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
15946        weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
15947        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
15948        weekdaysParseExact: true,
15949        longDateFormat: {
15950            LT: 'HH:mm',
15951            LTS: 'HH:mm:ss',
15952            L: 'DD/MM/YYYY',
15953            LL: 'D MMMM YYYY',
15954            LLL: 'D MMMM YYYY HH:mm',
15955            LLLL: 'dddd D MMMM YYYY HH:mm',
15956        },
15957        calendar: {
15958            sameDay: '[اليوم على الساعة] LT',
15959            nextDay: '[غدا على الساعة] LT',
15960            nextWeek: 'dddd [على الساعة] LT',
15961            lastDay: '[أمس على الساعة] LT',
15962            lastWeek: 'dddd [على الساعة] LT',
15963            sameElse: 'L',
15964        },
15965        relativeTime: {
15966            future: 'في %s',
15967            past: 'منذ %s',
15968            s: 'ثوان',
15969            ss: '%d ثانية',
15970            m: 'دقيقة',
15971            mm: '%d دقائق',
15972            h: 'ساعة',
15973            hh: '%d ساعات',
15974            d: 'يوم',
15975            dd: '%d أيام',
15976            M: 'شهر',
15977            MM: '%d أشهر',
15978            y: 'سنة',
15979            yy: '%d سنوات',
15980        },
15981        week: {
15982            dow: 1, // Monday is the first day of the week.
15983            doy: 4, // The week that contains Jan 4th is the first week of the year.
15984        },
15985    });
15986
15987    return arMa;
15988
15989})));
15990
15991
15992/***/ }),
15993
vendor: 4,259 bytes, lines 15994-16124
15994/***/ "./node_modules/moment/locale/ar-ps.js":
15995/*!*********************************************!*\
15996  !*** ./node_modules/moment/locale/ar-ps.js ***!
15997  \*********************************************/
15998/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
15999
16000//! moment.js locale configuration
16001//! locale : Arabic (Palestine) [ar-ps]
16002//! author : Majd Al-Shihabi : https://github.com/majdal
16003
16004;(function (global, factory) {
16005    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
16006   0
16007}(this, (function (moment) { 'use strict';
16008
16009    //! moment.js locale configuration
16010
16011    var symbolMap = {
16012            1: 'Ù¡',
16013            2: 'Ù¢',
16014            3: 'Ù£',
16015            4: 'Ù¤',
16016            5: 'Ù¥',
16017            6: 'Ù¦',
16018            7: 'Ù§',
16019            8: 'Ù¨',
16020            9: 'Ù©',
16021            0: 'Ù ',
16022        },
16023        numberMap = {
16024            'Ù¡': '1',
16025            'Ù¢': '2',
16026            'Ù£': '3',
16027            'Ù¤': '4',
16028            'Ù¥': '5',
16029            'Ù¦': '6',
16030            'Ù§': '7',
16031            'Ù¨': '8',
16032            'Ù©': '9',
16033            'Ù ': '0',
16034        };
16035
16036    var arPs = moment.defineLocale('ar-ps', {
16037        months: 'كانون الثاني_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_تشري الأوّل_تشرين الثاني_كانون الأوّل'.split(
16038            '_'
16039        ),
16040        monthsShort:
16041            'ك٢_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_ت١_ت٢_ك١'.split('_'),
16042        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
16043        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
16044        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
16045        weekdaysParseExact: true,
16046        longDateFormat: {
16047            LT: 'HH:mm',
16048            LTS: 'HH:mm:ss',
16049            L: 'DD/MM/YYYY',
16050            LL: 'D MMMM YYYY',
16051            LLL: 'D MMMM YYYY HH:mm',
16052            LLLL: 'dddd D MMMM YYYY HH:mm',
16053        },
16054        meridiemParse: /ص|م/,
16055        isPM: function (input) {
16056            return 'م' === input;
16057        },
16058        meridiem: function (hour, minute, isLower) {
16059            if (hour < 12) {
16060                return 'ص';
16061            } else {
16062                return 'م';
16063            }
16064        },
16065        calendar: {
16066            sameDay: '[اليوم على الساعة] LT',
16067            nextDay: '[غدا على الساعة] LT',
16068            nextWeek: 'dddd [على الساعة] LT',
16069            lastDay: '[أمس على الساعة] LT',
16070            lastWeek: 'dddd [على الساعة] LT',
16071            sameElse: 'L',
16072        },
16073        relativeTime: {
16074            future: 'في %s',
16075            past: 'منذ %s',
16076            s: 'ثوان',
16077            ss: '%d ثانية',
16078            m: 'دقيقة',
16079            mm: '%d دقائق',
16080            h: 'ساعة',
16081            hh: '%d ساعات',
16082            d: 'يوم',
16083            dd: '%d أيام',
16084            M: 'شهر',
16085            MM: '%d أشهر',
16086            y: 'سنة',
16087            yy: '%d سنوات',
16088        },
16089        preparse: function (string) {
16090            return string
16091                .replace(/[٣٤٥٦٧٨٩٠]/g, function (match) {
16092                    return numberMap[match];
16093                })
16094                .split('') // reversed since negative lookbehind not supported everywhere
16095                .reverse()
16096                .join('')
16097                .replace(/[١٢](?![\u062a\u0643])/g, function (match) {
16098                    return numberMap[match];
16099                })
16100                .split('')
16101                .reverse()
16102                .join('')
16103                .replace(/،/g, ',');
16104        },
16105        postformat: function (string) {
16106            return string
16107                .replace(/\d/g, function (match) {
16108                    return symbolMap[match];
16109                })
16110                .replace(/,/g, '،');
16111        },
16112        week: {
16113            dow: 0, // Sunday is the first day of the week.
16114            doy: 6, // The week that contains Jan 6th is the first week of the year.
16115        },
16116    });
16117
16118    return arPs;
16119
16120})));
16121
16122
16123/***/ }),
16124
vendor: 3,939 bytes, lines 16125-16248
16125/***/ "./node_modules/moment/locale/ar-sa.js":
16126/*!*********************************************!*\
16127  !*** ./node_modules/moment/locale/ar-sa.js ***!
16128  \*********************************************/
16129/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
16130
16131//! moment.js locale configuration
16132//! locale : Arabic (Saudi Arabia) [ar-sa]
16133//! author : Suhail Alkowaileet : https://github.com/xsoh
16134
16135;(function (global, factory) {
16136    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
16137   0
16138}(this, (function (moment) { 'use strict';
16139
16140    //! moment.js locale configuration
16141
16142    var symbolMap = {
16143            1: 'Ù¡',
16144            2: 'Ù¢',
16145            3: 'Ù£',
16146            4: 'Ù¤',
16147            5: 'Ù¥',
16148            6: 'Ù¦',
16149            7: 'Ù§',
16150            8: 'Ù¨',
16151            9: 'Ù©',
16152            0: 'Ù ',
16153        },
16154        numberMap = {
16155            'Ù¡': '1',
16156            'Ù¢': '2',
16157            'Ù£': '3',
16158            'Ù¤': '4',
16159            'Ù¥': '5',
16160            'Ù¦': '6',
16161            'Ù§': '7',
16162            'Ù¨': '8',
16163            'Ù©': '9',
16164            'Ù ': '0',
16165        };
16166
16167    var arSa = moment.defineLocale('ar-sa', {
16168        months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
16169            '_'
16170        ),
16171        monthsShort:
16172            'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
16173                '_'
16174            ),
16175        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
16176        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
16177        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
16178        weekdaysParseExact: true,
16179        longDateFormat: {
16180            LT: 'HH:mm',
16181            LTS: 'HH:mm:ss',
16182            L: 'DD/MM/YYYY',
16183            LL: 'D MMMM YYYY',
16184            LLL: 'D MMMM YYYY HH:mm',
16185            LLLL: 'dddd D MMMM YYYY HH:mm',
16186        },
16187        meridiemParse: /ص|م/,
16188        isPM: function (input) {
16189            return 'م' === input;
16190        },
16191        meridiem: function (hour, minute, isLower) {
16192            if (hour < 12) {
16193                return 'ص';
16194            } else {
16195                return 'م';
16196            }
16197        },
16198        calendar: {
16199            sameDay: '[اليوم على الساعة] LT',
16200            nextDay: '[غدا على الساعة] LT',
16201            nextWeek: 'dddd [على الساعة] LT',
16202            lastDay: '[أمس على الساعة] LT',
16203            lastWeek: 'dddd [على الساعة] LT',
16204            sameElse: 'L',
16205        },
16206        relativeTime: {
16207            future: 'في %s',
16208            past: 'منذ %s',
16209            s: 'ثوان',
16210            ss: '%d ثانية',
16211            m: 'دقيقة',
16212            mm: '%d دقائق',
16213            h: 'ساعة',
16214            hh: '%d ساعات',
16215            d: 'يوم',
16216            dd: '%d أيام',
16217            M: 'شهر',
16218            MM: '%d أشهر',
16219            y: 'سنة',
16220            yy: '%d سنوات',
16221        },
16222        preparse: function (string) {
16223            return string
16224                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
16225                    return numberMap[match];
16226                })
16227                .replace(/،/g, ',');
16228        },
16229        postformat: function (string) {
16230            return string
16231                .replace(/\d/g, function (match) {
16232                    return symbolMap[match];
16233                })
16234                .replace(/,/g, '،');
16235        },
16236        week: {
16237            dow: 0, // Sunday is the first day of the week.
16238            doy: 6, // The week that contains Jan 6th is the first week of the year.
16239        },
16240    });
16241
16242    return arSa;
16243
16244})));
16245
16246
16247/***/ }),
16248
vendor: 2,637 bytes, lines 16249-16322
16249/***/ "./node_modules/moment/locale/ar-tn.js":
16250/*!*********************************************!*\
16251  !*** ./node_modules/moment/locale/ar-tn.js ***!
16252  \*********************************************/
16253/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
16254
16255//! moment.js locale configuration
16256//! locale  :  Arabic (Tunisia) [ar-tn]
16257//! author : Nader Toukabri : https://github.com/naderio
16258
16259;(function (global, factory) {
16260    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
16261   0
16262}(this, (function (moment) { 'use strict';
16263
16264    //! moment.js locale configuration
16265
16266    var arTn = moment.defineLocale('ar-tn', {
16267        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
16268            '_'
16269        ),
16270        monthsShort:
16271            'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
16272                '_'
16273            ),
16274        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
16275        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
16276        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
16277        weekdaysParseExact: true,
16278        longDateFormat: {
16279            LT: 'HH:mm',
16280            LTS: 'HH:mm:ss',
16281            L: 'DD/MM/YYYY',
16282            LL: 'D MMMM YYYY',
16283            LLL: 'D MMMM YYYY HH:mm',
16284            LLLL: 'dddd D MMMM YYYY HH:mm',
16285        },
16286        calendar: {
16287            sameDay: '[اليوم على الساعة] LT',
16288            nextDay: '[غدا على الساعة] LT',
16289            nextWeek: 'dddd [على الساعة] LT',
16290            lastDay: '[أمس على الساعة] LT',
16291            lastWeek: 'dddd [على الساعة] LT',
16292            sameElse: 'L',
16293        },
16294        relativeTime: {
16295            future: 'في %s',
16296            past: 'منذ %s',
16297            s: 'ثوان',
16298            ss: '%d ثانية',
16299            m: 'دقيقة',
16300            mm: '%d دقائق',
16301            h: 'ساعة',
16302            hh: '%d ساعات',
16303            d: 'يوم',
16304            dd: '%d أيام',
16305            M: 'شهر',
16306            MM: '%d أشهر',
16307            y: 'سنة',
16308            yy: '%d سنوات',
16309        },
16310        week: {
16311            dow: 1, // Monday is the first day of the week.
16312            doy: 4, // The week that contains Jan 4th is the first week of the year.
16313        },
16314    });
16315
16316    return arTn;
16317
16318})));
16319
16320
16321/***/ }),
16322
vendor: 6,321 bytes, lines 16323-16530
16323/***/ "./node_modules/moment/locale/ar.js":
16324/*!******************************************!*\
16325  !*** ./node_modules/moment/locale/ar.js ***!
16326  \******************************************/
16327/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
16328
16329//! moment.js locale configuration
16330//! locale : Arabic [ar]
16331//! author : Abdel Said: https://github.com/abdelsaid
16332//! author : Ahmed Elkhatib
16333//! author : forabi https://github.com/forabi
16334
16335;(function (global, factory) {
16336    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
16337   0
16338}(this, (function (moment) { 'use strict';
16339
16340    //! moment.js locale configuration
16341
16342    var symbolMap = {
16343            1: 'Ù¡',
16344            2: 'Ù¢',
16345            3: 'Ù£',
16346            4: 'Ù¤',
16347            5: 'Ù¥',
16348            6: 'Ù¦',
16349            7: 'Ù§',
16350            8: 'Ù¨',
16351            9: 'Ù©',
16352            0: 'Ù ',
16353        },
16354        numberMap = {
16355            'Ù¡': '1',
16356            'Ù¢': '2',
16357            'Ù£': '3',
16358            'Ù¤': '4',
16359            'Ù¥': '5',
16360            'Ù¦': '6',
16361            'Ù§': '7',
16362            'Ù¨': '8',
16363            'Ù©': '9',
16364            'Ù ': '0',
16365        },
16366        pluralForm = function (n) {
16367            return n === 0
16368                ? 0
16369                : n === 1
16370                  ? 1
16371                  : n === 2
16372                    ? 2
16373                    : n % 100 >= 3 && n % 100 <= 10
16374                      ? 3
16375                      : n % 100 >= 11
16376                        ? 4
16377                        : 5;
16378        },
16379        plurals = {
16380            s: [
16381                'أقل من ثانية',
16382                'ثانية واحدة',
16383                ['ثانيتان', 'ثانيتين'],
16384                '%d ثوان',
16385                '%d ثانية',
16386                '%d ثانية',
16387            ],
16388            m: [
16389                'أقل من دقيقة',
16390                'دقيقة واحدة',
16391                ['دقيقتان', 'دقيقتين'],
16392                '%d دقائق',
16393                '%d دقيقة',
16394                '%d دقيقة',
16395            ],
16396            h: [
16397                'أقل من ساعة',
16398                'ساعة واحدة',
16399                ['ساعتان', 'ساعتين'],
16400                '%d ساعات',
16401                '%d ساعة',
16402                '%d ساعة',
16403            ],
16404            d: [
16405                'أقل من يوم',
16406                'يوم واحد',
16407                ['يومان', 'يومين'],
16408                '%d أيام',
16409                '%d يومًا',
16410                '%d يوم',
16411            ],
16412            M: [
16413                'أقل من شهر',
16414                'شهر واحد',
16415                ['شهران', 'شهرين'],
16416                '%d أشهر',
16417                '%d شهرا',
16418                '%d شهر',
16419            ],
16420            y: [
16421                'أقل من عام',
16422                'عام واحد',
16423                ['عامان', 'عامين'],
16424                '%d أعوام',
16425                '%d عامًا',
16426                '%d عام',
16427            ],
16428        },
16429        pluralize = function (u) {
16430            return function (number, withoutSuffix, string, isFuture) {
16431                var f = pluralForm(number),
16432                    str = plurals[u][pluralForm(number)];
16433                if (f === 2) {
16434                    str = str[withoutSuffix ? 0 : 1];
16435                }
16436                return str.replace(/%d/i, number);
16437            };
16438        },
16439        months = [
16440            'يناير',
16441            'فبراير',
16442            'مارس',
16443            'أبريل',
16444            'مايو',
16445            'يونيو',
16446            'يوليو',
16447            'أغسطس',
16448            'سبتمبر',
16449            'أكتوبر',
16450            'نوفمبر',
16451            'ديسمبر',
16452        ];
16453
16454    var ar = moment.defineLocale('ar', {
16455        months: months,
16456        monthsShort: months,
16457        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
16458        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
16459        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
16460        weekdaysParseExact: true,
16461        longDateFormat: {
16462            LT: 'HH:mm',
16463            LTS: 'HH:mm:ss',
16464            L: 'D/\u200FM/\u200FYYYY',
16465            LL: 'D MMMM YYYY',
16466            LLL: 'D MMMM YYYY HH:mm',
16467            LLLL: 'dddd D MMMM YYYY HH:mm',
16468        },
16469        meridiemParse: /ص|م/,
16470        isPM: function (input) {
16471            return 'م' === input;
16472        },
16473        meridiem: function (hour, minute, isLower) {
16474            if (hour < 12) {
16475                return 'ص';
16476            } else {
16477                return 'م';
16478            }
16479        },
16480        calendar: {
16481            sameDay: '[اليوم عند الساعة] LT',
16482            nextDay: '[غدًا عند الساعة] LT',
16483            nextWeek: 'dddd [عند الساعة] LT',
16484            lastDay: '[أمس عند الساعة] LT',
16485            lastWeek: 'dddd [عند الساعة] LT',
16486            sameElse: 'L',
16487        },
16488        relativeTime: {
16489            future: 'بعد %s',
16490            past: 'منذ %s',
16491            s: pluralize('s'),
16492            ss: pluralize('s'),
16493            m: pluralize('m'),
16494            mm: pluralize('m'),
16495            h: pluralize('h'),
16496            hh: pluralize('h'),
16497            d: pluralize('d'),
16498            dd: pluralize('d'),
16499            M: pluralize('M'),
16500            MM: pluralize('M'),
16501            y: pluralize('y'),
16502            yy: pluralize('y'),
16503        },
16504        preparse: function (string) {
16505            return string
16506                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
16507                    return numberMap[match];
16508                })
16509                .replace(/،/g, ',');
16510        },
16511        postformat: function (string) {
16512            return string
16513                .replace(/\d/g, function (match) {
16514                    return symbolMap[match];
16515                })
16516                .replace(/,/g, '،');
16517        },
16518        week: {
16519            dow: 6, // Saturday is the first day of the week.
16520            doy: 12, // The week that contains Jan 12th is the first week of the year.
16521        },
16522    });
16523
16524    return ar;
16525
16526})));
16527
16528
16529/***/ }),
16530
vendor: 3,715 bytes, lines 16531-16651
16531/***/ "./node_modules/moment/locale/az.js":
16532/*!******************************************!*\
16533  !*** ./node_modules/moment/locale/az.js ***!
16534  \******************************************/
16535/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
16536
16537//! moment.js locale configuration
16538//! locale : Azerbaijani [az]
16539//! author : topchiyev : https://github.com/topchiyev
16540
16541;(function (global, factory) {
16542    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
16543   0
16544}(this, (function (moment) { 'use strict';
16545
16546    //! moment.js locale configuration
16547
16548    var suffixes = {
16549        1: '-inci',
16550        5: '-inci',
16551        8: '-inci',
16552        70: '-inci',
16553        80: '-inci',
16554        2: '-nci',
16555        7: '-nci',
16556        20: '-nci',
16557        50: '-nci',
16558        3: '-üncü',
16559        4: '-üncü',
16560        100: '-üncü',
16561        6: '-ncı',
16562        9: '-uncu',
16563        10: '-uncu',
16564        30: '-uncu',
16565        60: '-ıncı',
16566        90: '-ıncı',
16567    };
16568
16569    var az = moment.defineLocale('az', {
16570        months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(
16571            '_'
16572        ),
16573        monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
16574        weekdays:
16575            'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(
16576                '_'
16577            ),
16578        weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
16579        weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
16580        weekdaysParseExact: true,
16581        longDateFormat: {
16582            LT: 'HH:mm',
16583            LTS: 'HH:mm:ss',
16584            L: 'DD.MM.YYYY',
16585            LL: 'D MMMM YYYY',
16586            LLL: 'D MMMM YYYY HH:mm',
16587            LLLL: 'dddd, D MMMM YYYY HH:mm',
16588        },
16589        calendar: {
16590            sameDay: '[bugün saat] LT',
16591            nextDay: '[sabah saat] LT',
16592            nextWeek: '[gələn həftə] dddd [saat] LT',
16593            lastDay: '[dünən] LT',
16594            lastWeek: '[keçən həftə] dddd [saat] LT',
16595            sameElse: 'L',
16596        },
16597        relativeTime: {
16598            future: '%s sonra',
16599            past: '%s əvvəl',
16600            s: 'bir neçə saniyə',
16601            ss: '%d saniyə',
16602            m: 'bir dəqiqə',
16603            mm: '%d dəqiqə',
16604            h: 'bir saat',
16605            hh: '%d saat',
16606            d: 'bir gün',
16607            dd: '%d gün',
16608            M: 'bir ay',
16609            MM: '%d ay',
16610            y: 'bir il',
16611            yy: '%d il',
16612        },
16613        meridiemParse: /gecə|səhər|gündüz|axşam/,
16614        isPM: function (input) {
16615            return /^(gündüz|axşam)$/.test(input);
16616        },
16617        meridiem: function (hour, minute, isLower) {
16618            if (hour < 4) {
16619                return 'gecə';
16620            } else if (hour < 12) {
16621                return 'səhər';
16622            } else if (hour < 17) {
16623                return 'gündüz';
16624            } else {
16625                return 'axşam';
16626            }
16627        },
16628        dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
16629        ordinal: function (number) {
16630            if (number === 0) {
16631                // special case for zero
16632                return number + '-ıncı';
16633            }
16634            var a = number % 10,
16635                b = (number % 100) - a,
16636                c = number >= 100 ? 100 : null;
16637            return number + (suffixes[a] || suffixes[b] || suffixes[c]);
16638        },
16639        week: {
16640            dow: 1, // Monday is the first day of the week.
16641            doy: 7, // The week that contains Jan 7th is the first week of the year.
16642        },
16643    });
16644
16645    return az;
16646
16647})));
16648
16649
16650/***/ }),
16651
vendor: 6,179 bytes, lines 16652-16812
16652/***/ "./node_modules/moment/locale/be.js":
16653/*!******************************************!*\
16654  !*** ./node_modules/moment/locale/be.js ***!
16655  \******************************************/
16656/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
16657
16658//! moment.js locale configuration
16659//! locale : Belarusian [be]
16660//! author : Dmitry Demidov : https://github.com/demidov91
16661//! author: Praleska: http://praleska.pro/
16662//! Author : Menelion Elensúle : https://github.com/Oire
16663
16664;(function (global, factory) {
16665    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
16666   0
16667}(this, (function (moment) { 'use strict';
16668
16669    //! moment.js locale configuration
16670
16671    function plural(word, num) {
16672        var forms = word.split('_');
16673        return num % 10 === 1 && num % 100 !== 11
16674            ? forms[0]
16675            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
16676              ? forms[1]
16677              : forms[2];
16678    }
16679    function relativeTimeWithPlural(number, withoutSuffix, key) {
16680        var format = {
16681            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
16682            mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
16683            hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
16684            dd: 'дзень_дні_дзён',
16685            MM: 'месяц_месяцы_месяцаў',
16686            yy: 'год_гады_гадоў',
16687        };
16688        if (key === 'm') {
16689            return withoutSuffix ? 'хвіліна' : 'хвіліну';
16690        } else if (key === 'h') {
16691            return withoutSuffix ? 'гадзіна' : 'гадзіну';
16692        } else {
16693            return number + ' ' + plural(format[key], +number);
16694        }
16695    }
16696
16697    var be = moment.defineLocale('be', {
16698        months: {
16699            format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(
16700                '_'
16701            ),
16702            standalone:
16703                'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(
16704                    '_'
16705                ),
16706        },
16707        monthsShort:
16708            'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),
16709        weekdays: {
16710            format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(
16711                '_'
16712            ),
16713            standalone:
16714                'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(
16715                    '_'
16716                ),
16717            isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/,
16718        },
16719        weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
16720        weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
16721        longDateFormat: {
16722            LT: 'HH:mm',
16723            LTS: 'HH:mm:ss',
16724            L: 'DD.MM.YYYY',
16725            LL: 'D MMMM YYYY г.',
16726            LLL: 'D MMMM YYYY г., HH:mm',
16727            LLLL: 'dddd, D MMMM YYYY г., HH:mm',
16728        },
16729        calendar: {
16730            sameDay: '[Сёння ў] LT',
16731            nextDay: '[Заўтра ў] LT',
16732            lastDay: '[Учора ў] LT',
16733            nextWeek: function () {
16734                return '[У] dddd [ў] LT';
16735            },
16736            lastWeek: function () {
16737                switch (this.day()) {
16738                    case 0:
16739                    case 3:
16740                    case 5:
16741                    case 6:
16742                        return '[У мінулую] dddd [ў] LT';
16743                    case 1:
16744                    case 2:
16745                    case 4:
16746                        return '[У мінулы] dddd [ў] LT';
16747                }
16748            },
16749            sameElse: 'L',
16750        },
16751        relativeTime: {
16752            future: 'праз %s',
16753            past: '%s таму',
16754            s: 'некалькі секунд',
16755            m: relativeTimeWithPlural,
16756            mm: relativeTimeWithPlural,
16757            h: relativeTimeWithPlural,
16758            hh: relativeTimeWithPlural,
16759            d: 'дзень',
16760            dd: relativeTimeWithPlural,
16761            M: 'месяц',
16762            MM: relativeTimeWithPlural,
16763            y: 'год',
16764            yy: relativeTimeWithPlural,
16765        },
16766        meridiemParse: /ночы|раніцы|дня|вечара/,
16767        isPM: function (input) {
16768            return /^(дня|вечара)$/.test(input);
16769        },
16770        meridiem: function (hour, minute, isLower) {
16771            if (hour < 4) {
16772                return 'ночы';
16773            } else if (hour < 12) {
16774                return 'раніцы';
16775            } else if (hour < 17) {
16776                return 'дня';
16777            } else {
16778                return 'вечара';
16779            }
16780        },
16781        dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/,
16782        ordinal: function (number, period) {
16783            switch (period) {
16784                case 'M':
16785                case 'd':
16786                case 'DDD':
16787                case 'w':
16788                case 'W':
16789                    return (number % 10 === 2 || number % 10 === 3) &&
16790                        number % 100 !== 12 &&
16791                        number % 100 !== 13
16792                        ? number + '-і'
16793                        : number + '-ы';
16794                case 'D':
16795                    return number + '-га';
16796                default:
16797                    return number;
16798            }
16799        },
16800        week: {
16801            dow: 1, // Monday is the first day of the week.
16802            doy: 7, // The week that contains Jan 7th is the first week of the year.
16803        },
16804    });
16805
16806    return be;
16807
16808})));
16809
16810
16811/***/ }),
16812
vendor: 3,768 bytes, lines 16813-16918
16813/***/ "./node_modules/moment/locale/bg.js":
16814/*!******************************************!*\
16815  !*** ./node_modules/moment/locale/bg.js ***!
16816  \******************************************/
16817/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
16818
16819//! moment.js locale configuration
16820//! locale : Bulgarian [bg]
16821//! author : Krasen Borisov : https://github.com/kraz
16822
16823;(function (global, factory) {
16824    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
16825   0
16826}(this, (function (moment) { 'use strict';
16827
16828    //! moment.js locale configuration
16829
16830    var bg = moment.defineLocale('bg', {
16831        months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(
16832            '_'
16833        ),
16834        monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
16835        weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(
16836            '_'
16837        ),
16838        weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
16839        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
16840        longDateFormat: {
16841            LT: 'H:mm',
16842            LTS: 'H:mm:ss',
16843            L: 'D.MM.YYYY',
16844            LL: 'D MMMM YYYY',
16845            LLL: 'D MMMM YYYY H:mm',
16846            LLLL: 'dddd, D MMMM YYYY H:mm',
16847        },
16848        calendar: {
16849            sameDay: '[Днес в] LT',
16850            nextDay: '[Утре в] LT',
16851            nextWeek: 'dddd [в] LT',
16852            lastDay: '[Вчера в] LT',
16853            lastWeek: function () {
16854                switch (this.day()) {
16855                    case 0:
16856                    case 3:
16857                    case 6:
16858                        return '[Миналата] dddd [в] LT';
16859                    case 1:
16860                    case 2:
16861                    case 4:
16862                    case 5:
16863                        return '[Миналия] dddd [в] LT';
16864                }
16865            },
16866            sameElse: 'L',
16867        },
16868        relativeTime: {
16869            future: 'след %s',
16870            past: 'преди %s',
16871            s: 'няколко секунди',
16872            ss: '%d секунди',
16873            m: 'минута',
16874            mm: '%d минути',
16875            h: 'час',
16876            hh: '%d часа',
16877            d: 'ден',
16878            dd: '%d дена',
16879            w: 'седмица',
16880            ww: '%d седмици',
16881            M: 'месец',
16882            MM: '%d месеца',
16883            y: 'година',
16884            yy: '%d години',
16885        },
16886        dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
16887        ordinal: function (number) {
16888            var lastDigit = number % 10,
16889                last2Digits = number % 100;
16890            if (number === 0) {
16891                return number + '-ев';
16892            } else if (last2Digits === 0) {
16893                return number + '-ен';
16894            } else if (last2Digits > 10 && last2Digits < 20) {
16895                return number + '-ти';
16896            } else if (lastDigit === 1) {
16897                return number + '-ви';
16898            } else if (lastDigit === 2) {
16899                return number + '-ри';
16900            } else if (lastDigit === 7 || lastDigit === 8) {
16901                return number + '-ми';
16902            } else {
16903                return number + '-ти';
16904            }
16905        },
16906        week: {
16907            dow: 1, // Monday is the first day of the week.
16908            doy: 7, // The week that contains Jan 7th is the first week of the year.
16909        },
16910    });
16911
16912    return bg;
16913
16914})));
16915
16916
16917/***/ }),
16918
vendor: 2,378 bytes, lines 16919-16988
16919/***/ "./node_modules/moment/locale/bm.js":
16920/*!******************************************!*\
16921  !*** ./node_modules/moment/locale/bm.js ***!
16922  \******************************************/
16923/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
16924
16925//! moment.js locale configuration
16926//! locale : Bambara [bm]
16927//! author : Estelle Comment : https://github.com/estellecomment
16928
16929;(function (global, factory) {
16930    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
16931   0
16932}(this, (function (moment) { 'use strict';
16933
16934    //! moment.js locale configuration
16935
16936    var bm = moment.defineLocale('bm', {
16937        months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(
16938            '_'
16939        ),
16940        monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),
16941        weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),
16942        weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),
16943        weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),
16944        longDateFormat: {
16945            LT: 'HH:mm',
16946            LTS: 'HH:mm:ss',
16947            L: 'DD/MM/YYYY',
16948            LL: 'MMMM [tile] D [san] YYYY',
16949            LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
16950            LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
16951        },
16952        calendar: {
16953            sameDay: '[Bi lɛrɛ] LT',
16954            nextDay: '[Sini lɛrɛ] LT',
16955            nextWeek: 'dddd [don lɛrɛ] LT',
16956            lastDay: '[Kunu lɛrɛ] LT',
16957            lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',
16958            sameElse: 'L',
16959        },
16960        relativeTime: {
16961            future: '%s kɔnɔ',
16962            past: 'a bɛ %s bɔ',
16963            s: 'sanga dama dama',
16964            ss: 'sekondi %d',
16965            m: 'miniti kelen',
16966            mm: 'miniti %d',
16967            h: 'lɛrɛ kelen',
16968            hh: 'lɛrɛ %d',
16969            d: 'tile kelen',
16970            dd: 'tile %d',
16971            M: 'kalo kelen',
16972            MM: 'kalo %d',
16973            y: 'san kelen',
16974            yy: 'san %d',
16975        },
16976        week: {
16977            dow: 1, // Monday is the first day of the week.
16978            doy: 4, // The week that contains Jan 4th is the first week of the year.
16979        },
16980    });
16981
16982    return bm;
16983
16984})));
16985
16986
16987/***/ }),
16988
vendor: 5,334 bytes, lines 16989-17136
16989/***/ "./node_modules/moment/locale/bn-bd.js":
16990/*!*********************************************!*\
16991  !*** ./node_modules/moment/locale/bn-bd.js ***!
16992  \*********************************************/
16993/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
16994
16995//! moment.js locale configuration
16996//! locale : Bengali (Bangladesh) [bn-bd]
16997//! author : Asraf Hossain Patoary : https://github.com/ashwoolford
16998
16999;(function (global, factory) {
17000    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
17001   0
17002}(this, (function (moment) { 'use strict';
17003
17004    //! moment.js locale configuration
17005
17006    var symbolMap = {
17007            1: 'à§§',
17008            2: '২',
17009            3: 'à§©',
17010            4: '৪',
17011            5: 'à§«',
17012            6: '৬',
17013            7: 'à§­',
17014            8: 'à§®',
17015            9: '৯',
17016            0: '০',
17017        },
17018        numberMap = {
17019            'à§§': '1',
17020            '২': '2',
17021            'à§©': '3',
17022            '৪': '4',
17023            'à§«': '5',
17024            '৬': '6',
17025            'à§­': '7',
17026            'à§®': '8',
17027            '৯': '9',
17028            '০': '0',
17029        };
17030
17031    var bnBd = moment.defineLocale('bn-bd', {
17032        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(
17033            '_'
17034        ),
17035        monthsShort:
17036            'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(
17037                '_'
17038            ),
17039        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(
17040            '_'
17041        ),
17042        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
17043        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
17044        longDateFormat: {
17045            LT: 'A h:mm সময়',
17046            LTS: 'A h:mm:ss সময়',
17047            L: 'DD/MM/YYYY',
17048            LL: 'D MMMM YYYY',
17049            LLL: 'D MMMM YYYY, A h:mm সময়',
17050            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',
17051        },
17052        calendar: {
17053            sameDay: '[আজ] LT',
17054            nextDay: '[আগামীকাল] LT',
17055            nextWeek: 'dddd, LT',
17056            lastDay: '[গতকাল] LT',
17057            lastWeek: '[গত] dddd, LT',
17058            sameElse: 'L',
17059        },
17060        relativeTime: {
17061            future: '%s পরে',
17062            past: '%s আগে',
17063            s: 'কয়েক সেকেন্ড',
17064            ss: '%d সেকেন্ড',
17065            m: 'এক মিনিট',
17066            mm: '%d মিনিট',
17067            h: 'এক ঘন্টা',
17068            hh: '%d ঘন্টা',
17069            d: 'এক দিন',
17070            dd: '%d দিন',
17071            M: 'এক মাস',
17072            MM: '%d মাস',
17073            y: 'এক বছর',
17074            yy: '%d বছর',
17075        },
17076        preparse: function (string) {
17077            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
17078                return numberMap[match];
17079            });
17080        },
17081        postformat: function (string) {
17082            return string.replace(/\d/g, function (match) {
17083                return symbolMap[match];
17084            });
17085        },
17086
17087        meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,
17088        meridiemHour: function (hour, meridiem) {
17089            if (hour === 12) {
17090                hour = 0;
17091            }
17092            if (meridiem === 'রাত') {
17093                return hour < 4 ? hour : hour + 12;
17094            } else if (meridiem === 'ভোর') {
17095                return hour;
17096            } else if (meridiem === 'সকাল') {
17097                return hour;
17098            } else if (meridiem === 'দুপুর') {
17099                return hour >= 3 ? hour : hour + 12;
17100            } else if (meridiem === 'বিকাল') {
17101                return hour + 12;
17102            } else if (meridiem === 'সন্ধ্যা') {
17103                return hour + 12;
17104            }
17105        },
17106
17107        meridiem: function (hour, minute, isLower) {
17108            if (hour < 4) {
17109                return 'রাত';
17110            } else if (hour < 6) {
17111                return 'ভোর';
17112            } else if (hour < 12) {
17113                return 'সকাল';
17114            } else if (hour < 15) {
17115                return 'দুপুর';
17116            } else if (hour < 18) {
17117                return 'বিকাল';
17118            } else if (hour < 20) {
17119                return 'সন্ধ্যা';
17120            } else {
17121                return 'রাত';
17122            }
17123        },
17124        week: {
17125            dow: 0, // Sunday is the first day of the week.
17126            doy: 6, // The week that contains Jan 6th is the first week of the year.
17127        },
17128    });
17129
17130    return bnBd;
17131
17132})));
17133
17134
17135/***/ }),
17136
vendor: 4,835 bytes, lines 17137-17274
17137/***/ "./node_modules/moment/locale/bn.js":
17138/*!******************************************!*\
17139  !*** ./node_modules/moment/locale/bn.js ***!
17140  \******************************************/
17141/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
17142
17143//! moment.js locale configuration
17144//! locale : Bengali [bn]
17145//! author : Kaushik Gandhi : https://github.com/kaushikgandhi
17146
17147;(function (global, factory) {
17148    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
17149   0
17150}(this, (function (moment) { 'use strict';
17151
17152    //! moment.js locale configuration
17153
17154    var symbolMap = {
17155            1: 'à§§',
17156            2: '২',
17157            3: 'à§©',
17158            4: '৪',
17159            5: 'à§«',
17160            6: '৬',
17161            7: 'à§­',
17162            8: 'à§®',
17163            9: '৯',
17164            0: '০',
17165        },
17166        numberMap = {
17167            'à§§': '1',
17168            '২': '2',
17169            'à§©': '3',
17170            '৪': '4',
17171            'à§«': '5',
17172            '৬': '6',
17173            'à§­': '7',
17174            'à§®': '8',
17175            '৯': '9',
17176            '০': '0',
17177        };
17178
17179    var bn = moment.defineLocale('bn', {
17180        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(
17181            '_'
17182        ),
17183        monthsShort:
17184            'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(
17185                '_'
17186            ),
17187        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(
17188            '_'
17189        ),
17190        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
17191        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
17192        longDateFormat: {
17193            LT: 'A h:mm সময়',
17194            LTS: 'A h:mm:ss সময়',
17195            L: 'DD/MM/YYYY',
17196            LL: 'D MMMM YYYY',
17197            LLL: 'D MMMM YYYY, A h:mm সময়',
17198            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',
17199        },
17200        calendar: {
17201            sameDay: '[আজ] LT',
17202            nextDay: '[আগামীকাল] LT',
17203            nextWeek: 'dddd, LT',
17204            lastDay: '[গতকাল] LT',
17205            lastWeek: '[গত] dddd, LT',
17206            sameElse: 'L',
17207        },
17208        relativeTime: {
17209            future: '%s পরে',
17210            past: '%s আগে',
17211            s: 'কয়েক সেকেন্ড',
17212            ss: '%d সেকেন্ড',
17213            m: 'এক মিনিট',
17214            mm: '%d মিনিট',
17215            h: 'এক ঘন্টা',
17216            hh: '%d ঘন্টা',
17217            d: 'এক দিন',
17218            dd: '%d দিন',
17219            M: 'এক মাস',
17220            MM: '%d মাস',
17221            y: 'এক বছর',
17222            yy: '%d বছর',
17223        },
17224        preparse: function (string) {
17225            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
17226                return numberMap[match];
17227            });
17228        },
17229        postformat: function (string) {
17230            return string.replace(/\d/g, function (match) {
17231                return symbolMap[match];
17232            });
17233        },
17234        meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,
17235        meridiemHour: function (hour, meridiem) {
17236            if (hour === 12) {
17237                hour = 0;
17238            }
17239            if (
17240                (meridiem === 'রাত' && hour >= 4) ||
17241                (meridiem === 'দুপুর' && hour < 5) ||
17242                meridiem === 'বিকাল'
17243            ) {
17244                return hour + 12;
17245            } else {
17246                return hour;
17247            }
17248        },
17249        meridiem: function (hour, minute, isLower) {
17250            if (hour < 4) {
17251                return 'রাত';
17252            } else if (hour < 10) {
17253                return 'সকাল';
17254            } else if (hour < 17) {
17255                return 'দুপুর';
17256            } else if (hour < 20) {
17257                return 'বিকাল';
17258            } else {
17259                return 'রাত';
17260            }
17261        },
17262        week: {
17263            dow: 0, // Sunday is the first day of the week.
17264            doy: 6, // The week that contains Jan 6th is the first week of the year.
17265        },
17266    });
17267
17268    return bn;
17269
17270})));
17271
17272
17273/***/ }),
17274
vendor: 5,356 bytes, lines 17275-17417
17275/***/ "./node_modules/moment/locale/bo.js":
17276/*!******************************************!*\
17277  !*** ./node_modules/moment/locale/bo.js ***!
17278  \******************************************/
17279/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
17280
17281//! moment.js locale configuration
17282//! locale : Tibetan [bo]
17283//! author : Thupten N. Chakrishar : https://github.com/vajradog
17284
17285;(function (global, factory) {
17286    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
17287   0
17288}(this, (function (moment) { 'use strict';
17289
17290    //! moment.js locale configuration
17291
17292    var symbolMap = {
17293            1: '༡',
17294            2: '༢',
17295            3: '༣',
17296            4: '༤',
17297            5: '༥',
17298            6: '༦',
17299            7: '༧',
17300            8: '༨',
17301            9: '༩',
17302            0: '༠',
17303        },
17304        numberMap = {
17305            '༡': '1',
17306            '༢': '2',
17307            '༣': '3',
17308            '༤': '4',
17309            '༥': '5',
17310            '༦': '6',
17311            '༧': '7',
17312            '༨': '8',
17313            '༩': '9',
17314            '༠': '0',
17315        };
17316
17317    var bo = moment.defineLocale('bo', {
17318        months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(
17319            '_'
17320        ),
17321        monthsShort:
17322            'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(
17323                '_'
17324            ),
17325        monthsShortRegex: /^(ཟླ་\d{1,2})/,
17326        monthsParseExact: true,
17327        weekdays:
17328            'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(
17329                '_'
17330            ),
17331        weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(
17332            '_'
17333        ),
17334        weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),
17335        longDateFormat: {
17336            LT: 'A h:mm',
17337            LTS: 'A h:mm:ss',
17338            L: 'DD/MM/YYYY',
17339            LL: 'D MMMM YYYY',
17340            LLL: 'D MMMM YYYY, A h:mm',
17341            LLLL: 'dddd, D MMMM YYYY, A h:mm',
17342        },
17343        calendar: {
17344            sameDay: '[དི་རིང] LT',
17345            nextDay: '[སང་ཉིན] LT',
17346            nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',
17347            lastDay: '[ཁ་སང] LT',
17348            lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
17349            sameElse: 'L',
17350        },
17351        relativeTime: {
17352            future: '%s ལ་',
17353            past: '%s སྔན་ལ',
17354            s: 'ལམ་སང',
17355            ss: '%d སྐར་ཆ།',
17356            m: 'སྐར་མ་གཅིག',
17357            mm: '%d སྐར་མ',
17358            h: 'ཆུ་ཚོད་གཅིག',
17359            hh: '%d ཆུ་ཚོད',
17360            d: 'ཉིན་གཅིག',
17361            dd: '%d ཉིན་',
17362            M: 'ཟླ་བ་གཅིག',
17363            MM: '%d ཟླ་བ',
17364            y: 'ལོ་གཅིག',
17365            yy: '%d ལོ',
17366        },
17367        preparse: function (string) {
17368            return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
17369                return numberMap[match];
17370            });
17371        },
17372        postformat: function (string) {
17373            return string.replace(/\d/g, function (match) {
17374                return symbolMap[match];
17375            });
17376        },
17377        meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
17378        meridiemHour: function (hour, meridiem) {
17379            if (hour === 12) {
17380                hour = 0;
17381            }
17382            if (
17383                (meridiem === 'མཚན་མོ' && hour >= 4) ||
17384                (meridiem === 'ཉིན་གུང' && hour < 5) ||
17385                meridiem === 'དགོང་དག'
17386            ) {
17387                return hour + 12;
17388            } else {
17389                return hour;
17390            }
17391        },
17392        meridiem: function (hour, minute, isLower) {
17393            if (hour < 4) {
17394                return 'མཚན་མོ';
17395            } else if (hour < 10) {
17396                return 'ཞོགས་ཀས';
17397            } else if (hour < 17) {
17398                return 'ཉིན་གུང';
17399            } else if (hour < 20) {
17400                return 'དགོང་དག';
17401            } else {
17402                return 'མཚན་མོ';
17403            }
17404        },
17405        week: {
17406            dow: 0, // Sunday is the first day of the week.
17407            doy: 6, // The week that contains Jan 6th is the first week of the year.
17408        },
17409    });
17410
17411    return bo;
17412
17413})));
17414
17415
17416/***/ }),
17417
vendor: 5,665 bytes, lines 17418-17604
17418/***/ "./node_modules/moment/locale/br.js":
17419/*!******************************************!*\
17420  !*** ./node_modules/moment/locale/br.js ***!
17421  \******************************************/
17422/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
17423
17424//! moment.js locale configuration
17425//! locale : Breton [br]
17426//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
17427
17428;(function (global, factory) {
17429    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
17430   0
17431}(this, (function (moment) { 'use strict';
17432
17433    //! moment.js locale configuration
17434
17435    function relativeTimeWithMutation(number, withoutSuffix, key) {
17436        var format = {
17437            mm: 'munutenn',
17438            MM: 'miz',
17439            dd: 'devezh',
17440        };
17441        return number + ' ' + mutation(format[key], number);
17442    }
17443    function specialMutationForYears(number) {
17444        switch (lastNumber(number)) {
17445            case 1:
17446            case 3:
17447            case 4:
17448            case 5:
17449            case 9:
17450                return number + ' bloaz';
17451            default:
17452                return number + ' vloaz';
17453        }
17454    }
17455    function lastNumber(number) {
17456        if (number > 9) {
17457            return lastNumber(number % 10);
17458        }
17459        return number;
17460    }
17461    function mutation(text, number) {
17462        if (number === 2) {
17463            return softMutation(text);
17464        }
17465        return text;
17466    }
17467    function softMutation(text) {
17468        var mutationTable = {
17469            m: 'v',
17470            b: 'v',
17471            d: 'z',
17472        };
17473        if (mutationTable[text.charAt(0)] === undefined) {
17474            return text;
17475        }
17476        return mutationTable[text.charAt(0)] + text.substring(1);
17477    }
17478
17479    var monthsParse = [
17480            /^gen/i,
17481            /^c[ʼ\']hwe/i,
17482            /^meu/i,
17483            /^ebr/i,
17484            /^mae/i,
17485            /^(mez|eve)/i,
17486            /^gou/i,
17487            /^eos/i,
17488            /^gwe/i,
17489            /^her/i,
17490            /^du/i,
17491            /^ker/i,
17492        ],
17493        monthsRegex =
17494            /^(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,
17495        monthsStrictRegex =
17496            /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,
17497        monthsShortStrictRegex =
17498            /^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
17499        fullWeekdaysParse = [
17500            /^sul/i,
17501            /^lun/i,
17502            /^meurzh/i,
17503            /^merc[ʼ\']her/i,
17504            /^yaou/i,
17505            /^gwener/i,
17506            /^sadorn/i,
17507        ],
17508        shortWeekdaysParse = [
17509            /^Sul/i,
17510            /^Lun/i,
17511            /^Meu/i,
17512            /^Mer/i,
17513            /^Yao/i,
17514            /^Gwe/i,
17515            /^Sad/i,
17516        ],
17517        minWeekdaysParse = [
17518            /^Su/i,
17519            /^Lu/i,
17520            /^Me([^r]|$)/i,
17521            /^Mer/i,
17522            /^Ya/i,
17523            /^Gw/i,
17524            /^Sa/i,
17525        ];
17526
17527    var br = moment.defineLocale('br', {
17528        months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(
17529            '_'
17530        ),
17531        monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
17532        weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),
17533        weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
17534        weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
17535        weekdaysParse: minWeekdaysParse,
17536        fullWeekdaysParse: fullWeekdaysParse,
17537        shortWeekdaysParse: shortWeekdaysParse,
17538        minWeekdaysParse: minWeekdaysParse,
17539
17540        monthsRegex: monthsRegex,
17541        monthsShortRegex: monthsRegex,
17542        monthsStrictRegex: monthsStrictRegex,
17543        monthsShortStrictRegex: monthsShortStrictRegex,
17544        monthsParse: monthsParse,
17545        longMonthsParse: monthsParse,
17546        shortMonthsParse: monthsParse,
17547
17548        longDateFormat: {
17549            LT: 'HH:mm',
17550            LTS: 'HH:mm:ss',
17551            L: 'DD/MM/YYYY',
17552            LL: 'D [a viz] MMMM YYYY',
17553            LLL: 'D [a viz] MMMM YYYY HH:mm',
17554            LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',
17555        },
17556        calendar: {
17557            sameDay: '[Hiziv da] LT',
17558            nextDay: '[Warcʼhoazh da] LT',
17559            nextWeek: 'dddd [da] LT',
17560            lastDay: '[Decʼh da] LT',
17561            lastWeek: 'dddd [paset da] LT',
17562            sameElse: 'L',
17563        },
17564        relativeTime: {
17565            future: 'a-benn %s',
17566            past: '%s ʼzo',
17567            s: 'un nebeud segondennoù',
17568            ss: '%d eilenn',
17569            m: 'ur vunutenn',
17570            mm: relativeTimeWithMutation,
17571            h: 'un eur',
17572            hh: '%d eur',
17573            d: 'un devezh',
17574            dd: relativeTimeWithMutation,
17575            M: 'ur miz',
17576            MM: relativeTimeWithMutation,
17577            y: 'ur bloaz',
17578            yy: specialMutationForYears,
17579        },
17580        dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/,
17581        ordinal: function (number) {
17582            var output = number === 1 ? 'añ' : 'vet';
17583            return number + output;
17584        },
17585        week: {
17586            dow: 1, // Monday is the first day of the week.
17587            doy: 4, // The week that contains Jan 4th is the first week of the year.
17588        },
17589        meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn
17590        isPM: function (token) {
17591            return token === 'g.m.';
17592        },
17593        meridiem: function (hour, minute, isLower) {
17594            return hour < 12 ? 'a.m.' : 'g.m.';
17595        },
17596    });
17597
17598    return br;
17599
17600})));
17601
17602
17603/***/ }),
17604
vendor: 5,820 bytes, lines 17605-17783
17605/***/ "./node_modules/moment/locale/bs.js":
17606/*!******************************************!*\
17607  !*** ./node_modules/moment/locale/bs.js ***!
17608  \******************************************/
17609/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
17610
17611//! moment.js locale configuration
17612//! locale : Bosnian [bs]
17613//! author : Nedim Cholich : https://github.com/frontyard
17614//! author : Rasid Redzic : https://github.com/rasidre
17615//! based on (hr) translation by Bojan Marković
17616
17617;(function (global, factory) {
17618    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
17619   0
17620}(this, (function (moment) { 'use strict';
17621
17622    //! moment.js locale configuration
17623
17624    function processRelativeTime(number, withoutSuffix, key, isFuture) {
17625        switch (key) {
17626            case 'm':
17627                return withoutSuffix
17628                    ? 'jedna minuta'
17629                    : isFuture
17630                      ? 'jednu minutu'
17631                      : 'jedne minute';
17632        }
17633    }
17634
17635    function translate(number, withoutSuffix, key) {
17636        var result = number + ' ';
17637        switch (key) {
17638            case 'ss':
17639                if (number === 1) {
17640                    result += 'sekunda';
17641                } else if (number === 2 || number === 3 || number === 4) {
17642                    result += 'sekunde';
17643                } else {
17644                    result += 'sekundi';
17645                }
17646                return result;
17647            case 'mm':
17648                if (number === 1) {
17649                    result += 'minuta';
17650                } else if (number === 2 || number === 3 || number === 4) {
17651                    result += 'minute';
17652                } else {
17653                    result += 'minuta';
17654                }
17655                return result;
17656            case 'h':
17657                return withoutSuffix ? 'jedan sat' : 'jedan sat';
17658            case 'hh':
17659                if (number === 1) {
17660                    result += 'sat';
17661                } else if (number === 2 || number === 3 || number === 4) {
17662                    result += 'sata';
17663                } else {
17664                    result += 'sati';
17665                }
17666                return result;
17667            case 'dd':
17668                if (number === 1) {
17669                    result += 'dan';
17670                } else {
17671                    result += 'dana';
17672                }
17673                return result;
17674            case 'MM':
17675                if (number === 1) {
17676                    result += 'mjesec';
17677                } else if (number === 2 || number === 3 || number === 4) {
17678                    result += 'mjeseca';
17679                } else {
17680                    result += 'mjeseci';
17681                }
17682                return result;
17683            case 'yy':
17684                if (number === 1) {
17685                    result += 'godina';
17686                } else if (number === 2 || number === 3 || number === 4) {
17687                    result += 'godine';
17688                } else {
17689                    result += 'godina';
17690                }
17691                return result;
17692        }
17693    }
17694
17695    var bs = moment.defineLocale('bs', {
17696        months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(
17697            '_'
17698        ),
17699        monthsShort:
17700            'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(
17701                '_'
17702            ),
17703        monthsParseExact: true,
17704        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
17705            '_'
17706        ),
17707        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
17708        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
17709        weekdaysParseExact: true,
17710        longDateFormat: {
17711            LT: 'H:mm',
17712            LTS: 'H:mm:ss',
17713            L: 'DD.MM.YYYY',
17714            LL: 'D. MMMM YYYY',
17715            LLL: 'D. MMMM YYYY H:mm',
17716            LLLL: 'dddd, D. MMMM YYYY H:mm',
17717        },
17718        calendar: {
17719            sameDay: '[danas u] LT',
17720            nextDay: '[sutra u] LT',
17721            nextWeek: function () {
17722                switch (this.day()) {
17723                    case 0:
17724                        return '[u] [nedjelju] [u] LT';
17725                    case 3:
17726                        return '[u] [srijedu] [u] LT';
17727                    case 6:
17728                        return '[u] [subotu] [u] LT';
17729                    case 1:
17730                    case 2:
17731                    case 4:
17732                    case 5:
17733                        return '[u] dddd [u] LT';
17734                }
17735            },
17736            lastDay: '[jučer u] LT',
17737            lastWeek: function () {
17738                switch (this.day()) {
17739                    case 0:
17740                    case 3:
17741                        return '[prošlu] dddd [u] LT';
17742                    case 6:
17743                        return '[prošle] [subote] [u] LT';
17744                    case 1:
17745                    case 2:
17746                    case 4:
17747                    case 5:
17748                        return '[prošli] dddd [u] LT';
17749                }
17750            },
17751            sameElse: 'L',
17752        },
17753        relativeTime: {
17754            future: 'za %s',
17755            past: 'prije %s',
17756            s: 'par sekundi',
17757            ss: translate,
17758            m: processRelativeTime,
17759            mm: translate,
17760            h: translate,
17761            hh: translate,
17762            d: 'dan',
17763            dd: translate,
17764            M: 'mjesec',
17765            MM: translate,
17766            y: 'godinu',
17767            yy: translate,
17768        },
17769        dayOfMonthOrdinalParse: /\d{1,2}\./,
17770        ordinal: '%d.',
17771        week: {
17772            dow: 1, // Monday is the first day of the week.
17773            doy: 7, // The week that contains Jan 7th is the first week of the year.
17774        },
17775    });
17776
17777    return bs;
17778
17779})));
17780
17781
17782/***/ }),
17783
vendor: 3,920 bytes, lines 17784-17902
17784/***/ "./node_modules/moment/locale/ca.js":
17785/*!******************************************!*\
17786  !*** ./node_modules/moment/locale/ca.js ***!
17787  \******************************************/
17788/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
17789
17790//! moment.js locale configuration
17791//! locale : Catalan [ca]
17792//! author : Juan G. Hurtado : https://github.com/juanghurtado
17793
17794;(function (global, factory) {
17795    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
17796   0
17797}(this, (function (moment) { 'use strict';
17798
17799    //! moment.js locale configuration
17800
17801    var ca = moment.defineLocale('ca', {
17802        months: {
17803            standalone:
17804                'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(
17805                    '_'
17806                ),
17807            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(
17808                '_'
17809            ),
17810            isFormat: /D[oD]?(\s)+MMMM/,
17811        },
17812        monthsShort:
17813            'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(
17814                '_'
17815            ),
17816        monthsParseExact: true,
17817        weekdays:
17818            'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(
17819                '_'
17820            ),
17821        weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
17822        weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),
17823        weekdaysParseExact: true,
17824        longDateFormat: {
17825            LT: 'H:mm',
17826            LTS: 'H:mm:ss',
17827            L: 'DD/MM/YYYY',
17828            LL: 'D MMMM [de] YYYY',
17829            ll: 'D MMM YYYY',
17830            LLL: 'D MMMM [de] YYYY [a les] H:mm',
17831            lll: 'D MMM YYYY, H:mm',
17832            LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',
17833            llll: 'ddd D MMM YYYY, H:mm',
17834        },
17835        calendar: {
17836            sameDay: function () {
17837                return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
17838            },
17839            nextDay: function () {
17840                return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
17841            },
17842            nextWeek: function () {
17843                return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
17844            },
17845            lastDay: function () {
17846                return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
17847            },
17848            lastWeek: function () {
17849                return (
17850                    '[el] dddd [passat a ' +
17851                    (this.hours() !== 1 ? 'les' : 'la') +
17852                    '] LT'
17853                );
17854            },
17855            sameElse: 'L',
17856        },
17857        relativeTime: {
17858            future: "d'aquí %s",
17859            past: 'fa %s',
17860            s: 'uns segons',
17861            ss: '%d segons',
17862            m: 'un minut',
17863            mm: '%d minuts',
17864            h: 'una hora',
17865            hh: '%d hores',
17866            d: 'un dia',
17867            dd: '%d dies',
17868            M: 'un mes',
17869            MM: '%d mesos',
17870            y: 'un any',
17871            yy: '%d anys',
17872        },
17873        dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
17874        ordinal: function (number, period) {
17875            var output =
17876                number === 1
17877                    ? 'r'
17878                    : number === 2
17879                      ? 'n'
17880                      : number === 3
17881                        ? 'r'
17882                        : number === 4
17883                          ? 't'
17884                          : 'è';
17885            if (period === 'w' || period === 'W') {
17886                output = 'a';
17887            }
17888            return number + output;
17889        },
17890        week: {
17891            dow: 1, // Monday is the first day of the week.
17892            doy: 4, // The week that contains Jan 4th is the first week of the year.
17893        },
17894    });
17895
17896    return ca;
17897
17898})));
17899
17900
17901/***/ }),
17902
vendor: 7,951 bytes, lines 17903-18102
17903/***/ "./node_modules/moment/locale/cs.js":
17904/*!******************************************!*\
17905  !*** ./node_modules/moment/locale/cs.js ***!
17906  \******************************************/
17907/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
17908
17909//! moment.js locale configuration
17910//! locale : Czech [cs]
17911//! author : petrbela : https://github.com/petrbela
17912
17913;(function (global, factory) {
17914    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
17915   0
17916}(this, (function (moment) { 'use strict';
17917
17918    //! moment.js locale configuration
17919
17920    var months = {
17921            standalone:
17922                'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(
17923                    '_'
17924                ),
17925            format: 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split(
17926                '_'
17927            ),
17928            isFormat: /DD?[o.]?(\[[^\[\]]*\]|\s)+MMMM/,
17929        },
17930        monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),
17931        monthsParse = [
17932            /^led/i,
17933            /^úno/i,
17934            /^bře/i,
17935            /^dub/i,
17936            /^kvě/i,
17937            /^(čvn|červen$|června)/i,
17938            /^(čvc|červenec|července)/i,
17939            /^srp/i,
17940            /^zář/i,
17941            /^říj/i,
17942            /^lis/i,
17943            /^pro/i,
17944        ],
17945        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
17946        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
17947        monthsRegex =
17948            /^(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;
17949
17950    function plural(n) {
17951        return n > 1 && n < 5 && ~~(n / 10) !== 1;
17952    }
17953    function translate(number, withoutSuffix, key, isFuture) {
17954        var result = number + ' ';
17955        switch (key) {
17956            case 's': // a few seconds / in a few seconds / a few seconds ago
17957                return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';
17958            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
17959                if (withoutSuffix || isFuture) {
17960                    return result + (plural(number) ? 'sekundy' : 'sekund');
17961                } else {
17962                    return result + 'sekundami';
17963                }
17964            case 'm': // a minute / in a minute / a minute ago
17965                return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';
17966            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
17967                if (withoutSuffix || isFuture) {
17968                    return result + (plural(number) ? 'minuty' : 'minut');
17969                } else {
17970                    return result + 'minutami';
17971                }
17972            case 'h': // an hour / in an hour / an hour ago
17973                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
17974            case 'hh': // 9 hours / in 9 hours / 9 hours ago
17975                if (withoutSuffix || isFuture) {
17976                    return result + (plural(number) ? 'hodiny' : 'hodin');
17977                } else {
17978                    return result + 'hodinami';
17979                }
17980            case 'd': // a day / in a day / a day ago
17981                return withoutSuffix || isFuture ? 'den' : 'dnem';
17982            case 'dd': // 9 days / in 9 days / 9 days ago
17983                if (withoutSuffix || isFuture) {
17984                    return result + (plural(number) ? 'dny' : 'dní');
17985                } else {
17986                    return result + 'dny';
17987                }
17988            case 'M': // a month / in a month / a month ago
17989                return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';
17990            case 'MM': // 9 months / in 9 months / 9 months ago
17991                if (withoutSuffix || isFuture) {
17992                    return result + (plural(number) ? 'měsíce' : 'měsíců');
17993                } else {
17994                    return result + 'měsíci';
17995                }
17996            case 'y': // a year / in a year / a year ago
17997                return withoutSuffix || isFuture ? 'rok' : 'rokem';
17998            case 'yy': // 9 years / in 9 years / 9 years ago
17999                if (withoutSuffix || isFuture) {
18000                    return result + (plural(number) ? 'roky' : 'let');
18001                } else {
18002                    return result + 'lety';
18003                }
18004        }
18005    }
18006
18007    var cs = moment.defineLocale('cs', {
18008        months: months,
18009        monthsShort: monthsShort,
18010        monthsRegex: monthsRegex,
18011        monthsShortRegex: monthsRegex,
18012        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
18013        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
18014        monthsStrictRegex:
18015            /^(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,
18016        monthsShortStrictRegex:
18017            /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,
18018        monthsParse: monthsParse,
18019        longMonthsParse: monthsParse,
18020        shortMonthsParse: monthsParse,
18021        weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
18022        weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),
18023        weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),
18024        longDateFormat: {
18025            LT: 'H:mm',
18026            LTS: 'H:mm:ss',
18027            L: 'DD.MM.YYYY',
18028            LL: 'D. MMMM YYYY',
18029            LLL: 'D. MMMM YYYY H:mm',
18030            LLLL: 'dddd D. MMMM YYYY H:mm',
18031            l: 'D. M. YYYY',
18032        },
18033        calendar: {
18034            sameDay: '[dnes v] LT',
18035            nextDay: '[zítra v] LT',
18036            nextWeek: function () {
18037                switch (this.day()) {
18038                    case 0:
18039                        return '[v neděli v] LT';
18040                    case 1:
18041                    case 2:
18042                        return '[v] dddd [v] LT';
18043                    case 3:
18044                        return '[ve středu v] LT';
18045                    case 4:
18046                        return '[ve čtvrtek v] LT';
18047                    case 5:
18048                        return '[v pátek v] LT';
18049                    case 6:
18050                        return '[v sobotu v] LT';
18051                }
18052            },
18053            lastDay: '[včera v] LT',
18054            lastWeek: function () {
18055                switch (this.day()) {
18056                    case 0:
18057                        return '[minulou neděli v] LT';
18058                    case 1:
18059                    case 2:
18060                        return '[minulé] dddd [v] LT';
18061                    case 3:
18062                        return '[minulou středu v] LT';
18063                    case 4:
18064                    case 5:
18065                        return '[minulý] dddd [v] LT';
18066                    case 6:
18067                        return '[minulou sobotu v] LT';
18068                }
18069            },
18070            sameElse: 'L',
18071        },
18072        relativeTime: {
18073            future: 'za %s',
18074            past: 'před %s',
18075            s: translate,
18076            ss: translate,
18077            m: translate,
18078            mm: translate,
18079            h: translate,
18080            hh: translate,
18081            d: translate,
18082            dd: translate,
18083            M: translate,
18084            MM: translate,
18085            y: translate,
18086            yy: translate,
18087        },
18088        dayOfMonthOrdinalParse: /\d{1,2}\./,
18089        ordinal: '%d.',
18090        week: {
18091            dow: 1, // Monday is the first day of the week.
18092            doy: 4, // The week that contains Jan 4th is the first week of the year.
18093        },
18094    });
18095
18096    return cs;
18097
18098})));
18099
18100
18101/***/ }),
18102
vendor: 3,062 bytes, lines 18103-18184
18103/***/ "./node_modules/moment/locale/cv.js":
18104/*!******************************************!*\
18105  !*** ./node_modules/moment/locale/cv.js ***!
18106  \******************************************/
18107/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
18108
18109//! moment.js locale configuration
18110//! locale : Chuvash [cv]
18111//! author : Anatoly Mironov : https://github.com/mirontoli
18112
18113;(function (global, factory) {
18114    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
18115   0
18116}(this, (function (moment) { 'use strict';
18117
18118    //! moment.js locale configuration
18119
18120    var cv = moment.defineLocale('cv', {
18121        months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(
18122            '_'
18123        ),
18124        monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
18125        weekdays:
18126            'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(
18127                '_'
18128            ),
18129        weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
18130        weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
18131        longDateFormat: {
18132            LT: 'HH:mm',
18133            LTS: 'HH:mm:ss',
18134            L: 'DD-MM-YYYY',
18135            LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
18136            LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
18137            LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
18138        },
18139        calendar: {
18140            sameDay: '[Паян] LT [сехетре]',
18141            nextDay: '[Ыран] LT [сехетре]',
18142            lastDay: '[Ӗнер] LT [сехетре]',
18143            nextWeek: '[Ҫитес] dddd LT [сехетре]',
18144            lastWeek: '[Иртнӗ] dddd LT [сехетре]',
18145            sameElse: 'L',
18146        },
18147        relativeTime: {
18148            future: function (output) {
18149                var affix = /сехет$/i.exec(output)
18150                    ? 'рен'
18151                    : /ҫул$/i.exec(output)
18152                      ? 'тан'
18153                      : 'ран';
18154                return output + affix;
18155            },
18156            past: '%s каялла',
18157            s: 'пӗр-ик ҫеккунт',
18158            ss: '%d ҫеккунт',
18159            m: 'пӗр минут',
18160            mm: '%d минут',
18161            h: 'пӗр сехет',
18162            hh: '%d сехет',
18163            d: 'пӗр кун',
18164            dd: '%d кун',
18165            M: 'пӗр уйӑх',
18166            MM: '%d уйӑх',
18167            y: 'пӗр ҫул',
18168            yy: '%d ҫул',
18169        },
18170        dayOfMonthOrdinalParse: /\d{1,2}-мӗш/,
18171        ordinal: '%d-мӗш',
18172        week: {
18173            dow: 1, // Monday is the first day of the week.
18174            doy: 7, // The week that contains Jan 7th is the first week of the year.
18175        },
18176    });
18177
18178    return cv;
18179
18180})));
18181
18182
18183/***/ }),
18184
vendor: 3,687 bytes, lines 18185-18301
18185/***/ "./node_modules/moment/locale/cy.js":
18186/*!******************************************!*\
18187  !*** ./node_modules/moment/locale/cy.js ***!
18188  \******************************************/
18189/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
18190
18191//! moment.js locale configuration
18192//! locale : Welsh [cy]
18193//! author : Robert Allen : https://github.com/robgallen
18194//! author : https://github.com/ryangreaves
18195
18196;(function (global, factory) {
18197    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
18198   0
18199}(this, (function (moment) { 'use strict';
18200
18201    //! moment.js locale configuration
18202
18203    var cy = moment.defineLocale('cy', {
18204        months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(
18205            '_'
18206        ),
18207        monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(
18208            '_'
18209        ),
18210        weekdays:
18211            'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(
18212                '_'
18213            ),
18214        weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
18215        weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
18216        weekdaysParseExact: true,
18217        // time formats are the same as en-gb
18218        longDateFormat: {
18219            LT: 'HH:mm',
18220            LTS: 'HH:mm:ss',
18221            L: 'DD/MM/YYYY',
18222            LL: 'D MMMM YYYY',
18223            LLL: 'D MMMM YYYY HH:mm',
18224            LLLL: 'dddd, D MMMM YYYY HH:mm',
18225        },
18226        calendar: {
18227            sameDay: '[Heddiw am] LT',
18228            nextDay: '[Yfory am] LT',
18229            nextWeek: 'dddd [am] LT',
18230            lastDay: '[Ddoe am] LT',
18231            lastWeek: 'dddd [diwethaf am] LT',
18232            sameElse: 'L',
18233        },
18234        relativeTime: {
18235            future: 'mewn %s',
18236            past: '%s yn ôl',
18237            s: 'ychydig eiliadau',
18238            ss: '%d eiliad',
18239            m: 'munud',
18240            mm: '%d munud',
18241            h: 'awr',
18242            hh: '%d awr',
18243            d: 'diwrnod',
18244            dd: '%d diwrnod',
18245            M: 'mis',
18246            MM: '%d mis',
18247            y: 'blwyddyn',
18248            yy: '%d flynedd',
18249        },
18250        dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
18251        // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
18252        ordinal: function (number) {
18253            var b = number,
18254                output = '',
18255                lookup = [
18256                    '',
18257                    'af',
18258                    'il',
18259                    'ydd',
18260                    'ydd',
18261                    'ed',
18262                    'ed',
18263                    'ed',
18264                    'fed',
18265                    'fed',
18266                    'fed', // 1af to 10fed
18267                    'eg',
18268                    'fed',
18269                    'eg',
18270                    'eg',
18271                    'fed',
18272                    'eg',
18273                    'eg',
18274                    'fed',
18275                    'eg',
18276                    'fed', // 11eg to 20fed
18277                ];
18278            if (b > 20) {
18279                if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
18280                    output = 'fed'; // not 30ain, 70ain or 90ain
18281                } else {
18282                    output = 'ain';
18283                }
18284            } else if (b > 0) {
18285                output = lookup[b];
18286            }
18287            return number + output;
18288        },
18289        week: {
18290            dow: 1, // Monday is the first day of the week.
18291            doy: 4, // The week that contains Jan 4th is the first week of the year.
18292        },
18293    });
18294
18295    return cy;
18296
18297})));
18298
18299
18300/***/ }),
18301
vendor: 2,306 bytes, lines 18302-18373
18302/***/ "./node_modules/moment/locale/da.js":
18303/*!******************************************!*\
18304  !*** ./node_modules/moment/locale/da.js ***!
18305  \******************************************/
18306/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
18307
18308//! moment.js locale configuration
18309//! locale : Danish [da]
18310//! author : Ulrik Nielsen : https://github.com/mrbase
18311
18312;(function (global, factory) {
18313    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
18314   0
18315}(this, (function (moment) { 'use strict';
18316
18317    //! moment.js locale configuration
18318
18319    var da = moment.defineLocale('da', {
18320        months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(
18321            '_'
18322        ),
18323        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
18324        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
18325        weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),
18326        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
18327        longDateFormat: {
18328            LT: 'HH:mm',
18329            LTS: 'HH:mm:ss',
18330            L: 'DD.MM.YYYY',
18331            LL: 'D. MMMM YYYY',
18332            LLL: 'D. MMMM YYYY HH:mm',
18333            LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',
18334        },
18335        calendar: {
18336            sameDay: '[i dag kl.] LT',
18337            nextDay: '[i morgen kl.] LT',
18338            nextWeek: 'på dddd [kl.] LT',
18339            lastDay: '[i går kl.] LT',
18340            lastWeek: '[i] dddd[s kl.] LT',
18341            sameElse: 'L',
18342        },
18343        relativeTime: {
18344            future: 'om %s',
18345            past: '%s siden',
18346            s: 'få sekunder',
18347            ss: '%d sekunder',
18348            m: 'et minut',
18349            mm: '%d minutter',
18350            h: 'en time',
18351            hh: '%d timer',
18352            d: 'en dag',
18353            dd: '%d dage',
18354            M: 'en måned',
18355            MM: '%d måneder',
18356            y: 'et år',
18357            yy: '%d år',
18358        },
18359        dayOfMonthOrdinalParse: /\d{1,2}\./,
18360        ordinal: '%d.',
18361        week: {
18362            dow: 1, // Monday is the first day of the week.
18363            doy: 4, // The week that contains Jan 4th is the first week of the year.
18364        },
18365    });
18366
18367    return da;
18368
18369})));
18370
18371
18372/***/ }),
18373
vendor: 3,416 bytes, lines 18374-18471
18374/***/ "./node_modules/moment/locale/de-at.js":
18375/*!*********************************************!*\
18376  !*** ./node_modules/moment/locale/de-at.js ***!
18377  \*********************************************/
18378/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
18379
18380//! moment.js locale configuration
18381//! locale : German (Austria) [de-at]
18382//! author : lluchs : https://github.com/lluchs
18383//! author: Menelion Elensúle: https://github.com/Oire
18384//! author : Martin Groller : https://github.com/MadMG
18385//! author : Mikolaj Dadela : https://github.com/mik01aj
18386
18387;(function (global, factory) {
18388    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
18389   0
18390}(this, (function (moment) { 'use strict';
18391
18392    //! moment.js locale configuration
18393
18394    function processRelativeTime(number, withoutSuffix, key, isFuture) {
18395        var format = {
18396            m: ['eine Minute', 'einer Minute'],
18397            h: ['eine Stunde', 'einer Stunde'],
18398            d: ['ein Tag', 'einem Tag'],
18399            dd: [number + ' Tage', number + ' Tagen'],
18400            w: ['eine Woche', 'einer Woche'],
18401            M: ['ein Monat', 'einem Monat'],
18402            MM: [number + ' Monate', number + ' Monaten'],
18403            y: ['ein Jahr', 'einem Jahr'],
18404            yy: [number + ' Jahre', number + ' Jahren'],
18405        };
18406        return withoutSuffix ? format[key][0] : format[key][1];
18407    }
18408
18409    var deAt = moment.defineLocale('de-at', {
18410        months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
18411            '_'
18412        ),
18413        monthsShort:
18414            'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
18415        monthsParseExact: true,
18416        weekdays:
18417            'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
18418                '_'
18419            ),
18420        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
18421        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
18422        weekdaysParseExact: true,
18423        longDateFormat: {
18424            LT: 'HH:mm',
18425            LTS: 'HH:mm:ss',
18426            L: 'DD.MM.YYYY',
18427            LL: 'D. MMMM YYYY',
18428            LLL: 'D. MMMM YYYY HH:mm',
18429            LLLL: 'dddd, D. MMMM YYYY HH:mm',
18430        },
18431        calendar: {
18432            sameDay: '[heute um] LT [Uhr]',
18433            sameElse: 'L',
18434            nextDay: '[morgen um] LT [Uhr]',
18435            nextWeek: 'dddd [um] LT [Uhr]',
18436            lastDay: '[gestern um] LT [Uhr]',
18437            lastWeek: '[letzten] dddd [um] LT [Uhr]',
18438        },
18439        relativeTime: {
18440            future: 'in %s',
18441            past: 'vor %s',
18442            s: 'ein paar Sekunden',
18443            ss: '%d Sekunden',
18444            m: processRelativeTime,
18445            mm: '%d Minuten',
18446            h: processRelativeTime,
18447            hh: '%d Stunden',
18448            d: processRelativeTime,
18449            dd: processRelativeTime,
18450            w: processRelativeTime,
18451            ww: '%d Wochen',
18452            M: processRelativeTime,
18453            MM: processRelativeTime,
18454            y: processRelativeTime,
18455            yy: processRelativeTime,
18456        },
18457        dayOfMonthOrdinalParse: /\d{1,2}\./,
18458        ordinal: '%d.',
18459        week: {
18460            dow: 1, // Monday is the first day of the week.
18461            doy: 4, // The week that contains Jan 4th is the first week of the year.
18462        },
18463    });
18464
18465    return deAt;
18466
18467})));
18468
18469
18470/***/ }),
18471
vendor: 3,251 bytes, lines 18472-18566
18472/***/ "./node_modules/moment/locale/de-ch.js":
18473/*!*********************************************!*\
18474  !*** ./node_modules/moment/locale/de-ch.js ***!
18475  \*********************************************/
18476/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
18477
18478//! moment.js locale configuration
18479//! locale : German (Switzerland) [de-ch]
18480//! author : sschueller : https://github.com/sschueller
18481
18482;(function (global, factory) {
18483    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
18484   0
18485}(this, (function (moment) { 'use strict';
18486
18487    //! moment.js locale configuration
18488
18489    function processRelativeTime(number, withoutSuffix, key, isFuture) {
18490        var format = {
18491            m: ['eine Minute', 'einer Minute'],
18492            h: ['eine Stunde', 'einer Stunde'],
18493            d: ['ein Tag', 'einem Tag'],
18494            dd: [number + ' Tage', number + ' Tagen'],
18495            w: ['eine Woche', 'einer Woche'],
18496            M: ['ein Monat', 'einem Monat'],
18497            MM: [number + ' Monate', number + ' Monaten'],
18498            y: ['ein Jahr', 'einem Jahr'],
18499            yy: [number + ' Jahre', number + ' Jahren'],
18500        };
18501        return withoutSuffix ? format[key][0] : format[key][1];
18502    }
18503
18504    var deCh = moment.defineLocale('de-ch', {
18505        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
18506            '_'
18507        ),
18508        monthsShort:
18509            'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
18510        monthsParseExact: true,
18511        weekdays:
18512            'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
18513                '_'
18514            ),
18515        weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
18516        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
18517        weekdaysParseExact: true,
18518        longDateFormat: {
18519            LT: 'HH:mm',
18520            LTS: 'HH:mm:ss',
18521            L: 'DD.MM.YYYY',
18522            LL: 'D. MMMM YYYY',
18523            LLL: 'D. MMMM YYYY HH:mm',
18524            LLLL: 'dddd, D. MMMM YYYY HH:mm',
18525        },
18526        calendar: {
18527            sameDay: '[heute um] LT [Uhr]',
18528            sameElse: 'L',
18529            nextDay: '[morgen um] LT [Uhr]',
18530            nextWeek: 'dddd [um] LT [Uhr]',
18531            lastDay: '[gestern um] LT [Uhr]',
18532            lastWeek: '[letzten] dddd [um] LT [Uhr]',
18533        },
18534        relativeTime: {
18535            future: 'in %s',
18536            past: 'vor %s',
18537            s: 'ein paar Sekunden',
18538            ss: '%d Sekunden',
18539            m: processRelativeTime,
18540            mm: '%d Minuten',
18541            h: processRelativeTime,
18542            hh: '%d Stunden',
18543            d: processRelativeTime,
18544            dd: processRelativeTime,
18545            w: processRelativeTime,
18546            ww: '%d Wochen',
18547            M: processRelativeTime,
18548            MM: processRelativeTime,
18549            y: processRelativeTime,
18550            yy: processRelativeTime,
18551        },
18552        dayOfMonthOrdinalParse: /\d{1,2}\./,
18553        ordinal: '%d.',
18554        week: {
18555            dow: 1, // Monday is the first day of the week.
18556            doy: 4, // The week that contains Jan 4th is the first week of the year.
18557        },
18558    });
18559
18560    return deCh;
18561
18562})));
18563
18564
18565/***/ }),
18566
vendor: 3,327 bytes, lines 18567-18663
18567/***/ "./node_modules/moment/locale/de.js":
18568/*!******************************************!*\
18569  !*** ./node_modules/moment/locale/de.js ***!
18570  \******************************************/
18571/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
18572
18573//! moment.js locale configuration
18574//! locale : German [de]
18575//! author : lluchs : https://github.com/lluchs
18576//! author: Menelion Elensúle: https://github.com/Oire
18577//! author : Mikolaj Dadela : https://github.com/mik01aj
18578
18579;(function (global, factory) {
18580    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
18581   0
18582}(this, (function (moment) { 'use strict';
18583
18584    //! moment.js locale configuration
18585
18586    function processRelativeTime(number, withoutSuffix, key, isFuture) {
18587        var format = {
18588            m: ['eine Minute', 'einer Minute'],
18589            h: ['eine Stunde', 'einer Stunde'],
18590            d: ['ein Tag', 'einem Tag'],
18591            dd: [number + ' Tage', number + ' Tagen'],
18592            w: ['eine Woche', 'einer Woche'],
18593            M: ['ein Monat', 'einem Monat'],
18594            MM: [number + ' Monate', number + ' Monaten'],
18595            y: ['ein Jahr', 'einem Jahr'],
18596            yy: [number + ' Jahre', number + ' Jahren'],
18597        };
18598        return withoutSuffix ? format[key][0] : format[key][1];
18599    }
18600
18601    var de = moment.defineLocale('de', {
18602        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
18603            '_'
18604        ),
18605        monthsShort:
18606            'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
18607        monthsParseExact: true,
18608        weekdays:
18609            'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
18610                '_'
18611            ),
18612        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
18613        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
18614        weekdaysParseExact: true,
18615        longDateFormat: {
18616            LT: 'HH:mm',
18617            LTS: 'HH:mm:ss',
18618            L: 'DD.MM.YYYY',
18619            LL: 'D. MMMM YYYY',
18620            LLL: 'D. MMMM YYYY HH:mm',
18621            LLLL: 'dddd, D. MMMM YYYY HH:mm',
18622        },
18623        calendar: {
18624            sameDay: '[heute um] LT [Uhr]',
18625            sameElse: 'L',
18626            nextDay: '[morgen um] LT [Uhr]',
18627            nextWeek: 'dddd [um] LT [Uhr]',
18628            lastDay: '[gestern um] LT [Uhr]',
18629            lastWeek: '[letzten] dddd [um] LT [Uhr]',
18630        },
18631        relativeTime: {
18632            future: 'in %s',
18633            past: 'vor %s',
18634            s: 'ein paar Sekunden',
18635            ss: '%d Sekunden',
18636            m: processRelativeTime,
18637            mm: '%d Minuten',
18638            h: processRelativeTime,
18639            hh: '%d Stunden',
18640            d: processRelativeTime,
18641            dd: processRelativeTime,
18642            w: processRelativeTime,
18643            ww: '%d Wochen',
18644            M: processRelativeTime,
18645            MM: processRelativeTime,
18646            y: processRelativeTime,
18647            yy: processRelativeTime,
18648        },
18649        dayOfMonthOrdinalParse: /\d{1,2}\./,
18650        ordinal: '%d.',
18651        week: {
18652            dow: 1, // Monday is the first day of the week.
18653            doy: 4, // The week that contains Jan 4th is the first week of the year.
18654        },
18655    });
18656
18657    return de;
18658
18659})));
18660
18661
18662/***/ }),
18663
vendor: 3,285 bytes, lines 18664-18772
18664/***/ "./node_modules/moment/locale/dv.js":
18665/*!******************************************!*\
18666  !*** ./node_modules/moment/locale/dv.js ***!
18667  \******************************************/
18668/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
18669
18670//! moment.js locale configuration
18671//! locale : Maldivian [dv]
18672//! author : Jawish Hameed : https://github.com/jawish
18673
18674;(function (global, factory) {
18675    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
18676   0
18677}(this, (function (moment) { 'use strict';
18678
18679    //! moment.js locale configuration
18680
18681    var months = [
18682            'ޖެނުއަރީ',
18683            'ފެބްރުއަރީ',
18684            'މާރިޗު',
18685            'އޭޕްރީލު',
18686            'މޭ',
18687            'ޖޫން',
18688            'ޖުލައި',
18689            'އޯގަސްޓު',
18690            'ސެޕްޓެމްބަރު',
18691            'އޮކްޓޯބަރު',
18692            'ނޮވެމްބަރު',
18693            'ޑިސެމްބަރު',
18694        ],
18695        weekdays = [
18696            'އާދިއްތަ',
18697            'ހޯމަ',
18698            'އަންގާރަ',
18699            'ބުދަ',
18700            'ބުރާސްފަތި',
18701            'ހުކުރު',
18702            'ހޮނިހިރު',
18703        ];
18704
18705    var dv = moment.defineLocale('dv', {
18706        months: months,
18707        monthsShort: months,
18708        weekdays: weekdays,
18709        weekdaysShort: weekdays,
18710        weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
18711        longDateFormat: {
18712            LT: 'HH:mm',
18713            LTS: 'HH:mm:ss',
18714            L: 'D/M/YYYY',
18715            LL: 'D MMMM YYYY',
18716            LLL: 'D MMMM YYYY HH:mm',
18717            LLLL: 'dddd D MMMM YYYY HH:mm',
18718        },
18719        meridiemParse: /މކ|މފ/,
18720        isPM: function (input) {
18721            return 'މފ' === input;
18722        },
18723        meridiem: function (hour, minute, isLower) {
18724            if (hour < 12) {
18725                return 'މކ';
18726            } else {
18727                return 'މފ';
18728            }
18729        },
18730        calendar: {
18731            sameDay: '[މިއަދު] LT',
18732            nextDay: '[މާދަމާ] LT',
18733            nextWeek: 'dddd LT',
18734            lastDay: '[އިއްޔެ] LT',
18735            lastWeek: '[ފާއިތުވި] dddd LT',
18736            sameElse: 'L',
18737        },
18738        relativeTime: {
18739            future: 'ތެރޭގައި %s',
18740            past: 'ކުރިން %s',
18741            s: 'ސިކުންތުކޮޅެއް',
18742            ss: 'd% ސިކުންތު',
18743            m: 'މިނިޓެއް',
18744            mm: 'މިނިޓު %d',
18745            h: 'ގަޑިއިރެއް',
18746            hh: 'ގަޑިއިރު %d',
18747            d: 'ދުވަހެއް',
18748            dd: 'ދުވަސް %d',
18749            M: 'މަހެއް',
18750            MM: 'މަސް %d',
18751            y: 'އަހަރެއް',
18752            yy: 'އަހަރު %d',
18753        },
18754        preparse: function (string) {
18755            return string.replace(/،/g, ',');
18756        },
18757        postformat: function (string) {
18758            return string.replace(/,/g, '،');
18759        },
18760        week: {
18761            dow: 7, // Sunday is the first day of the week.
18762            doy: 12, // The week that contains Jan 12th is the first week of the year.
18763        },
18764    });
18765
18766    return dv;
18767
18768})));
18769
18770
18771/***/ }),
18772
vendor: 4,762 bytes, lines 18773-18897
18773/***/ "./node_modules/moment/locale/el.js":
18774/*!******************************************!*\
18775  !*** ./node_modules/moment/locale/el.js ***!
18776  \******************************************/
18777/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
18778
18779//! moment.js locale configuration
18780//! locale : Greek [el]
18781//! author : Aggelos Karalias : https://github.com/mehiel
18782
18783;(function (global, factory) {
18784    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
18785   0
18786}(this, (function (moment) { 'use strict';
18787
18788    //! moment.js locale configuration
18789
18790    function isFunction(input) {
18791        return (
18792            (typeof Function !== 'undefined' && input instanceof Function) ||
18793            Object.prototype.toString.call(input) === '[object Function]'
18794        );
18795    }
18796
18797    var el = moment.defineLocale('el', {
18798        monthsNominativeEl:
18799            'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(
18800                '_'
18801            ),
18802        monthsGenitiveEl:
18803            'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(
18804                '_'
18805            ),
18806        months: function (momentToFormat, format) {
18807            if (!momentToFormat) {
18808                return this._monthsNominativeEl;
18809            } else if (
18810                typeof format === 'string' &&
18811                /D/.test(format.substring(0, format.indexOf('MMMM')))
18812            ) {
18813                // if there is a day number before 'MMMM'
18814                return this._monthsGenitiveEl[momentToFormat.month()];
18815            } else {
18816                return this._monthsNominativeEl[momentToFormat.month()];
18817            }
18818        },
18819        monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),
18820        weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(
18821            '_'
18822        ),
18823        weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
18824        weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
18825        meridiem: function (hours, minutes, isLower) {
18826            if (hours > 11) {
18827                return isLower ? 'μμ' : 'ΜΜ';
18828            } else {
18829                return isLower ? 'πμ' : 'ΠΜ';
18830            }
18831        },
18832        isPM: function (input) {
18833            return (input + '').toLowerCase()[0] === 'μ';
18834        },
18835        meridiemParse: /[ΠΜ]\.?Μ?\.?/i,
18836        longDateFormat: {
18837            LT: 'h:mm A',
18838            LTS: 'h:mm:ss A',
18839            L: 'DD/MM/YYYY',
18840            LL: 'D MMMM YYYY',
18841            LLL: 'D MMMM YYYY h:mm A',
18842            LLLL: 'dddd, D MMMM YYYY h:mm A',
18843        },
18844        calendarEl: {
18845            sameDay: '[Σήμερα {}] LT',
18846            nextDay: '[Αύριο {}] LT',
18847            nextWeek: 'dddd [{}] LT',
18848            lastDay: '[Χθες {}] LT',
18849            lastWeek: function () {
18850                switch (this.day()) {
18851                    case 6:
18852                        return '[το προηγούμενο] dddd [{}] LT';
18853                    default:
18854                        return '[την προηγούμενη] dddd [{}] LT';
18855                }
18856            },
18857            sameElse: 'L',
18858        },
18859        calendar: function (key, mom) {
18860            var output = this._calendarEl[key],
18861                hours = mom && mom.hours();
18862            if (isFunction(output)) {
18863                output = output.apply(mom);
18864            }
18865            return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');
18866        },
18867        relativeTime: {
18868            future: 'σε %s',
18869            past: '%s πριν',
18870            s: 'λίγα δευτερόλεπτα',
18871            ss: '%d δευτερόλεπτα',
18872            m: 'ένα λεπτό',
18873            mm: '%d λεπτά',
18874            h: 'μία ώρα',
18875            hh: '%d ώρες',
18876            d: 'μία μέρα',
18877            dd: '%d μέρες',
18878            M: 'ένας μήνας',
18879            MM: '%d μήνες',
18880            y: 'ένας χρόνος',
18881            yy: '%d χρόνια',
18882        },
18883        dayOfMonthOrdinalParse: /\d{1,2}η/,
18884        ordinal: '%dη',
18885        week: {
18886            dow: 1, // Monday is the first day of the week.
18887            doy: 4, // The week that contains Jan 4st is the first week of the year.
18888        },
18889    });
18890
18891    return el;
18892
18893})));
18894
18895
18896/***/ }),
18897
vendor: 2,806 bytes, lines 18898-18984
18898/***/ "./node_modules/moment/locale/en-au.js":
18899/*!*********************************************!*\
18900  !*** ./node_modules/moment/locale/en-au.js ***!
18901  \*********************************************/
18902/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
18903
18904//! moment.js locale configuration
18905//! locale : English (Australia) [en-au]
18906//! author : Jared Morse : https://github.com/jarcoal
18907
18908;(function (global, factory) {
18909    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
18910   0
18911}(this, (function (moment) { 'use strict';
18912
18913    //! moment.js locale configuration
18914
18915    var enAu = moment.defineLocale('en-au', {
18916        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
18917            '_'
18918        ),
18919        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
18920        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
18921            '_'
18922        ),
18923        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
18924        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
18925        longDateFormat: {
18926            LT: 'h:mm A',
18927            LTS: 'h:mm:ss A',
18928            L: 'DD/MM/YYYY',
18929            LL: 'D MMMM YYYY',
18930            LLL: 'D MMMM YYYY h:mm A',
18931            LLLL: 'dddd, D MMMM YYYY h:mm A',
18932        },
18933        calendar: {
18934            sameDay: '[Today at] LT',
18935            nextDay: '[Tomorrow at] LT',
18936            nextWeek: 'dddd [at] LT',
18937            lastDay: '[Yesterday at] LT',
18938            lastWeek: '[Last] dddd [at] LT',
18939            sameElse: 'L',
18940        },
18941        relativeTime: {
18942            future: 'in %s',
18943            past: '%s ago',
18944            s: 'a few seconds',
18945            ss: '%d seconds',
18946            m: 'a minute',
18947            mm: '%d minutes',
18948            h: 'an hour',
18949            hh: '%d hours',
18950            d: 'a day',
18951            dd: '%d days',
18952            M: 'a month',
18953            MM: '%d months',
18954            y: 'a year',
18955            yy: '%d years',
18956        },
18957        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
18958        ordinal: function (number) {
18959            var b = number % 10,
18960                output =
18961                    ~~((number % 100) / 10) === 1
18962                        ? 'th'
18963                        : b === 1
18964                          ? 'st'
18965                          : b === 2
18966                            ? 'nd'
18967                            : b === 3
18968                              ? 'rd'
18969                              : 'th';
18970            return number + output;
18971        },
18972        week: {
18973            dow: 0, // Sunday is the first day of the week.
18974            doy: 4, // The week that contains Jan 4th is the first week of the year.
18975        },
18976    });
18977
18978    return enAu;
18979
18980})));
18981
18982
18983/***/ }),
18984
vendor: 2,639 bytes, lines 18985-19067
18985/***/ "./node_modules/moment/locale/en-ca.js":
18986/*!*********************************************!*\
18987  !*** ./node_modules/moment/locale/en-ca.js ***!
18988  \*********************************************/
18989/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
18990
18991//! moment.js locale configuration
18992//! locale : English (Canada) [en-ca]
18993//! author : Jonathan Abourbih : https://github.com/jonbca
18994
18995;(function (global, factory) {
18996    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
18997   0
18998}(this, (function (moment) { 'use strict';
18999
19000    //! moment.js locale configuration
19001
19002    var enCa = moment.defineLocale('en-ca', {
19003        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
19004            '_'
19005        ),
19006        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
19007        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
19008            '_'
19009        ),
19010        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
19011        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
19012        longDateFormat: {
19013            LT: 'h:mm A',
19014            LTS: 'h:mm:ss A',
19015            L: 'YYYY-MM-DD',
19016            LL: 'MMMM D, YYYY',
19017            LLL: 'MMMM D, YYYY h:mm A',
19018            LLLL: 'dddd, MMMM D, YYYY h:mm A',
19019        },
19020        calendar: {
19021            sameDay: '[Today at] LT',
19022            nextDay: '[Tomorrow at] LT',
19023            nextWeek: 'dddd [at] LT',
19024            lastDay: '[Yesterday at] LT',
19025            lastWeek: '[Last] dddd [at] LT',
19026            sameElse: 'L',
19027        },
19028        relativeTime: {
19029            future: 'in %s',
19030            past: '%s ago',
19031            s: 'a few seconds',
19032            ss: '%d seconds',
19033            m: 'a minute',
19034            mm: '%d minutes',
19035            h: 'an hour',
19036            hh: '%d hours',
19037            d: 'a day',
19038            dd: '%d days',
19039            M: 'a month',
19040            MM: '%d months',
19041            y: 'a year',
19042            yy: '%d years',
19043        },
19044        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
19045        ordinal: function (number) {
19046            var b = number % 10,
19047                output =
19048                    ~~((number % 100) / 10) === 1
19049                        ? 'th'
19050                        : b === 1
19051                          ? 'st'
19052                          : b === 2
19053                            ? 'nd'
19054                            : b === 3
19055                              ? 'rd'
19056                              : 'th';
19057            return number + output;
19058        },
19059    });
19060
19061    return enCa;
19062
19063})));
19064
19065
19066/***/ }),
19067
vendor: 2,812 bytes, lines 19068-19154
19068/***/ "./node_modules/moment/locale/en-gb.js":
19069/*!*********************************************!*\
19070  !*** ./node_modules/moment/locale/en-gb.js ***!
19071  \*********************************************/
19072/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
19073
19074//! moment.js locale configuration
19075//! locale : English (United Kingdom) [en-gb]
19076//! author : Chris Gedrim : https://github.com/chrisgedrim
19077
19078;(function (global, factory) {
19079    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
19080   0
19081}(this, (function (moment) { 'use strict';
19082
19083    //! moment.js locale configuration
19084
19085    var enGb = moment.defineLocale('en-gb', {
19086        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
19087            '_'
19088        ),
19089        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
19090        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
19091            '_'
19092        ),
19093        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
19094        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
19095        longDateFormat: {
19096            LT: 'HH:mm',
19097            LTS: 'HH:mm:ss',
19098            L: 'DD/MM/YYYY',
19099            LL: 'D MMMM YYYY',
19100            LLL: 'D MMMM YYYY HH:mm',
19101            LLLL: 'dddd, D MMMM YYYY HH:mm',
19102        },
19103        calendar: {
19104            sameDay: '[Today at] LT',
19105            nextDay: '[Tomorrow at] LT',
19106            nextWeek: 'dddd [at] LT',
19107            lastDay: '[Yesterday at] LT',
19108            lastWeek: '[Last] dddd [at] LT',
19109            sameElse: 'L',
19110        },
19111        relativeTime: {
19112            future: 'in %s',
19113            past: '%s ago',
19114            s: 'a few seconds',
19115            ss: '%d seconds',
19116            m: 'a minute',
19117            mm: '%d minutes',
19118            h: 'an hour',
19119            hh: '%d hours',
19120            d: 'a day',
19121            dd: '%d days',
19122            M: 'a month',
19123            MM: '%d months',
19124            y: 'a year',
19125            yy: '%d years',
19126        },
19127        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
19128        ordinal: function (number) {
19129            var b = number % 10,
19130                output =
19131                    ~~((number % 100) / 10) === 1
19132                        ? 'th'
19133                        : b === 1
19134                          ? 'st'
19135                          : b === 2
19136                            ? 'nd'
19137                            : b === 3
19138                              ? 'rd'
19139                              : 'th';
19140            return number + output;
19141        },
19142        week: {
19143            dow: 1, // Monday is the first day of the week.
19144            doy: 4, // The week that contains Jan 4th is the first week of the year.
19145        },
19146    });
19147
19148    return enGb;
19149
19150})));
19151
19152
19153/***/ }),
19154
vendor: 2,810 bytes, lines 19155-19241
19155/***/ "./node_modules/moment/locale/en-ie.js":
19156/*!*********************************************!*\
19157  !*** ./node_modules/moment/locale/en-ie.js ***!
19158  \*********************************************/
19159/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
19160
19161//! moment.js locale configuration
19162//! locale : English (Ireland) [en-ie]
19163//! author : Chris Cartlidge : https://github.com/chriscartlidge
19164
19165;(function (global, factory) {
19166    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
19167   0
19168}(this, (function (moment) { 'use strict';
19169
19170    //! moment.js locale configuration
19171
19172    var enIe = moment.defineLocale('en-ie', {
19173        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
19174            '_'
19175        ),
19176        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
19177        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
19178            '_'
19179        ),
19180        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
19181        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
19182        longDateFormat: {
19183            LT: 'HH:mm',
19184            LTS: 'HH:mm:ss',
19185            L: 'DD/MM/YYYY',
19186            LL: 'D MMMM YYYY',
19187            LLL: 'D MMMM YYYY HH:mm',
19188            LLLL: 'dddd D MMMM YYYY HH:mm',
19189        },
19190        calendar: {
19191            sameDay: '[Today at] LT',
19192            nextDay: '[Tomorrow at] LT',
19193            nextWeek: 'dddd [at] LT',
19194            lastDay: '[Yesterday at] LT',
19195            lastWeek: '[Last] dddd [at] LT',
19196            sameElse: 'L',
19197        },
19198        relativeTime: {
19199            future: 'in %s',
19200            past: '%s ago',
19201            s: 'a few seconds',
19202            ss: '%d seconds',
19203            m: 'a minute',
19204            mm: '%d minutes',
19205            h: 'an hour',
19206            hh: '%d hours',
19207            d: 'a day',
19208            dd: '%d days',
19209            M: 'a month',
19210            MM: '%d months',
19211            y: 'a year',
19212            yy: '%d years',
19213        },
19214        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
19215        ordinal: function (number) {
19216            var b = number % 10,
19217                output =
19218                    ~~((number % 100) / 10) === 1
19219                        ? 'th'
19220                        : b === 1
19221                          ? 'st'
19222                          : b === 2
19223                            ? 'nd'
19224                            : b === 3
19225                              ? 'rd'
19226                              : 'th';
19227            return number + output;
19228        },
19229        week: {
19230            dow: 1, // Monday is the first day of the week.
19231            doy: 4, // The week that contains Jan 4th is the first week of the year.
19232        },
19233    });
19234
19235    return enIe;
19236
19237})));
19238
19239
19240/***/ }),
19241
vendor: 2,632 bytes, lines 19242-19324
19242/***/ "./node_modules/moment/locale/en-il.js":
19243/*!*********************************************!*\
19244  !*** ./node_modules/moment/locale/en-il.js ***!
19245  \*********************************************/
19246/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
19247
19248//! moment.js locale configuration
19249//! locale : English (Israel) [en-il]
19250//! author : Chris Gedrim : https://github.com/chrisgedrim
19251
19252;(function (global, factory) {
19253    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
19254   0
19255}(this, (function (moment) { 'use strict';
19256
19257    //! moment.js locale configuration
19258
19259    var enIl = moment.defineLocale('en-il', {
19260        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
19261            '_'
19262        ),
19263        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
19264        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
19265            '_'
19266        ),
19267        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
19268        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
19269        longDateFormat: {
19270            LT: 'HH:mm',
19271            LTS: 'HH:mm:ss',
19272            L: 'DD/MM/YYYY',
19273            LL: 'D MMMM YYYY',
19274            LLL: 'D MMMM YYYY HH:mm',
19275            LLLL: 'dddd, D MMMM YYYY HH:mm',
19276        },
19277        calendar: {
19278            sameDay: '[Today at] LT',
19279            nextDay: '[Tomorrow at] LT',
19280            nextWeek: 'dddd [at] LT',
19281            lastDay: '[Yesterday at] LT',
19282            lastWeek: '[Last] dddd [at] LT',
19283            sameElse: 'L',
19284        },
19285        relativeTime: {
19286            future: 'in %s',
19287            past: '%s ago',
19288            s: 'a few seconds',
19289            ss: '%d seconds',
19290            m: 'a minute',
19291            mm: '%d minutes',
19292            h: 'an hour',
19293            hh: '%d hours',
19294            d: 'a day',
19295            dd: '%d days',
19296            M: 'a month',
19297            MM: '%d months',
19298            y: 'a year',
19299            yy: '%d years',
19300        },
19301        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
19302        ordinal: function (number) {
19303            var b = number % 10,
19304                output =
19305                    ~~((number % 100) / 10) === 1
19306                        ? 'th'
19307                        : b === 1
19308                          ? 'st'
19309                          : b === 2
19310                            ? 'nd'
19311                            : b === 3
19312                              ? 'rd'
19313                              : 'th';
19314            return number + output;
19315        },
19316    });
19317
19318    return enIl;
19319
19320})));
19321
19322
19323/***/ }),
19324
vendor: 2,806 bytes, lines 19325-19411
19325/***/ "./node_modules/moment/locale/en-in.js":
19326/*!*********************************************!*\
19327  !*** ./node_modules/moment/locale/en-in.js ***!
19328  \*********************************************/
19329/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
19330
19331//! moment.js locale configuration
19332//! locale : English (India) [en-in]
19333//! author : Jatin Agrawal : https://github.com/jatinag22
19334
19335;(function (global, factory) {
19336    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
19337   0
19338}(this, (function (moment) { 'use strict';
19339
19340    //! moment.js locale configuration
19341
19342    var enIn = moment.defineLocale('en-in', {
19343        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
19344            '_'
19345        ),
19346        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
19347        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
19348            '_'
19349        ),
19350        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
19351        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
19352        longDateFormat: {
19353            LT: 'h:mm A',
19354            LTS: 'h:mm:ss A',
19355            L: 'DD/MM/YYYY',
19356            LL: 'D MMMM YYYY',
19357            LLL: 'D MMMM YYYY h:mm A',
19358            LLLL: 'dddd, D MMMM YYYY h:mm A',
19359        },
19360        calendar: {
19361            sameDay: '[Today at] LT',
19362            nextDay: '[Tomorrow at] LT',
19363            nextWeek: 'dddd [at] LT',
19364            lastDay: '[Yesterday at] LT',
19365            lastWeek: '[Last] dddd [at] LT',
19366            sameElse: 'L',
19367        },
19368        relativeTime: {
19369            future: 'in %s',
19370            past: '%s ago',
19371            s: 'a few seconds',
19372            ss: '%d seconds',
19373            m: 'a minute',
19374            mm: '%d minutes',
19375            h: 'an hour',
19376            hh: '%d hours',
19377            d: 'a day',
19378            dd: '%d days',
19379            M: 'a month',
19380            MM: '%d months',
19381            y: 'a year',
19382            yy: '%d years',
19383        },
19384        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
19385        ordinal: function (number) {
19386            var b = number % 10,
19387                output =
19388                    ~~((number % 100) / 10) === 1
19389                        ? 'th'
19390                        : b === 1
19391                          ? 'st'
19392                          : b === 2
19393                            ? 'nd'
19394                            : b === 3
19395                              ? 'rd'
19396                              : 'th';
19397            return number + output;
19398        },
19399        week: {
19400            dow: 0, // Sunday is the first day of the week.
19401            doy: 6, // The week that contains Jan 1st is the first week of the year.
19402        },
19403    });
19404
19405    return enIn;
19406
19407})));
19408
19409
19410/***/ }),
19411
vendor: 2,815 bytes, lines 19412-19498
19412/***/ "./node_modules/moment/locale/en-nz.js":
19413/*!*********************************************!*\
19414  !*** ./node_modules/moment/locale/en-nz.js ***!
19415  \*********************************************/
19416/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
19417
19418//! moment.js locale configuration
19419//! locale : English (New Zealand) [en-nz]
19420//! author : Luke McGregor : https://github.com/lukemcgregor
19421
19422;(function (global, factory) {
19423    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
19424   0
19425}(this, (function (moment) { 'use strict';
19426
19427    //! moment.js locale configuration
19428
19429    var enNz = moment.defineLocale('en-nz', {
19430        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
19431            '_'
19432        ),
19433        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
19434        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
19435            '_'
19436        ),
19437        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
19438        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
19439        longDateFormat: {
19440            LT: 'h:mm A',
19441            LTS: 'h:mm:ss A',
19442            L: 'DD/MM/YYYY',
19443            LL: 'D MMMM YYYY',
19444            LLL: 'D MMMM YYYY h:mm A',
19445            LLLL: 'dddd, D MMMM YYYY h:mm A',
19446        },
19447        calendar: {
19448            sameDay: '[Today at] LT',
19449            nextDay: '[Tomorrow at] LT',
19450            nextWeek: 'dddd [at] LT',
19451            lastDay: '[Yesterday at] LT',
19452            lastWeek: '[Last] dddd [at] LT',
19453            sameElse: 'L',
19454        },
19455        relativeTime: {
19456            future: 'in %s',
19457            past: '%s ago',
19458            s: 'a few seconds',
19459            ss: '%d seconds',
19460            m: 'a minute',
19461            mm: '%d minutes',
19462            h: 'an hour',
19463            hh: '%d hours',
19464            d: 'a day',
19465            dd: '%d days',
19466            M: 'a month',
19467            MM: '%d months',
19468            y: 'a year',
19469            yy: '%d years',
19470        },
19471        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
19472        ordinal: function (number) {
19473            var b = number % 10,
19474                output =
19475                    ~~((number % 100) / 10) === 1
19476                        ? 'th'
19477                        : b === 1
19478                          ? 'st'
19479                          : b === 2
19480                            ? 'nd'
19481                            : b === 3
19482                              ? 'rd'
19483                              : 'th';
19484            return number + output;
19485        },
19486        week: {
19487            dow: 1, // Monday is the first day of the week.
19488            doy: 4, // The week that contains Jan 4th is the first week of the year.
19489        },
19490    });
19491
19492    return enNz;
19493
19494})));
19495
19496
19497/***/ }),
19498
vendor: 2,824 bytes, lines 19499-19585
19499/***/ "./node_modules/moment/locale/en-sg.js":
19500/*!*********************************************!*\
19501  !*** ./node_modules/moment/locale/en-sg.js ***!
19502  \*********************************************/
19503/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
19504
19505//! moment.js locale configuration
19506//! locale : English (Singapore) [en-sg]
19507//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension
19508
19509;(function (global, factory) {
19510    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
19511   0
19512}(this, (function (moment) { 'use strict';
19513
19514    //! moment.js locale configuration
19515
19516    var enSg = moment.defineLocale('en-sg', {
19517        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
19518            '_'
19519        ),
19520        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
19521        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
19522            '_'
19523        ),
19524        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
19525        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
19526        longDateFormat: {
19527            LT: 'HH:mm',
19528            LTS: 'HH:mm:ss',
19529            L: 'DD/MM/YYYY',
19530            LL: 'D MMMM YYYY',
19531            LLL: 'D MMMM YYYY HH:mm',
19532            LLLL: 'dddd, D MMMM YYYY HH:mm',
19533        },
19534        calendar: {
19535            sameDay: '[Today at] LT',
19536            nextDay: '[Tomorrow at] LT',
19537            nextWeek: 'dddd [at] LT',
19538            lastDay: '[Yesterday at] LT',
19539            lastWeek: '[Last] dddd [at] LT',
19540            sameElse: 'L',
19541        },
19542        relativeTime: {
19543            future: 'in %s',
19544            past: '%s ago',
19545            s: 'a few seconds',
19546            ss: '%d seconds',
19547            m: 'a minute',
19548            mm: '%d minutes',
19549            h: 'an hour',
19550            hh: '%d hours',
19551            d: 'a day',
19552            dd: '%d days',
19553            M: 'a month',
19554            MM: '%d months',
19555            y: 'a year',
19556            yy: '%d years',
19557        },
19558        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
19559        ordinal: function (number) {
19560            var b = number % 10,
19561                output =
19562                    ~~((number % 100) / 10) === 1
19563                        ? 'th'
19564                        : b === 1
19565                          ? 'st'
19566                          : b === 2
19567                            ? 'nd'
19568                            : b === 3
19569                              ? 'rd'
19570                              : 'th';
19571            return number + output;
19572        },
19573        week: {
19574            dow: 1, // Monday is the first day of the week.
19575            doy: 4, // The week that contains Jan 4th is the first week of the year.
19576        },
19577    });
19578
19579    return enSg;
19580
19581})));
19582
19583
19584/***/ }),
19585
vendor: 3,063 bytes, lines 19586-19672
19586/***/ "./node_modules/moment/locale/eo.js":
19587/*!******************************************!*\
19588  !*** ./node_modules/moment/locale/eo.js ***!
19589  \******************************************/
19590/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
19591
19592//! moment.js locale configuration
19593//! locale : Esperanto [eo]
19594//! author : Colin Dean : https://github.com/colindean
19595//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia
19596//! comment : miestasmia corrected the translation by colindean
19597//! comment : Vivakvo corrected the translation by colindean and miestasmia
19598
19599;(function (global, factory) {
19600    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
19601   0
19602}(this, (function (moment) { 'use strict';
19603
19604    //! moment.js locale configuration
19605
19606    var eo = moment.defineLocale('eo', {
19607        months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aÅ­gusto_septembro_oktobro_novembro_decembro'.split(
19608            '_'
19609        ),
19610        monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aÅ­g_sept_okt_nov_dec'.split('_'),
19611        weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),
19612        weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),
19613        weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),
19614        longDateFormat: {
19615            LT: 'HH:mm',
19616            LTS: 'HH:mm:ss',
19617            L: 'YYYY-MM-DD',
19618            LL: '[la] D[-an de] MMMM, YYYY',
19619            LLL: '[la] D[-an de] MMMM, YYYY HH:mm',
19620            LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',
19621            llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',
19622        },
19623        meridiemParse: /[ap]\.t\.m/i,
19624        isPM: function (input) {
19625            return input.charAt(0).toLowerCase() === 'p';
19626        },
19627        meridiem: function (hours, minutes, isLower) {
19628            if (hours > 11) {
19629                return isLower ? 'p.t.m.' : 'P.T.M.';
19630            } else {
19631                return isLower ? 'a.t.m.' : 'A.T.M.';
19632            }
19633        },
19634        calendar: {
19635            sameDay: '[HodiaÅ­ je] LT',
19636            nextDay: '[MorgaÅ­ je] LT',
19637            nextWeek: 'dddd[n je] LT',
19638            lastDay: '[HieraÅ­ je] LT',
19639            lastWeek: '[pasintan] dddd[n je] LT',
19640            sameElse: 'L',
19641        },
19642        relativeTime: {
19643            future: 'post %s',
19644            past: 'antaÅ­ %s',
19645            s: 'kelkaj sekundoj',
19646            ss: '%d sekundoj',
19647            m: 'unu minuto',
19648            mm: '%d minutoj',
19649            h: 'unu horo',
19650            hh: '%d horoj',
19651            d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo
19652            dd: '%d tagoj',
19653            M: 'unu monato',
19654            MM: '%d monatoj',
19655            y: 'unu jaro',
19656            yy: '%d jaroj',
19657        },
19658        dayOfMonthOrdinalParse: /\d{1,2}a/,
19659        ordinal: '%da',
19660        week: {
19661            dow: 1, // Monday is the first day of the week.
19662            doy: 7, // The week that contains Jan 7th is the first week of the year.
19663        },
19664    });
19665
19666    return eo;
19667
19668})));
19669
19670
19671/***/ }),
19672
vendor: 4,354 bytes, lines 19673-19799
19673/***/ "./node_modules/moment/locale/es-do.js":
19674/*!*********************************************!*\
19675  !*** ./node_modules/moment/locale/es-do.js ***!
19676  \*********************************************/
19677/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
19678
19679//! moment.js locale configuration
19680//! locale : Spanish (Dominican Republic) [es-do]
19681
19682;(function (global, factory) {
19683    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
19684   0
19685}(this, (function (moment) { 'use strict';
19686
19687    //! moment.js locale configuration
19688
19689    var monthsShortDot =
19690            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
19691                '_'
19692            ),
19693        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
19694        monthsParse = [
19695            /^ene/i,
19696            /^feb/i,
19697            /^mar/i,
19698            /^abr/i,
19699            /^may/i,
19700            /^jun/i,
19701            /^jul/i,
19702            /^ago/i,
19703            /^sep/i,
19704            /^oct/i,
19705            /^nov/i,
19706            /^dic/i,
19707        ],
19708        monthsRegex =
19709            /^(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;
19710
19711    var esDo = moment.defineLocale('es-do', {
19712        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
19713            '_'
19714        ),
19715        monthsShort: function (m, format) {
19716            if (!m) {
19717                return monthsShortDot;
19718            } else if (/-MMM-/.test(format)) {
19719                return monthsShort[m.month()];
19720            } else {
19721                return monthsShortDot[m.month()];
19722            }
19723        },
19724        monthsRegex: monthsRegex,
19725        monthsShortRegex: monthsRegex,
19726        monthsStrictRegex:
19727            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
19728        monthsShortStrictRegex:
19729            /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
19730        monthsParse: monthsParse,
19731        longMonthsParse: monthsParse,
19732        shortMonthsParse: monthsParse,
19733        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
19734        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
19735        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
19736        weekdaysParseExact: true,
19737        longDateFormat: {
19738            LT: 'h:mm A',
19739            LTS: 'h:mm:ss A',
19740            L: 'DD/MM/YYYY',
19741            LL: 'D [de] MMMM [de] YYYY',
19742            LLL: 'D [de] MMMM [de] YYYY h:mm A',
19743            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
19744        },
19745        calendar: {
19746            sameDay: function () {
19747                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
19748            },
19749            nextDay: function () {
19750                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
19751            },
19752            nextWeek: function () {
19753                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
19754            },
19755            lastDay: function () {
19756                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
19757            },
19758            lastWeek: function () {
19759                return (
19760                    '[el] dddd [pasado a la' +
19761                    (this.hours() !== 1 ? 's' : '') +
19762                    '] LT'
19763                );
19764            },
19765            sameElse: 'L',
19766        },
19767        relativeTime: {
19768            future: 'en %s',
19769            past: 'hace %s',
19770            s: 'unos segundos',
19771            ss: '%d segundos',
19772            m: 'un minuto',
19773            mm: '%d minutos',
19774            h: 'una hora',
19775            hh: '%d horas',
19776            d: 'un día',
19777            dd: '%d días',
19778            w: 'una semana',
19779            ww: '%d semanas',
19780            M: 'un mes',
19781            MM: '%d meses',
19782            y: 'un año',
19783            yy: '%d años',
19784        },
19785        dayOfMonthOrdinalParse: /\d{1,2}º/,
19786        ordinal: '%dº',
19787        week: {
19788            dow: 1, // Monday is the first day of the week.
19789            doy: 4, // The week that contains Jan 4th is the first week of the year.
19790        },
19791    });
19792
19793    return esDo;
19794
19795})));
19796
19797
19798/***/ }),
19799
vendor: 4,427 bytes, lines 19800-19928
19800/***/ "./node_modules/moment/locale/es-mx.js":
19801/*!*********************************************!*\
19802  !*** ./node_modules/moment/locale/es-mx.js ***!
19803  \*********************************************/
19804/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
19805
19806//! moment.js locale configuration
19807//! locale : Spanish (Mexico) [es-mx]
19808//! author : JC Franco : https://github.com/jcfranco
19809
19810;(function (global, factory) {
19811    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
19812   0
19813}(this, (function (moment) { 'use strict';
19814
19815    //! moment.js locale configuration
19816
19817    var monthsShortDot =
19818            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
19819                '_'
19820            ),
19821        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
19822        monthsParse = [
19823            /^ene/i,
19824            /^feb/i,
19825            /^mar/i,
19826            /^abr/i,
19827            /^may/i,
19828            /^jun/i,
19829            /^jul/i,
19830            /^ago/i,
19831            /^sep/i,
19832            /^oct/i,
19833            /^nov/i,
19834            /^dic/i,
19835        ],
19836        monthsRegex =
19837            /^(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;
19838
19839    var esMx = moment.defineLocale('es-mx', {
19840        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
19841            '_'
19842        ),
19843        monthsShort: function (m, format) {
19844            if (!m) {
19845                return monthsShortDot;
19846            } else if (/-MMM-/.test(format)) {
19847                return monthsShort[m.month()];
19848            } else {
19849                return monthsShortDot[m.month()];
19850            }
19851        },
19852        monthsRegex: monthsRegex,
19853        monthsShortRegex: monthsRegex,
19854        monthsStrictRegex:
19855            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
19856        monthsShortStrictRegex:
19857            /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
19858        monthsParse: monthsParse,
19859        longMonthsParse: monthsParse,
19860        shortMonthsParse: monthsParse,
19861        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
19862        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
19863        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
19864        weekdaysParseExact: true,
19865        longDateFormat: {
19866            LT: 'H:mm',
19867            LTS: 'H:mm:ss',
19868            L: 'DD/MM/YYYY',
19869            LL: 'D [de] MMMM [de] YYYY',
19870            LLL: 'D [de] MMMM [de] YYYY H:mm',
19871            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
19872        },
19873        calendar: {
19874            sameDay: function () {
19875                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
19876            },
19877            nextDay: function () {
19878                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
19879            },
19880            nextWeek: function () {
19881                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
19882            },
19883            lastDay: function () {
19884                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
19885            },
19886            lastWeek: function () {
19887                return (
19888                    '[el] dddd [pasado a la' +
19889                    (this.hours() !== 1 ? 's' : '') +
19890                    '] LT'
19891                );
19892            },
19893            sameElse: 'L',
19894        },
19895        relativeTime: {
19896            future: 'en %s',
19897            past: 'hace %s',
19898            s: 'unos segundos',
19899            ss: '%d segundos',
19900            m: 'un minuto',
19901            mm: '%d minutos',
19902            h: 'una hora',
19903            hh: '%d horas',
19904            d: 'un día',
19905            dd: '%d días',
19906            w: 'una semana',
19907            ww: '%d semanas',
19908            M: 'un mes',
19909            MM: '%d meses',
19910            y: 'un año',
19911            yy: '%d años',
19912        },
19913        dayOfMonthOrdinalParse: /\d{1,2}º/,
19914        ordinal: '%dº',
19915        week: {
19916            dow: 0, // Sunday is the first day of the week.
19917            doy: 4, // The week that contains Jan 4th is the first week of the year.
19918        },
19919        invalidDate: 'Fecha inválida',
19920    });
19921
19922    return esMx;
19923
19924})));
19925
19926
19927/***/ }),
19928
vendor: 4,451 bytes, lines 19929-20057
19929/***/ "./node_modules/moment/locale/es-us.js":
19930/*!*********************************************!*\
19931  !*** ./node_modules/moment/locale/es-us.js ***!
19932  \*********************************************/
19933/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
19934
19935//! moment.js locale configuration
19936//! locale : Spanish (United States) [es-us]
19937//! author : bustta : https://github.com/bustta
19938//! author : chrisrodz : https://github.com/chrisrodz
19939
19940;(function (global, factory) {
19941    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
19942   0
19943}(this, (function (moment) { 'use strict';
19944
19945    //! moment.js locale configuration
19946
19947    var monthsShortDot =
19948            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
19949                '_'
19950            ),
19951        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
19952        monthsParse = [
19953            /^ene/i,
19954            /^feb/i,
19955            /^mar/i,
19956            /^abr/i,
19957            /^may/i,
19958            /^jun/i,
19959            /^jul/i,
19960            /^ago/i,
19961            /^sep/i,
19962            /^oct/i,
19963            /^nov/i,
19964            /^dic/i,
19965        ],
19966        monthsRegex =
19967            /^(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;
19968
19969    var esUs = moment.defineLocale('es-us', {
19970        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
19971            '_'
19972        ),
19973        monthsShort: function (m, format) {
19974            if (!m) {
19975                return monthsShortDot;
19976            } else if (/-MMM-/.test(format)) {
19977                return monthsShort[m.month()];
19978            } else {
19979                return monthsShortDot[m.month()];
19980            }
19981        },
19982        monthsRegex: monthsRegex,
19983        monthsShortRegex: monthsRegex,
19984        monthsStrictRegex:
19985            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
19986        monthsShortStrictRegex:
19987            /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
19988        monthsParse: monthsParse,
19989        longMonthsParse: monthsParse,
19990        shortMonthsParse: monthsParse,
19991        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
19992        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
19993        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
19994        weekdaysParseExact: true,
19995        longDateFormat: {
19996            LT: 'h:mm A',
19997            LTS: 'h:mm:ss A',
19998            L: 'MM/DD/YYYY',
19999            LL: 'D [de] MMMM [de] YYYY',
20000            LLL: 'D [de] MMMM [de] YYYY h:mm A',
20001            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
20002        },
20003        calendar: {
20004            sameDay: function () {
20005                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
20006            },
20007            nextDay: function () {
20008                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
20009            },
20010            nextWeek: function () {
20011                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
20012            },
20013            lastDay: function () {
20014                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
20015            },
20016            lastWeek: function () {
20017                return (
20018                    '[el] dddd [pasado a la' +
20019                    (this.hours() !== 1 ? 's' : '') +
20020                    '] LT'
20021                );
20022            },
20023            sameElse: 'L',
20024        },
20025        relativeTime: {
20026            future: 'en %s',
20027            past: 'hace %s',
20028            s: 'unos segundos',
20029            ss: '%d segundos',
20030            m: 'un minuto',
20031            mm: '%d minutos',
20032            h: 'una hora',
20033            hh: '%d horas',
20034            d: 'un día',
20035            dd: '%d días',
20036            w: 'una semana',
20037            ww: '%d semanas',
20038            M: 'un mes',
20039            MM: '%d meses',
20040            y: 'un año',
20041            yy: '%d años',
20042        },
20043        dayOfMonthOrdinalParse: /\d{1,2}º/,
20044        ordinal: '%dº',
20045        week: {
20046            dow: 0, // Sunday is the first day of the week.
20047            doy: 6, // The week that contains Jan 6th is the first week of the year.
20048        },
20049    });
20050
20051    return esUs;
20052
20053})));
20054
20055
20056/***/ }),
20057
vendor: 4,399 bytes, lines 20058-20186
20058/***/ "./node_modules/moment/locale/es.js":
20059/*!******************************************!*\
20060  !*** ./node_modules/moment/locale/es.js ***!
20061  \******************************************/
20062/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
20063
20064//! moment.js locale configuration
20065//! locale : Spanish [es]
20066//! author : Julio Napurí : https://github.com/julionc
20067
20068;(function (global, factory) {
20069    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
20070   0
20071}(this, (function (moment) { 'use strict';
20072
20073    //! moment.js locale configuration
20074
20075    var monthsShortDot =
20076            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
20077                '_'
20078            ),
20079        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
20080        monthsParse = [
20081            /^ene/i,
20082            /^feb/i,
20083            /^mar/i,
20084            /^abr/i,
20085            /^may/i,
20086            /^jun/i,
20087            /^jul/i,
20088            /^ago/i,
20089            /^sep/i,
20090            /^oct/i,
20091            /^nov/i,
20092            /^dic/i,
20093        ],
20094        monthsRegex =
20095            /^(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;
20096
20097    var es = moment.defineLocale('es', {
20098        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
20099            '_'
20100        ),
20101        monthsShort: function (m, format) {
20102            if (!m) {
20103                return monthsShortDot;
20104            } else if (/-MMM-/.test(format)) {
20105                return monthsShort[m.month()];
20106            } else {
20107                return monthsShortDot[m.month()];
20108            }
20109        },
20110        monthsRegex: monthsRegex,
20111        monthsShortRegex: monthsRegex,
20112        monthsStrictRegex:
20113            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
20114        monthsShortStrictRegex:
20115            /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
20116        monthsParse: monthsParse,
20117        longMonthsParse: monthsParse,
20118        shortMonthsParse: monthsParse,
20119        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
20120        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
20121        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
20122        weekdaysParseExact: true,
20123        longDateFormat: {
20124            LT: 'H:mm',
20125            LTS: 'H:mm:ss',
20126            L: 'DD/MM/YYYY',
20127            LL: 'D [de] MMMM [de] YYYY',
20128            LLL: 'D [de] MMMM [de] YYYY H:mm',
20129            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
20130        },
20131        calendar: {
20132            sameDay: function () {
20133                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
20134            },
20135            nextDay: function () {
20136                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
20137            },
20138            nextWeek: function () {
20139                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
20140            },
20141            lastDay: function () {
20142                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
20143            },
20144            lastWeek: function () {
20145                return (
20146                    '[el] dddd [pasado a la' +
20147                    (this.hours() !== 1 ? 's' : '') +
20148                    '] LT'
20149                );
20150            },
20151            sameElse: 'L',
20152        },
20153        relativeTime: {
20154            future: 'en %s',
20155            past: 'hace %s',
20156            s: 'unos segundos',
20157            ss: '%d segundos',
20158            m: 'un minuto',
20159            mm: '%d minutos',
20160            h: 'una hora',
20161            hh: '%d horas',
20162            d: 'un día',
20163            dd: '%d días',
20164            w: 'una semana',
20165            ww: '%d semanas',
20166            M: 'un mes',
20167            MM: '%d meses',
20168            y: 'un año',
20169            yy: '%d años',
20170        },
20171        dayOfMonthOrdinalParse: /\d{1,2}º/,
20172        ordinal: '%dº',
20173        week: {
20174            dow: 1, // Monday is the first day of the week.
20175            doy: 4, // The week that contains Jan 4th is the first week of the year.
20176        },
20177        invalidDate: 'Fecha inválida',
20178    });
20179
20180    return es;
20181
20182})));
20183
20184
20185/***/ }),
20186
vendor: 3,400 bytes, lines 20187-20283
20187/***/ "./node_modules/moment/locale/et.js":
20188/*!******************************************!*\
20189  !*** ./node_modules/moment/locale/et.js ***!
20190  \******************************************/
20191/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
20192
20193//! moment.js locale configuration
20194//! locale : Estonian [et]
20195//! author : Henry Kehlmann : https://github.com/madhenry
20196//! improvements : Illimar Tambek : https://github.com/ragulka
20197
20198;(function (global, factory) {
20199    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
20200   0
20201}(this, (function (moment) { 'use strict';
20202
20203    //! moment.js locale configuration
20204
20205    function processRelativeTime(number, withoutSuffix, key, isFuture) {
20206        var format = {
20207            s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
20208            ss: [number + 'sekundi', number + 'sekundit'],
20209            m: ['ühe minuti', 'üks minut'],
20210            mm: [number + ' minuti', number + ' minutit'],
20211            h: ['ühe tunni', 'tund aega', 'üks tund'],
20212            hh: [number + ' tunni', number + ' tundi'],
20213            d: ['ühe päeva', 'üks päev'],
20214            M: ['kuu aja', 'kuu aega', 'üks kuu'],
20215            MM: [number + ' kuu', number + ' kuud'],
20216            y: ['ühe aasta', 'aasta', 'üks aasta'],
20217            yy: [number + ' aasta', number + ' aastat'],
20218        };
20219        if (withoutSuffix) {
20220            return format[key][2] ? format[key][2] : format[key][1];
20221        }
20222        return isFuture ? format[key][0] : format[key][1];
20223    }
20224
20225    var et = moment.defineLocale('et', {
20226        months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(
20227            '_'
20228        ),
20229        monthsShort:
20230            'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),
20231        weekdays:
20232            'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(
20233                '_'
20234            ),
20235        weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),
20236        weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),
20237        longDateFormat: {
20238            LT: 'H:mm',
20239            LTS: 'H:mm:ss',
20240            L: 'DD.MM.YYYY',
20241            LL: 'D. MMMM YYYY',
20242            LLL: 'D. MMMM YYYY H:mm',
20243            LLLL: 'dddd, D. MMMM YYYY H:mm',
20244        },
20245        calendar: {
20246            sameDay: '[Täna,] LT',
20247            nextDay: '[Homme,] LT',
20248            nextWeek: '[Järgmine] dddd LT',
20249            lastDay: '[Eile,] LT',
20250            lastWeek: '[Eelmine] dddd LT',
20251            sameElse: 'L',
20252        },
20253        relativeTime: {
20254            future: '%s pärast',
20255            past: '%s tagasi',
20256            s: processRelativeTime,
20257            ss: processRelativeTime,
20258            m: processRelativeTime,
20259            mm: processRelativeTime,
20260            h: processRelativeTime,
20261            hh: processRelativeTime,
20262            d: processRelativeTime,
20263            dd: '%d päeva',
20264            M: processRelativeTime,
20265            MM: processRelativeTime,
20266            y: processRelativeTime,
20267            yy: processRelativeTime,
20268        },
20269        dayOfMonthOrdinalParse: /\d{1,2}\./,
20270        ordinal: '%d.',
20271        week: {
20272            dow: 1, // Monday is the first day of the week.
20273            doy: 4, // The week that contains Jan 4th is the first week of the year.
20274        },
20275    });
20276
20277    return et;
20278
20279})));
20280
20281
20282/***/ }),
20283
vendor: 2,689 bytes, lines 20284-20367
20284/***/ "./node_modules/moment/locale/eu.js":
20285/*!******************************************!*\
20286  !*** ./node_modules/moment/locale/eu.js ***!
20287  \******************************************/
20288/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
20289
20290//! moment.js locale configuration
20291//! locale : Basque [eu]
20292//! author : Eneko Illarramendi : https://github.com/eillarra
20293
20294;(function (global, factory) {
20295    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
20296   0
20297}(this, (function (moment) { 'use strict';
20298
20299    //! moment.js locale configuration
20300
20301    var eu = moment.defineLocale('eu', {
20302        months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(
20303            '_'
20304        ),
20305        monthsShort:
20306            'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(
20307                '_'
20308            ),
20309        monthsParseExact: true,
20310        weekdays:
20311            'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(
20312                '_'
20313            ),
20314        weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),
20315        weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),
20316        weekdaysParseExact: true,
20317        longDateFormat: {
20318            LT: 'HH:mm',
20319            LTS: 'HH:mm:ss',
20320            L: 'YYYY-MM-DD',
20321            LL: 'YYYY[ko] MMMM[ren] D[a]',
20322            LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',
20323            LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
20324            l: 'YYYY-M-D',
20325            ll: 'YYYY[ko] MMM D[a]',
20326            lll: 'YYYY[ko] MMM D[a] HH:mm',
20327            llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',
20328        },
20329        calendar: {
20330            sameDay: '[gaur] LT[etan]',
20331            nextDay: '[bihar] LT[etan]',
20332            nextWeek: 'dddd LT[etan]',
20333            lastDay: '[atzo] LT[etan]',
20334            lastWeek: '[aurreko] dddd LT[etan]',
20335            sameElse: 'L',
20336        },
20337        relativeTime: {
20338            future: '%s barru',
20339            past: 'duela %s',
20340            s: 'segundo batzuk',
20341            ss: '%d segundo',
20342            m: 'minutu bat',
20343            mm: '%d minutu',
20344            h: 'ordu bat',
20345            hh: '%d ordu',
20346            d: 'egun bat',
20347            dd: '%d egun',
20348            M: 'hilabete bat',
20349            MM: '%d hilabete',
20350            y: 'urte bat',
20351            yy: '%d urte',
20352        },
20353        dayOfMonthOrdinalParse: /\d{1,2}\./,
20354        ordinal: '%d.',
20355        week: {
20356            dow: 1, // Monday is the first day of the week.
20357            doy: 7, // The week that contains Jan 7th is the first week of the year.
20358        },
20359    });
20360
20361    return eu;
20362
20363})));
20364
20365
20366/***/ }),
20367
vendor: 4,143 bytes, lines 20368-20499
20368/***/ "./node_modules/moment/locale/fa.js":
20369/*!******************************************!*\
20370  !*** ./node_modules/moment/locale/fa.js ***!
20371  \******************************************/
20372/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
20373
20374//! moment.js locale configuration
20375//! locale : Persian [fa]
20376//! author : Ebrahim Byagowi : https://github.com/ebraminio
20377
20378;(function (global, factory) {
20379    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
20380   0
20381}(this, (function (moment) { 'use strict';
20382
20383    //! moment.js locale configuration
20384
20385    var symbolMap = {
20386            1: 'Û±',
20387            2: 'Û²',
20388            3: 'Û³',
20389            4: 'Û´',
20390            5: 'Ûµ',
20391            6: 'Û¶',
20392            7: 'Û·',
20393            8: 'Û¸',
20394            9: 'Û¹',
20395            0: 'Û°',
20396        },
20397        numberMap = {
20398            'Û±': '1',
20399            'Û²': '2',
20400            'Û³': '3',
20401            'Û´': '4',
20402            'Ûµ': '5',
20403            'Û¶': '6',
20404            'Û·': '7',
20405            'Û¸': '8',
20406            'Û¹': '9',
20407            'Û°': '0',
20408        };
20409
20410    var fa = moment.defineLocale('fa', {
20411        months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
20412            '_'
20413        ),
20414        monthsShort:
20415            'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
20416                '_'
20417            ),
20418        weekdays:
20419            'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
20420                '_'
20421            ),
20422        weekdaysShort:
20423            'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
20424                '_'
20425            ),
20426        weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),
20427        weekdaysParseExact: true,
20428        longDateFormat: {
20429            LT: 'HH:mm',
20430            LTS: 'HH:mm:ss',
20431            L: 'DD/MM/YYYY',
20432            LL: 'D MMMM YYYY',
20433            LLL: 'D MMMM YYYY HH:mm',
20434            LLLL: 'dddd, D MMMM YYYY HH:mm',
20435        },
20436        meridiemParse: /قبل از ظهر|بعد از ظهر/,
20437        isPM: function (input) {
20438            return /بعد از ظهر/.test(input);
20439        },
20440        meridiem: function (hour, minute, isLower) {
20441            if (hour < 12) {
20442                return 'قبل از ظهر';
20443            } else {
20444                return 'بعد از ظهر';
20445            }
20446        },
20447        calendar: {
20448            sameDay: '[امروز ساعت] LT',
20449            nextDay: '[فردا ساعت] LT',
20450            nextWeek: 'dddd [ساعت] LT',
20451            lastDay: '[دیروز ساعت] LT',
20452            lastWeek: 'dddd [پیش] [ساعت] LT',
20453            sameElse: 'L',
20454        },
20455        relativeTime: {
20456            future: 'در %s',
20457            past: '%s پیش',
20458            s: 'چند ثانیه',
20459            ss: '%d ثانیه',
20460            m: 'یک دقیقه',
20461            mm: '%d دقیقه',
20462            h: 'یک ساعت',
20463            hh: '%d ساعت',
20464            d: 'یک روز',
20465            dd: '%d روز',
20466            M: 'یک ماه',
20467            MM: '%d ماه',
20468            y: 'یک سال',
20469            yy: '%d سال',
20470        },
20471        preparse: function (string) {
20472            return string
20473                .replace(/[Û°-Û¹]/g, function (match) {
20474                    return numberMap[match];
20475                })
20476                .replace(/،/g, ',');
20477        },
20478        postformat: function (string) {
20479            return string
20480                .replace(/\d/g, function (match) {
20481                    return symbolMap[match];
20482                })
20483                .replace(/,/g, '،');
20484        },
20485        dayOfMonthOrdinalParse: /\d{1,2}م/,
20486        ordinal: '%dم',
20487        week: {
20488            dow: 6, // Saturday is the first day of the week.
20489            doy: 12, // The week that contains Jan 12th is the first week of the year.
20490        },
20491    });
20492
20493    return fa;
20494
20495})));
20496
20497
20498/***/ }),
20499
vendor: 4,589 bytes, lines 20500-20642
20500/***/ "./node_modules/moment/locale/fi.js":
20501/*!******************************************!*\
20502  !*** ./node_modules/moment/locale/fi.js ***!
20503  \******************************************/
20504/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
20505
20506//! moment.js locale configuration
20507//! locale : Finnish [fi]
20508//! author : Tarmo Aidantausta : https://github.com/bleadof
20509
20510;(function (global, factory) {
20511    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
20512   0
20513}(this, (function (moment) { 'use strict';
20514
20515    //! moment.js locale configuration
20516
20517    var numbersPast =
20518            'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(
20519                ' '
20520            ),
20521        numbersFuture = [
20522            'nolla',
20523            'yhden',
20524            'kahden',
20525            'kolmen',
20526            'neljän',
20527            'viiden',
20528            'kuuden',
20529            numbersPast[7],
20530            numbersPast[8],
20531            numbersPast[9],
20532        ];
20533    function translate(number, withoutSuffix, key, isFuture) {
20534        var result = '';
20535        switch (key) {
20536            case 's':
20537                return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
20538            case 'ss':
20539                result = isFuture ? 'sekunnin' : 'sekuntia';
20540                break;
20541            case 'm':
20542                return isFuture ? 'minuutin' : 'minuutti';
20543            case 'mm':
20544                result = isFuture ? 'minuutin' : 'minuuttia';
20545                break;
20546            case 'h':
20547                return isFuture ? 'tunnin' : 'tunti';
20548            case 'hh':
20549                result = isFuture ? 'tunnin' : 'tuntia';
20550                break;
20551            case 'd':
20552                return isFuture ? 'päivän' : 'päivä';
20553            case 'dd':
20554                result = isFuture ? 'päivän' : 'päivää';
20555                break;
20556            case 'M':
20557                return isFuture ? 'kuukauden' : 'kuukausi';
20558            case 'MM':
20559                result = isFuture ? 'kuukauden' : 'kuukautta';
20560                break;
20561            case 'y':
20562                return isFuture ? 'vuoden' : 'vuosi';
20563            case 'yy':
20564                result = isFuture ? 'vuoden' : 'vuotta';
20565                break;
20566        }
20567        result = verbalNumber(number, isFuture) + ' ' + result;
20568        return result;
20569    }
20570    function verbalNumber(number, isFuture) {
20571        return number < 10
20572            ? isFuture
20573                ? numbersFuture[number]
20574                : numbersPast[number]
20575            : number;
20576    }
20577
20578    var fi = moment.defineLocale('fi', {
20579        months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(
20580            '_'
20581        ),
20582        monthsShort:
20583            'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(
20584                '_'
20585            ),
20586        weekdays:
20587            'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(
20588                '_'
20589            ),
20590        weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),
20591        weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),
20592        longDateFormat: {
20593            LT: 'HH.mm',
20594            LTS: 'HH.mm.ss',
20595            L: 'DD.MM.YYYY',
20596            LL: 'Do MMMM[ta] YYYY',
20597            LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',
20598            LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
20599            l: 'D.M.YYYY',
20600            ll: 'Do MMM YYYY',
20601            lll: 'Do MMM YYYY, [klo] HH.mm',
20602            llll: 'ddd, Do MMM YYYY, [klo] HH.mm',
20603        },
20604        calendar: {
20605            sameDay: '[tänään] [klo] LT',
20606            nextDay: '[huomenna] [klo] LT',
20607            nextWeek: 'dddd [klo] LT',
20608            lastDay: '[eilen] [klo] LT',
20609            lastWeek: '[viime] dddd[na] [klo] LT',
20610            sameElse: 'L',
20611        },
20612        relativeTime: {
20613            future: '%s päästä',
20614            past: '%s sitten',
20615            s: translate,
20616            ss: translate,
20617            m: translate,
20618            mm: translate,
20619            h: translate,
20620            hh: translate,
20621            d: translate,
20622            dd: translate,
20623            M: translate,
20624            MM: translate,
20625            y: translate,
20626            yy: translate,
20627        },
20628        dayOfMonthOrdinalParse: /\d{1,2}\./,
20629        ordinal: '%d.',
20630        week: {
20631            dow: 1, // Monday is the first day of the week.
20632            doy: 4, // The week that contains Jan 4th is the first week of the year.
20633        },
20634    });
20635
20636    return fi;
20637
20638})));
20639
20640
20641/***/ }),
20642
vendor: 2,475 bytes, lines 20643-20719
20643/***/ "./node_modules/moment/locale/fil.js":
20644/*!*******************************************!*\
20645  !*** ./node_modules/moment/locale/fil.js ***!
20646  \*******************************************/
20647/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
20648
20649//! moment.js locale configuration
20650//! locale : Filipino [fil]
20651//! author : Dan Hagman : https://github.com/hagmandan
20652//! author : Matthew Co : https://github.com/matthewdeeco
20653
20654;(function (global, factory) {
20655    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
20656   0
20657}(this, (function (moment) { 'use strict';
20658
20659    //! moment.js locale configuration
20660
20661    var fil = moment.defineLocale('fil', {
20662        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
20663            '_'
20664        ),
20665        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
20666        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
20667            '_'
20668        ),
20669        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
20670        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
20671        longDateFormat: {
20672            LT: 'HH:mm',
20673            LTS: 'HH:mm:ss',
20674            L: 'MM/D/YYYY',
20675            LL: 'MMMM D, YYYY',
20676            LLL: 'MMMM D, YYYY HH:mm',
20677            LLLL: 'dddd, MMMM DD, YYYY HH:mm',
20678        },
20679        calendar: {
20680            sameDay: 'LT [ngayong araw]',
20681            nextDay: '[Bukas ng] LT',
20682            nextWeek: 'LT [sa susunod na] dddd',
20683            lastDay: 'LT [kahapon]',
20684            lastWeek: 'LT [noong nakaraang] dddd',
20685            sameElse: 'L',
20686        },
20687        relativeTime: {
20688            future: 'sa loob ng %s',
20689            past: '%s ang nakalipas',
20690            s: 'ilang segundo',
20691            ss: '%d segundo',
20692            m: 'isang minuto',
20693            mm: '%d minuto',
20694            h: 'isang oras',
20695            hh: '%d oras',
20696            d: 'isang araw',
20697            dd: '%d araw',
20698            M: 'isang buwan',
20699            MM: '%d buwan',
20700            y: 'isang taon',
20701            yy: '%d taon',
20702        },
20703        dayOfMonthOrdinalParse: /\d{1,2}/,
20704        ordinal: function (number) {
20705            return number;
20706        },
20707        week: {
20708            dow: 1, // Monday is the first day of the week.
20709            doy: 4, // The week that contains Jan 4th is the first week of the year.
20710        },
20711    });
20712
20713    return fil;
20714
20715})));
20716
20717
20718/***/ }),
20719
vendor: 2,461 bytes, lines 20720-20795
20720/***/ "./node_modules/moment/locale/fo.js":
20721/*!******************************************!*\
20722  !*** ./node_modules/moment/locale/fo.js ***!
20723  \******************************************/
20724/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
20725
20726//! moment.js locale configuration
20727//! locale : Faroese [fo]
20728//! author : Ragnar Johannesen : https://github.com/ragnar123
20729//! author : Kristian Sakarisson : https://github.com/sakarisson
20730
20731;(function (global, factory) {
20732    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
20733   0
20734}(this, (function (moment) { 'use strict';
20735
20736    //! moment.js locale configuration
20737
20738    var fo = moment.defineLocale('fo', {
20739        months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(
20740            '_'
20741        ),
20742        monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
20743        weekdays:
20744            'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(
20745                '_'
20746            ),
20747        weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
20748        weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),
20749        longDateFormat: {
20750            LT: 'HH:mm',
20751            LTS: 'HH:mm:ss',
20752            L: 'DD/MM/YYYY',
20753            LL: 'D MMMM YYYY',
20754            LLL: 'D MMMM YYYY HH:mm',
20755            LLLL: 'dddd D. MMMM, YYYY HH:mm',
20756        },
20757        calendar: {
20758            sameDay: '[Í dag kl.] LT',
20759            nextDay: '[Í morgin kl.] LT',
20760            nextWeek: 'dddd [kl.] LT',
20761            lastDay: '[Í gjár kl.] LT',
20762            lastWeek: '[síðstu] dddd [kl] LT',
20763            sameElse: 'L',
20764        },
20765        relativeTime: {
20766            future: 'um %s',
20767            past: '%s síðani',
20768            s: 'fá sekund',
20769            ss: '%d sekundir',
20770            m: 'ein minuttur',
20771            mm: '%d minuttir',
20772            h: 'ein tími',
20773            hh: '%d tímar',
20774            d: 'ein dagur',
20775            dd: '%d dagar',
20776            M: 'ein mánaður',
20777            MM: '%d mánaðir',
20778            y: 'eitt ár',
20779            yy: '%d ár',
20780        },
20781        dayOfMonthOrdinalParse: /\d{1,2}\./,
20782        ordinal: '%d.',
20783        week: {
20784            dow: 1, // Monday is the first day of the week.
20785            doy: 4, // The week that contains Jan 4th is the first week of the year.
20786        },
20787    });
20788
20789    return fo;
20790
20791})));
20792
20793
20794/***/ }),
20795
vendor: 2,861 bytes, lines 20796-20884
20796/***/ "./node_modules/moment/locale/fr-ca.js":
20797/*!*********************************************!*\
20798  !*** ./node_modules/moment/locale/fr-ca.js ***!
20799  \*********************************************/
20800/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
20801
20802//! moment.js locale configuration
20803//! locale : French (Canada) [fr-ca]
20804//! author : Jonathan Abourbih : https://github.com/jonbca
20805
20806;(function (global, factory) {
20807    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
20808   0
20809}(this, (function (moment) { 'use strict';
20810
20811    //! moment.js locale configuration
20812
20813    var frCa = moment.defineLocale('fr-ca', {
20814        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
20815            '_'
20816        ),
20817        monthsShort:
20818            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
20819                '_'
20820            ),
20821        monthsParseExact: true,
20822        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
20823        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
20824        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
20825        weekdaysParseExact: true,
20826        longDateFormat: {
20827            LT: 'HH:mm',
20828            LTS: 'HH:mm:ss',
20829            L: 'YYYY-MM-DD',
20830            LL: 'D MMMM YYYY',
20831            LLL: 'D MMMM YYYY HH:mm',
20832            LLLL: 'dddd D MMMM YYYY HH:mm',
20833        },
20834        calendar: {
20835            sameDay: '[Aujourd’hui à] LT',
20836            nextDay: '[Demain à] LT',
20837            nextWeek: 'dddd [à] LT',
20838            lastDay: '[Hier à] LT',
20839            lastWeek: 'dddd [dernier à] LT',
20840            sameElse: 'L',
20841        },
20842        relativeTime: {
20843            future: 'dans %s',
20844            past: 'il y a %s',
20845            s: 'quelques secondes',
20846            ss: '%d secondes',
20847            m: 'une minute',
20848            mm: '%d minutes',
20849            h: 'une heure',
20850            hh: '%d heures',
20851            d: 'un jour',
20852            dd: '%d jours',
20853            M: 'un mois',
20854            MM: '%d mois',
20855            y: 'un an',
20856            yy: '%d ans',
20857        },
20858        dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
20859        ordinal: function (number, period) {
20860            switch (period) {
20861                // Words with masculine grammatical gender: mois, trimestre, jour
20862                default:
20863                case 'M':
20864                case 'Q':
20865                case 'D':
20866                case 'DDD':
20867                case 'd':
20868                    return number + (number === 1 ? 'er' : 'e');
20869
20870                // Words with feminine grammatical gender: semaine
20871                case 'w':
20872                case 'W':
20873                    return number + (number === 1 ? 're' : 'e');
20874            }
20875        },
20876    });
20877
20878    return frCa;
20879
20880})));
20881
20882
20883/***/ }),
20884
vendor: 3,036 bytes, lines 20885-20977
20885/***/ "./node_modules/moment/locale/fr-ch.js":
20886/*!*********************************************!*\
20887  !*** ./node_modules/moment/locale/fr-ch.js ***!
20888  \*********************************************/
20889/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
20890
20891//! moment.js locale configuration
20892//! locale : French (Switzerland) [fr-ch]
20893//! author : Gaspard Bucher : https://github.com/gaspard
20894
20895;(function (global, factory) {
20896    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
20897   0
20898}(this, (function (moment) { 'use strict';
20899
20900    //! moment.js locale configuration
20901
20902    var frCh = moment.defineLocale('fr-ch', {
20903        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
20904            '_'
20905        ),
20906        monthsShort:
20907            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
20908                '_'
20909            ),
20910        monthsParseExact: true,
20911        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
20912        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
20913        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
20914        weekdaysParseExact: true,
20915        longDateFormat: {
20916            LT: 'HH:mm',
20917            LTS: 'HH:mm:ss',
20918            L: 'DD.MM.YYYY',
20919            LL: 'D MMMM YYYY',
20920            LLL: 'D MMMM YYYY HH:mm',
20921            LLLL: 'dddd D MMMM YYYY HH:mm',
20922        },
20923        calendar: {
20924            sameDay: '[Aujourd’hui à] LT',
20925            nextDay: '[Demain à] LT',
20926            nextWeek: 'dddd [à] LT',
20927            lastDay: '[Hier à] LT',
20928            lastWeek: 'dddd [dernier à] LT',
20929            sameElse: 'L',
20930        },
20931        relativeTime: {
20932            future: 'dans %s',
20933            past: 'il y a %s',
20934            s: 'quelques secondes',
20935            ss: '%d secondes',
20936            m: 'une minute',
20937            mm: '%d minutes',
20938            h: 'une heure',
20939            hh: '%d heures',
20940            d: 'un jour',
20941            dd: '%d jours',
20942            M: 'un mois',
20943            MM: '%d mois',
20944            y: 'un an',
20945            yy: '%d ans',
20946        },
20947        dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
20948        ordinal: function (number, period) {
20949            switch (period) {
20950                // Words with masculine grammatical gender: mois, trimestre, jour
20951                default:
20952                case 'M':
20953                case 'Q':
20954                case 'D':
20955                case 'DDD':
20956                case 'd':
20957                    return number + (number === 1 ? 'er' : 'e');
20958
20959                // Words with feminine grammatical gender: semaine
20960                case 'w':
20961                case 'W':
20962                    return number + (number === 1 ? 're' : 'e');
20963            }
20964        },
20965        week: {
20966            dow: 1, // Monday is the first day of the week.
20967            doy: 4, // The week that contains Jan 4th is the first week of the year.
20968        },
20969    });
20970
20971    return frCh;
20972
20973})));
20974
20975
20976/***/ }),
20977
vendor: 4,356 bytes, lines 20978-21104
20978/***/ "./node_modules/moment/locale/fr.js":
20979/*!******************************************!*\
20980  !*** ./node_modules/moment/locale/fr.js ***!
20981  \******************************************/
20982/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
20983
20984//! moment.js locale configuration
20985//! locale : French [fr]
20986//! author : John Fischer : https://github.com/jfroffice
20987
20988;(function (global, factory) {
20989    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
20990   0
20991}(this, (function (moment) { 'use strict';
20992
20993    //! moment.js locale configuration
20994
20995    var monthsStrictRegex =
20996            /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
20997        monthsShortStrictRegex =
20998            /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,
20999        monthsRegex =
21000            /(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,
21001        monthsParse = [
21002            /^janv/i,
21003            /^févr/i,
21004            /^mars/i,
21005            /^avr/i,
21006            /^mai/i,
21007            /^juin/i,
21008            /^juil/i,
21009            /^août/i,
21010            /^sept/i,
21011            /^oct/i,
21012            /^nov/i,
21013            /^déc/i,
21014        ];
21015
21016    var fr = moment.defineLocale('fr', {
21017        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
21018            '_'
21019        ),
21020        monthsShort:
21021            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
21022                '_'
21023            ),
21024        monthsRegex: monthsRegex,
21025        monthsShortRegex: monthsRegex,
21026        monthsStrictRegex: monthsStrictRegex,
21027        monthsShortStrictRegex: monthsShortStrictRegex,
21028        monthsParse: monthsParse,
21029        longMonthsParse: monthsParse,
21030        shortMonthsParse: monthsParse,
21031        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
21032        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
21033        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
21034        weekdaysParseExact: true,
21035        longDateFormat: {
21036            LT: 'HH:mm',
21037            LTS: 'HH:mm:ss',
21038            L: 'DD/MM/YYYY',
21039            LL: 'D MMMM YYYY',
21040            LLL: 'D MMMM YYYY HH:mm',
21041            LLLL: 'dddd D MMMM YYYY HH:mm',
21042        },
21043        calendar: {
21044            sameDay: '[Aujourd’hui à] LT',
21045            nextDay: '[Demain à] LT',
21046            nextWeek: 'dddd [à] LT',
21047            lastDay: '[Hier à] LT',
21048            lastWeek: 'dddd [dernier à] LT',
21049            sameElse: 'L',
21050        },
21051        relativeTime: {
21052            future: 'dans %s',
21053            past: 'il y a %s',
21054            s: 'quelques secondes',
21055            ss: '%d secondes',
21056            m: 'une minute',
21057            mm: '%d minutes',
21058            h: 'une heure',
21059            hh: '%d heures',
21060            d: 'un jour',
21061            dd: '%d jours',
21062            w: 'une semaine',
21063            ww: '%d semaines',
21064            M: 'un mois',
21065            MM: '%d mois',
21066            y: 'un an',
21067            yy: '%d ans',
21068        },
21069        dayOfMonthOrdinalParse: /\d{1,2}(er|)/,
21070        ordinal: function (number, period) {
21071            switch (period) {
21072                // TODO: Return 'e' when day of month > 1. Move this case inside
21073                // block for masculine words below.
21074                // See https://github.com/moment/moment/issues/3375
21075                case 'D':
21076                    return number + (number === 1 ? 'er' : '');
21077
21078                // Words with masculine grammatical gender: mois, trimestre, jour
21079                default:
21080                case 'M':
21081                case 'Q':
21082                case 'DDD':
21083                case 'd':
21084                    return number + (number === 1 ? 'er' : 'e');
21085
21086                // Words with feminine grammatical gender: semaine
21087                case 'w':
21088                case 'W':
21089                    return number + (number === 1 ? 're' : 'e');
21090            }
21091        },
21092        week: {
21093            dow: 1, // Monday is the first day of the week.
21094            doy: 4, // The week that contains Jan 4th is the first week of the year.
21095        },
21096    });
21097
21098    return fr;
21099
21100})));
21101
21102
21103/***/ }),
21104
vendor: 3,036 bytes, lines 21105-21198
21105/***/ "./node_modules/moment/locale/fy.js":
21106/*!******************************************!*\
21107  !*** ./node_modules/moment/locale/fy.js ***!
21108  \******************************************/
21109/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
21110
21111//! moment.js locale configuration
21112//! locale : Frisian [fy]
21113//! author : Robin van der Vliet : https://github.com/robin0van0der0v
21114
21115;(function (global, factory) {
21116    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
21117   0
21118}(this, (function (moment) { 'use strict';
21119
21120    //! moment.js locale configuration
21121
21122    var monthsShortWithDots =
21123            'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),
21124        monthsShortWithoutDots =
21125            'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');
21126
21127    var fy = moment.defineLocale('fy', {
21128        months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(
21129            '_'
21130        ),
21131        monthsShort: function (m, format) {
21132            if (!m) {
21133                return monthsShortWithDots;
21134            } else if (/-MMM-/.test(format)) {
21135                return monthsShortWithoutDots[m.month()];
21136            } else {
21137                return monthsShortWithDots[m.month()];
21138            }
21139        },
21140        monthsParseExact: true,
21141        weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(
21142            '_'
21143        ),
21144        weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),
21145        weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
21146        weekdaysParseExact: true,
21147        longDateFormat: {
21148            LT: 'HH:mm',
21149            LTS: 'HH:mm:ss',
21150            L: 'DD-MM-YYYY',
21151            LL: 'D MMMM YYYY',
21152            LLL: 'D MMMM YYYY HH:mm',
21153            LLLL: 'dddd D MMMM YYYY HH:mm',
21154        },
21155        calendar: {
21156            sameDay: '[hjoed om] LT',
21157            nextDay: '[moarn om] LT',
21158            nextWeek: 'dddd [om] LT',
21159            lastDay: '[juster om] LT',
21160            lastWeek: '[ôfrûne] dddd [om] LT',
21161            sameElse: 'L',
21162        },
21163        relativeTime: {
21164            future: 'oer %s',
21165            past: '%s lyn',
21166            s: 'in pear sekonden',
21167            ss: '%d sekonden',
21168            m: 'ien minút',
21169            mm: '%d minuten',
21170            h: 'ien oere',
21171            hh: '%d oeren',
21172            d: 'ien dei',
21173            dd: '%d dagen',
21174            M: 'ien moanne',
21175            MM: '%d moannen',
21176            y: 'ien jier',
21177            yy: '%d jierren',
21178        },
21179        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
21180        ordinal: function (number) {
21181            return (
21182                number +
21183                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
21184            );
21185        },
21186        week: {
21187            dow: 1, // Monday is the first day of the week.
21188            doy: 4, // The week that contains Jan 4th is the first week of the year.
21189        },
21190    });
21191
21192    return fy;
21193
21194})));
21195
21196
21197/***/ }),
21198
vendor: 3,201 bytes, lines 21199-21312
21199/***/ "./node_modules/moment/locale/ga.js":
21200/*!******************************************!*\
21201  !*** ./node_modules/moment/locale/ga.js ***!
21202  \******************************************/
21203/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
21204
21205//! moment.js locale configuration
21206//! locale : Irish or Irish Gaelic [ga]
21207//! author : André Silva : https://github.com/askpt
21208
21209;(function (global, factory) {
21210    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
21211   0
21212}(this, (function (moment) { 'use strict';
21213
21214    //! moment.js locale configuration
21215
21216    var months = [
21217            'Eanáir',
21218            'Feabhra',
21219            'Márta',
21220            'Aibreán',
21221            'Bealtaine',
21222            'Meitheamh',
21223            'Iúil',
21224            'Lúnasa',
21225            'Meán Fómhair',
21226            'Deireadh Fómhair',
21227            'Samhain',
21228            'Nollaig',
21229        ],
21230        monthsShort = [
21231            'Ean',
21232            'Feabh',
21233            'Márt',
21234            'Aib',
21235            'Beal',
21236            'Meith',
21237            'Iúil',
21238            'Lún',
21239            'M.F.',
21240            'D.F.',
21241            'Samh',
21242            'Noll',
21243        ],
21244        weekdays = [
21245            'Dé Domhnaigh',
21246            'Dé Luain',
21247            'Dé Máirt',
21248            'Dé Céadaoin',
21249            'Déardaoin',
21250            'Dé hAoine',
21251            'Dé Sathairn',
21252        ],
21253        weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],
21254        weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];
21255
21256    var ga = moment.defineLocale('ga', {
21257        months: months,
21258        monthsShort: monthsShort,
21259        monthsParseExact: true,
21260        weekdays: weekdays,
21261        weekdaysShort: weekdaysShort,
21262        weekdaysMin: weekdaysMin,
21263        longDateFormat: {
21264            LT: 'HH:mm',
21265            LTS: 'HH:mm:ss',
21266            L: 'DD/MM/YYYY',
21267            LL: 'D MMMM YYYY',
21268            LLL: 'D MMMM YYYY HH:mm',
21269            LLLL: 'dddd, D MMMM YYYY HH:mm',
21270        },
21271        calendar: {
21272            sameDay: '[Inniu ag] LT',
21273            nextDay: '[Amárach ag] LT',
21274            nextWeek: 'dddd [ag] LT',
21275            lastDay: '[Inné ag] LT',
21276            lastWeek: 'dddd [seo caite] [ag] LT',
21277            sameElse: 'L',
21278        },
21279        relativeTime: {
21280            future: 'i %s',
21281            past: '%s ó shin',
21282            s: 'cúpla soicind',
21283            ss: '%d soicind',
21284            m: 'nóiméad',
21285            mm: '%d nóiméad',
21286            h: 'uair an chloig',
21287            hh: '%d uair an chloig',
21288            d: 'lá',
21289            dd: '%d lá',
21290            M: 'mí',
21291            MM: '%d míonna',
21292            y: 'bliain',
21293            yy: '%d bliain',
21294        },
21295        dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
21296        ordinal: function (number) {
21297            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
21298            return number + output;
21299        },
21300        week: {
21301            dow: 1, // Monday is the first day of the week.
21302            doy: 4, // The week that contains Jan 4th is the first week of the year.
21303        },
21304    });
21305
21306    return ga;
21307
21308})));
21309
21310
21311/***/ }),
21312
vendor: 3,221 bytes, lines 21313-21426
21313/***/ "./node_modules/moment/locale/gd.js":
21314/*!******************************************!*\
21315  !*** ./node_modules/moment/locale/gd.js ***!
21316  \******************************************/
21317/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
21318
21319//! moment.js locale configuration
21320//! locale : Scottish Gaelic [gd]
21321//! author : Jon Ashdown : https://github.com/jonashdown
21322
21323;(function (global, factory) {
21324    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
21325   0
21326}(this, (function (moment) { 'use strict';
21327
21328    //! moment.js locale configuration
21329
21330    var months = [
21331            'Am Faoilleach',
21332            'An Gearran',
21333            'Am Màrt',
21334            'An Giblean',
21335            'An Cèitean',
21336            'An t-Ògmhios',
21337            'An t-Iuchar',
21338            'An Lùnastal',
21339            'An t-Sultain',
21340            'An Dàmhair',
21341            'An t-Samhain',
21342            'An Dùbhlachd',
21343        ],
21344        monthsShort = [
21345            'Faoi',
21346            'Gear',
21347            'Màrt',
21348            'Gibl',
21349            'Cèit',
21350            'Ògmh',
21351            'Iuch',
21352            'Lùn',
21353            'Sult',
21354            'Dàmh',
21355            'Samh',
21356            'Dùbh',
21357        ],
21358        weekdays = [
21359            'Didòmhnaich',
21360            'Diluain',
21361            'Dimàirt',
21362            'Diciadain',
21363            'Diardaoin',
21364            'Dihaoine',
21365            'Disathairne',
21366        ],
21367        weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],
21368        weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];
21369
21370    var gd = moment.defineLocale('gd', {
21371        months: months,
21372        monthsShort: monthsShort,
21373        monthsParseExact: true,
21374        weekdays: weekdays,
21375        weekdaysShort: weekdaysShort,
21376        weekdaysMin: weekdaysMin,
21377        longDateFormat: {
21378            LT: 'HH:mm',
21379            LTS: 'HH:mm:ss',
21380            L: 'DD/MM/YYYY',
21381            LL: 'D MMMM YYYY',
21382            LLL: 'D MMMM YYYY HH:mm',
21383            LLLL: 'dddd, D MMMM YYYY HH:mm',
21384        },
21385        calendar: {
21386            sameDay: '[An-diugh aig] LT',
21387            nextDay: '[A-màireach aig] LT',
21388            nextWeek: 'dddd [aig] LT',
21389            lastDay: '[An-dè aig] LT',
21390            lastWeek: 'dddd [seo chaidh] [aig] LT',
21391            sameElse: 'L',
21392        },
21393        relativeTime: {
21394            future: 'ann an %s',
21395            past: 'bho chionn %s',
21396            s: 'beagan diogan',
21397            ss: '%d diogan',
21398            m: 'mionaid',
21399            mm: '%d mionaidean',
21400            h: 'uair',
21401            hh: '%d uairean',
21402            d: 'latha',
21403            dd: '%d latha',
21404            M: 'mìos',
21405            MM: '%d mìosan',
21406            y: 'bliadhna',
21407            yy: '%d bliadhna',
21408        },
21409        dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
21410        ordinal: function (number) {
21411            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
21412            return number + output;
21413        },
21414        week: {
21415            dow: 1, // Monday is the first day of the week.
21416            doy: 4, // The week that contains Jan 4th is the first week of the year.
21417        },
21418    });
21419
21420    return gd;
21421
21422})));
21423
21424
21425/***/ }),
21426
vendor: 3,112 bytes, lines 21427-21520
21427/***/ "./node_modules/moment/locale/gl.js":
21428/*!******************************************!*\
21429  !*** ./node_modules/moment/locale/gl.js ***!
21430  \******************************************/
21431/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
21432
21433//! moment.js locale configuration
21434//! locale : Galician [gl]
21435//! author : Juan G. Hurtado : https://github.com/juanghurtado
21436
21437;(function (global, factory) {
21438    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
21439   0
21440}(this, (function (moment) { 'use strict';
21441
21442    //! moment.js locale configuration
21443
21444    var gl = moment.defineLocale('gl', {
21445        months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(
21446            '_'
21447        ),
21448        monthsShort:
21449            'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(
21450                '_'
21451            ),
21452        monthsParseExact: true,
21453        weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),
21454        weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),
21455        weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),
21456        weekdaysParseExact: true,
21457        longDateFormat: {
21458            LT: 'H:mm',
21459            LTS: 'H:mm:ss',
21460            L: 'DD/MM/YYYY',
21461            LL: 'D [de] MMMM [de] YYYY',
21462            LLL: 'D [de] MMMM [de] YYYY H:mm',
21463            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
21464        },
21465        calendar: {
21466            sameDay: function () {
21467                return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
21468            },
21469            nextDay: function () {
21470                return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
21471            },
21472            nextWeek: function () {
21473                return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';
21474            },
21475            lastDay: function () {
21476                return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';
21477            },
21478            lastWeek: function () {
21479                return (
21480                    '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'
21481                );
21482            },
21483            sameElse: 'L',
21484        },
21485        relativeTime: {
21486            future: function (str) {
21487                if (str.indexOf('un') === 0) {
21488                    return 'n' + str;
21489                }
21490                return 'en ' + str;
21491            },
21492            past: 'hai %s',
21493            s: 'uns segundos',
21494            ss: '%d segundos',
21495            m: 'un minuto',
21496            mm: '%d minutos',
21497            h: 'unha hora',
21498            hh: '%d horas',
21499            d: 'un día',
21500            dd: '%d días',
21501            M: 'un mes',
21502            MM: '%d meses',
21503            y: 'un ano',
21504            yy: '%d anos',
21505        },
21506        dayOfMonthOrdinalParse: /\d{1,2}º/,
21507        ordinal: '%dº',
21508        week: {
21509            dow: 1, // Monday is the first day of the week.
21510            doy: 4, // The week that contains Jan 4th is the first week of the year.
21511        },
21512    });
21513
21514    return gl;
21515
21516})));
21517
21518
21519/***/ }),
21520
vendor: 6,505 bytes, lines 21521-21665
21521/***/ "./node_modules/moment/locale/gom-deva.js":
21522/*!************************************************!*\
21523  !*** ./node_modules/moment/locale/gom-deva.js ***!
21524  \************************************************/
21525/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
21526
21527//! moment.js locale configuration
21528//! locale : Konkani Devanagari script [gom-deva]
21529//! author : The Discoverer : https://github.com/WikiDiscoverer
21530
21531;(function (global, factory) {
21532    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
21533   0
21534}(this, (function (moment) { 'use strict';
21535
21536    //! moment.js locale configuration
21537
21538    function processRelativeTime(number, withoutSuffix, key, isFuture) {
21539        var format = {
21540            s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],
21541            ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],
21542            m: ['एका मिणटान', 'एक मिनूट'],
21543            mm: [number + ' मिणटांनी', number + ' मिणटां'],
21544            h: ['एका वरान', 'एक वर'],
21545            hh: [number + ' वरांनी', number + ' वरां'],
21546            d: ['एका दिसान', 'एक दीस'],
21547            dd: [number + ' दिसांनी', number + ' दीस'],
21548            M: ['एका म्हयन्यान', 'एक म्हयनो'],
21549            MM: [number + ' म्हयन्यानी', number + ' म्हयने'],
21550            y: ['एका वर्सान', 'एक वर्स'],
21551            yy: [number + ' वर्सांनी', number + ' वर्सां'],
21552        };
21553        return isFuture ? format[key][0] : format[key][1];
21554    }
21555
21556    var gomDeva = moment.defineLocale('gom-deva', {
21557        months: {
21558            standalone:
21559                'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
21560                    '_'
21561                ),
21562            format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(
21563                '_'
21564            ),
21565            isFormat: /MMMM(\s)+D[oD]?/,
21566        },
21567        monthsShort:
21568            'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
21569                '_'
21570            ),
21571        monthsParseExact: true,
21572        weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),
21573        weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),
21574        weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),
21575        weekdaysParseExact: true,
21576        longDateFormat: {
21577            LT: 'A h:mm [वाजतां]',
21578            LTS: 'A h:mm:ss [वाजतां]',
21579            L: 'DD-MM-YYYY',
21580            LL: 'D MMMM YYYY',
21581            LLL: 'D MMMM YYYY A h:mm [वाजतां]',
21582            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',
21583            llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',
21584        },
21585        calendar: {
21586            sameDay: '[आयज] LT',
21587            nextDay: '[फाल्यां] LT',
21588            nextWeek: '[फुडलो] dddd[,] LT',
21589            lastDay: '[काल] LT',
21590            lastWeek: '[फाटलो] dddd[,] LT',
21591            sameElse: 'L',
21592        },
21593        relativeTime: {
21594            future: '%s',
21595            past: '%s आदीं',
21596            s: processRelativeTime,
21597            ss: processRelativeTime,
21598            m: processRelativeTime,
21599            mm: processRelativeTime,
21600            h: processRelativeTime,
21601            hh: processRelativeTime,
21602            d: processRelativeTime,
21603            dd: processRelativeTime,
21604            M: processRelativeTime,
21605            MM: processRelativeTime,
21606            y: processRelativeTime,
21607            yy: processRelativeTime,
21608        },
21609        dayOfMonthOrdinalParse: /\d{1,2}(वेर)/,
21610        ordinal: function (number, period) {
21611            switch (period) {
21612                // the ordinal 'वेर' only applies to day of the month
21613                case 'D':
21614                    return number + 'वेर';
21615                default:
21616                case 'M':
21617                case 'Q':
21618                case 'DDD':
21619                case 'd':
21620                case 'w':
21621                case 'W':
21622                    return number;
21623            }
21624        },
21625        week: {
21626            dow: 0, // Sunday is the first day of the week
21627            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
21628        },
21629        meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,
21630        meridiemHour: function (hour, meridiem) {
21631            if (hour === 12) {
21632                hour = 0;
21633            }
21634            if (meridiem === 'राती') {
21635                return hour < 4 ? hour : hour + 12;
21636            } else if (meridiem === 'सकाळीं') {
21637                return hour;
21638            } else if (meridiem === 'दनपारां') {
21639                return hour > 12 ? hour : hour + 12;
21640            } else if (meridiem === 'सांजे') {
21641                return hour + 12;
21642            }
21643        },
21644        meridiem: function (hour, minute, isLower) {
21645            if (hour < 4) {
21646                return 'राती';
21647            } else if (hour < 12) {
21648                return 'सकाळीं';
21649            } else if (hour < 16) {
21650                return 'दनपारां';
21651            } else if (hour < 20) {
21652                return 'सांजे';
21653            } else {
21654                return 'राती';
21655            }
21656        },
21657    });
21658
21659    return gomDeva;
21660
21661})));
21662
21663
21664/***/ }),
21665
vendor: 5,121 bytes, lines 21666-21808
21666/***/ "./node_modules/moment/locale/gom-latn.js":
21667/*!************************************************!*\
21668  !*** ./node_modules/moment/locale/gom-latn.js ***!
21669  \************************************************/
21670/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
21671
21672//! moment.js locale configuration
21673//! locale : Konkani Latin script [gom-latn]
21674//! author : The Discoverer : https://github.com/WikiDiscoverer
21675
21676;(function (global, factory) {
21677    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
21678   0
21679}(this, (function (moment) { 'use strict';
21680
21681    //! moment.js locale configuration
21682
21683    function processRelativeTime(number, withoutSuffix, key, isFuture) {
21684        var format = {
21685            s: ['thoddea sekondamni', 'thodde sekond'],
21686            ss: [number + ' sekondamni', number + ' sekond'],
21687            m: ['eka mintan', 'ek minut'],
21688            mm: [number + ' mintamni', number + ' mintam'],
21689            h: ['eka voran', 'ek vor'],
21690            hh: [number + ' voramni', number + ' voram'],
21691            d: ['eka disan', 'ek dis'],
21692            dd: [number + ' disamni', number + ' dis'],
21693            M: ['eka mhoinean', 'ek mhoino'],
21694            MM: [number + ' mhoineamni', number + ' mhoine'],
21695            y: ['eka vorsan', 'ek voros'],
21696            yy: [number + ' vorsamni', number + ' vorsam'],
21697        };
21698        return isFuture ? format[key][0] : format[key][1];
21699    }
21700
21701    var gomLatn = moment.defineLocale('gom-latn', {
21702        months: {
21703            standalone:
21704                'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(
21705                    '_'
21706                ),
21707            format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(
21708                '_'
21709            ),
21710            isFormat: /MMMM(\s)+D[oD]?/,
21711        },
21712        monthsShort:
21713            'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),
21714        monthsParseExact: true,
21715        weekdays: "Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split('_'),
21716        weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),
21717        weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),
21718        weekdaysParseExact: true,
21719        longDateFormat: {
21720            LT: 'A h:mm [vazta]',
21721            LTS: 'A h:mm:ss [vazta]',
21722            L: 'DD-MM-YYYY',
21723            LL: 'D MMMM YYYY',
21724            LLL: 'D MMMM YYYY A h:mm [vazta]',
21725            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',
21726            llll: 'ddd, D MMM YYYY, A h:mm [vazta]',
21727        },
21728        calendar: {
21729            sameDay: '[Aiz] LT',
21730            nextDay: '[Faleam] LT',
21731            nextWeek: '[Fuddlo] dddd[,] LT',
21732            lastDay: '[Kal] LT',
21733            lastWeek: '[Fattlo] dddd[,] LT',
21734            sameElse: 'L',
21735        },
21736        relativeTime: {
21737            future: '%s',
21738            past: '%s adim',
21739            s: processRelativeTime,
21740            ss: processRelativeTime,
21741            m: processRelativeTime,
21742            mm: processRelativeTime,
21743            h: processRelativeTime,
21744            hh: processRelativeTime,
21745            d: processRelativeTime,
21746            dd: processRelativeTime,
21747            M: processRelativeTime,
21748            MM: processRelativeTime,
21749            y: processRelativeTime,
21750            yy: processRelativeTime,
21751        },
21752        dayOfMonthOrdinalParse: /\d{1,2}(er)/,
21753        ordinal: function (number, period) {
21754            switch (period) {
21755                // the ordinal 'er' only applies to day of the month
21756                case 'D':
21757                    return number + 'er';
21758                default:
21759                case 'M':
21760                case 'Q':
21761                case 'DDD':
21762                case 'd':
21763                case 'w':
21764                case 'W':
21765                    return number;
21766            }
21767        },
21768        week: {
21769            dow: 0, // Sunday is the first day of the week
21770            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
21771        },
21772        meridiemParse: /rati|sokallim|donparam|sanje/,
21773        meridiemHour: function (hour, meridiem) {
21774            if (hour === 12) {
21775                hour = 0;
21776            }
21777            if (meridiem === 'rati') {
21778                return hour < 4 ? hour : hour + 12;
21779            } else if (meridiem === 'sokallim') {
21780                return hour;
21781            } else if (meridiem === 'donparam') {
21782                return hour > 12 ? hour : hour + 12;
21783            } else if (meridiem === 'sanje') {
21784                return hour + 12;
21785            }
21786        },
21787        meridiem: function (hour, minute, isLower) {
21788            if (hour < 4) {
21789                return 'rati';
21790            } else if (hour < 12) {
21791                return 'sokallim';
21792            } else if (hour < 16) {
21793                return 'donparam';
21794            } else if (hour < 20) {
21795                return 'sanje';
21796            } else {
21797                return 'rati';
21798            }
21799        },
21800    });
21801
21802    return gomLatn;
21803
21804})));
21805
21806
21807/***/ }),
21808
vendor: 5,081 bytes, lines 21809-21949
21809/***/ "./node_modules/moment/locale/gu.js":
21810/*!******************************************!*\
21811  !*** ./node_modules/moment/locale/gu.js ***!
21812  \******************************************/
21813/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
21814
21815//! moment.js locale configuration
21816//! locale : Gujarati [gu]
21817//! author : Kaushik Thanki : https://github.com/Kaushik1987
21818
21819;(function (global, factory) {
21820    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
21821   0
21822}(this, (function (moment) { 'use strict';
21823
21824    //! moment.js locale configuration
21825
21826    var symbolMap = {
21827            1: 'à«§',
21828            2: '૨',
21829            3: 'à«©',
21830            4: '૪',
21831            5: 'à««',
21832            6: '૬',
21833            7: 'à«­',
21834            8: 'à«®',
21835            9: '૯',
21836            0: '૦',
21837        },
21838        numberMap = {
21839            'à«§': '1',
21840            '૨': '2',
21841            'à«©': '3',
21842            '૪': '4',
21843            'à««': '5',
21844            '૬': '6',
21845            'à«­': '7',
21846            'à«®': '8',
21847            '૯': '9',
21848            '૦': '0',
21849        };
21850
21851    var gu = moment.defineLocale('gu', {
21852        months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(
21853            '_'
21854        ),
21855        monthsShort:
21856            'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(
21857                '_'
21858            ),
21859        monthsParseExact: true,
21860        weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(
21861            '_'
21862        ),
21863        weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),
21864        weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),
21865        longDateFormat: {
21866            LT: 'A h:mm વાગ્યે',
21867            LTS: 'A h:mm:ss વાગ્યે',
21868            L: 'DD/MM/YYYY',
21869            LL: 'D MMMM YYYY',
21870            LLL: 'D MMMM YYYY, A h:mm વાગ્યે',
21871            LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',
21872        },
21873        calendar: {
21874            sameDay: '[આજ] LT',
21875            nextDay: '[કાલે] LT',
21876            nextWeek: 'dddd, LT',
21877            lastDay: '[ગઇકાલે] LT',
21878            lastWeek: '[પાછલા] dddd, LT',
21879            sameElse: 'L',
21880        },
21881        relativeTime: {
21882            future: '%s મા',
21883            past: '%s પહેલા',
21884            s: 'અમુક પળો',
21885            ss: '%d સેકંડ',
21886            m: 'એક મિનિટ',
21887            mm: '%d મિનિટ',
21888            h: 'એક કલાક',
21889            hh: '%d કલાક',
21890            d: 'એક દિવસ',
21891            dd: '%d દિવસ',
21892            M: 'એક મહિનો',
21893            MM: '%d મહિનો',
21894            y: 'એક વર્ષ',
21895            yy: '%d વર્ષ',
21896        },
21897        preparse: function (string) {
21898            return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {
21899                return numberMap[match];
21900            });
21901        },
21902        postformat: function (string) {
21903            return string.replace(/\d/g, function (match) {
21904                return symbolMap[match];
21905            });
21906        },
21907        // Gujarati notation for meridiems are quite fuzzy in practice. While there exists
21908        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.
21909        meridiemParse: /રાત|બપોર|સવાર|સાંજ/,
21910        meridiemHour: function (hour, meridiem) {
21911            if (hour === 12) {
21912                hour = 0;
21913            }
21914            if (meridiem === 'રાત') {
21915                return hour < 4 ? hour : hour + 12;
21916            } else if (meridiem === 'સવાર') {
21917                return hour;
21918            } else if (meridiem === 'બપોર') {
21919                return hour >= 10 ? hour : hour + 12;
21920            } else if (meridiem === 'સાંજ') {
21921                return hour + 12;
21922            }
21923        },
21924        meridiem: function (hour, minute, isLower) {
21925            if (hour < 4) {
21926                return 'રાત';
21927            } else if (hour < 10) {
21928                return 'સવાર';
21929            } else if (hour < 17) {
21930                return 'બપોર';
21931            } else if (hour < 20) {
21932                return 'સાંજ';
21933            } else {
21934                return 'રાત';
21935            }
21936        },
21937        week: {
21938            dow: 0, // Sunday is the first day of the week.
21939            doy: 6, // The week that contains Jan 6th is the first week of the year.
21940        },
21941    });
21942
21943    return gu;
21944
21945})));
21946
21947
21948/***/ }),
21949
vendor: 4,044 bytes, lines 21950-22062
21950/***/ "./node_modules/moment/locale/he.js":
21951/*!******************************************!*\
21952  !*** ./node_modules/moment/locale/he.js ***!
21953  \******************************************/
21954/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
21955
21956//! moment.js locale configuration
21957//! locale : Hebrew [he]
21958//! author : Tomer Cohen : https://github.com/tomer
21959//! author : Moshe Simantov : https://github.com/DevelopmentIL
21960//! author : Tal Ater : https://github.com/TalAter
21961
21962;(function (global, factory) {
21963    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
21964   0
21965}(this, (function (moment) { 'use strict';
21966
21967    //! moment.js locale configuration
21968
21969    var he = moment.defineLocale('he', {
21970        months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(
21971            '_'
21972        ),
21973        monthsShort:
21974            'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),
21975        weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
21976        weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
21977        weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),
21978        longDateFormat: {
21979            LT: 'HH:mm',
21980            LTS: 'HH:mm:ss',
21981            L: 'DD/MM/YYYY',
21982            LL: 'D [ב]MMMM YYYY',
21983            LLL: 'D [ב]MMMM YYYY HH:mm',
21984            LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',
21985            l: 'D/M/YYYY',
21986            ll: 'D MMM YYYY',
21987            lll: 'D MMM YYYY HH:mm',
21988            llll: 'ddd, D MMM YYYY HH:mm',
21989        },
21990        calendar: {
21991            sameDay: '[היום ב־]LT',
21992            nextDay: '[מחר ב־]LT',
21993            nextWeek: 'dddd [בשעה] LT',
21994            lastDay: '[אתמול ב־]LT',
21995            lastWeek: '[ביום] dddd [האחרון בשעה] LT',
21996            sameElse: 'L',
21997        },
21998        relativeTime: {
21999            future: 'בעוד %s',
22000            past: 'לפני %s',
22001            s: 'מספר שניות',
22002            ss: '%d שניות',
22003            m: 'דקה',
22004            mm: '%d דקות',
22005            h: 'שעה',
22006            hh: function (number) {
22007                if (number === 2) {
22008                    return 'שעתיים';
22009                }
22010                return number + ' שעות';
22011            },
22012            d: 'יום',
22013            dd: function (number) {
22014                if (number === 2) {
22015                    return 'יומיים';
22016                }
22017                return number + ' ימים';
22018            },
22019            M: 'חודש',
22020            MM: function (number) {
22021                if (number === 2) {
22022                    return 'חודשיים';
22023                }
22024                return number + ' חודשים';
22025            },
22026            y: 'שנה',
22027            yy: function (number) {
22028                if (number === 2) {
22029                    return 'שנתיים';
22030                } else if (number % 10 === 0 && number !== 10) {
22031                    return number + ' שנה';
22032                }
22033                return number + ' שנים';
22034            },
22035        },
22036        meridiemParse:
22037            /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,
22038        isPM: function (input) {
22039            return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input);
22040        },
22041        meridiem: function (hour, minute, isLower) {
22042            if (hour < 5) {
22043                return 'לפנות בוקר';
22044            } else if (hour < 10) {
22045                return 'בבוקר';
22046            } else if (hour < 12) {
22047                return isLower ? 'לפנה"צ' : 'לפני הצהריים';
22048            } else if (hour < 18) {
22049                return isLower ? 'אחה"צ' : 'אחרי הצהריים';
22050            } else {
22051                return 'בערב';
22052            }
22053        },
22054    });
22055
22056    return he;
22057
22058})));
22059
22060
22061/***/ }),
22062
vendor: 7,530 bytes, lines 22063-22249
22063/***/ "./node_modules/moment/locale/hi.js":
22064/*!******************************************!*\
22065  !*** ./node_modules/moment/locale/hi.js ***!
22066  \******************************************/
22067/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
22068
22069//! moment.js locale configuration
22070//! locale : Hindi [hi]
22071//! author : Mayank Singhal : https://github.com/mayanksinghal
22072
22073;(function (global, factory) {
22074    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
22075   0
22076}(this, (function (moment) { 'use strict';
22077
22078    //! moment.js locale configuration
22079
22080    var symbolMap = {
22081            1: '१',
22082            2: '२',
22083            3: '३',
22084            4: '४',
22085            5: '५',
22086            6: '६',
22087            7: '७',
22088            8: '८',
22089            9: '९',
22090            0: '०',
22091        },
22092        numberMap = {
22093            '१': '1',
22094            '२': '2',
22095            '३': '3',
22096            '४': '4',
22097            '५': '5',
22098            '६': '6',
22099            '७': '7',
22100            '८': '8',
22101            '९': '9',
22102            '०': '0',
22103        },
22104        monthsParse = [
22105            /^जन/i,
22106            /^फ़र|फर/i,
22107            /^मार्च/i,
22108            /^अप्रै/i,
22109            /^मई/i,
22110            /^जून/i,
22111            /^जुल/i,
22112            /^अग/i,
22113            /^सितं|सित/i,
22114            /^अक्टू/i,
22115            /^नव|नवं/i,
22116            /^दिसं|दिस/i,
22117        ],
22118        shortMonthsParse = [
22119            /^जन/i,
22120            /^फ़र/i,
22121            /^मार्च/i,
22122            /^अप्रै/i,
22123            /^मई/i,
22124            /^जून/i,
22125            /^जुल/i,
22126            /^अग/i,
22127            /^सित/i,
22128            /^अक्टू/i,
22129            /^नव/i,
22130            /^दिस/i,
22131        ];
22132
22133    var hi = moment.defineLocale('hi', {
22134        months: {
22135            format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(
22136                '_'
22137            ),
22138            standalone:
22139                'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(
22140                    '_'
22141                ),
22142        },
22143        monthsShort:
22144            'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),
22145        weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
22146        weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
22147        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
22148        longDateFormat: {
22149            LT: 'A h:mm बजे',
22150            LTS: 'A h:mm:ss बजे',
22151            L: 'DD/MM/YYYY',
22152            LL: 'D MMMM YYYY',
22153            LLL: 'D MMMM YYYY, A h:mm बजे',
22154            LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',
22155        },
22156
22157        monthsParse: monthsParse,
22158        longMonthsParse: monthsParse,
22159        shortMonthsParse: shortMonthsParse,
22160
22161        monthsRegex:
22162            /^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,
22163
22164        monthsShortRegex:
22165            /^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,
22166
22167        monthsStrictRegex:
22168            /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,
22169
22170        monthsShortStrictRegex:
22171            /^(जन\.?|फ़र\.?|मार्च?|अप्रै\.?|मई?|जून?|जुल\.?|अग\.?|सित\.?|अक्टू\.?|नव\.?|दिस\.?)/i,
22172
22173        calendar: {
22174            sameDay: '[आज] LT',
22175            nextDay: '[कल] LT',
22176            nextWeek: 'dddd, LT',
22177            lastDay: '[कल] LT',
22178            lastWeek: '[पिछले] dddd, LT',
22179            sameElse: 'L',
22180        },
22181        relativeTime: {
22182            future: '%s में',
22183            past: '%s पहले',
22184            s: 'कुछ ही क्षण',
22185            ss: '%d सेकंड',
22186            m: 'एक मिनट',
22187            mm: '%d मिनट',
22188            h: 'एक घंटा',
22189            hh: '%d घंटे',
22190            d: 'एक दिन',
22191            dd: '%d दिन',
22192            M: 'एक महीने',
22193            MM: '%d महीने',
22194            y: 'एक वर्ष',
22195            yy: '%d वर्ष',
22196        },
22197        preparse: function (string) {
22198            return string.replace(/[१२३४५६७८९०]/g, function (match) {
22199                return numberMap[match];
22200            });
22201        },
22202        postformat: function (string) {
22203            return string.replace(/\d/g, function (match) {
22204                return symbolMap[match];
22205            });
22206        },
22207        // Hindi notation for meridiems are quite fuzzy in practice. While there exists
22208        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
22209        meridiemParse: /रात|सुबह|दोपहर|शाम/,
22210        meridiemHour: function (hour, meridiem) {
22211            if (hour === 12) {
22212                hour = 0;
22213            }
22214            if (meridiem === 'रात') {
22215                return hour < 4 ? hour : hour + 12;
22216            } else if (meridiem === 'सुबह') {
22217                return hour;
22218            } else if (meridiem === 'दोपहर') {
22219                return hour >= 10 ? hour : hour + 12;
22220            } else if (meridiem === 'शाम') {
22221                return hour + 12;
22222            }
22223        },
22224        meridiem: function (hour, minute, isLower) {
22225            if (hour < 4) {
22226                return 'रात';
22227            } else if (hour < 10) {
22228                return 'सुबह';
22229            } else if (hour < 17) {
22230                return 'दोपहर';
22231            } else if (hour < 20) {
22232                return 'शाम';
22233            } else {
22234                return 'रात';
22235            }
22236        },
22237        week: {
22238            dow: 0, // Sunday is the first day of the week.
22239            doy: 6, // The week that contains Jan 6th is the first week of the year.
22240        },
22241    });
22242
22243    return hi;
22244
22245})));
22246
22247
22248/***/ }),
22249
vendor: 5,803 bytes, lines 22250-22424
22250/***/ "./node_modules/moment/locale/hr.js":
22251/*!******************************************!*\
22252  !*** ./node_modules/moment/locale/hr.js ***!
22253  \******************************************/
22254/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
22255
22256//! moment.js locale configuration
22257//! locale : Croatian [hr]
22258//! author : Bojan Marković : https://github.com/bmarkovic
22259
22260;(function (global, factory) {
22261    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
22262   0
22263}(this, (function (moment) { 'use strict';
22264
22265    //! moment.js locale configuration
22266
22267    function translate(number, withoutSuffix, key) {
22268        var result = number + ' ';
22269        switch (key) {
22270            case 'ss':
22271                if (number === 1) {
22272                    result += 'sekunda';
22273                } else if (number === 2 || number === 3 || number === 4) {
22274                    result += 'sekunde';
22275                } else {
22276                    result += 'sekundi';
22277                }
22278                return result;
22279            case 'm':
22280                return withoutSuffix ? 'jedna minuta' : 'jedne minute';
22281            case 'mm':
22282                if (number === 1) {
22283                    result += 'minuta';
22284                } else if (number === 2 || number === 3 || number === 4) {
22285                    result += 'minute';
22286                } else {
22287                    result += 'minuta';
22288                }
22289                return result;
22290            case 'h':
22291                return withoutSuffix ? 'jedan sat' : 'jednog sata';
22292            case 'hh':
22293                if (number === 1) {
22294                    result += 'sat';
22295                } else if (number === 2 || number === 3 || number === 4) {
22296                    result += 'sata';
22297                } else {
22298                    result += 'sati';
22299                }
22300                return result;
22301            case 'dd':
22302                if (number === 1) {
22303                    result += 'dan';
22304                } else {
22305                    result += 'dana';
22306                }
22307                return result;
22308            case 'MM':
22309                if (number === 1) {
22310                    result += 'mjesec';
22311                } else if (number === 2 || number === 3 || number === 4) {
22312                    result += 'mjeseca';
22313                } else {
22314                    result += 'mjeseci';
22315                }
22316                return result;
22317            case 'yy':
22318                if (number === 1) {
22319                    result += 'godina';
22320                } else if (number === 2 || number === 3 || number === 4) {
22321                    result += 'godine';
22322                } else {
22323                    result += 'godina';
22324                }
22325                return result;
22326        }
22327    }
22328
22329    var hr = moment.defineLocale('hr', {
22330        months: {
22331            format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(
22332                '_'
22333            ),
22334            standalone:
22335                'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(
22336                    '_'
22337                ),
22338        },
22339        monthsShort:
22340            'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(
22341                '_'
22342            ),
22343        monthsParseExact: true,
22344        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
22345            '_'
22346        ),
22347        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
22348        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
22349        weekdaysParseExact: true,
22350        longDateFormat: {
22351            LT: 'H:mm',
22352            LTS: 'H:mm:ss',
22353            L: 'DD.MM.YYYY',
22354            LL: 'Do MMMM YYYY',
22355            LLL: 'Do MMMM YYYY H:mm',
22356            LLLL: 'dddd, Do MMMM YYYY H:mm',
22357        },
22358        calendar: {
22359            sameDay: '[danas u] LT',
22360            nextDay: '[sutra u] LT',
22361            nextWeek: function () {
22362                switch (this.day()) {
22363                    case 0:
22364                        return '[u] [nedjelju] [u] LT';
22365                    case 3:
22366                        return '[u] [srijedu] [u] LT';
22367                    case 6:
22368                        return '[u] [subotu] [u] LT';
22369                    case 1:
22370                    case 2:
22371                    case 4:
22372                    case 5:
22373                        return '[u] dddd [u] LT';
22374                }
22375            },
22376            lastDay: '[jučer u] LT',
22377            lastWeek: function () {
22378                switch (this.day()) {
22379                    case 0:
22380                        return '[prošlu] [nedjelju] [u] LT';
22381                    case 3:
22382                        return '[prošlu] [srijedu] [u] LT';
22383                    case 6:
22384                        return '[prošle] [subote] [u] LT';
22385                    case 1:
22386                    case 2:
22387                    case 4:
22388                    case 5:
22389                        return '[prošli] dddd [u] LT';
22390                }
22391            },
22392            sameElse: 'L',
22393        },
22394        relativeTime: {
22395            future: 'za %s',
22396            past: 'prije %s',
22397            s: 'par sekundi',
22398            ss: translate,
22399            m: translate,
22400            mm: translate,
22401            h: translate,
22402            hh: translate,
22403            d: 'dan',
22404            dd: translate,
22405            M: 'mjesec',
22406            MM: translate,
22407            y: 'godinu',
22408            yy: translate,
22409        },
22410        dayOfMonthOrdinalParse: /\d{1,2}\./,
22411        ordinal: '%d.',
22412        week: {
22413            dow: 1, // Monday is the first day of the week.
22414            doy: 7, // The week that contains Jan 7th is the first week of the year.
22415        },
22416    });
22417
22418    return hr;
22419
22420})));
22421
22422
22423/***/ }),
22424
vendor: 4,744 bytes, lines 22425-22561
22425/***/ "./node_modules/moment/locale/hu.js":
22426/*!******************************************!*\
22427  !*** ./node_modules/moment/locale/hu.js ***!
22428  \******************************************/
22429/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
22430
22431//! moment.js locale configuration
22432//! locale : Hungarian [hu]
22433//! author : Adam Brunner : https://github.com/adambrunner
22434//! author : Peter Viszt  : https://github.com/passatgt
22435
22436;(function (global, factory) {
22437    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
22438   0
22439}(this, (function (moment) { 'use strict';
22440
22441    //! moment.js locale configuration
22442
22443    var weekEndings =
22444        'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');
22445    function translate(number, withoutSuffix, key, isFuture) {
22446        var num = number;
22447        switch (key) {
22448            case 's':
22449                return isFuture || withoutSuffix
22450                    ? 'néhány másodperc'
22451                    : 'néhány másodperce';
22452            case 'ss':
22453                return num + (isFuture || withoutSuffix)
22454                    ? ' másodperc'
22455                    : ' másodperce';
22456            case 'm':
22457                return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
22458            case 'mm':
22459                return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
22460            case 'h':
22461                return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
22462            case 'hh':
22463                return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
22464            case 'd':
22465                return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
22466            case 'dd':
22467                return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
22468            case 'M':
22469                return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
22470            case 'MM':
22471                return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
22472            case 'y':
22473                return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
22474            case 'yy':
22475                return num + (isFuture || withoutSuffix ? ' év' : ' éve');
22476        }
22477        return '';
22478    }
22479    function week(isFuture) {
22480        return (
22481            (isFuture ? '' : '[múlt] ') +
22482            '[' +
22483            weekEndings[this.day()] +
22484            '] LT[-kor]'
22485        );
22486    }
22487
22488    var hu = moment.defineLocale('hu', {
22489        months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(
22490            '_'
22491        ),
22492        monthsShort:
22493            'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(
22494                '_'
22495            ),
22496        monthsParseExact: true,
22497        weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
22498        weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
22499        weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),
22500        longDateFormat: {
22501            LT: 'H:mm',
22502            LTS: 'H:mm:ss',
22503            L: 'YYYY.MM.DD.',
22504            LL: 'YYYY. MMMM D.',
22505            LLL: 'YYYY. MMMM D. H:mm',
22506            LLLL: 'YYYY. MMMM D., dddd H:mm',
22507        },
22508        meridiemParse: /de|du/i,
22509        isPM: function (input) {
22510            return input.charAt(1).toLowerCase() === 'u';
22511        },
22512        meridiem: function (hours, minutes, isLower) {
22513            if (hours < 12) {
22514                return isLower === true ? 'de' : 'DE';
22515            } else {
22516                return isLower === true ? 'du' : 'DU';
22517            }
22518        },
22519        calendar: {
22520            sameDay: '[ma] LT[-kor]',
22521            nextDay: '[holnap] LT[-kor]',
22522            nextWeek: function () {
22523                return week.call(this, true);
22524            },
22525            lastDay: '[tegnap] LT[-kor]',
22526            lastWeek: function () {
22527                return week.call(this, false);
22528            },
22529            sameElse: 'L',
22530        },
22531        relativeTime: {
22532            future: '%s múlva',
22533            past: '%s',
22534            s: translate,
22535            ss: translate,
22536            m: translate,
22537            mm: translate,
22538            h: translate,
22539            hh: translate,
22540            d: translate,
22541            dd: translate,
22542            M: translate,
22543            MM: translate,
22544            y: translate,
22545            yy: translate,
22546        },
22547        dayOfMonthOrdinalParse: /\d{1,2}\./,
22548        ordinal: '%d.',
22549        week: {
22550            dow: 1, // Monday is the first day of the week.
22551            doy: 4, // The week that contains Jan 4th is the first week of the year.
22552        },
22553    });
22554
22555    return hu;
22556
22557})));
22558
22559
22560/***/ }),
22561
vendor: 4,093 bytes, lines 22562-22674
22562/***/ "./node_modules/moment/locale/hy-am.js":
22563/*!*********************************************!*\
22564  !*** ./node_modules/moment/locale/hy-am.js ***!
22565  \*********************************************/
22566/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
22567
22568//! moment.js locale configuration
22569//! locale : Armenian [hy-am]
22570//! author : Armendarabyan : https://github.com/armendarabyan
22571
22572;(function (global, factory) {
22573    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
22574   0
22575}(this, (function (moment) { 'use strict';
22576
22577    //! moment.js locale configuration
22578
22579    var hyAm = moment.defineLocale('hy-am', {
22580        months: {
22581            format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(
22582                '_'
22583            ),
22584            standalone:
22585                'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(
22586                    '_'
22587                ),
22588        },
22589        monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
22590        weekdays:
22591            'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(
22592                '_'
22593            ),
22594        weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
22595        weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
22596        longDateFormat: {
22597            LT: 'HH:mm',
22598            LTS: 'HH:mm:ss',
22599            L: 'DD.MM.YYYY',
22600            LL: 'D MMMM YYYY Õ©.',
22601            LLL: 'D MMMM YYYY Õ©., HH:mm',
22602            LLLL: 'dddd, D MMMM YYYY Õ©., HH:mm',
22603        },
22604        calendar: {
22605            sameDay: '[այսօր] LT',
22606            nextDay: '[Õ¾Õ¡Õ²Õ¨] LT',
22607            lastDay: '[երեկ] LT',
22608            nextWeek: function () {
22609                return 'dddd [օրը ժամը] LT';
22610            },
22611            lastWeek: function () {
22612                return '[անցած] dddd [օրը ժամը] LT';
22613            },
22614            sameElse: 'L',
22615        },
22616        relativeTime: {
22617            future: '%s Õ°Õ¥Õ¿Õ¸',
22618            past: '%s Õ¡Õ¼Õ¡Õ»',
22619            s: 'մի քանի վայրկյան',
22620            ss: '%d վայրկյան',
22621            m: 'րոպե',
22622            mm: '%d րոպե',
22623            h: 'ÕªÕ¡Õ´',
22624            hh: '%d ÕªÕ¡Õ´',
22625            d: 'օր',
22626            dd: '%d օր',
22627            M: 'Õ¡Õ´Õ«Õ½',
22628            MM: '%d Õ¡Õ´Õ«Õ½',
22629            y: 'տարի',
22630            yy: '%d տարի',
22631        },
22632        meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
22633        isPM: function (input) {
22634            return /^(ցերեկվա|երեկոյան)$/.test(input);
22635        },
22636        meridiem: function (hour) {
22637            if (hour < 4) {
22638                return 'գիշերվա';
22639            } else if (hour < 12) {
22640                return 'Õ¡Õ¼Õ¡Õ¾Õ¸Õ¿Õ¾Õ¡';
22641            } else if (hour < 17) {
22642                return 'ցերեկվա';
22643            } else {
22644                return 'երեկոյան';
22645            }
22646        },
22647        dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/,
22648        ordinal: function (number, period) {
22649            switch (period) {
22650                case 'DDD':
22651                case 'w':
22652                case 'W':
22653                case 'DDDo':
22654                    if (number === 1) {
22655                        return number + '-Õ«Õ¶';
22656                    }
22657                    return number + '-րդ';
22658                default:
22659                    return number;
22660            }
22661        },
22662        week: {
22663            dow: 1, // Monday is the first day of the week.
22664            doy: 7, // The week that contains Jan 7th is the first week of the year.
22665        },
22666    });
22667
22668    return hyAm;
22669
22670})));
22671
22672
22673/***/ }),
22674
vendor: 3,140 bytes, lines 22675-22769
22675/***/ "./node_modules/moment/locale/id.js":
22676/*!******************************************!*\
22677  !*** ./node_modules/moment/locale/id.js ***!
22678  \******************************************/
22679/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
22680
22681//! moment.js locale configuration
22682//! locale : Indonesian [id]
22683//! author : Mohammad Satrio Utomo : https://github.com/tyok
22684//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan
22685
22686;(function (global, factory) {
22687    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
22688   0
22689}(this, (function (moment) { 'use strict';
22690
22691    //! moment.js locale configuration
22692
22693    var id = moment.defineLocale('id', {
22694        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(
22695            '_'
22696        ),
22697        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),
22698        weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
22699        weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
22700        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
22701        longDateFormat: {
22702            LT: 'HH.mm',
22703            LTS: 'HH.mm.ss',
22704            L: 'DD/MM/YYYY',
22705            LL: 'D MMMM YYYY',
22706            LLL: 'D MMMM YYYY [pukul] HH.mm',
22707            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
22708        },
22709        meridiemParse: /pagi|siang|sore|malam/,
22710        meridiemHour: function (hour, meridiem) {
22711            if (hour === 12) {
22712                hour = 0;
22713            }
22714            if (meridiem === 'pagi') {
22715                return hour;
22716            } else if (meridiem === 'siang') {
22717                return hour >= 11 ? hour : hour + 12;
22718            } else if (meridiem === 'sore' || meridiem === 'malam') {
22719                return hour + 12;
22720            }
22721        },
22722        meridiem: function (hours, minutes, isLower) {
22723            if (hours < 11) {
22724                return 'pagi';
22725            } else if (hours < 15) {
22726                return 'siang';
22727            } else if (hours < 19) {
22728                return 'sore';
22729            } else {
22730                return 'malam';
22731            }
22732        },
22733        calendar: {
22734            sameDay: '[Hari ini pukul] LT',
22735            nextDay: '[Besok pukul] LT',
22736            nextWeek: 'dddd [pukul] LT',
22737            lastDay: '[Kemarin pukul] LT',
22738            lastWeek: 'dddd [lalu pukul] LT',
22739            sameElse: 'L',
22740        },
22741        relativeTime: {
22742            future: 'dalam %s',
22743            past: '%s yang lalu',
22744            s: 'beberapa detik',
22745            ss: '%d detik',
22746            m: 'semenit',
22747            mm: '%d menit',
22748            h: 'sejam',
22749            hh: '%d jam',
22750            d: 'sehari',
22751            dd: '%d hari',
22752            M: 'sebulan',
22753            MM: '%d bulan',
22754            y: 'setahun',
22755            yy: '%d tahun',
22756        },
22757        week: {
22758            dow: 0, // Sunday is the first day of the week.
22759            doy: 6, // The week that contains Jan 6th is the first week of the year.
22760        },
22761    });
22762
22763    return id;
22764
22765})));
22766
22767
22768/***/ }),
22769
vendor: 5,479 bytes, lines 22770-22928
22770/***/ "./node_modules/moment/locale/is.js":
22771/*!******************************************!*\
22772  !*** ./node_modules/moment/locale/is.js ***!
22773  \******************************************/
22774/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
22775
22776//! moment.js locale configuration
22777//! locale : Icelandic [is]
22778//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik
22779
22780;(function (global, factory) {
22781    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
22782   0
22783}(this, (function (moment) { 'use strict';
22784
22785    //! moment.js locale configuration
22786
22787    function plural(n) {
22788        if (n % 100 === 11) {
22789            return true;
22790        } else if (n % 10 === 1) {
22791            return false;
22792        }
22793        return true;
22794    }
22795    function translate(number, withoutSuffix, key, isFuture) {
22796        var result = number + ' ';
22797        switch (key) {
22798            case 's':
22799                return withoutSuffix || isFuture
22800                    ? 'nokkrar sekúndur'
22801                    : 'nokkrum sekúndum';
22802            case 'ss':
22803                if (plural(number)) {
22804                    return (
22805                        result +
22806                        (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')
22807                    );
22808                }
22809                return result + 'sekúnda';
22810            case 'm':
22811                return withoutSuffix ? 'mínúta' : 'mínútu';
22812            case 'mm':
22813                if (plural(number)) {
22814                    return (
22815                        result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')
22816                    );
22817                } else if (withoutSuffix) {
22818                    return result + 'mínúta';
22819                }
22820                return result + 'mínútu';
22821            case 'hh':
22822                if (plural(number)) {
22823                    return (
22824                        result +
22825                        (withoutSuffix || isFuture
22826                            ? 'klukkustundir'
22827                            : 'klukkustundum')
22828                    );
22829                }
22830                return result + 'klukkustund';
22831            case 'd':
22832                if (withoutSuffix) {
22833                    return 'dagur';
22834                }
22835                return isFuture ? 'dag' : 'degi';
22836            case 'dd':
22837                if (plural(number)) {
22838                    if (withoutSuffix) {
22839                        return result + 'dagar';
22840                    }
22841                    return result + (isFuture ? 'daga' : 'dögum');
22842                } else if (withoutSuffix) {
22843                    return result + 'dagur';
22844                }
22845                return result + (isFuture ? 'dag' : 'degi');
22846            case 'M':
22847                if (withoutSuffix) {
22848                    return 'mánuður';
22849                }
22850                return isFuture ? 'mánuð' : 'mánuði';
22851            case 'MM':
22852                if (plural(number)) {
22853                    if (withoutSuffix) {
22854                        return result + 'mánuðir';
22855                    }
22856                    return result + (isFuture ? 'mánuði' : 'mánuðum');
22857                } else if (withoutSuffix) {
22858                    return result + 'mánuður';
22859                }
22860                return result + (isFuture ? 'mánuð' : 'mánuði');
22861            case 'y':
22862                return withoutSuffix || isFuture ? 'ár' : 'ári';
22863            case 'yy':
22864                if (plural(number)) {
22865                    return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
22866                }
22867                return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
22868        }
22869    }
22870
22871    var is = moment.defineLocale('is', {
22872        months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(
22873            '_'
22874        ),
22875        monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
22876        weekdays:
22877            'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(
22878                '_'
22879            ),
22880        weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
22881        weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
22882        longDateFormat: {
22883            LT: 'H:mm',
22884            LTS: 'H:mm:ss',
22885            L: 'DD.MM.YYYY',
22886            LL: 'D. MMMM YYYY',
22887            LLL: 'D. MMMM YYYY [kl.] H:mm',
22888            LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',
22889        },
22890        calendar: {
22891            sameDay: '[í dag kl.] LT',
22892            nextDay: '[á morgun kl.] LT',
22893            nextWeek: 'dddd [kl.] LT',
22894            lastDay: '[í gær kl.] LT',
22895            lastWeek: '[síðasta] dddd [kl.] LT',
22896            sameElse: 'L',
22897        },
22898        relativeTime: {
22899            future: 'eftir %s',
22900            past: 'fyrir %s síðan',
22901            s: translate,
22902            ss: translate,
22903            m: translate,
22904            mm: translate,
22905            h: 'klukkustund',
22906            hh: translate,
22907            d: translate,
22908            dd: translate,
22909            M: translate,
22910            MM: translate,
22911            y: translate,
22912            yy: translate,
22913        },
22914        dayOfMonthOrdinalParse: /\d{1,2}\./,
22915        ordinal: '%d.',
22916        week: {
22917            dow: 1, // Monday is the first day of the week.
22918            doy: 4, // The week that contains Jan 4th is the first week of the year.
22919        },
22920    });
22921
22922    return is;
22923
22924})));
22925
22926
22927/***/ }),
22928
vendor: 2,678 bytes, lines 22929-23011
22929/***/ "./node_modules/moment/locale/it-ch.js":
22930/*!*********************************************!*\
22931  !*** ./node_modules/moment/locale/it-ch.js ***!
22932  \*********************************************/
22933/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
22934
22935//! moment.js locale configuration
22936//! locale : Italian (Switzerland) [it-ch]
22937//! author : xfh : https://github.com/xfh
22938
22939;(function (global, factory) {
22940    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
22941   0
22942}(this, (function (moment) { 'use strict';
22943
22944    //! moment.js locale configuration
22945
22946    var itCh = moment.defineLocale('it-ch', {
22947        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
22948            '_'
22949        ),
22950        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
22951        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
22952            '_'
22953        ),
22954        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
22955        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
22956        longDateFormat: {
22957            LT: 'HH:mm',
22958            LTS: 'HH:mm:ss',
22959            L: 'DD.MM.YYYY',
22960            LL: 'D MMMM YYYY',
22961            LLL: 'D MMMM YYYY HH:mm',
22962            LLLL: 'dddd D MMMM YYYY HH:mm',
22963        },
22964        calendar: {
22965            sameDay: '[Oggi alle] LT',
22966            nextDay: '[Domani alle] LT',
22967            nextWeek: 'dddd [alle] LT',
22968            lastDay: '[Ieri alle] LT',
22969            lastWeek: function () {
22970                switch (this.day()) {
22971                    case 0:
22972                        return '[la scorsa] dddd [alle] LT';
22973                    default:
22974                        return '[lo scorso] dddd [alle] LT';
22975                }
22976            },
22977            sameElse: 'L',
22978        },
22979        relativeTime: {
22980            future: function (s) {
22981                return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;
22982            },
22983            past: '%s fa',
22984            s: 'alcuni secondi',
22985            ss: '%d secondi',
22986            m: 'un minuto',
22987            mm: '%d minuti',
22988            h: "un'ora",
22989            hh: '%d ore',
22990            d: 'un giorno',
22991            dd: '%d giorni',
22992            M: 'un mese',
22993            MM: '%d mesi',
22994            y: 'un anno',
22995            yy: '%d anni',
22996        },
22997        dayOfMonthOrdinalParse: /\d{1,2}º/,
22998        ordinal: '%dº',
22999        week: {
23000            dow: 1, // Monday is the first day of the week.
23001            doy: 4, // The week that contains Jan 4th is the first week of the year.
23002        },
23003    });
23004
23005    return itCh;
23006
23007})));
23008
23009
23010/***/ }),
23011
vendor: 4,140 bytes, lines 23012-23136
23012/***/ "./node_modules/moment/locale/it.js":
23013/*!******************************************!*\
23014  !*** ./node_modules/moment/locale/it.js ***!
23015  \******************************************/
23016/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
23017
23018//! moment.js locale configuration
23019//! locale : Italian [it]
23020//! author : Lorenzo : https://github.com/aliem
23021//! author: Mattia Larentis: https://github.com/nostalgiaz
23022//! author: Marco : https://github.com/Manfre98
23023
23024;(function (global, factory) {
23025    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
23026   0
23027}(this, (function (moment) { 'use strict';
23028
23029    //! moment.js locale configuration
23030
23031    var it = moment.defineLocale('it', {
23032        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
23033            '_'
23034        ),
23035        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
23036        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
23037            '_'
23038        ),
23039        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
23040        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
23041        longDateFormat: {
23042            LT: 'HH:mm',
23043            LTS: 'HH:mm:ss',
23044            L: 'DD/MM/YYYY',
23045            LL: 'D MMMM YYYY',
23046            LLL: 'D MMMM YYYY HH:mm',
23047            LLLL: 'dddd D MMMM YYYY HH:mm',
23048        },
23049        calendar: {
23050            sameDay: function () {
23051                return (
23052                    '[Oggi a' +
23053                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
23054                    ']LT'
23055                );
23056            },
23057            nextDay: function () {
23058                return (
23059                    '[Domani a' +
23060                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
23061                    ']LT'
23062                );
23063            },
23064            nextWeek: function () {
23065                return (
23066                    'dddd [a' +
23067                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
23068                    ']LT'
23069                );
23070            },
23071            lastDay: function () {
23072                return (
23073                    '[Ieri a' +
23074                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
23075                    ']LT'
23076                );
23077            },
23078            lastWeek: function () {
23079                switch (this.day()) {
23080                    case 0:
23081                        return (
23082                            '[La scorsa] dddd [a' +
23083                            (this.hours() > 1
23084                                ? 'lle '
23085                                : this.hours() === 0
23086                                  ? ' '
23087                                  : "ll'") +
23088                            ']LT'
23089                        );
23090                    default:
23091                        return (
23092                            '[Lo scorso] dddd [a' +
23093                            (this.hours() > 1
23094                                ? 'lle '
23095                                : this.hours() === 0
23096                                  ? ' '
23097                                  : "ll'") +
23098                            ']LT'
23099                        );
23100                }
23101            },
23102            sameElse: 'L',
23103        },
23104        relativeTime: {
23105            future: 'tra %s',
23106            past: '%s fa',
23107            s: 'alcuni secondi',
23108            ss: '%d secondi',
23109            m: 'un minuto',
23110            mm: '%d minuti',
23111            h: "un'ora",
23112            hh: '%d ore',
23113            d: 'un giorno',
23114            dd: '%d giorni',
23115            w: 'una settimana',
23116            ww: '%d settimane',
23117            M: 'un mese',
23118            MM: '%d mesi',
23119            y: 'un anno',
23120            yy: '%d anni',
23121        },
23122        dayOfMonthOrdinalParse: /\d{1,2}º/,
23123        ordinal: '%dº',
23124        week: {
23125            dow: 1, // Monday is the first day of the week.
23126            doy: 4, // The week that contains Jan 4th is the first week of the year.
23127        },
23128    });
23129
23130    return it;
23131
23132})));
23133
23134
23135/***/ }),
23136
vendor: 5,012 bytes, lines 23137-23303
23137/***/ "./node_modules/moment/locale/ja.js":
23138/*!******************************************!*\
23139  !*** ./node_modules/moment/locale/ja.js ***!
23140  \******************************************/
23141/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
23142
23143//! moment.js locale configuration
23144//! locale : Japanese [ja]
23145//! author : LI Long : https://github.com/baryon
23146
23147;(function (global, factory) {
23148    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
23149   0
23150}(this, (function (moment) { 'use strict';
23151
23152    //! moment.js locale configuration
23153
23154    var ja = moment.defineLocale('ja', {
23155        eras: [
23156            {
23157                since: '2019-05-01',
23158                offset: 1,
23159                name: '令和',
23160                narrow: '㋿',
23161                abbr: 'R',
23162            },
23163            {
23164                since: '1989-01-08',
23165                until: '2019-04-30',
23166                offset: 1,
23167                name: '平成',
23168                narrow: '㍻',
23169                abbr: 'H',
23170            },
23171            {
23172                since: '1926-12-25',
23173                until: '1989-01-07',
23174                offset: 1,
23175                name: '昭和',
23176                narrow: '㍼',
23177                abbr: 'S',
23178            },
23179            {
23180                since: '1912-07-30',
23181                until: '1926-12-24',
23182                offset: 1,
23183                name: '大正',
23184                narrow: '㍽',
23185                abbr: 'T',
23186            },
23187            {
23188                since: '1873-01-01',
23189                until: '1912-07-29',
23190                offset: 6,
23191                name: '明治',
23192                narrow: '㍾',
23193                abbr: 'M',
23194            },
23195            {
23196                since: '0001-01-01',
23197                until: '1873-12-31',
23198                offset: 1,
23199                name: '西暦',
23200                narrow: 'AD',
23201                abbr: 'AD',
23202            },
23203            {
23204                since: '0000-12-31',
23205                until: -Infinity,
23206                offset: 1,
23207                name: '紀元前',
23208                narrow: 'BC',
23209                abbr: 'BC',
23210            },
23211        ],
23212        eraYearOrdinalRegex: /(元|\d+)年/,
23213        eraYearOrdinalParse: function (input, match) {
23214            return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);
23215        },
23216        months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
23217        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
23218            '_'
23219        ),
23220        weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
23221        weekdaysShort: '日_月_火_水_木_金_土'.split('_'),
23222        weekdaysMin: '日_月_火_水_木_金_土'.split('_'),
23223        longDateFormat: {
23224            LT: 'HH:mm',
23225            LTS: 'HH:mm:ss',
23226            L: 'YYYY/MM/DD',
23227            LL: 'YYYY年M月D日',
23228            LLL: 'YYYY年M月D日 HH:mm',
23229            LLLL: 'YYYY年M月D日 dddd HH:mm',
23230            l: 'YYYY/MM/DD',
23231            ll: 'YYYY年M月D日',
23232            lll: 'YYYY年M月D日 HH:mm',
23233            llll: 'YYYY年M月D日(ddd) HH:mm',
23234        },
23235        meridiemParse: /午前|午後/i,
23236        isPM: function (input) {
23237            return input === '午後';
23238        },
23239        meridiem: function (hour, minute, isLower) {
23240            if (hour < 12) {
23241                return '午前';
23242            } else {
23243                return '午後';
23244            }
23245        },
23246        calendar: {
23247            sameDay: '[今日] LT',
23248            nextDay: '[明日] LT',
23249            nextWeek: function (now) {
23250                if (now.week() !== this.week()) {
23251                    return '[来週]dddd LT';
23252                } else {
23253                    return 'dddd LT';
23254                }
23255            },
23256            lastDay: '[昨日] LT',
23257            lastWeek: function (now) {
23258                if (this.week() !== now.week()) {
23259                    return '[先週]dddd LT';
23260                } else {
23261                    return 'dddd LT';
23262                }
23263            },
23264            sameElse: 'L',
23265        },
23266        dayOfMonthOrdinalParse: /\d{1,2}日/,
23267        ordinal: function (number, period) {
23268            switch (period) {
23269                case 'y':
23270                    return number === 1 ? '元年' : number + '年';
23271                case 'd':
23272                case 'D':
23273                case 'DDD':
23274                    return number + '日';
23275                default:
23276                    return number;
23277            }
23278        },
23279        relativeTime: {
23280            future: '%s後',
23281            past: '%s前',
23282            s: '数秒',
23283            ss: '%d秒',
23284            m: '1分',
23285            mm: '%d分',
23286            h: '1時間',
23287            hh: '%d時間',
23288            d: '1日',
23289            dd: '%d日',
23290            M: '1ヶ月',
23291            MM: '%dヶ月',
23292            y: '1å¹´',
23293            yy: '%då¹´',
23294        },
23295    });
23296
23297    return ja;
23298
23299})));
23300
23301
23302/***/ }),
23303
vendor: 3,149 bytes, lines 23304-23398
23304/***/ "./node_modules/moment/locale/jv.js":
23305/*!******************************************!*\
23306  !*** ./node_modules/moment/locale/jv.js ***!
23307  \******************************************/
23308/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
23309
23310//! moment.js locale configuration
23311//! locale : Javanese [jv]
23312//! author : Rony Lantip : https://github.com/lantip
23313//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa
23314
23315;(function (global, factory) {
23316    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
23317   0
23318}(this, (function (moment) { 'use strict';
23319
23320    //! moment.js locale configuration
23321
23322    var jv = moment.defineLocale('jv', {
23323        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(
23324            '_'
23325        ),
23326        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
23327        weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
23328        weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
23329        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
23330        longDateFormat: {
23331            LT: 'HH.mm',
23332            LTS: 'HH.mm.ss',
23333            L: 'DD/MM/YYYY',
23334            LL: 'D MMMM YYYY',
23335            LLL: 'D MMMM YYYY [pukul] HH.mm',
23336            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
23337        },
23338        meridiemParse: /enjing|siyang|sonten|ndalu/,
23339        meridiemHour: function (hour, meridiem) {
23340            if (hour === 12) {
23341                hour = 0;
23342            }
23343            if (meridiem === 'enjing') {
23344                return hour;
23345            } else if (meridiem === 'siyang') {
23346                return hour >= 11 ? hour : hour + 12;
23347            } else if (meridiem === 'sonten' || meridiem === 'ndalu') {
23348                return hour + 12;
23349            }
23350        },
23351        meridiem: function (hours, minutes, isLower) {
23352            if (hours < 11) {
23353                return 'enjing';
23354            } else if (hours < 15) {
23355                return 'siyang';
23356            } else if (hours < 19) {
23357                return 'sonten';
23358            } else {
23359                return 'ndalu';
23360            }
23361        },
23362        calendar: {
23363            sameDay: '[Dinten puniko pukul] LT',
23364            nextDay: '[Mbenjang pukul] LT',
23365            nextWeek: 'dddd [pukul] LT',
23366            lastDay: '[Kala wingi pukul] LT',
23367            lastWeek: 'dddd [kepengker pukul] LT',
23368            sameElse: 'L',
23369        },
23370        relativeTime: {
23371            future: 'wonten ing %s',
23372            past: '%s ingkang kepengker',
23373            s: 'sawetawis detik',
23374            ss: '%d detik',
23375            m: 'setunggal menit',
23376            mm: '%d menit',
23377            h: 'setunggal jam',
23378            hh: '%d jam',
23379            d: 'sedinten',
23380            dd: '%d dinten',
23381            M: 'sewulan',
23382            MM: '%d wulan',
23383            y: 'setaun',
23384            yy: '%d taun',
23385        },
23386        week: {
23387            dow: 1, // Monday is the first day of the week.
23388            doy: 7, // The week that contains Jan 7th is the first week of the year.
23389        },
23390    });
23391
23392    return jv;
23393
23394})));
23395
23396
23397/***/ }),
23398
vendor: 4,337 bytes, lines 23399-23509
23399/***/ "./node_modules/moment/locale/ka.js":
23400/*!******************************************!*\
23401  !*** ./node_modules/moment/locale/ka.js ***!
23402  \******************************************/
23403/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
23404
23405//! moment.js locale configuration
23406//! locale : Georgian [ka]
23407//! author : Irakli Janiashvili : https://github.com/IrakliJani
23408
23409;(function (global, factory) {
23410    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
23411   0
23412}(this, (function (moment) { 'use strict';
23413
23414    //! moment.js locale configuration
23415
23416    var ka = moment.defineLocale('ka', {
23417        months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(
23418            '_'
23419        ),
23420        monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
23421        weekdays: {
23422            standalone:
23423                'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(
23424                    '_'
23425                ),
23426            format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(
23427                '_'
23428            ),
23429            isFormat: /(წინა|შემდეგ)/,
23430        },
23431        weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
23432        weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
23433        longDateFormat: {
23434            LT: 'HH:mm',
23435            LTS: 'HH:mm:ss',
23436            L: 'DD/MM/YYYY',
23437            LL: 'D MMMM YYYY',
23438            LLL: 'D MMMM YYYY HH:mm',
23439            LLLL: 'dddd, D MMMM YYYY HH:mm',
23440        },
23441        calendar: {
23442            sameDay: '[დღეს] LT[-ზე]',
23443            nextDay: '[ხვალ] LT[-ზე]',
23444            lastDay: '[გუშინ] LT[-ზე]',
23445            nextWeek: '[შემდეგ] dddd LT[-ზე]',
23446            lastWeek: '[წინა] dddd LT-ზე',
23447            sameElse: 'L',
23448        },
23449        relativeTime: {
23450            future: function (s) {
23451                return s.replace(
23452                    /(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,
23453                    function ($0, $1, $2) {
23454                        return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';
23455                    }
23456                );
23457            },
23458            past: function (s) {
23459                if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {
23460                    return s.replace(/(ი|ე)$/, 'ის წინ');
23461                }
23462                if (/წელი/.test(s)) {
23463                    return s.replace(/წელი$/, 'წლის წინ');
23464                }
23465                return s;
23466            },
23467            s: 'რამდენიმე წამი',
23468            ss: '%d წამი',
23469            m: 'წუთი',
23470            mm: '%d წუთი',
23471            h: 'საათი',
23472            hh: '%d საათი',
23473            d: 'დღე',
23474            dd: '%d დღე',
23475            M: 'თვე',
23476            MM: '%d თვე',
23477            y: 'წელი',
23478            yy: '%d წელი',
23479        },
23480        dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
23481        ordinal: function (number) {
23482            if (number === 0) {
23483                return number;
23484            }
23485            if (number === 1) {
23486                return number + '-ლი';
23487            }
23488            if (
23489                number < 20 ||
23490                (number <= 100 && number % 20 === 0) ||
23491                number % 100 === 0
23492            ) {
23493                return 'მე-' + number;
23494            }
23495            return number + '-ე';
23496        },
23497        week: {
23498            dow: 1,
23499            doy: 7,
23500        },
23501    });
23502
23503    return ka;
23504
23505})));
23506
23507
23508/***/ }),
23509
vendor: 3,284 bytes, lines 23510-23610
23510/***/ "./node_modules/moment/locale/kk.js":
23511/*!******************************************!*\
23512  !*** ./node_modules/moment/locale/kk.js ***!
23513  \******************************************/
23514/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
23515
23516//! moment.js locale configuration
23517//! locale : Kazakh [kk]
23518//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan
23519
23520;(function (global, factory) {
23521    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
23522   0
23523}(this, (function (moment) { 'use strict';
23524
23525    //! moment.js locale configuration
23526
23527    var suffixes = {
23528        0: '-ші',
23529        1: '-ші',
23530        2: '-ші',
23531        3: '-ші',
23532        4: '-ші',
23533        5: '-ші',
23534        6: '-шы',
23535        7: '-ші',
23536        8: '-ші',
23537        9: '-шы',
23538        10: '-шы',
23539        20: '-шы',
23540        30: '-шы',
23541        40: '-шы',
23542        50: '-ші',
23543        60: '-шы',
23544        70: '-ші',
23545        80: '-ші',
23546        90: '-шы',
23547        100: '-ші',
23548    };
23549
23550    var kk = moment.defineLocale('kk', {
23551        months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(
23552            '_'
23553        ),
23554        monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),
23555        weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(
23556            '_'
23557        ),
23558        weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),
23559        weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),
23560        longDateFormat: {
23561            LT: 'HH:mm',
23562            LTS: 'HH:mm:ss',
23563            L: 'DD.MM.YYYY',
23564            LL: 'D MMMM YYYY',
23565            LLL: 'D MMMM YYYY HH:mm',
23566            LLLL: 'dddd, D MMMM YYYY HH:mm',
23567        },
23568        calendar: {
23569            sameDay: '[Бүгін сағат] LT',
23570            nextDay: '[Ертең сағат] LT',
23571            nextWeek: 'dddd [сағат] LT',
23572            lastDay: '[Кеше сағат] LT',
23573            lastWeek: '[Өткен аптаның] dddd [сағат] LT',
23574            sameElse: 'L',
23575        },
23576        relativeTime: {
23577            future: '%s ішінде',
23578            past: '%s бұрын',
23579            s: 'бірнеше секунд',
23580            ss: '%d секунд',
23581            m: 'бір минут',
23582            mm: '%d минут',
23583            h: 'бір сағат',
23584            hh: '%d сағат',
23585            d: 'бір күн',
23586            dd: '%d күн',
23587            M: 'бір ай',
23588            MM: '%d ай',
23589            y: 'бір жыл',
23590            yy: '%d жыл',
23591        },
23592        dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/,
23593        ordinal: function (number) {
23594            var a = number % 10,
23595                b = number >= 100 ? 100 : null;
23596            return number + (suffixes[number] || suffixes[a] || suffixes[b]);
23597        },
23598        week: {
23599            dow: 1, // Monday is the first day of the week.
23600            doy: 7, // The week that contains Jan 7th is the first week of the year.
23601        },
23602    });
23603
23604    return kk;
23605
23606})));
23607
23608
23609/***/ }),
23610
vendor: 4,235 bytes, lines 23611-23732
23611/***/ "./node_modules/moment/locale/km.js":
23612/*!******************************************!*\
23613  !*** ./node_modules/moment/locale/km.js ***!
23614  \******************************************/
23615/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
23616
23617//! moment.js locale configuration
23618//! locale : Cambodian [km]
23619//! author : Kruy Vanna : https://github.com/kruyvanna
23620
23621;(function (global, factory) {
23622    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
23623   0
23624}(this, (function (moment) { 'use strict';
23625
23626    //! moment.js locale configuration
23627
23628    var symbolMap = {
23629            1: '១',
23630            2: '២',
23631            3: '៣',
23632            4: '៤',
23633            5: '៥',
23634            6: '៦',
23635            7: '៧',
23636            8: '៨',
23637            9: '៩',
23638            0: '០',
23639        },
23640        numberMap = {
23641            '១': '1',
23642            '២': '2',
23643            '៣': '3',
23644            '៤': '4',
23645            '៥': '5',
23646            '៦': '6',
23647            '៧': '7',
23648            '៨': '8',
23649            '៩': '9',
23650            '០': '0',
23651        };
23652
23653    var km = moment.defineLocale('km', {
23654        months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
23655            '_'
23656        ),
23657        monthsShort:
23658            'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
23659                '_'
23660            ),
23661        weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
23662        weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
23663        weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
23664        weekdaysParseExact: true,
23665        longDateFormat: {
23666            LT: 'HH:mm',
23667            LTS: 'HH:mm:ss',
23668            L: 'DD/MM/YYYY',
23669            LL: 'D MMMM YYYY',
23670            LLL: 'D MMMM YYYY HH:mm',
23671            LLLL: 'dddd, D MMMM YYYY HH:mm',
23672        },
23673        meridiemParse: /ព្រឹក|ល្ងាច/,
23674        isPM: function (input) {
23675            return input === 'ល្ងាច';
23676        },
23677        meridiem: function (hour, minute, isLower) {
23678            if (hour < 12) {
23679                return 'ព្រឹក';
23680            } else {
23681                return 'ល្ងាច';
23682            }
23683        },
23684        calendar: {
23685            sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',
23686            nextDay: '[ស្អែក ម៉ោង] LT',
23687            nextWeek: 'dddd [ម៉ោង] LT',
23688            lastDay: '[ម្សិលមិញ ម៉ោង] LT',
23689            lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',
23690            sameElse: 'L',
23691        },
23692        relativeTime: {
23693            future: '%sទៀត',
23694            past: '%sមុន',
23695            s: 'ប៉ុន្មានវិនាទី',
23696            ss: '%d វិនាទី',
23697            m: 'មួយនាទី',
23698            mm: '%d នាទី',
23699            h: 'មួយម៉ោង',
23700            hh: '%d ម៉ោង',
23701            d: 'មួយថ្ងៃ',
23702            dd: '%d ថ្ងៃ',
23703            M: 'មួយខែ',
23704            MM: '%d ខែ',
23705            y: 'មួយឆ្នាំ',
23706            yy: '%d ឆ្នាំ',
23707        },
23708        dayOfMonthOrdinalParse: /ទី\d{1,2}/,
23709        ordinal: 'ទី%d',
23710        preparse: function (string) {
23711            return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {
23712                return numberMap[match];
23713            });
23714        },
23715        postformat: function (string) {
23716            return string.replace(/\d/g, function (match) {
23717                return symbolMap[match];
23718            });
23719        },
23720        week: {
23721            dow: 1, // Monday is the first day of the week.
23722            doy: 4, // The week that contains Jan 4th is the first week of the year.
23723        },
23724    });
23725
23726    return km;
23727
23728})));
23729
23730
23731/***/ }),
23732
vendor: 5,209 bytes, lines 23733-23875
23733/***/ "./node_modules/moment/locale/kn.js":
23734/*!******************************************!*\
23735  !*** ./node_modules/moment/locale/kn.js ***!
23736  \******************************************/
23737/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
23738
23739//! moment.js locale configuration
23740//! locale : Kannada [kn]
23741//! author : Rajeev Naik : https://github.com/rajeevnaikte
23742
23743;(function (global, factory) {
23744    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
23745   0
23746}(this, (function (moment) { 'use strict';
23747
23748    //! moment.js locale configuration
23749
23750    var symbolMap = {
23751            1: 'à³§',
23752            2: '೨',
23753            3: '೩',
23754            4: '೪',
23755            5: '೫',
23756            6: '೬',
23757            7: 'à³­',
23758            8: 'à³®',
23759            9: '೯',
23760            0: '೦',
23761        },
23762        numberMap = {
23763            'à³§': '1',
23764            '೨': '2',
23765            '೩': '3',
23766            '೪': '4',
23767            '೫': '5',
23768            '೬': '6',
23769            'à³­': '7',
23770            'à³®': '8',
23771            '೯': '9',
23772            '೦': '0',
23773        };
23774
23775    var kn = moment.defineLocale('kn', {
23776        months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(
23777            '_'
23778        ),
23779        monthsShort:
23780            'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(
23781                '_'
23782            ),
23783        monthsParseExact: true,
23784        weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(
23785            '_'
23786        ),
23787        weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),
23788        weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),
23789        longDateFormat: {
23790            LT: 'A h:mm',
23791            LTS: 'A h:mm:ss',
23792            L: 'DD/MM/YYYY',
23793            LL: 'D MMMM YYYY',
23794            LLL: 'D MMMM YYYY, A h:mm',
23795            LLLL: 'dddd, D MMMM YYYY, A h:mm',
23796        },
23797        calendar: {
23798            sameDay: '[ಇಂದು] LT',
23799            nextDay: '[ನಾಳೆ] LT',
23800            nextWeek: 'dddd, LT',
23801            lastDay: '[ನಿನ್ನೆ] LT',
23802            lastWeek: '[ಕೊನೆಯ] dddd, LT',
23803            sameElse: 'L',
23804        },
23805        relativeTime: {
23806            future: '%s ನಂತರ',
23807            past: '%s ಹಿಂದೆ',
23808            s: 'ಕೆಲವು ಕ್ಷಣಗಳು',
23809            ss: '%d ಸೆಕೆಂಡುಗಳು',
23810            m: 'ಒಂದು ನಿಮಿಷ',
23811            mm: '%d ನಿಮಿಷ',
23812            h: 'ಒಂದು ಗಂಟೆ',
23813            hh: '%d ಗಂಟೆ',
23814            d: 'ಒಂದು ದಿನ',
23815            dd: '%d ದಿನ',
23816            M: 'ಒಂದು ತಿಂಗಳು',
23817            MM: '%d ತಿಂಗಳು',
23818            y: 'ಒಂದು ವರ್ಷ',
23819            yy: '%d ವರ್ಷ',
23820        },
23821        preparse: function (string) {
23822            return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {
23823                return numberMap[match];
23824            });
23825        },
23826        postformat: function (string) {
23827            return string.replace(/\d/g, function (match) {
23828                return symbolMap[match];
23829            });
23830        },
23831        meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,
23832        meridiemHour: function (hour, meridiem) {
23833            if (hour === 12) {
23834                hour = 0;
23835            }
23836            if (meridiem === 'ರಾತ್ರಿ') {
23837                return hour < 4 ? hour : hour + 12;
23838            } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {
23839                return hour;
23840            } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {
23841                return hour >= 10 ? hour : hour + 12;
23842            } else if (meridiem === 'ಸಂಜೆ') {
23843                return hour + 12;
23844            }
23845        },
23846        meridiem: function (hour, minute, isLower) {
23847            if (hour < 4) {
23848                return 'ರಾತ್ರಿ';
23849            } else if (hour < 10) {
23850                return 'ಬೆಳಿಗ್ಗೆ';
23851            } else if (hour < 17) {
23852                return 'ಮಧ್ಯಾಹ್ನ';
23853            } else if (hour < 20) {
23854                return 'ಸಂಜೆ';
23855            } else {
23856                return 'ರಾತ್ರಿ';
23857            }
23858        },
23859        dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/,
23860        ordinal: function (number) {
23861            return number + 'ನೇ';
23862        },
23863        week: {
23864            dow: 0, // Sunday is the first day of the week.
23865            doy: 6, // The week that contains Jan 6th is the first week of the year.
23866        },
23867    });
23868
23869    return kn;
23870
23871})));
23872
23873
23874/***/ }),
23875
vendor: 2,984 bytes, lines 23876-23969
23876/***/ "./node_modules/moment/locale/ko.js":
23877/*!******************************************!*\
23878  !*** ./node_modules/moment/locale/ko.js ***!
23879  \******************************************/
23880/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
23881
23882//! moment.js locale configuration
23883//! locale : Korean [ko]
23884//! author : Kyungwook, Park : https://github.com/kyungw00k
23885//! author : Jeeeyul Lee <[email protected]>
23886
23887;(function (global, factory) {
23888    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
23889   0
23890}(this, (function (moment) { 'use strict';
23891
23892    //! moment.js locale configuration
23893
23894    var ko = moment.defineLocale('ko', {
23895        months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
23896        monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(
23897            '_'
23898        ),
23899        weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
23900        weekdaysShort: '일_월_화_수_목_금_토'.split('_'),
23901        weekdaysMin: '일_월_화_수_목_금_토'.split('_'),
23902        longDateFormat: {
23903            LT: 'A h:mm',
23904            LTS: 'A h:mm:ss',
23905            L: 'YYYY.MM.DD.',
23906            LL: 'YYYY년 MMMM D일',
23907            LLL: 'YYYY년 MMMM D일 A h:mm',
23908            LLLL: 'YYYY년 MMMM D일 dddd A h:mm',
23909            l: 'YYYY.MM.DD.',
23910            ll: 'YYYY년 MMMM D일',
23911            lll: 'YYYY년 MMMM D일 A h:mm',
23912            llll: 'YYYY년 MMMM D일 dddd A h:mm',
23913        },
23914        calendar: {
23915            sameDay: '오늘 LT',
23916            nextDay: '내일 LT',
23917            nextWeek: 'dddd LT',
23918            lastDay: '어제 LT',
23919            lastWeek: '지난주 dddd LT',
23920            sameElse: 'L',
23921        },
23922        relativeTime: {
23923            future: '%s 후',
23924            past: '%s 전',
23925            s: '몇 초',
23926            ss: '%d초',
23927            m: '1분',
23928            mm: '%d분',
23929            h: '한 시간',
23930            hh: '%d시간',
23931            d: '하루',
23932            dd: '%d일',
23933            M: '한 달',
23934            MM: '%d달',
23935            y: '일 년',
23936            yy: '%d년',
23937        },
23938        dayOfMonthOrdinalParse: /\d{1,2}(일|월|주)/,
23939        ordinal: function (number, period) {
23940            switch (period) {
23941                case 'd':
23942                case 'D':
23943                case 'DDD':
23944                    return number + '일';
23945                case 'M':
23946                    return number + '월';
23947                case 'w':
23948                case 'W':
23949                    return number + '주';
23950                default:
23951                    return number;
23952            }
23953        },
23954        meridiemParse: /오전|오후/,
23955        isPM: function (token) {
23956            return token === '오후';
23957        },
23958        meridiem: function (hour, minute, isUpper) {
23959            return hour < 12 ? '오전' : '오후';
23960        },
23961    });
23962
23963    return ko;
23964
23965})));
23966
23967
23968/***/ }),
23969
vendor: 5,051 bytes, lines 23970-24102
23970/***/ "./node_modules/moment/locale/ku-kmr.js":
23971/*!**********************************************!*\
23972  !*** ./node_modules/moment/locale/ku-kmr.js ***!
23973  \**********************************************/
23974/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
23975
23976//! moment.js locale configuration
23977//! locale : Northern Kurdish [ku-kmr]
23978//! authors : Mazlum Özdogan : https://github.com/mergehez
23979
23980;(function (global, factory) {
23981    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
23982   0
23983}(this, (function (moment) { 'use strict';
23984
23985    //! moment.js locale configuration
23986
23987    function processRelativeTime(num, withoutSuffix, key, isFuture) {
23988        var format = {
23989            s: ['çend sanîye', 'çend sanîyeyan'],
23990            ss: [num + ' sanîye', num + ' sanîyeyan'],
23991            m: ['deqîqeyek', 'deqîqeyekê'],
23992            mm: [num + ' deqîqe', num + ' deqîqeyan'],
23993            h: ['saetek', 'saetekê'],
23994            hh: [num + ' saet', num + ' saetan'],
23995            d: ['rojek', 'rojekê'],
23996            dd: [num + ' roj', num + ' rojan'],
23997            w: ['hefteyek', 'hefteyekê'],
23998            ww: [num + ' hefte', num + ' hefteyan'],
23999            M: ['mehek', 'mehekê'],
24000            MM: [num + ' meh', num + ' mehan'],
24001            y: ['salek', 'salekê'],
24002            yy: [num + ' sal', num + ' salan'],
24003        };
24004        return withoutSuffix ? format[key][0] : format[key][1];
24005    }
24006    // function obliqueNumSuffix(num) {
24007    //     if(num.includes(':'))
24008    //         num = parseInt(num.split(':')[0]);
24009    //     else
24010    //         num = parseInt(num);
24011    //     return num == 0 || num % 10 == 1 ? 'ê'
24012    //                         : (num > 10 && num % 10 == 0 ? 'î' : 'an');
24013    // }
24014    function ezafeNumSuffix(num) {
24015        num = '' + num;
24016        var l = num.substring(num.length - 1),
24017            ll = num.length > 1 ? num.substring(num.length - 2) : '';
24018        if (
24019            !(ll == 12 || ll == 13) &&
24020            (l == '2' || l == '3' || ll == '50' || l == '70' || l == '80')
24021        )
24022            return 'yê';
24023        return 'ê';
24024    }
24025
24026    var kuKmr = moment.defineLocale('ku-kmr', {
24027        // According to the spelling rules defined by the work group of Weqfa Mezopotamyayê (Mesopotamia Foundation)
24028        // this should be: 'Kanûna Paşîn_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Çirîya Pêşîn_Çirîya Paşîn_Kanûna Pêşîn'
24029        // But the names below are more well known and handy
24030        months: 'Rêbendan_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Cotmeh_Mijdar_Berfanbar'.split(
24031            '_'
24032        ),
24033        monthsShort: 'Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_Îlo_Cot_Mij_Ber'.split('_'),
24034        monthsParseExact: true,
24035        weekdays: 'Yekşem_Duşem_Sêşem_Çarşem_Pêncşem_În_Şemî'.split('_'),
24036        weekdaysShort: 'Yek_Du_Sê_Çar_Pên_În_Şem'.split('_'),
24037        weekdaysMin: 'Ye_Du_Sê_Ça_Pê_În_Şe'.split('_'),
24038        meridiem: function (hours, minutes, isLower) {
24039            if (hours < 12) {
24040                return isLower ? 'bn' : 'BN';
24041            } else {
24042                return isLower ? 'pn' : 'PN';
24043            }
24044        },
24045        meridiemParse: /bn|BN|pn|PN/,
24046        longDateFormat: {
24047            LT: 'HH:mm',
24048            LTS: 'HH:mm:ss',
24049            L: 'DD.MM.YYYY',
24050            LL: 'Do MMMM[a] YYYY[an]',
24051            LLL: 'Do MMMM[a] YYYY[an] HH:mm',
24052            LLLL: 'dddd, Do MMMM[a] YYYY[an] HH:mm',
24053            ll: 'Do MMM[.] YYYY[an]',
24054            lll: 'Do MMM[.] YYYY[an] HH:mm',
24055            llll: 'ddd[.], Do MMM[.] YYYY[an] HH:mm',
24056        },
24057        calendar: {
24058            sameDay: '[Îro di saet] LT [de]',
24059            nextDay: '[Sibê di saet] LT [de]',
24060            nextWeek: 'dddd [di saet] LT [de]',
24061            lastDay: '[Duh di saet] LT [de]',
24062            lastWeek: 'dddd[a borî di saet] LT [de]',
24063            sameElse: 'L',
24064        },
24065        relativeTime: {
24066            future: 'di %s de',
24067            past: 'berî %s',
24068            s: processRelativeTime,
24069            ss: processRelativeTime,
24070            m: processRelativeTime,
24071            mm: processRelativeTime,
24072            h: processRelativeTime,
24073            hh: processRelativeTime,
24074            d: processRelativeTime,
24075            dd: processRelativeTime,
24076            w: processRelativeTime,
24077            ww: processRelativeTime,
24078            M: processRelativeTime,
24079            MM: processRelativeTime,
24080            y: processRelativeTime,
24081            yy: processRelativeTime,
24082        },
24083        dayOfMonthOrdinalParse: /\d{1,2}(?:yê|ê|\.)/,
24084        ordinal: function (num, period) {
24085            var p = period.toLowerCase();
24086            if (p.includes('w') || p.includes('m')) return num + '.';
24087
24088            return num + ezafeNumSuffix(num);
24089        },
24090        week: {
24091            dow: 1, // Monday is the first day of the week.
24092            doy: 4, // The week that contains Jan 4th is the first week of the year.
24093        },
24094    });
24095
24096    return kuKmr;
24097
24098})));
24099
24100
24101/***/ }),
24102
vendor: 4,263 bytes, lines 24103-24239
24103/***/ "./node_modules/moment/locale/ku.js":
24104/*!******************************************!*\
24105  !*** ./node_modules/moment/locale/ku.js ***!
24106  \******************************************/
24107/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
24108
24109//! moment.js locale configuration
24110//! locale : Kurdish [ku]
24111//! author : Shahram Mebashar : https://github.com/ShahramMebashar
24112
24113;(function (global, factory) {
24114    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
24115   0
24116}(this, (function (moment) { 'use strict';
24117
24118    //! moment.js locale configuration
24119
24120    var symbolMap = {
24121            1: 'Ù¡',
24122            2: 'Ù¢',
24123            3: 'Ù£',
24124            4: 'Ù¤',
24125            5: 'Ù¥',
24126            6: 'Ù¦',
24127            7: 'Ù§',
24128            8: 'Ù¨',
24129            9: 'Ù©',
24130            0: 'Ù ',
24131        },
24132        numberMap = {
24133            'Ù¡': '1',
24134            'Ù¢': '2',
24135            'Ù£': '3',
24136            'Ù¤': '4',
24137            'Ù¥': '5',
24138            'Ù¦': '6',
24139            'Ù§': '7',
24140            'Ù¨': '8',
24141            'Ù©': '9',
24142            'Ù ': '0',
24143        },
24144        months = [
24145            'کانونی دووەم',
24146            'شوبات',
24147            'ئازار',
24148            'نیسان',
24149            'ئایار',
24150            'حوزەیران',
24151            'تەمموز',
24152            'ئاب',
24153            'ئەیلوول',
24154            'تشرینی یەكەم',
24155            'تشرینی دووەم',
24156            'كانونی یەکەم',
24157        ];
24158
24159    var ku = moment.defineLocale('ku', {
24160        months: months,
24161        monthsShort: months,
24162        weekdays:
24163            'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(
24164                '_'
24165            ),
24166        weekdaysShort:
24167            'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),
24168        weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),
24169        weekdaysParseExact: true,
24170        longDateFormat: {
24171            LT: 'HH:mm',
24172            LTS: 'HH:mm:ss',
24173            L: 'DD/MM/YYYY',
24174            LL: 'D MMMM YYYY',
24175            LLL: 'D MMMM YYYY HH:mm',
24176            LLLL: 'dddd, D MMMM YYYY HH:mm',
24177        },
24178        meridiemParse: /ئێواره‌|به‌یانی/,
24179        isPM: function (input) {
24180            return /ئێواره‌/.test(input);
24181        },
24182        meridiem: function (hour, minute, isLower) {
24183            if (hour < 12) {
24184                return 'به‌یانی';
24185            } else {
24186                return 'ئێواره‌';
24187            }
24188        },
24189        calendar: {
24190            sameDay: '[ئه‌مرۆ كاتژمێر] LT',
24191            nextDay: '[به‌یانی كاتژمێر] LT',
24192            nextWeek: 'dddd [كاتژمێر] LT',
24193            lastDay: '[دوێنێ كاتژمێر] LT',
24194            lastWeek: 'dddd [كاتژمێر] LT',
24195            sameElse: 'L',
24196        },
24197        relativeTime: {
24198            future: 'له‌ %s',
24199            past: '%s',
24200            s: 'چه‌ند چركه‌یه‌ك',
24201            ss: 'چركه‌ %d',
24202            m: 'یه‌ك خوله‌ك',
24203            mm: '%d خوله‌ك',
24204            h: 'یه‌ك كاتژمێر',
24205            hh: '%d كاتژمێر',
24206            d: 'یه‌ك ڕۆژ',
24207            dd: '%d ڕۆژ',
24208            M: 'یه‌ك مانگ',
24209            MM: '%d مانگ',
24210            y: 'یه‌ك ساڵ',
24211            yy: '%d ساڵ',
24212        },
24213        preparse: function (string) {
24214            return string
24215                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
24216                    return numberMap[match];
24217                })
24218                .replace(/،/g, ',');
24219        },
24220        postformat: function (string) {
24221            return string
24222                .replace(/\d/g, function (match) {
24223                    return symbolMap[match];
24224                })
24225                .replace(/,/g, '،');
24226        },
24227        week: {
24228            dow: 6, // Saturday is the first day of the week.
24229            doy: 12, // The week that contains Jan 12th is the first week of the year.
24230        },
24231    });
24232
24233    return ku;
24234
24235})));
24236
24237
24238/***/ }),
24239
vendor: 3,318 bytes, lines 24240-24342
24240/***/ "./node_modules/moment/locale/ky.js":
24241/*!******************************************!*\
24242  !*** ./node_modules/moment/locale/ky.js ***!
24243  \******************************************/
24244/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
24245
24246//! moment.js locale configuration
24247//! locale : Kyrgyz [ky]
24248//! author : Chyngyz Arystan uulu : https://github.com/chyngyz
24249
24250;(function (global, factory) {
24251    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
24252   0
24253}(this, (function (moment) { 'use strict';
24254
24255    //! moment.js locale configuration
24256
24257    var suffixes = {
24258        0: '-чү',
24259        1: '-чи',
24260        2: '-чи',
24261        3: '-чү',
24262        4: '-чү',
24263        5: '-чи',
24264        6: '-чы',
24265        7: '-чи',
24266        8: '-чи',
24267        9: '-чу',
24268        10: '-чу',
24269        20: '-чы',
24270        30: '-чу',
24271        40: '-чы',
24272        50: '-чү',
24273        60: '-чы',
24274        70: '-чи',
24275        80: '-чи',
24276        90: '-чу',
24277        100: '-чү',
24278    };
24279
24280    var ky = moment.defineLocale('ky', {
24281        months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
24282            '_'
24283        ),
24284        monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(
24285            '_'
24286        ),
24287        weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(
24288            '_'
24289        ),
24290        weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),
24291        weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),
24292        longDateFormat: {
24293            LT: 'HH:mm',
24294            LTS: 'HH:mm:ss',
24295            L: 'DD.MM.YYYY',
24296            LL: 'D MMMM YYYY',
24297            LLL: 'D MMMM YYYY HH:mm',
24298            LLLL: 'dddd, D MMMM YYYY HH:mm',
24299        },
24300        calendar: {
24301            sameDay: '[Бүгүн саат] LT',
24302            nextDay: '[Эртең саат] LT',
24303            nextWeek: 'dddd [саат] LT',
24304            lastDay: '[Кечээ саат] LT',
24305            lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',
24306            sameElse: 'L',
24307        },
24308        relativeTime: {
24309            future: '%s ичинде',
24310            past: '%s мурун',
24311            s: 'бирнече секунд',
24312            ss: '%d секунд',
24313            m: 'бир мүнөт',
24314            mm: '%d мүнөт',
24315            h: 'бир саат',
24316            hh: '%d саат',
24317            d: 'бир күн',
24318            dd: '%d күн',
24319            M: 'бир ай',
24320            MM: '%d ай',
24321            y: 'бир жыл',
24322            yy: '%d жыл',
24323        },
24324        dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/,
24325        ordinal: function (number) {
24326            var a = number % 10,
24327                b = number >= 100 ? 100 : null;
24328            return number + (suffixes[number] || suffixes[a] || suffixes[b]);
24329        },
24330        week: {
24331            dow: 1, // Monday is the first day of the week.
24332            doy: 7, // The week that contains Jan 7th is the first week of the year.
24333        },
24334    });
24335
24336    return ky;
24337
24338})));
24339
24340
24341/***/ }),
24342
vendor: 5,274 bytes, lines 24343-24498
24343/***/ "./node_modules/moment/locale/lb.js":
24344/*!******************************************!*\
24345  !*** ./node_modules/moment/locale/lb.js ***!
24346  \******************************************/
24347/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
24348
24349//! moment.js locale configuration
24350//! locale : Luxembourgish [lb]
24351//! author : mweimerskirch : https://github.com/mweimerskirch
24352//! author : David Raison : https://github.com/kwisatz
24353
24354;(function (global, factory) {
24355    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
24356   0
24357}(this, (function (moment) { 'use strict';
24358
24359    //! moment.js locale configuration
24360
24361    function processRelativeTime(number, withoutSuffix, key, isFuture) {
24362        var format = {
24363            m: ['eng Minutt', 'enger Minutt'],
24364            h: ['eng Stonn', 'enger Stonn'],
24365            d: ['een Dag', 'engem Dag'],
24366            M: ['ee Mount', 'engem Mount'],
24367            y: ['ee Joer', 'engem Joer'],
24368        };
24369        return withoutSuffix ? format[key][0] : format[key][1];
24370    }
24371    function processFutureTime(string) {
24372        var number = string.substr(0, string.indexOf(' '));
24373        if (eifelerRegelAppliesToNumber(number)) {
24374            return 'a ' + string;
24375        }
24376        return 'an ' + string;
24377    }
24378    function processPastTime(string) {
24379        var number = string.substr(0, string.indexOf(' '));
24380        if (eifelerRegelAppliesToNumber(number)) {
24381            return 'viru ' + string;
24382        }
24383        return 'virun ' + string;
24384    }
24385    /**
24386     * Returns true if the word before the given number loses the '-n' ending.
24387     * e.g. 'an 10 Deeg' but 'a 5 Deeg'
24388     *
24389     * @param number {integer}
24390     * @returns {boolean}
24391     */
24392    function eifelerRegelAppliesToNumber(number) {
24393        number = parseInt(number, 10);
24394        if (isNaN(number)) {
24395            return false;
24396        }
24397        if (number < 0) {
24398            // Negative Number --> always true
24399            return true;
24400        } else if (number < 10) {
24401            // Only 1 digit
24402            if (4 <= number && number <= 7) {
24403                return true;
24404            }
24405            return false;
24406        } else if (number < 100) {
24407            // 2 digits
24408            var lastDigit = number % 10,
24409                firstDigit = number / 10;
24410            if (lastDigit === 0) {
24411                return eifelerRegelAppliesToNumber(firstDigit);
24412            }
24413            return eifelerRegelAppliesToNumber(lastDigit);
24414        } else if (number < 10000) {
24415            // 3 or 4 digits --> recursively check first digit
24416            while (number >= 10) {
24417                number = number / 10;
24418            }
24419            return eifelerRegelAppliesToNumber(number);
24420        } else {
24421            // Anything larger than 4 digits: recursively check first n-3 digits
24422            number = number / 1000;
24423            return eifelerRegelAppliesToNumber(number);
24424        }
24425    }
24426
24427    var lb = moment.defineLocale('lb', {
24428        months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(
24429            '_'
24430        ),
24431        monthsShort:
24432            'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(
24433                '_'
24434            ),
24435        monthsParseExact: true,
24436        weekdays:
24437            'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(
24438                '_'
24439            ),
24440        weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
24441        weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
24442        weekdaysParseExact: true,
24443        longDateFormat: {
24444            LT: 'H:mm [Auer]',
24445            LTS: 'H:mm:ss [Auer]',
24446            L: 'DD.MM.YYYY',
24447            LL: 'D. MMMM YYYY',
24448            LLL: 'D. MMMM YYYY H:mm [Auer]',
24449            LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',
24450        },
24451        calendar: {
24452            sameDay: '[Haut um] LT',
24453            sameElse: 'L',
24454            nextDay: '[Muer um] LT',
24455            nextWeek: 'dddd [um] LT',
24456            lastDay: '[Gëschter um] LT',
24457            lastWeek: function () {
24458                // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
24459                switch (this.day()) {
24460                    case 2:
24461                    case 4:
24462                        return '[Leschten] dddd [um] LT';
24463                    default:
24464                        return '[Leschte] dddd [um] LT';
24465                }
24466            },
24467        },
24468        relativeTime: {
24469            future: processFutureTime,
24470            past: processPastTime,
24471            s: 'e puer Sekonnen',
24472            ss: '%d Sekonnen',
24473            m: processRelativeTime,
24474            mm: '%d Minutten',
24475            h: processRelativeTime,
24476            hh: '%d Stonnen',
24477            d: processRelativeTime,
24478            dd: '%d Deeg',
24479            M: processRelativeTime,
24480            MM: '%d Méint',
24481            y: processRelativeTime,
24482            yy: '%d Joer',
24483        },
24484        dayOfMonthOrdinalParse: /\d{1,2}\./,
24485        ordinal: '%d.',
24486        week: {
24487            dow: 1, // Monday is the first day of the week.
24488            doy: 4, // The week that contains Jan 4th is the first week of the year.
24489        },
24490    });
24491
24492    return lb;
24493
24494})));
24495
24496
24497/***/ }),
24498
vendor: 3,314 bytes, lines 24499-24583
24499/***/ "./node_modules/moment/locale/lo.js":
24500/*!******************************************!*\
24501  !*** ./node_modules/moment/locale/lo.js ***!
24502  \******************************************/
24503/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
24504
24505//! moment.js locale configuration
24506//! locale : Lao [lo]
24507//! author : Ryan Hart : https://github.com/ryanhart2
24508
24509;(function (global, factory) {
24510    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
24511   0
24512}(this, (function (moment) { 'use strict';
24513
24514    //! moment.js locale configuration
24515
24516    var lo = moment.defineLocale('lo', {
24517        months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
24518            '_'
24519        ),
24520        monthsShort:
24521            'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
24522                '_'
24523            ),
24524        weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
24525        weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
24526        weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
24527        weekdaysParseExact: true,
24528        longDateFormat: {
24529            LT: 'HH:mm',
24530            LTS: 'HH:mm:ss',
24531            L: 'DD/MM/YYYY',
24532            LL: 'D MMMM YYYY',
24533            LLL: 'D MMMM YYYY HH:mm',
24534            LLLL: 'ວັນdddd D MMMM YYYY HH:mm',
24535        },
24536        meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,
24537        isPM: function (input) {
24538            return input === 'ຕອນແລງ';
24539        },
24540        meridiem: function (hour, minute, isLower) {
24541            if (hour < 12) {
24542                return 'ຕອນເຊົ້າ';
24543            } else {
24544                return 'ຕອນແລງ';
24545            }
24546        },
24547        calendar: {
24548            sameDay: '[ມື້ນີ້ເວລາ] LT',
24549            nextDay: '[ມື້ອື່ນເວລາ] LT',
24550            nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',
24551            lastDay: '[ມື້ວານນີ້ເວລາ] LT',
24552            lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
24553            sameElse: 'L',
24554        },
24555        relativeTime: {
24556            future: 'ອີກ %s',
24557            past: '%sຜ່ານມາ',
24558            s: 'ບໍ່ເທົ່າໃດວິນາທີ',
24559            ss: '%d ວິນາທີ',
24560            m: '1 ນາທີ',
24561            mm: '%d ນາທີ',
24562            h: '1 ຊົ່ວໂມງ',
24563            hh: '%d ຊົ່ວໂມງ',
24564            d: '1 ມື້',
24565            dd: '%d ມື້',
24566            M: '1 ເດືອນ',
24567            MM: '%d ເດືອນ',
24568            y: '1 ປີ',
24569            yy: '%d ປີ',
24570        },
24571        dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/,
24572        ordinal: function (number) {
24573            return 'ທີ່' + number;
24574        },
24575    });
24576
24577    return lo;
24578
24579})));
24580
24581
24582/***/ }),
24583
vendor: 4,974 bytes, lines 24584-24727
24584/***/ "./node_modules/moment/locale/lt.js":
24585/*!******************************************!*\
24586  !*** ./node_modules/moment/locale/lt.js ***!
24587  \******************************************/
24588/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
24589
24590//! moment.js locale configuration
24591//! locale : Lithuanian [lt]
24592//! author : Mindaugas Mozūras : https://github.com/mmozuras
24593
24594;(function (global, factory) {
24595    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
24596   0
24597}(this, (function (moment) { 'use strict';
24598
24599    //! moment.js locale configuration
24600
24601    var units = {
24602        ss: 'sekundė_sekundžių_sekundes',
24603        m: 'minutė_minutės_minutę',
24604        mm: 'minutės_minučių_minutes',
24605        h: 'valanda_valandos_valandą',
24606        hh: 'valandos_valandų_valandas',
24607        d: 'diena_dienos_dieną',
24608        dd: 'dienos_dienų_dienas',
24609        M: 'mėnuo_mėnesio_mėnesį',
24610        MM: 'mėnesiai_mėnesių_mėnesius',
24611        y: 'metai_metų_metus',
24612        yy: 'metai_metų_metus',
24613    };
24614    function translateSeconds(number, withoutSuffix, key, isFuture) {
24615        if (withoutSuffix) {
24616            return 'kelios sekundės';
24617        } else {
24618            return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
24619        }
24620    }
24621    function translateSingular(number, withoutSuffix, key, isFuture) {
24622        return withoutSuffix
24623            ? forms(key)[0]
24624            : isFuture
24625              ? forms(key)[1]
24626              : forms(key)[2];
24627    }
24628    function special(number) {
24629        return number % 10 === 0 || (number > 10 && number < 20);
24630    }
24631    function forms(key) {
24632        return units[key].split('_');
24633    }
24634    function translate(number, withoutSuffix, key, isFuture) {
24635        var result = number + ' ';
24636        if (number === 1) {
24637            return (
24638                result + translateSingular(number, withoutSuffix, key[0], isFuture)
24639            );
24640        } else if (withoutSuffix) {
24641            return result + (special(number) ? forms(key)[1] : forms(key)[0]);
24642        } else {
24643            if (isFuture) {
24644                return result + forms(key)[1];
24645            } else {
24646                return result + (special(number) ? forms(key)[1] : forms(key)[2]);
24647            }
24648        }
24649    }
24650    var lt = moment.defineLocale('lt', {
24651        months: {
24652            format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(
24653                '_'
24654            ),
24655            standalone:
24656                'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(
24657                    '_'
24658                ),
24659            isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/,
24660        },
24661        monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
24662        weekdays: {
24663            format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(
24664                '_'
24665            ),
24666            standalone:
24667                'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(
24668                    '_'
24669                ),
24670            isFormat: /dddd HH:mm/,
24671        },
24672        weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),
24673        weekdaysMin: 'S_P_A_T_K_Pn_Å '.split('_'),
24674        weekdaysParseExact: true,
24675        longDateFormat: {
24676            LT: 'HH:mm',
24677            LTS: 'HH:mm:ss',
24678            L: 'YYYY-MM-DD',
24679            LL: 'YYYY [m.] MMMM D [d.]',
24680            LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
24681            LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
24682            l: 'YYYY-MM-DD',
24683            ll: 'YYYY [m.] MMMM D [d.]',
24684            lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
24685            llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',
24686        },
24687        calendar: {
24688            sameDay: '[Å iandien] LT',
24689            nextDay: '[Rytoj] LT',
24690            nextWeek: 'dddd LT',
24691            lastDay: '[Vakar] LT',
24692            lastWeek: '[Praėjusį] dddd LT',
24693            sameElse: 'L',
24694        },
24695        relativeTime: {
24696            future: 'po %s',
24697            past: 'prieš %s',
24698            s: translateSeconds,
24699            ss: translate,
24700            m: translateSingular,
24701            mm: translate,
24702            h: translateSingular,
24703            hh: translate,
24704            d: translateSingular,
24705            dd: translate,
24706            M: translateSingular,
24707            MM: translate,
24708            y: translateSingular,
24709            yy: translate,
24710        },
24711        dayOfMonthOrdinalParse: /\d{1,2}-oji/,
24712        ordinal: function (number) {
24713            return number + '-oji';
24714        },
24715        week: {
24716            dow: 1, // Monday is the first day of the week.
24717            doy: 4, // The week that contains Jan 4th is the first week of the year.
24718        },
24719    });
24720
24721    return lt;
24722
24723})));
24724
24725
24726/***/ }),
24727
vendor: 4,282 bytes, lines 24728-24840
24728/***/ "./node_modules/moment/locale/lv.js":
24729/*!******************************************!*\
24730  !*** ./node_modules/moment/locale/lv.js ***!
24731  \******************************************/
24732/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
24733
24734//! moment.js locale configuration
24735//! locale : Latvian [lv]
24736//! author : Kristaps Karlsons : https://github.com/skakri
24737//! author : Jānis Elmeris : https://github.com/JanisE
24738
24739;(function (global, factory) {
24740    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
24741   0
24742}(this, (function (moment) { 'use strict';
24743
24744    //! moment.js locale configuration
24745
24746    var units = {
24747        ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),
24748        m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
24749        mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
24750        h: 'stundas_stundām_stunda_stundas'.split('_'),
24751        hh: 'stundas_stundām_stunda_stundas'.split('_'),
24752        d: 'dienas_dienām_diena_dienas'.split('_'),
24753        dd: 'dienas_dienām_diena_dienas'.split('_'),
24754        M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
24755        MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
24756        y: 'gada_gadiem_gads_gadi'.split('_'),
24757        yy: 'gada_gadiem_gads_gadi'.split('_'),
24758    };
24759    /**
24760     * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
24761     */
24762    function format(forms, number, withoutSuffix) {
24763        if (withoutSuffix) {
24764            // E.g. "21 minūte", "3 minūtes".
24765            return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];
24766        } else {
24767            // E.g. "21 minūtes" as in "pēc 21 minūtes".
24768            // E.g. "3 minūtēm" as in "pēc 3 minūtēm".
24769            return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];
24770        }
24771    }
24772    function relativeTimeWithPlural(number, withoutSuffix, key) {
24773        return number + ' ' + format(units[key], number, withoutSuffix);
24774    }
24775    function relativeTimeWithSingular(number, withoutSuffix, key) {
24776        return format(units[key], number, withoutSuffix);
24777    }
24778    function relativeSeconds(number, withoutSuffix) {
24779        return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';
24780    }
24781
24782    var lv = moment.defineLocale('lv', {
24783        months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(
24784            '_'
24785        ),
24786        monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
24787        weekdays:
24788            'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(
24789                '_'
24790            ),
24791        weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),
24792        weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),
24793        weekdaysParseExact: true,
24794        longDateFormat: {
24795            LT: 'HH:mm',
24796            LTS: 'HH:mm:ss',
24797            L: 'DD.MM.YYYY.',
24798            LL: 'YYYY. [gada] D. MMMM',
24799            LLL: 'YYYY. [gada] D. MMMM, HH:mm',
24800            LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',
24801        },
24802        calendar: {
24803            sameDay: '[Å odien pulksten] LT',
24804            nextDay: '[Rīt pulksten] LT',
24805            nextWeek: 'dddd [pulksten] LT',
24806            lastDay: '[Vakar pulksten] LT',
24807            lastWeek: '[Pagājušā] dddd [pulksten] LT',
24808            sameElse: 'L',
24809        },
24810        relativeTime: {
24811            future: 'pēc %s',
24812            past: 'pirms %s',
24813            s: relativeSeconds,
24814            ss: relativeTimeWithPlural,
24815            m: relativeTimeWithSingular,
24816            mm: relativeTimeWithPlural,
24817            h: relativeTimeWithSingular,
24818            hh: relativeTimeWithPlural,
24819            d: relativeTimeWithSingular,
24820            dd: relativeTimeWithPlural,
24821            M: relativeTimeWithSingular,
24822            MM: relativeTimeWithPlural,
24823            y: relativeTimeWithSingular,
24824            yy: relativeTimeWithPlural,
24825        },
24826        dayOfMonthOrdinalParse: /\d{1,2}\./,
24827        ordinal: '%d.',
24828        week: {
24829            dow: 1, // Monday is the first day of the week.
24830            doy: 4, // The week that contains Jan 4th is the first week of the year.
24831        },
24832    });
24833
24834    return lv;
24835
24836})));
24837
24838
24839/***/ }),
24840
vendor: 4,590 bytes, lines 24841-24976
24841/***/ "./node_modules/moment/locale/me.js":
24842/*!******************************************!*\
24843  !*** ./node_modules/moment/locale/me.js ***!
24844  \******************************************/
24845/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
24846
24847//! moment.js locale configuration
24848//! locale : Montenegrin [me]
24849//! author : Miodrag Nikač <[email protected]> : https://github.com/miodragnikac
24850
24851;(function (global, factory) {
24852    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
24853   0
24854}(this, (function (moment) { 'use strict';
24855
24856    //! moment.js locale configuration
24857
24858    var translator = {
24859        words: {
24860            //Different grammatical cases
24861            ss: ['sekund', 'sekunda', 'sekundi'],
24862            m: ['jedan minut', 'jednog minuta'],
24863            mm: ['minut', 'minuta', 'minuta'],
24864            h: ['jedan sat', 'jednog sata'],
24865            hh: ['sat', 'sata', 'sati'],
24866            dd: ['dan', 'dana', 'dana'],
24867            MM: ['mjesec', 'mjeseca', 'mjeseci'],
24868            yy: ['godina', 'godine', 'godina'],
24869        },
24870        correctGrammaticalCase: function (number, wordKey) {
24871            return number === 1
24872                ? wordKey[0]
24873                : number >= 2 && number <= 4
24874                  ? wordKey[1]
24875                  : wordKey[2];
24876        },
24877        translate: function (number, withoutSuffix, key) {
24878            var wordKey = translator.words[key];
24879            if (key.length === 1) {
24880                return withoutSuffix ? wordKey[0] : wordKey[1];
24881            } else {
24882                return (
24883                    number +
24884                    ' ' +
24885                    translator.correctGrammaticalCase(number, wordKey)
24886                );
24887            }
24888        },
24889    };
24890
24891    var me = moment.defineLocale('me', {
24892        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
24893            '_'
24894        ),
24895        monthsShort:
24896            'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
24897        monthsParseExact: true,
24898        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
24899            '_'
24900        ),
24901        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
24902        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
24903        weekdaysParseExact: true,
24904        longDateFormat: {
24905            LT: 'H:mm',
24906            LTS: 'H:mm:ss',
24907            L: 'DD.MM.YYYY',
24908            LL: 'D. MMMM YYYY',
24909            LLL: 'D. MMMM YYYY H:mm',
24910            LLLL: 'dddd, D. MMMM YYYY H:mm',
24911        },
24912        calendar: {
24913            sameDay: '[danas u] LT',
24914            nextDay: '[sjutra u] LT',
24915
24916            nextWeek: function () {
24917                switch (this.day()) {
24918                    case 0:
24919                        return '[u] [nedjelju] [u] LT';
24920                    case 3:
24921                        return '[u] [srijedu] [u] LT';
24922                    case 6:
24923                        return '[u] [subotu] [u] LT';
24924                    case 1:
24925                    case 2:
24926                    case 4:
24927                    case 5:
24928                        return '[u] dddd [u] LT';
24929                }
24930            },
24931            lastDay: '[juče u] LT',
24932            lastWeek: function () {
24933                var lastWeekDays = [
24934                    '[prošle] [nedjelje] [u] LT',
24935                    '[prošlog] [ponedjeljka] [u] LT',
24936                    '[prošlog] [utorka] [u] LT',
24937                    '[prošle] [srijede] [u] LT',
24938                    '[prošlog] [četvrtka] [u] LT',
24939                    '[prošlog] [petka] [u] LT',
24940                    '[prošle] [subote] [u] LT',
24941                ];
24942                return lastWeekDays[this.day()];
24943            },
24944            sameElse: 'L',
24945        },
24946        relativeTime: {
24947            future: 'za %s',
24948            past: 'prije %s',
24949            s: 'nekoliko sekundi',
24950            ss: translator.translate,
24951            m: translator.translate,
24952            mm: translator.translate,
24953            h: translator.translate,
24954            hh: translator.translate,
24955            d: 'dan',
24956            dd: translator.translate,
24957            M: 'mjesec',
24958            MM: translator.translate,
24959            y: 'godinu',
24960            yy: translator.translate,
24961        },
24962        dayOfMonthOrdinalParse: /\d{1,2}\./,
24963        ordinal: '%d.',
24964        week: {
24965            dow: 1, // Monday is the first day of the week.
24966            doy: 7, // The week that contains Jan 7th is the first week of the year.
24967        },
24968    });
24969
24970    return me;
24971
24972})));
24973
24974
24975/***/ }),
24976
vendor: 2,728 bytes, lines 24977-25055
24977/***/ "./node_modules/moment/locale/mi.js":
24978/*!******************************************!*\
24979  !*** ./node_modules/moment/locale/mi.js ***!
24980  \******************************************/
24981/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
24982
24983//! moment.js locale configuration
24984//! locale : Maori [mi]
24985//! author : John Corrigan <[email protected]> : https://github.com/johnideal
24986
24987;(function (global, factory) {
24988    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
24989   0
24990}(this, (function (moment) { 'use strict';
24991
24992    //! moment.js locale configuration
24993
24994    var mi = moment.defineLocale('mi', {
24995        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(
24996            '_'
24997        ),
24998        monthsShort:
24999            'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(
25000                '_'
25001            ),
25002        monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
25003        monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
25004        monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
25005        monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,
25006        weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),
25007        weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
25008        weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
25009        longDateFormat: {
25010            LT: 'HH:mm',
25011            LTS: 'HH:mm:ss',
25012            L: 'DD/MM/YYYY',
25013            LL: 'D MMMM YYYY',
25014            LLL: 'D MMMM YYYY [i] HH:mm',
25015            LLLL: 'dddd, D MMMM YYYY [i] HH:mm',
25016        },
25017        calendar: {
25018            sameDay: '[i teie mahana, i] LT',
25019            nextDay: '[apopo i] LT',
25020            nextWeek: 'dddd [i] LT',
25021            lastDay: '[inanahi i] LT',
25022            lastWeek: 'dddd [whakamutunga i] LT',
25023            sameElse: 'L',
25024        },
25025        relativeTime: {
25026            future: 'i roto i %s',
25027            past: '%s i mua',
25028            s: 'te hēkona ruarua',
25029            ss: '%d hēkona',
25030            m: 'he meneti',
25031            mm: '%d meneti',
25032            h: 'te haora',
25033            hh: '%d haora',
25034            d: 'he ra',
25035            dd: '%d ra',
25036            M: 'he marama',
25037            MM: '%d marama',
25038            y: 'he tau',
25039            yy: '%d tau',
25040        },
25041        dayOfMonthOrdinalParse: /\d{1,2}º/,
25042        ordinal: '%dº',
25043        week: {
25044            dow: 1, // Monday is the first day of the week.
25045            doy: 4, // The week that contains Jan 4th is the first week of the year.
25046        },
25047    });
25048
25049    return mi;
25050
25051})));
25052
25053
25054/***/ }),
25055
vendor: 3,827 bytes, lines 25056-25160
25056/***/ "./node_modules/moment/locale/mk.js":
25057/*!******************************************!*\
25058  !*** ./node_modules/moment/locale/mk.js ***!
25059  \******************************************/
25060/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
25061
25062//! moment.js locale configuration
25063//! locale : Macedonian [mk]
25064//! author : Borislav Mickov : https://github.com/B0k0
25065//! author : Sashko Todorov : https://github.com/bkyceh
25066
25067;(function (global, factory) {
25068    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
25069   0
25070}(this, (function (moment) { 'use strict';
25071
25072    //! moment.js locale configuration
25073
25074    var mk = moment.defineLocale('mk', {
25075        months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(
25076            '_'
25077        ),
25078        monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
25079        weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(
25080            '_'
25081        ),
25082        weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
25083        weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),
25084        longDateFormat: {
25085            LT: 'H:mm',
25086            LTS: 'H:mm:ss',
25087            L: 'D.MM.YYYY',
25088            LL: 'D MMMM YYYY',
25089            LLL: 'D MMMM YYYY H:mm',
25090            LLLL: 'dddd, D MMMM YYYY H:mm',
25091        },
25092        calendar: {
25093            sameDay: '[Денес во] LT',
25094            nextDay: '[Утре во] LT',
25095            nextWeek: '[Во] dddd [во] LT',
25096            lastDay: '[Вчера во] LT',
25097            lastWeek: function () {
25098                switch (this.day()) {
25099                    case 0:
25100                    case 3:
25101                    case 6:
25102                        return '[Изминатата] dddd [во] LT';
25103                    case 1:
25104                    case 2:
25105                    case 4:
25106                    case 5:
25107                        return '[Изминатиот] dddd [во] LT';
25108                }
25109            },
25110            sameElse: 'L',
25111        },
25112        relativeTime: {
25113            future: 'за %s',
25114            past: 'пред %s',
25115            s: 'неколку секунди',
25116            ss: '%d секунди',
25117            m: 'една минута',
25118            mm: '%d минути',
25119            h: 'еден час',
25120            hh: '%d часа',
25121            d: 'еден ден',
25122            dd: '%d дена',
25123            M: 'еден месец',
25124            MM: '%d месеци',
25125            y: 'една година',
25126            yy: '%d години',
25127        },
25128        dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
25129        ordinal: function (number) {
25130            var lastDigit = number % 10,
25131                last2Digits = number % 100;
25132            if (number === 0) {
25133                return number + '-ев';
25134            } else if (last2Digits === 0) {
25135                return number + '-ен';
25136            } else if (last2Digits > 10 && last2Digits < 20) {
25137                return number + '-ти';
25138            } else if (lastDigit === 1) {
25139                return number + '-ви';
25140            } else if (lastDigit === 2) {
25141                return number + '-ри';
25142            } else if (lastDigit === 7 || lastDigit === 8) {
25143                return number + '-ми';
25144            } else {
25145                return number + '-ти';
25146            }
25147        },
25148        week: {
25149            dow: 1, // Monday is the first day of the week.
25150            doy: 7, // The week that contains Jan 7th is the first week of the year.
25151        },
25152    });
25153
25154    return mk;
25155
25156})));
25157
25158
25159/***/ }),
25160
vendor: 4,080 bytes, lines 25161-25261
25161/***/ "./node_modules/moment/locale/ml.js":
25162/*!******************************************!*\
25163  !*** ./node_modules/moment/locale/ml.js ***!
25164  \******************************************/
25165/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
25166
25167//! moment.js locale configuration
25168//! locale : Malayalam [ml]
25169//! author : Floyd Pink : https://github.com/floydpink
25170
25171;(function (global, factory) {
25172    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
25173   0
25174}(this, (function (moment) { 'use strict';
25175
25176    //! moment.js locale configuration
25177
25178    var ml = moment.defineLocale('ml', {
25179        months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(
25180            '_'
25181        ),
25182        monthsShort:
25183            'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(
25184                '_'
25185            ),
25186        monthsParseExact: true,
25187        weekdays:
25188            'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(
25189                '_'
25190            ),
25191        weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
25192        weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
25193        longDateFormat: {
25194            LT: 'A h:mm -നു',
25195            LTS: 'A h:mm:ss -നു',
25196            L: 'DD/MM/YYYY',
25197            LL: 'D MMMM YYYY',
25198            LLL: 'D MMMM YYYY, A h:mm -നു',
25199            LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',
25200        },
25201        calendar: {
25202            sameDay: '[ഇന്ന്] LT',
25203            nextDay: '[നാളെ] LT',
25204            nextWeek: 'dddd, LT',
25205            lastDay: '[ഇന്നലെ] LT',
25206            lastWeek: '[കഴിഞ്ഞ] dddd, LT',
25207            sameElse: 'L',
25208        },
25209        relativeTime: {
25210            future: '%s കഴിഞ്ഞ്',
25211            past: '%s മുൻപ്',
25212            s: 'അൽപ നിമിഷങ്ങൾ',
25213            ss: '%d സെക്കൻഡ്',
25214            m: 'ഒരു മിനിറ്റ്',
25215            mm: '%d മിനിറ്റ്',
25216            h: 'ഒരു മണിക്കൂർ',
25217            hh: '%d മണിക്കൂർ',
25218            d: 'ഒരു ദിവസം',
25219            dd: '%d ദിവസം',
25220            M: 'ഒരു മാസം',
25221            MM: '%d മാസം',
25222            y: 'ഒരു വർഷം',
25223            yy: '%d വർഷം',
25224        },
25225        meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
25226        meridiemHour: function (hour, meridiem) {
25227            if (hour === 12) {
25228                hour = 0;
25229            }
25230            if (
25231                (meridiem === 'രാത്രി' && hour >= 4) ||
25232                meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||
25233                meridiem === 'വൈകുന്നേരം'
25234            ) {
25235                return hour + 12;
25236            } else {
25237                return hour;
25238            }
25239        },
25240        meridiem: function (hour, minute, isLower) {
25241            if (hour < 4) {
25242                return 'രാത്രി';
25243            } else if (hour < 12) {
25244                return 'രാവിലെ';
25245            } else if (hour < 17) {
25246                return 'ഉച്ച കഴിഞ്ഞ്';
25247            } else if (hour < 20) {
25248                return 'വൈകുന്നേരം';
25249            } else {
25250                return 'രാത്രി';
25251            }
25252        },
25253    });
25254
25255    return ml;
25256
25257})));
25258
25259
25260/***/ }),
25261
vendor: 4,275 bytes, lines 25262-25380
25262/***/ "./node_modules/moment/locale/mn.js":
25263/*!******************************************!*\
25264  !*** ./node_modules/moment/locale/mn.js ***!
25265  \******************************************/
25266/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
25267
25268//! moment.js locale configuration
25269//! locale : Mongolian [mn]
25270//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7
25271
25272;(function (global, factory) {
25273    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
25274   0
25275}(this, (function (moment) { 'use strict';
25276
25277    //! moment.js locale configuration
25278
25279    function translate(number, withoutSuffix, key, isFuture) {
25280        switch (key) {
25281            case 's':
25282                return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';
25283            case 'ss':
25284                return number + (withoutSuffix ? ' секунд' : ' секундын');
25285            case 'm':
25286            case 'mm':
25287                return number + (withoutSuffix ? ' минут' : ' минутын');
25288            case 'h':
25289            case 'hh':
25290                return number + (withoutSuffix ? ' цаг' : ' цагийн');
25291            case 'd':
25292            case 'dd':
25293                return number + (withoutSuffix ? ' өдөр' : ' өдрийн');
25294            case 'M':
25295            case 'MM':
25296                return number + (withoutSuffix ? ' сар' : ' сарын');
25297            case 'y':
25298            case 'yy':
25299                return number + (withoutSuffix ? ' жил' : ' жилийн');
25300            default:
25301                return number;
25302        }
25303    }
25304
25305    var mn = moment.defineLocale('mn', {
25306        months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(
25307            '_'
25308        ),
25309        monthsShort:
25310            '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(
25311                '_'
25312            ),
25313        monthsParseExact: true,
25314        weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),
25315        weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),
25316        weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),
25317        weekdaysParseExact: true,
25318        longDateFormat: {
25319            LT: 'HH:mm',
25320            LTS: 'HH:mm:ss',
25321            L: 'YYYY-MM-DD',
25322            LL: 'YYYY оны MMMMын D',
25323            LLL: 'YYYY оны MMMMын D HH:mm',
25324            LLLL: 'dddd, YYYY оны MMMMын D HH:mm',
25325        },
25326        meridiemParse: /ҮӨ|ҮХ/i,
25327        isPM: function (input) {
25328            return input === 'ҮХ';
25329        },
25330        meridiem: function (hour, minute, isLower) {
25331            if (hour < 12) {
25332                return 'Ò®Ó¨';
25333            } else {
25334                return 'ҮХ';
25335            }
25336        },
25337        calendar: {
25338            sameDay: '[Өнөөдөр] LT',
25339            nextDay: '[Маргааш] LT',
25340            nextWeek: '[Ирэх] dddd LT',
25341            lastDay: '[Өчигдөр] LT',
25342            lastWeek: '[Өнгөрсөн] dddd LT',
25343            sameElse: 'L',
25344        },
25345        relativeTime: {
25346            future: '%s дараа',
25347            past: '%s өмнө',
25348            s: translate,
25349            ss: translate,
25350            m: translate,
25351            mm: translate,
25352            h: translate,
25353            hh: translate,
25354            d: translate,
25355            dd: translate,
25356            M: translate,
25357            MM: translate,
25358            y: translate,
25359            yy: translate,
25360        },
25361        dayOfMonthOrdinalParse: /\d{1,2} өдөр/,
25362        ordinal: function (number, period) {
25363            switch (period) {
25364                case 'd':
25365                case 'D':
25366                case 'DDD':
25367                    return number + ' өдөр';
25368                default:
25369                    return number;
25370            }
25371        },
25372    });
25373
25374    return mn;
25375
25376})));
25377
25378
25379/***/ }),
25380
vendor: 7,839 bytes, lines 25381-25602
25381/***/ "./node_modules/moment/locale/mr.js":
25382/*!******************************************!*\
25383  !*** ./node_modules/moment/locale/mr.js ***!
25384  \******************************************/
25385/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
25386
25387//! moment.js locale configuration
25388//! locale : Marathi [mr]
25389//! author : Harshad Kale : https://github.com/kalehv
25390//! author : Vivek Athalye : https://github.com/vnathalye
25391
25392;(function (global, factory) {
25393    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
25394   0
25395}(this, (function (moment) { 'use strict';
25396
25397    //! moment.js locale configuration
25398
25399    var symbolMap = {
25400            1: '१',
25401            2: '२',
25402            3: '३',
25403            4: '४',
25404            5: '५',
25405            6: '६',
25406            7: '७',
25407            8: '८',
25408            9: '९',
25409            0: '०',
25410        },
25411        numberMap = {
25412            '१': '1',
25413            '२': '2',
25414            '३': '3',
25415            '४': '4',
25416            '५': '5',
25417            '६': '6',
25418            '७': '7',
25419            '८': '8',
25420            '९': '9',
25421            '०': '0',
25422        };
25423
25424    function relativeTimeMr(number, withoutSuffix, string, isFuture) {
25425        var output = '';
25426        if (withoutSuffix) {
25427            switch (string) {
25428                case 's':
25429                    output = 'काही सेकंद';
25430                    break;
25431                case 'ss':
25432                    output = '%d सेकंद';
25433                    break;
25434                case 'm':
25435                    output = 'एक मिनिट';
25436                    break;
25437                case 'mm':
25438                    output = '%d मिनिटे';
25439                    break;
25440                case 'h':
25441                    output = 'एक तास';
25442                    break;
25443                case 'hh':
25444                    output = '%d तास';
25445                    break;
25446                case 'd':
25447                    output = 'एक दिवस';
25448                    break;
25449                case 'dd':
25450                    output = '%d दिवस';
25451                    break;
25452                case 'M':
25453                    output = 'एक महिना';
25454                    break;
25455                case 'MM':
25456                    output = '%d महिने';
25457                    break;
25458                case 'y':
25459                    output = 'एक वर्ष';
25460                    break;
25461                case 'yy':
25462                    output = '%d वर्षे';
25463                    break;
25464            }
25465        } else {
25466            switch (string) {
25467                case 's':
25468                    output = 'काही सेकंदां';
25469                    break;
25470                case 'ss':
25471                    output = '%d सेकंदां';
25472                    break;
25473                case 'm':
25474                    output = 'एका मिनिटा';
25475                    break;
25476                case 'mm':
25477                    output = '%d मिनिटां';
25478                    break;
25479                case 'h':
25480                    output = 'एका तासा';
25481                    break;
25482                case 'hh':
25483                    output = '%d तासां';
25484                    break;
25485                case 'd':
25486                    output = 'एका दिवसा';
25487                    break;
25488                case 'dd':
25489                    output = '%d दिवसां';
25490                    break;
25491                case 'M':
25492                    output = 'एका महिन्या';
25493                    break;
25494                case 'MM':
25495                    output = '%d महिन्यां';
25496                    break;
25497                case 'y':
25498                    output = 'एका वर्षा';
25499                    break;
25500                case 'yy':
25501                    output = '%d वर्षां';
25502                    break;
25503            }
25504        }
25505        return output.replace(/%d/i, number);
25506    }
25507
25508    var mr = moment.defineLocale('mr', {
25509        months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
25510            '_'
25511        ),
25512        monthsShort:
25513            'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
25514                '_'
25515            ),
25516        monthsParseExact: true,
25517        weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
25518        weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
25519        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
25520        longDateFormat: {
25521            LT: 'A h:mm वाजता',
25522            LTS: 'A h:mm:ss वाजता',
25523            L: 'DD/MM/YYYY',
25524            LL: 'D MMMM YYYY',
25525            LLL: 'D MMMM YYYY, A h:mm वाजता',
25526            LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',
25527        },
25528        calendar: {
25529            sameDay: '[आज] LT',
25530            nextDay: '[उद्या] LT',
25531            nextWeek: 'dddd, LT',
25532            lastDay: '[काल] LT',
25533            lastWeek: '[मागील] dddd, LT',
25534            sameElse: 'L',
25535        },
25536        relativeTime: {
25537            future: '%sमध्ये',
25538            past: '%sपूर्वी',
25539            s: relativeTimeMr,
25540            ss: relativeTimeMr,
25541            m: relativeTimeMr,
25542            mm: relativeTimeMr,
25543            h: relativeTimeMr,
25544            hh: relativeTimeMr,
25545            d: relativeTimeMr,
25546            dd: relativeTimeMr,
25547            M: relativeTimeMr,
25548            MM: relativeTimeMr,
25549            y: relativeTimeMr,
25550            yy: relativeTimeMr,
25551        },
25552        preparse: function (string) {
25553            return string.replace(/[१२३४५६७८९०]/g, function (match) {
25554                return numberMap[match];
25555            });
25556        },
25557        postformat: function (string) {
25558            return string.replace(/\d/g, function (match) {
25559                return symbolMap[match];
25560            });
25561        },
25562        meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,
25563        meridiemHour: function (hour, meridiem) {
25564            if (hour === 12) {
25565                hour = 0;
25566            }
25567            if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {
25568                return hour;
25569            } else if (
25570                meridiem === 'दुपारी' ||
25571                meridiem === 'सायंकाळी' ||
25572                meridiem === 'रात्री'
25573            ) {
25574                return hour >= 12 ? hour : hour + 12;
25575            }
25576        },
25577        meridiem: function (hour, minute, isLower) {
25578            if (hour >= 0 && hour < 6) {
25579                return 'पहाटे';
25580            } else if (hour < 12) {
25581                return 'सकाळी';
25582            } else if (hour < 17) {
25583                return 'दुपारी';
25584            } else if (hour < 20) {
25585                return 'सायंकाळी';
25586            } else {
25587                return 'रात्री';
25588            }
25589        },
25590        week: {
25591            dow: 0, // Sunday is the first day of the week.
25592            doy: 6, // The week that contains Jan 6th is the first week of the year.
25593        },
25594    });
25595
25596    return mr;
25597
25598})));
25599
25600
25601/***/ }),
25602
vendor: 3,111 bytes, lines 25603-25697
25603/***/ "./node_modules/moment/locale/ms-my.js":
25604/*!*********************************************!*\
25605  !*** ./node_modules/moment/locale/ms-my.js ***!
25606  \*********************************************/
25607/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
25608
25609//! moment.js locale configuration
25610//! locale : Malay [ms-my]
25611//! note : DEPRECATED, the correct one is [ms]
25612//! author : Weldan Jamili : https://github.com/weldan
25613
25614;(function (global, factory) {
25615    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
25616   0
25617}(this, (function (moment) { 'use strict';
25618
25619    //! moment.js locale configuration
25620
25621    var msMy = moment.defineLocale('ms-my', {
25622        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
25623            '_'
25624        ),
25625        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
25626        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
25627        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
25628        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
25629        longDateFormat: {
25630            LT: 'HH.mm',
25631            LTS: 'HH.mm.ss',
25632            L: 'DD/MM/YYYY',
25633            LL: 'D MMMM YYYY',
25634            LLL: 'D MMMM YYYY [pukul] HH.mm',
25635            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
25636        },
25637        meridiemParse: /pagi|tengahari|petang|malam/,
25638        meridiemHour: function (hour, meridiem) {
25639            if (hour === 12) {
25640                hour = 0;
25641            }
25642            if (meridiem === 'pagi') {
25643                return hour;
25644            } else if (meridiem === 'tengahari') {
25645                return hour >= 11 ? hour : hour + 12;
25646            } else if (meridiem === 'petang' || meridiem === 'malam') {
25647                return hour + 12;
25648            }
25649        },
25650        meridiem: function (hours, minutes, isLower) {
25651            if (hours < 11) {
25652                return 'pagi';
25653            } else if (hours < 15) {
25654                return 'tengahari';
25655            } else if (hours < 19) {
25656                return 'petang';
25657            } else {
25658                return 'malam';
25659            }
25660        },
25661        calendar: {
25662            sameDay: '[Hari ini pukul] LT',
25663            nextDay: '[Esok pukul] LT',
25664            nextWeek: 'dddd [pukul] LT',
25665            lastDay: '[Kelmarin pukul] LT',
25666            lastWeek: 'dddd [lepas pukul] LT',
25667            sameElse: 'L',
25668        },
25669        relativeTime: {
25670            future: 'dalam %s',
25671            past: '%s yang lepas',
25672            s: 'beberapa saat',
25673            ss: '%d saat',
25674            m: 'seminit',
25675            mm: '%d minit',
25676            h: 'sejam',
25677            hh: '%d jam',
25678            d: 'sehari',
25679            dd: '%d hari',
25680            M: 'sebulan',
25681            MM: '%d bulan',
25682            y: 'setahun',
25683            yy: '%d tahun',
25684        },
25685        week: {
25686            dow: 1, // Monday is the first day of the week.
25687            doy: 7, // The week that contains Jan 7th is the first week of the year.
25688        },
25689    });
25690
25691    return msMy;
25692
25693})));
25694
25695
25696/***/ }),
25697
vendor: 3,042 bytes, lines 25698-25791
25698/***/ "./node_modules/moment/locale/ms.js":
25699/*!******************************************!*\
25700  !*** ./node_modules/moment/locale/ms.js ***!
25701  \******************************************/
25702/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
25703
25704//! moment.js locale configuration
25705//! locale : Malay [ms]
25706//! author : Weldan Jamili : https://github.com/weldan
25707
25708;(function (global, factory) {
25709    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
25710   0
25711}(this, (function (moment) { 'use strict';
25712
25713    //! moment.js locale configuration
25714
25715    var ms = moment.defineLocale('ms', {
25716        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
25717            '_'
25718        ),
25719        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
25720        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
25721        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
25722        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
25723        longDateFormat: {
25724            LT: 'HH.mm',
25725            LTS: 'HH.mm.ss',
25726            L: 'DD/MM/YYYY',
25727            LL: 'D MMMM YYYY',
25728            LLL: 'D MMMM YYYY [pukul] HH.mm',
25729            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
25730        },
25731        meridiemParse: /pagi|tengahari|petang|malam/,
25732        meridiemHour: function (hour, meridiem) {
25733            if (hour === 12) {
25734                hour = 0;
25735            }
25736            if (meridiem === 'pagi') {
25737                return hour;
25738            } else if (meridiem === 'tengahari') {
25739                return hour >= 11 ? hour : hour + 12;
25740            } else if (meridiem === 'petang' || meridiem === 'malam') {
25741                return hour + 12;
25742            }
25743        },
25744        meridiem: function (hours, minutes, isLower) {
25745            if (hours < 11) {
25746                return 'pagi';
25747            } else if (hours < 15) {
25748                return 'tengahari';
25749            } else if (hours < 19) {
25750                return 'petang';
25751            } else {
25752                return 'malam';
25753            }
25754        },
25755        calendar: {
25756            sameDay: '[Hari ini pukul] LT',
25757            nextDay: '[Esok pukul] LT',
25758            nextWeek: 'dddd [pukul] LT',
25759            lastDay: '[Kelmarin pukul] LT',
25760            lastWeek: 'dddd [lepas pukul] LT',
25761            sameElse: 'L',
25762        },
25763        relativeTime: {
25764            future: 'dalam %s',
25765            past: '%s yang lepas',
25766            s: 'beberapa saat',
25767            ss: '%d saat',
25768            m: 'seminit',
25769            mm: '%d minit',
25770            h: 'sejam',
25771            hh: '%d jam',
25772            d: 'sehari',
25773            dd: '%d hari',
25774            M: 'sebulan',
25775            MM: '%d bulan',
25776            y: 'setahun',
25777            yy: '%d tahun',
25778        },
25779        week: {
25780            dow: 1, // Monday is the first day of the week.
25781            doy: 7, // The week that contains Jan 7th is the first week of the year.
25782        },
25783    });
25784
25785    return ms;
25786
25787})));
25788
25789
25790/***/ }),
25791
vendor: 2,373 bytes, lines 25792-25866
25792/***/ "./node_modules/moment/locale/mt.js":
25793/*!******************************************!*\
25794  !*** ./node_modules/moment/locale/mt.js ***!
25795  \******************************************/
25796/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
25797
25798//! moment.js locale configuration
25799//! locale : Maltese (Malta) [mt]
25800//! author : Alessandro Maruccia : https://github.com/alesma
25801
25802;(function (global, factory) {
25803    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
25804   0
25805}(this, (function (moment) { 'use strict';
25806
25807    //! moment.js locale configuration
25808
25809    var mt = moment.defineLocale('mt', {
25810        months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(
25811            '_'
25812        ),
25813        monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),
25814        weekdays:
25815            'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(
25816                '_'
25817            ),
25818        weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),
25819        weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),
25820        longDateFormat: {
25821            LT: 'HH:mm',
25822            LTS: 'HH:mm:ss',
25823            L: 'DD/MM/YYYY',
25824            LL: 'D MMMM YYYY',
25825            LLL: 'D MMMM YYYY HH:mm',
25826            LLLL: 'dddd, D MMMM YYYY HH:mm',
25827        },
25828        calendar: {
25829            sameDay: '[Illum fil-]LT',
25830            nextDay: '[Għada fil-]LT',
25831            nextWeek: 'dddd [fil-]LT',
25832            lastDay: '[Il-bieraħ fil-]LT',
25833            lastWeek: 'dddd [li għadda] [fil-]LT',
25834            sameElse: 'L',
25835        },
25836        relativeTime: {
25837            future: 'f’ %s',
25838            past: '%s ilu',
25839            s: 'ftit sekondi',
25840            ss: '%d sekondi',
25841            m: 'minuta',
25842            mm: '%d minuti',
25843            h: 'siegħa',
25844            hh: '%d siegħat',
25845            d: 'ġurnata',
25846            dd: '%d ġranet',
25847            M: 'xahar',
25848            MM: '%d xhur',
25849            y: 'sena',
25850            yy: '%d sni',
25851        },
25852        dayOfMonthOrdinalParse: /\d{1,2}º/,
25853        ordinal: '%dº',
25854        week: {
25855            dow: 1, // Monday is the first day of the week.
25856            doy: 4, // The week that contains Jan 4th is the first week of the year.
25857        },
25858    });
25859
25860    return mt;
25861
25862})));
25863
25864
25865/***/ }),
25866
vendor: 3,907 bytes, lines 25867-25976
25867/***/ "./node_modules/moment/locale/my.js":
25868/*!******************************************!*\
25869  !*** ./node_modules/moment/locale/my.js ***!
25870  \******************************************/
25871/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
25872
25873//! moment.js locale configuration
25874//! locale : Burmese [my]
25875//! author : Squar team, mysquar.com
25876//! author : David Rossellat : https://github.com/gholadr
25877//! author : Tin Aung Lin : https://github.com/thanyawzinmin
25878
25879;(function (global, factory) {
25880    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
25881   0
25882}(this, (function (moment) { 'use strict';
25883
25884    //! moment.js locale configuration
25885
25886    var symbolMap = {
25887            1: '၁',
25888            2: '၂',
25889            3: '၃',
25890            4: '၄',
25891            5: '၅',
25892            6: '၆',
25893            7: '၇',
25894            8: '၈',
25895            9: '၉',
25896            0: '၀',
25897        },
25898        numberMap = {
25899            '၁': '1',
25900            '၂': '2',
25901            '၃': '3',
25902            '၄': '4',
25903            '၅': '5',
25904            '၆': '6',
25905            '၇': '7',
25906            '၈': '8',
25907            '၉': '9',
25908            '၀': '0',
25909        };
25910
25911    var my = moment.defineLocale('my', {
25912        months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(
25913            '_'
25914        ),
25915        monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
25916        weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(
25917            '_'
25918        ),
25919        weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
25920        weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
25921
25922        longDateFormat: {
25923            LT: 'HH:mm',
25924            LTS: 'HH:mm:ss',
25925            L: 'DD/MM/YYYY',
25926            LL: 'D MMMM YYYY',
25927            LLL: 'D MMMM YYYY HH:mm',
25928            LLLL: 'dddd D MMMM YYYY HH:mm',
25929        },
25930        calendar: {
25931            sameDay: '[ယနေ.] LT [မှာ]',
25932            nextDay: '[မနက်ဖြန်] LT [မှာ]',
25933            nextWeek: 'dddd LT [မှာ]',
25934            lastDay: '[မနေ.က] LT [မှာ]',
25935            lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',
25936            sameElse: 'L',
25937        },
25938        relativeTime: {
25939            future: 'လာမည့် %s မှာ',
25940            past: 'လွန်ခဲ့သော %s က',
25941            s: 'စက္ကန်.အနည်းငယ်',
25942            ss: '%d စက္ကန့်',
25943            m: 'တစ်မိနစ်',
25944            mm: '%d မိနစ်',
25945            h: 'တစ်နာရီ',
25946            hh: '%d နာရီ',
25947            d: 'တစ်ရက်',
25948            dd: '%d ရက်',
25949            M: 'တစ်လ',
25950            MM: '%d လ',
25951            y: 'တစ်နှစ်',
25952            yy: '%d နှစ်',
25953        },
25954        preparse: function (string) {
25955            return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
25956                return numberMap[match];
25957            });
25958        },
25959        postformat: function (string) {
25960            return string.replace(/\d/g, function (match) {
25961                return symbolMap[match];
25962            });
25963        },
25964        week: {
25965            dow: 1, // Monday is the first day of the week.
25966            doy: 4, // The week that contains Jan 4th is the first week of the year.
25967        },
25968    });
25969
25970    return my;
25971
25972})));
25973
25974
25975/***/ }),
25976
vendor: 2,600 bytes, lines 25977-26055
25977/***/ "./node_modules/moment/locale/nb.js":
25978/*!******************************************!*\
25979  !*** ./node_modules/moment/locale/nb.js ***!
25980  \******************************************/
25981/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
25982
25983//! moment.js locale configuration
25984//! locale : Norwegian Bokmål [nb]
25985//! authors : Espen Hovlandsdal : https://github.com/rexxars
25986//!           Sigurd Gartmann : https://github.com/sigurdga
25987//!           Stephen Ramthun : https://github.com/stephenramthun
25988
25989;(function (global, factory) {
25990    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
25991   0
25992}(this, (function (moment) { 'use strict';
25993
25994    //! moment.js locale configuration
25995
25996    var nb = moment.defineLocale('nb', {
25997        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
25998            '_'
25999        ),
26000        monthsShort:
26001            'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
26002        monthsParseExact: true,
26003        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
26004        weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),
26005        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
26006        weekdaysParseExact: true,
26007        longDateFormat: {
26008            LT: 'HH:mm',
26009            LTS: 'HH:mm:ss',
26010            L: 'DD.MM.YYYY',
26011            LL: 'D. MMMM YYYY',
26012            LLL: 'D. MMMM YYYY [kl.] HH:mm',
26013            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
26014        },
26015        calendar: {
26016            sameDay: '[i dag kl.] LT',
26017            nextDay: '[i morgen kl.] LT',
26018            nextWeek: 'dddd [kl.] LT',
26019            lastDay: '[i går kl.] LT',
26020            lastWeek: '[forrige] dddd [kl.] LT',
26021            sameElse: 'L',
26022        },
26023        relativeTime: {
26024            future: 'om %s',
26025            past: '%s siden',
26026            s: 'noen sekunder',
26027            ss: '%d sekunder',
26028            m: 'ett minutt',
26029            mm: '%d minutter',
26030            h: 'én time',
26031            hh: '%d timer',
26032            d: 'én dag',
26033            dd: '%d dager',
26034            w: 'én uke',
26035            ww: '%d uker',
26036            M: 'én måned',
26037            MM: '%d måneder',
26038            y: 'ett år',
26039            yy: '%d år',
26040        },
26041        dayOfMonthOrdinalParse: /\d{1,2}\./,
26042        ordinal: '%d.',
26043        week: {
26044            dow: 1, // Monday is the first day of the week.
26045            doy: 4, // The week that contains Jan 4th is the first week of the year.
26046        },
26047    });
26048
26049    return nb;
26050
26051})));
26052
26053
26054/***/ }),
26055
vendor: 4,976 bytes, lines 26056-26195
26056/***/ "./node_modules/moment/locale/ne.js":
26057/*!******************************************!*\
26058  !*** ./node_modules/moment/locale/ne.js ***!
26059  \******************************************/
26060/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
26061
26062//! moment.js locale configuration
26063//! locale : Nepalese [ne]
26064//! author : suvash : https://github.com/suvash
26065
26066;(function (global, factory) {
26067    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
26068   0
26069}(this, (function (moment) { 'use strict';
26070
26071    //! moment.js locale configuration
26072
26073    var symbolMap = {
26074            1: '१',
26075            2: '२',
26076            3: '३',
26077            4: '४',
26078            5: '५',
26079            6: '६',
26080            7: '७',
26081            8: '८',
26082            9: '९',
26083            0: '०',
26084        },
26085        numberMap = {
26086            '१': '1',
26087            '२': '2',
26088            '३': '3',
26089            '४': '4',
26090            '५': '5',
26091            '६': '6',
26092            '७': '7',
26093            '८': '8',
26094            '९': '9',
26095            '०': '0',
26096        };
26097
26098    var ne = moment.defineLocale('ne', {
26099        months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(
26100            '_'
26101        ),
26102        monthsShort:
26103            'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(
26104                '_'
26105            ),
26106        monthsParseExact: true,
26107        weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(
26108            '_'
26109        ),
26110        weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
26111        weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),
26112        weekdaysParseExact: true,
26113        longDateFormat: {
26114            LT: 'Aको h:mm बजे',
26115            LTS: 'Aको h:mm:ss बजे',
26116            L: 'DD/MM/YYYY',
26117            LL: 'D MMMM YYYY',
26118            LLL: 'D MMMM YYYY, Aको h:mm बजे',
26119            LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',
26120        },
26121        preparse: function (string) {
26122            return string.replace(/[१२३४५६७८९०]/g, function (match) {
26123                return numberMap[match];
26124            });
26125        },
26126        postformat: function (string) {
26127            return string.replace(/\d/g, function (match) {
26128                return symbolMap[match];
26129            });
26130        },
26131        meridiemParse: /राति|बिहान|दिउँसो|साँझ/,
26132        meridiemHour: function (hour, meridiem) {
26133            if (hour === 12) {
26134                hour = 0;
26135            }
26136            if (meridiem === 'राति') {
26137                return hour < 4 ? hour : hour + 12;
26138            } else if (meridiem === 'बिहान') {
26139                return hour;
26140            } else if (meridiem === 'दिउँसो') {
26141                return hour >= 10 ? hour : hour + 12;
26142            } else if (meridiem === 'साँझ') {
26143                return hour + 12;
26144            }
26145        },
26146        meridiem: function (hour, minute, isLower) {
26147            if (hour < 3) {
26148                return 'राति';
26149            } else if (hour < 12) {
26150                return 'बिहान';
26151            } else if (hour < 16) {
26152                return 'दिउँसो';
26153            } else if (hour < 20) {
26154                return 'साँझ';
26155            } else {
26156                return 'राति';
26157            }
26158        },
26159        calendar: {
26160            sameDay: '[आज] LT',
26161            nextDay: '[भोलि] LT',
26162            nextWeek: '[आउँदो] dddd[,] LT',
26163            lastDay: '[हिजो] LT',
26164            lastWeek: '[गएको] dddd[,] LT',
26165            sameElse: 'L',
26166        },
26167        relativeTime: {
26168            future: '%sमा',
26169            past: '%s अगाडि',
26170            s: 'केही क्षण',
26171            ss: '%d सेकेण्ड',
26172            m: 'एक मिनेट',
26173            mm: '%d मिनेट',
26174            h: 'एक घण्टा',
26175            hh: '%d घण्टा',
26176            d: 'एक दिन',
26177            dd: '%d दिन',
26178            M: 'एक महिना',
26179            MM: '%d महिना',
26180            y: 'एक बर्ष',
26181            yy: '%d बर्ष',
26182        },
26183        week: {
26184            dow: 0, // Sunday is the first day of the week.
26185            doy: 6, // The week that contains Jan 6th is the first week of the year.
26186        },
26187    });
26188
26189    return ne;
26190
26191})));
26192
26193
26194/***/ }),
26195
vendor: 4,041 bytes, lines 26196-26316
26196/***/ "./node_modules/moment/locale/nl-be.js":
26197/*!*********************************************!*\
26198  !*** ./node_modules/moment/locale/nl-be.js ***!
26199  \*********************************************/
26200/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
26201
26202//! moment.js locale configuration
26203//! locale : Dutch (Belgium) [nl-be]
26204//! author : Joris Röling : https://github.com/jorisroling
26205//! author : Jacob Middag : https://github.com/middagj
26206
26207;(function (global, factory) {
26208    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
26209   0
26210}(this, (function (moment) { 'use strict';
26211
26212    //! moment.js locale configuration
26213
26214    var monthsShortWithDots =
26215            'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
26216        monthsShortWithoutDots =
26217            'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),
26218        monthsParse = [
26219            /^jan/i,
26220            /^feb/i,
26221            /^(maart|mrt\.?)$/i,
26222            /^apr/i,
26223            /^mei$/i,
26224            /^jun[i.]?$/i,
26225            /^jul[i.]?$/i,
26226            /^aug/i,
26227            /^sep/i,
26228            /^okt/i,
26229            /^nov/i,
26230            /^dec/i,
26231        ],
26232        monthsRegex =
26233            /^(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;
26234
26235    var nlBe = moment.defineLocale('nl-be', {
26236        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
26237            '_'
26238        ),
26239        monthsShort: function (m, format) {
26240            if (!m) {
26241                return monthsShortWithDots;
26242            } else if (/-MMM-/.test(format)) {
26243                return monthsShortWithoutDots[m.month()];
26244            } else {
26245                return monthsShortWithDots[m.month()];
26246            }
26247        },
26248
26249        monthsRegex: monthsRegex,
26250        monthsShortRegex: monthsRegex,
26251        monthsStrictRegex:
26252            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
26253        monthsShortStrictRegex:
26254            /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
26255
26256        monthsParse: monthsParse,
26257        longMonthsParse: monthsParse,
26258        shortMonthsParse: monthsParse,
26259
26260        weekdays:
26261            'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
26262        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
26263        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
26264        weekdaysParseExact: true,
26265        longDateFormat: {
26266            LT: 'HH:mm',
26267            LTS: 'HH:mm:ss',
26268            L: 'DD/MM/YYYY',
26269            LL: 'D MMMM YYYY',
26270            LLL: 'D MMMM YYYY HH:mm',
26271            LLLL: 'dddd D MMMM YYYY HH:mm',
26272        },
26273        calendar: {
26274            sameDay: '[vandaag om] LT',
26275            nextDay: '[morgen om] LT',
26276            nextWeek: 'dddd [om] LT',
26277            lastDay: '[gisteren om] LT',
26278            lastWeek: '[afgelopen] dddd [om] LT',
26279            sameElse: 'L',
26280        },
26281        relativeTime: {
26282            future: 'over %s',
26283            past: '%s geleden',
26284            s: 'een paar seconden',
26285            ss: '%d seconden',
26286            m: 'één minuut',
26287            mm: '%d minuten',
26288            h: 'één uur',
26289            hh: '%d uur',
26290            d: 'één dag',
26291            dd: '%d dagen',
26292            M: 'één maand',
26293            MM: '%d maanden',
26294            y: 'één jaar',
26295            yy: '%d jaar',
26296        },
26297        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
26298        ordinal: function (number) {
26299            return (
26300                number +
26301                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
26302            );
26303        },
26304        week: {
26305            dow: 1, // Monday is the first day of the week.
26306            doy: 4, // The week that contains Jan 4th is the first week of the year.
26307        },
26308    });
26309
26310    return nlBe;
26311
26312})));
26313
26314
26315/***/ }),
26316
vendor: 4,066 bytes, lines 26317-26439
26317/***/ "./node_modules/moment/locale/nl.js":
26318/*!******************************************!*\
26319  !*** ./node_modules/moment/locale/nl.js ***!
26320  \******************************************/
26321/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
26322
26323//! moment.js locale configuration
26324//! locale : Dutch [nl]
26325//! author : Joris Röling : https://github.com/jorisroling
26326//! author : Jacob Middag : https://github.com/middagj
26327
26328;(function (global, factory) {
26329    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
26330   0
26331}(this, (function (moment) { 'use strict';
26332
26333    //! moment.js locale configuration
26334
26335    var monthsShortWithDots =
26336            'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
26337        monthsShortWithoutDots =
26338            'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),
26339        monthsParse = [
26340            /^jan/i,
26341            /^feb/i,
26342            /^(maart|mrt\.?)$/i,
26343            /^apr/i,
26344            /^mei$/i,
26345            /^jun[i.]?$/i,
26346            /^jul[i.]?$/i,
26347            /^aug/i,
26348            /^sep/i,
26349            /^okt/i,
26350            /^nov/i,
26351            /^dec/i,
26352        ],
26353        monthsRegex =
26354            /^(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;
26355
26356    var nl = moment.defineLocale('nl', {
26357        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
26358            '_'
26359        ),
26360        monthsShort: function (m, format) {
26361            if (!m) {
26362                return monthsShortWithDots;
26363            } else if (/-MMM-/.test(format)) {
26364                return monthsShortWithoutDots[m.month()];
26365            } else {
26366                return monthsShortWithDots[m.month()];
26367            }
26368        },
26369
26370        monthsRegex: monthsRegex,
26371        monthsShortRegex: monthsRegex,
26372        monthsStrictRegex:
26373            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
26374        monthsShortStrictRegex:
26375            /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
26376
26377        monthsParse: monthsParse,
26378        longMonthsParse: monthsParse,
26379        shortMonthsParse: monthsParse,
26380
26381        weekdays:
26382            'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
26383        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
26384        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
26385        weekdaysParseExact: true,
26386        longDateFormat: {
26387            LT: 'HH:mm',
26388            LTS: 'HH:mm:ss',
26389            L: 'DD-MM-YYYY',
26390            LL: 'D MMMM YYYY',
26391            LLL: 'D MMMM YYYY HH:mm',
26392            LLLL: 'dddd D MMMM YYYY HH:mm',
26393        },
26394        calendar: {
26395            sameDay: '[vandaag om] LT',
26396            nextDay: '[morgen om] LT',
26397            nextWeek: 'dddd [om] LT',
26398            lastDay: '[gisteren om] LT',
26399            lastWeek: '[afgelopen] dddd [om] LT',
26400            sameElse: 'L',
26401        },
26402        relativeTime: {
26403            future: 'over %s',
26404            past: '%s geleden',
26405            s: 'een paar seconden',
26406            ss: '%d seconden',
26407            m: 'één minuut',
26408            mm: '%d minuten',
26409            h: 'één uur',
26410            hh: '%d uur',
26411            d: 'één dag',
26412            dd: '%d dagen',
26413            w: 'één week',
26414            ww: '%d weken',
26415            M: 'één maand',
26416            MM: '%d maanden',
26417            y: 'één jaar',
26418            yy: '%d jaar',
26419        },
26420        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
26421        ordinal: function (number) {
26422            return (
26423                number +
26424                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
26425            );
26426        },
26427        week: {
26428            dow: 1, // Monday is the first day of the week.
26429            doy: 4, // The week that contains Jan 4th is the first week of the year.
26430        },
26431    });
26432
26433    return nl;
26434
26435})));
26436
26437
26438/***/ }),
26439
vendor: 2,525 bytes, lines 26440-26517
26440/***/ "./node_modules/moment/locale/nn.js":
26441/*!******************************************!*\
26442  !*** ./node_modules/moment/locale/nn.js ***!
26443  \******************************************/
26444/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
26445
26446//! moment.js locale configuration
26447//! locale : Nynorsk [nn]
26448//! authors : https://github.com/mechuwind
26449//!           Stephen Ramthun : https://github.com/stephenramthun
26450
26451;(function (global, factory) {
26452    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
26453   0
26454}(this, (function (moment) { 'use strict';
26455
26456    //! moment.js locale configuration
26457
26458    var nn = moment.defineLocale('nn', {
26459        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
26460            '_'
26461        ),
26462        monthsShort:
26463            'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
26464        monthsParseExact: true,
26465        weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
26466        weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),
26467        weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),
26468        weekdaysParseExact: true,
26469        longDateFormat: {
26470            LT: 'HH:mm',
26471            LTS: 'HH:mm:ss',
26472            L: 'DD.MM.YYYY',
26473            LL: 'D. MMMM YYYY',
26474            LLL: 'D. MMMM YYYY [kl.] H:mm',
26475            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
26476        },
26477        calendar: {
26478            sameDay: '[I dag klokka] LT',
26479            nextDay: '[I morgon klokka] LT',
26480            nextWeek: 'dddd [klokka] LT',
26481            lastDay: '[I går klokka] LT',
26482            lastWeek: '[Føregåande] dddd [klokka] LT',
26483            sameElse: 'L',
26484        },
26485        relativeTime: {
26486            future: 'om %s',
26487            past: '%s sidan',
26488            s: 'nokre sekund',
26489            ss: '%d sekund',
26490            m: 'eit minutt',
26491            mm: '%d minutt',
26492            h: 'ein time',
26493            hh: '%d timar',
26494            d: 'ein dag',
26495            dd: '%d dagar',
26496            w: 'ei veke',
26497            ww: '%d veker',
26498            M: 'ein månad',
26499            MM: '%d månader',
26500            y: 'eit år',
26501            yy: '%d år',
26502        },
26503        dayOfMonthOrdinalParse: /\d{1,2}\./,
26504        ordinal: '%d.',
26505        week: {
26506            dow: 1, // Monday is the first day of the week.
26507            doy: 4, // The week that contains Jan 4th is the first week of the year.
26508        },
26509    });
26510
26511    return nn;
26512
26513})));
26514
26515
26516/***/ }),
26517
vendor: 3,323 bytes, lines 26518-26621
26518/***/ "./node_modules/moment/locale/oc-lnc.js":
26519/*!**********************************************!*\
26520  !*** ./node_modules/moment/locale/oc-lnc.js ***!
26521  \**********************************************/
26522/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
26523
26524//! moment.js locale configuration
26525//! locale : Occitan, lengadocian dialecte [oc-lnc]
26526//! author : Quentin PAGÈS : https://github.com/Quenty31
26527
26528;(function (global, factory) {
26529    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
26530   0
26531}(this, (function (moment) { 'use strict';
26532
26533    //! moment.js locale configuration
26534
26535    var ocLnc = moment.defineLocale('oc-lnc', {
26536        months: {
26537            standalone:
26538                'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(
26539                    '_'
26540                ),
26541            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(
26542                '_'
26543            ),
26544            isFormat: /D[oD]?(\s)+MMMM/,
26545        },
26546        monthsShort:
26547            'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(
26548                '_'
26549            ),
26550        monthsParseExact: true,
26551        weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(
26552            '_'
26553        ),
26554        weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),
26555        weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),
26556        weekdaysParseExact: true,
26557        longDateFormat: {
26558            LT: 'H:mm',
26559            LTS: 'H:mm:ss',
26560            L: 'DD/MM/YYYY',
26561            LL: 'D MMMM [de] YYYY',
26562            ll: 'D MMM YYYY',
26563            LLL: 'D MMMM [de] YYYY [a] H:mm',
26564            lll: 'D MMM YYYY, H:mm',
26565            LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',
26566            llll: 'ddd D MMM YYYY, H:mm',
26567        },
26568        calendar: {
26569            sameDay: '[uèi a] LT',
26570            nextDay: '[deman a] LT',
26571            nextWeek: 'dddd [a] LT',
26572            lastDay: '[ièr a] LT',
26573            lastWeek: 'dddd [passat a] LT',
26574            sameElse: 'L',
26575        },
26576        relativeTime: {
26577            future: "d'aquí %s",
26578            past: 'fa %s',
26579            s: 'unas segondas',
26580            ss: '%d segondas',
26581            m: 'una minuta',
26582            mm: '%d minutas',
26583            h: 'una ora',
26584            hh: '%d oras',
26585            d: 'un jorn',
26586            dd: '%d jorns',
26587            M: 'un mes',
26588            MM: '%d meses',
26589            y: 'un an',
26590            yy: '%d ans',
26591        },
26592        dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
26593        ordinal: function (number, period) {
26594            var output =
26595                number === 1
26596                    ? 'r'
26597                    : number === 2
26598                      ? 'n'
26599                      : number === 3
26600                        ? 'r'
26601                        : number === 4
26602                          ? 't'
26603                          : 'è';
26604            if (period === 'w' || period === 'W') {
26605                output = 'a';
26606            }
26607            return number + output;
26608        },
26609        week: {
26610            dow: 1, // Monday is the first day of the week.
26611            doy: 4,
26612        },
26613    });
26614
26615    return ocLnc;
26616
26617})));
26618
26619
26620/***/ }),
26621
vendor: 5,163 bytes, lines 26622-26762
26622/***/ "./node_modules/moment/locale/pa-in.js":
26623/*!*********************************************!*\
26624  !*** ./node_modules/moment/locale/pa-in.js ***!
26625  \*********************************************/
26626/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
26627
26628//! moment.js locale configuration
26629//! locale : Punjabi (India) [pa-in]
26630//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit
26631
26632;(function (global, factory) {
26633    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
26634   0
26635}(this, (function (moment) { 'use strict';
26636
26637    //! moment.js locale configuration
26638
26639    var symbolMap = {
26640            1: 'à©§',
26641            2: '੨',
26642            3: 'à©©',
26643            4: '੪',
26644            5: 'à©«',
26645            6: '੬',
26646            7: 'à©­',
26647            8: 'à©®',
26648            9: '੯',
26649            0: '੦',
26650        },
26651        numberMap = {
26652            'à©§': '1',
26653            '੨': '2',
26654            'à©©': '3',
26655            '੪': '4',
26656            'à©«': '5',
26657            '੬': '6',
26658            'à©­': '7',
26659            'à©®': '8',
26660            '੯': '9',
26661            '੦': '0',
26662        };
26663
26664    var paIn = moment.defineLocale('pa-in', {
26665        // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.
26666        months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
26667            '_'
26668        ),
26669        monthsShort:
26670            'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
26671                '_'
26672            ),
26673        weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(
26674            '_'
26675        ),
26676        weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
26677        weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
26678        longDateFormat: {
26679            LT: 'A h:mm ਵਜੇ',
26680            LTS: 'A h:mm:ss ਵਜੇ',
26681            L: 'DD/MM/YYYY',
26682            LL: 'D MMMM YYYY',
26683            LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',
26684            LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',
26685        },
26686        calendar: {
26687            sameDay: '[ਅਜ] LT',
26688            nextDay: '[ਕਲ] LT',
26689            nextWeek: '[ਅਗਲਾ] dddd, LT',
26690            lastDay: '[ਕਲ] LT',
26691            lastWeek: '[ਪਿਛਲੇ] dddd, LT',
26692            sameElse: 'L',
26693        },
26694        relativeTime: {
26695            future: '%s ਵਿੱਚ',
26696            past: '%s ਪਿਛਲੇ',
26697            s: 'ਕੁਝ ਸਕਿੰਟ',
26698            ss: '%d ਸਕਿੰਟ',
26699            m: 'ਇਕ ਮਿੰਟ',
26700            mm: '%d ਮਿੰਟ',
26701            h: 'ਇੱਕ ਘੰਟਾ',
26702            hh: '%d ਘੰਟੇ',
26703            d: 'ਇੱਕ ਦਿਨ',
26704            dd: '%d ਦਿਨ',
26705            M: 'ਇੱਕ ਮਹੀਨਾ',
26706            MM: '%d ਮਹੀਨੇ',
26707            y: 'ਇੱਕ ਸਾਲ',
26708            yy: '%d ਸਾਲ',
26709        },
26710        preparse: function (string) {
26711            return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {
26712                return numberMap[match];
26713            });
26714        },
26715        postformat: function (string) {
26716            return string.replace(/\d/g, function (match) {
26717                return symbolMap[match];
26718            });
26719        },
26720        // Punjabi notation for meridiems are quite fuzzy in practice. While there exists
26721        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.
26722        meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,
26723        meridiemHour: function (hour, meridiem) {
26724            if (hour === 12) {
26725                hour = 0;
26726            }
26727            if (meridiem === 'ਰਾਤ') {
26728                return hour < 4 ? hour : hour + 12;
26729            } else if (meridiem === 'ਸਵੇਰ') {
26730                return hour;
26731            } else if (meridiem === 'ਦੁਪਹਿਰ') {
26732                return hour >= 10 ? hour : hour + 12;
26733            } else if (meridiem === 'ਸ਼ਾਮ') {
26734                return hour + 12;
26735            }
26736        },
26737        meridiem: function (hour, minute, isLower) {
26738            if (hour < 4) {
26739                return 'ਰਾਤ';
26740            } else if (hour < 10) {
26741                return 'ਸਵੇਰ';
26742            } else if (hour < 17) {
26743                return 'ਦੁਪਹਿਰ';
26744            } else if (hour < 20) {
26745                return 'ਸ਼ਾਮ';
26746            } else {
26747                return 'ਰਾਤ';
26748            }
26749        },
26750        week: {
26751            dow: 0, // Sunday is the first day of the week.
26752            doy: 6, // The week that contains Jan 6th is the first week of the year.
26753        },
26754    });
26755
26756    return paIn;
26757
26758})));
26759
26760
26761/***/ }),
26762
vendor: 5,171 bytes, lines 26763-26921
26763/***/ "./node_modules/moment/locale/pl.js":
26764/*!******************************************!*\
26765  !*** ./node_modules/moment/locale/pl.js ***!
26766  \******************************************/
26767/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
26768
26769//! moment.js locale configuration
26770//! locale : Polish [pl]
26771//! author : Rafal Hirsz : https://github.com/evoL
26772
26773;(function (global, factory) {
26774    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
26775   0
26776}(this, (function (moment) { 'use strict';
26777
26778    //! moment.js locale configuration
26779
26780    var monthsNominative =
26781            'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(
26782                '_'
26783            ),
26784        monthsSubjective =
26785            'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(
26786                '_'
26787            ),
26788        monthsParse = [
26789            /^sty/i,
26790            /^lut/i,
26791            /^mar/i,
26792            /^kwi/i,
26793            /^maj/i,
26794            /^cze/i,
26795            /^lip/i,
26796            /^sie/i,
26797            /^wrz/i,
26798            /^paź/i,
26799            /^lis/i,
26800            /^gru/i,
26801        ];
26802    function plural(n) {
26803        return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;
26804    }
26805    function translate(number, withoutSuffix, key) {
26806        var result = number + ' ';
26807        switch (key) {
26808            case 'ss':
26809                return result + (plural(number) ? 'sekundy' : 'sekund');
26810            case 'm':
26811                return withoutSuffix ? 'minuta' : 'minutę';
26812            case 'mm':
26813                return result + (plural(number) ? 'minuty' : 'minut');
26814            case 'h':
26815                return withoutSuffix ? 'godzina' : 'godzinę';
26816            case 'hh':
26817                return result + (plural(number) ? 'godziny' : 'godzin');
26818            case 'ww':
26819                return result + (plural(number) ? 'tygodnie' : 'tygodni');
26820            case 'MM':
26821                return result + (plural(number) ? 'miesiące' : 'miesięcy');
26822            case 'yy':
26823                return result + (plural(number) ? 'lata' : 'lat');
26824        }
26825    }
26826
26827    var pl = moment.defineLocale('pl', {
26828        months: function (momentToFormat, format) {
26829            if (!momentToFormat) {
26830                return monthsNominative;
26831            } else if (/D MMMM/.test(format)) {
26832                return monthsSubjective[momentToFormat.month()];
26833            } else {
26834                return monthsNominative[momentToFormat.month()];
26835            }
26836        },
26837        monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
26838        monthsParse: monthsParse,
26839        longMonthsParse: monthsParse,
26840        shortMonthsParse: monthsParse,
26841        weekdays:
26842            'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),
26843        weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),
26844        weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
26845        longDateFormat: {
26846            LT: 'HH:mm',
26847            LTS: 'HH:mm:ss',
26848            L: 'DD.MM.YYYY',
26849            LL: 'D MMMM YYYY',
26850            LLL: 'D MMMM YYYY HH:mm',
26851            LLLL: 'dddd, D MMMM YYYY HH:mm',
26852        },
26853        calendar: {
26854            sameDay: '[Dziś o] LT',
26855            nextDay: '[Jutro o] LT',
26856            nextWeek: function () {
26857                switch (this.day()) {
26858                    case 0:
26859                        return '[W niedzielę o] LT';
26860
26861                    case 2:
26862                        return '[We wtorek o] LT';
26863
26864                    case 3:
26865                        return '[W środę o] LT';
26866
26867                    case 6:
26868                        return '[W sobotę o] LT';
26869
26870                    default:
26871                        return '[W] dddd [o] LT';
26872                }
26873            },
26874            lastDay: '[Wczoraj o] LT',
26875            lastWeek: function () {
26876                switch (this.day()) {
26877                    case 0:
26878                        return '[W zeszłą niedzielę o] LT';
26879                    case 3:
26880                        return '[W zeszłą środę o] LT';
26881                    case 6:
26882                        return '[W zeszłą sobotę o] LT';
26883                    default:
26884                        return '[W zeszły] dddd [o] LT';
26885                }
26886            },
26887            sameElse: 'L',
26888        },
26889        relativeTime: {
26890            future: 'za %s',
26891            past: '%s temu',
26892            s: 'kilka sekund',
26893            ss: translate,
26894            m: translate,
26895            mm: translate,
26896            h: translate,
26897            hh: translate,
26898            d: '1 dzień',
26899            dd: '%d dni',
26900            w: 'tydzień',
26901            ww: translate,
26902            M: 'miesiąc',
26903            MM: translate,
26904            y: 'rok',
26905            yy: translate,
26906        },
26907        dayOfMonthOrdinalParse: /\d{1,2}\./,
26908        ordinal: '%d.',
26909        week: {
26910            dow: 1, // Monday is the first day of the week.
26911            doy: 4, // The week that contains Jan 4th is the first week of the year.
26912        },
26913    });
26914
26915    return pl;
26916
26917})));
26918
26919
26920/***/ }),
26921
vendor: 2,567 bytes, lines 26922-26998
26922/***/ "./node_modules/moment/locale/pt-br.js":
26923/*!*********************************************!*\
26924  !*** ./node_modules/moment/locale/pt-br.js ***!
26925  \*********************************************/
26926/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
26927
26928//! moment.js locale configuration
26929//! locale : Portuguese (Brazil) [pt-br]
26930//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
26931
26932;(function (global, factory) {
26933    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
26934   0
26935}(this, (function (moment) { 'use strict';
26936
26937    //! moment.js locale configuration
26938
26939    var ptBr = moment.defineLocale('pt-br', {
26940        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
26941            '_'
26942        ),
26943        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
26944        weekdays:
26945            'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(
26946                '_'
26947            ),
26948        weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),
26949        weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),
26950        weekdaysParseExact: true,
26951        longDateFormat: {
26952            LT: 'HH:mm',
26953            LTS: 'HH:mm:ss',
26954            L: 'DD/MM/YYYY',
26955            LL: 'D [de] MMMM [de] YYYY',
26956            LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',
26957            LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',
26958        },
26959        calendar: {
26960            sameDay: '[Hoje às] LT',
26961            nextDay: '[Amanhã às] LT',
26962            nextWeek: 'dddd [às] LT',
26963            lastDay: '[Ontem às] LT',
26964            lastWeek: function () {
26965                return this.day() === 0 || this.day() === 6
26966                    ? '[Último] dddd [às] LT' // Saturday + Sunday
26967                    : '[Última] dddd [às] LT'; // Monday - Friday
26968            },
26969            sameElse: 'L',
26970        },
26971        relativeTime: {
26972            future: 'em %s',
26973            past: 'há %s',
26974            s: 'poucos segundos',
26975            ss: '%d segundos',
26976            m: 'um minuto',
26977            mm: '%d minutos',
26978            h: 'uma hora',
26979            hh: '%d horas',
26980            d: 'um dia',
26981            dd: '%d dias',
26982            M: 'um mês',
26983            MM: '%d meses',
26984            y: 'um ano',
26985            yy: '%d anos',
26986        },
26987        dayOfMonthOrdinalParse: /\d{1,2}º/,
26988        ordinal: '%dº',
26989        invalidDate: 'Data inválida',
26990    });
26991
26992    return ptBr;
26993
26994})));
26995
26996
26997/***/ }),
26998
vendor: 2,685 bytes, lines 26999-27080
26999/***/ "./node_modules/moment/locale/pt.js":
27000/*!******************************************!*\
27001  !*** ./node_modules/moment/locale/pt.js ***!
27002  \******************************************/
27003/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
27004
27005//! moment.js locale configuration
27006//! locale : Portuguese [pt]
27007//! author : Jefferson : https://github.com/jalex79
27008
27009;(function (global, factory) {
27010    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
27011   0
27012}(this, (function (moment) { 'use strict';
27013
27014    //! moment.js locale configuration
27015
27016    var pt = moment.defineLocale('pt', {
27017        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
27018            '_'
27019        ),
27020        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
27021        weekdays:
27022            'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(
27023                '_'
27024            ),
27025        weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
27026        weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
27027        weekdaysParseExact: true,
27028        longDateFormat: {
27029            LT: 'HH:mm',
27030            LTS: 'HH:mm:ss',
27031            L: 'DD/MM/YYYY',
27032            LL: 'D [de] MMMM [de] YYYY',
27033            LLL: 'D [de] MMMM [de] YYYY HH:mm',
27034            LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',
27035        },
27036        calendar: {
27037            sameDay: '[Hoje às] LT',
27038            nextDay: '[Amanhã às] LT',
27039            nextWeek: 'dddd [às] LT',
27040            lastDay: '[Ontem às] LT',
27041            lastWeek: function () {
27042                return this.day() === 0 || this.day() === 6
27043                    ? '[Último] dddd [às] LT' // Saturday + Sunday
27044                    : '[Última] dddd [às] LT'; // Monday - Friday
27045            },
27046            sameElse: 'L',
27047        },
27048        relativeTime: {
27049            future: 'em %s',
27050            past: 'há %s',
27051            s: 'segundos',
27052            ss: '%d segundos',
27053            m: 'um minuto',
27054            mm: '%d minutos',
27055            h: 'uma hora',
27056            hh: '%d horas',
27057            d: 'um dia',
27058            dd: '%d dias',
27059            w: 'uma semana',
27060            ww: '%d semanas',
27061            M: 'um mês',
27062            MM: '%d meses',
27063            y: 'um ano',
27064            yy: '%d anos',
27065        },
27066        dayOfMonthOrdinalParse: /\d{1,2}º/,
27067        ordinal: '%dº',
27068        week: {
27069            dow: 1, // Monday is the first day of the week.
27070            doy: 4, // The week that contains Jan 4th is the first week of the year.
27071        },
27072    });
27073
27074    return pt;
27075
27076})));
27077
27078
27079/***/ }),
27080
vendor: 3,076 bytes, lines 27081-27175
27081/***/ "./node_modules/moment/locale/ro.js":
27082/*!******************************************!*\
27083  !*** ./node_modules/moment/locale/ro.js ***!
27084  \******************************************/
27085/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
27086
27087//! moment.js locale configuration
27088//! locale : Romanian [ro]
27089//! author : Vlad Gurdiga : https://github.com/gurdiga
27090//! author : Valentin Agachi : https://github.com/avaly
27091//! author : Emanuel Cepoi : https://github.com/cepem
27092
27093;(function (global, factory) {
27094    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
27095   0
27096}(this, (function (moment) { 'use strict';
27097
27098    //! moment.js locale configuration
27099
27100    function relativeTimeWithPlural(number, withoutSuffix, key) {
27101        var format = {
27102                ss: 'secunde',
27103                mm: 'minute',
27104                hh: 'ore',
27105                dd: 'zile',
27106                ww: 'săptămâni',
27107                MM: 'luni',
27108                yy: 'ani',
27109            },
27110            separator = ' ';
27111        if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
27112            separator = ' de ';
27113        }
27114        return number + separator + format[key];
27115    }
27116
27117    var ro = moment.defineLocale('ro', {
27118        months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(
27119            '_'
27120        ),
27121        monthsShort:
27122            'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(
27123                '_'
27124            ),
27125        monthsParseExact: true,
27126        weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
27127        weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
27128        weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
27129        longDateFormat: {
27130            LT: 'H:mm',
27131            LTS: 'H:mm:ss',
27132            L: 'DD.MM.YYYY',
27133            LL: 'D MMMM YYYY',
27134            LLL: 'D MMMM YYYY H:mm',
27135            LLLL: 'dddd, D MMMM YYYY H:mm',
27136        },
27137        calendar: {
27138            sameDay: '[azi la] LT',
27139            nextDay: '[mâine la] LT',
27140            nextWeek: 'dddd [la] LT',
27141            lastDay: '[ieri la] LT',
27142            lastWeek: '[fosta] dddd [la] LT',
27143            sameElse: 'L',
27144        },
27145        relativeTime: {
27146            future: 'peste %s',
27147            past: '%s în urmă',
27148            s: 'câteva secunde',
27149            ss: relativeTimeWithPlural,
27150            m: 'un minut',
27151            mm: relativeTimeWithPlural,
27152            h: 'o oră',
27153            hh: relativeTimeWithPlural,
27154            d: 'o zi',
27155            dd: relativeTimeWithPlural,
27156            w: 'o săptămână',
27157            ww: relativeTimeWithPlural,
27158            M: 'o lună',
27159            MM: relativeTimeWithPlural,
27160            y: 'un an',
27161            yy: relativeTimeWithPlural,
27162        },
27163        week: {
27164            dow: 1, // Monday is the first day of the week.
27165            doy: 7, // The week that contains Jan 7th is the first week of the year.
27166        },
27167    });
27168
27169    return ro;
27170
27171})));
27172
27173
27174/***/ }),
27175
vendor: 9,711 bytes, lines 27176-27407
27176/***/ "./node_modules/moment/locale/ru.js":
27177/*!******************************************!*\
27178  !*** ./node_modules/moment/locale/ru.js ***!
27179  \******************************************/
27180/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
27181
27182//! moment.js locale configuration
27183//! locale : Russian [ru]
27184//! author : Viktorminator : https://github.com/Viktorminator
27185//! author : Menelion Elensúle : https://github.com/Oire
27186//! author : Коренберг Марк : https://github.com/socketpair
27187
27188;(function (global, factory) {
27189    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
27190   0
27191}(this, (function (moment) { 'use strict';
27192
27193    //! moment.js locale configuration
27194
27195    function plural(word, num) {
27196        var forms = word.split('_');
27197        return num % 10 === 1 && num % 100 !== 11
27198            ? forms[0]
27199            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
27200              ? forms[1]
27201              : forms[2];
27202    }
27203    function relativeTimeWithPlural(number, withoutSuffix, key) {
27204        var format = {
27205            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
27206            mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
27207            hh: 'час_часа_часов',
27208            dd: 'день_дня_дней',
27209            ww: 'неделя_недели_недель',
27210            MM: 'месяц_месяца_месяцев',
27211            yy: 'год_года_лет',
27212        };
27213        if (key === 'm') {
27214            return withoutSuffix ? 'минута' : 'минуту';
27215        } else {
27216            return number + ' ' + plural(format[key], +number);
27217        }
27218    }
27219    var monthsParse = [
27220        /^янв/i,
27221        /^фев/i,
27222        /^мар/i,
27223        /^апр/i,
27224        /^ма[йя]/i,
27225        /^июн/i,
27226        /^июл/i,
27227        /^авг/i,
27228        /^сен/i,
27229        /^окт/i,
27230        /^ноя/i,
27231        /^дек/i,
27232    ];
27233
27234    // http://new.gramota.ru/spravka/rules/139-prop : § 103
27235    // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637
27236    // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753
27237    var ru = moment.defineLocale('ru', {
27238        months: {
27239            format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(
27240                '_'
27241            ),
27242            standalone:
27243                'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
27244                    '_'
27245                ),
27246        },
27247        monthsShort: {
27248            // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку?
27249            format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(
27250                '_'
27251            ),
27252            standalone:
27253                'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(
27254                    '_'
27255                ),
27256        },
27257        weekdays: {
27258            standalone:
27259                'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(
27260                    '_'
27261                ),
27262            format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(
27263                '_'
27264            ),
27265            isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,
27266        },
27267        weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
27268        weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
27269        monthsParse: monthsParse,
27270        longMonthsParse: monthsParse,
27271        shortMonthsParse: monthsParse,
27272
27273        // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки
27274        monthsRegex:
27275            /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
27276
27277        // копия предыдущего
27278        monthsShortRegex:
27279            /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
27280
27281        // полные названия с падежами
27282        monthsStrictRegex:
27283            /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,
27284
27285        // Выражение, которое соответствует только сокращённым формам
27286        monthsShortStrictRegex:
27287            /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,
27288        longDateFormat: {
27289            LT: 'H:mm',
27290            LTS: 'H:mm:ss',
27291            L: 'DD.MM.YYYY',
27292            LL: 'D MMMM YYYY г.',
27293            LLL: 'D MMMM YYYY г., H:mm',
27294            LLLL: 'dddd, D MMMM YYYY г., H:mm',
27295        },
27296        calendar: {
27297            sameDay: '[Сегодня, в] LT',
27298            nextDay: '[Завтра, в] LT',
27299            lastDay: '[Вчера, в] LT',
27300            nextWeek: function (now) {
27301                if (now.week() !== this.week()) {
27302                    switch (this.day()) {
27303                        case 0:
27304                            return '[В следующее] dddd, [в] LT';
27305                        case 1:
27306                        case 2:
27307                        case 4:
27308                            return '[В следующий] dddd, [в] LT';
27309                        case 3:
27310                        case 5:
27311                        case 6:
27312                            return '[В следующую] dddd, [в] LT';
27313                    }
27314                } else {
27315                    if (this.day() === 2) {
27316                        return '[Во] dddd, [в] LT';
27317                    } else {
27318                        return '[В] dddd, [в] LT';
27319                    }
27320                }
27321            },
27322            lastWeek: function (now) {
27323                if (now.week() !== this.week()) {
27324                    switch (this.day()) {
27325                        case 0:
27326                            return '[В прошлое] dddd, [в] LT';
27327                        case 1:
27328                        case 2:
27329                        case 4:
27330                            return '[В прошлый] dddd, [в] LT';
27331                        case 3:
27332                        case 5:
27333                        case 6:
27334                            return '[В прошлую] dddd, [в] LT';
27335                    }
27336                } else {
27337                    if (this.day() === 2) {
27338                        return '[Во] dddd, [в] LT';
27339                    } else {
27340                        return '[В] dddd, [в] LT';
27341                    }
27342                }
27343            },
27344            sameElse: 'L',
27345        },
27346        relativeTime: {
27347            future: 'через %s',
27348            past: '%s назад',
27349            s: 'несколько секунд',
27350            ss: relativeTimeWithPlural,
27351            m: relativeTimeWithPlural,
27352            mm: relativeTimeWithPlural,
27353            h: 'час',
27354            hh: relativeTimeWithPlural,
27355            d: 'день',
27356            dd: relativeTimeWithPlural,
27357            w: 'неделя',
27358            ww: relativeTimeWithPlural,
27359            M: 'месяц',
27360            MM: relativeTimeWithPlural,
27361            y: 'год',
27362            yy: relativeTimeWithPlural,
27363        },
27364        meridiemParse: /ночи|утра|дня|вечера/i,
27365        isPM: function (input) {
27366            return /^(дня|вечера)$/.test(input);
27367        },
27368        meridiem: function (hour, minute, isLower) {
27369            if (hour < 4) {
27370                return 'ночи';
27371            } else if (hour < 12) {
27372                return 'утра';
27373            } else if (hour < 17) {
27374                return 'дня';
27375            } else {
27376                return 'вечера';
27377            }
27378        },
27379        dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/,
27380        ordinal: function (number, period) {
27381            switch (period) {
27382                case 'M':
27383                case 'd':
27384                case 'DDD':
27385                    return number + '-й';
27386                case 'D':
27387                    return number + '-го';
27388                case 'w':
27389                case 'W':
27390                    return number + '-я';
27391                default:
27392                    return number;
27393            }
27394        },
27395        week: {
27396            dow: 1, // Monday is the first day of the week.
27397            doy: 4, // The week that contains Jan 4th is the first week of the year.
27398        },
27399    });
27400
27401    return ru;
27402
27403})));
27404
27405
27406/***/ }),
27407
vendor: 2,938 bytes, lines 27408-27507
27408/***/ "./node_modules/moment/locale/sd.js":
27409/*!******************************************!*\
27410  !*** ./node_modules/moment/locale/sd.js ***!
27411  \******************************************/
27412/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
27413
27414//! moment.js locale configuration
27415//! locale : Sindhi [sd]
27416//! author : Narain Sagar : https://github.com/narainsagar
27417
27418;(function (global, factory) {
27419    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
27420   0
27421}(this, (function (moment) { 'use strict';
27422
27423    //! moment.js locale configuration
27424
27425    var months = [
27426            'جنوري',
27427            'فيبروري',
27428            'مارچ',
27429            'اپريل',
27430            'مئي',
27431            'جون',
27432            'جولاءِ',
27433            'آگسٽ',
27434            'سيپٽمبر',
27435            'آڪٽوبر',
27436            'نومبر',
27437            'ڊسمبر',
27438        ],
27439        days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];
27440
27441    var sd = moment.defineLocale('sd', {
27442        months: months,
27443        monthsShort: months,
27444        weekdays: days,
27445        weekdaysShort: days,
27446        weekdaysMin: days,
27447        longDateFormat: {
27448            LT: 'HH:mm',
27449            LTS: 'HH:mm:ss',
27450            L: 'DD/MM/YYYY',
27451            LL: 'D MMMM YYYY',
27452            LLL: 'D MMMM YYYY HH:mm',
27453            LLLL: 'dddd، D MMMM YYYY HH:mm',
27454        },
27455        meridiemParse: /صبح|شام/,
27456        isPM: function (input) {
27457            return 'شام' === input;
27458        },
27459        meridiem: function (hour, minute, isLower) {
27460            if (hour < 12) {
27461                return 'صبح';
27462            }
27463            return 'شام';
27464        },
27465        calendar: {
27466            sameDay: '[اڄ] LT',
27467            nextDay: '[سڀاڻي] LT',
27468            nextWeek: 'dddd [اڳين هفتي تي] LT',
27469            lastDay: '[ڪالهه] LT',
27470            lastWeek: '[گزريل هفتي] dddd [تي] LT',
27471            sameElse: 'L',
27472        },
27473        relativeTime: {
27474            future: '%s پوء',
27475            past: '%s اڳ',
27476            s: 'چند سيڪنڊ',
27477            ss: '%d سيڪنڊ',
27478            m: 'هڪ منٽ',
27479            mm: '%d منٽ',
27480            h: 'هڪ ڪلاڪ',
27481            hh: '%d ڪلاڪ',
27482            d: 'هڪ ڏينهن',
27483            dd: '%d ڏينهن',
27484            M: 'هڪ مهينو',
27485            MM: '%d مهينا',
27486            y: 'هڪ سال',
27487            yy: '%d سال',
27488        },
27489        preparse: function (string) {
27490            return string.replace(/،/g, ',');
27491        },
27492        postformat: function (string) {
27493            return string.replace(/,/g, '،');
27494        },
27495        week: {
27496            dow: 1, // Monday is the first day of the week.
27497            doy: 4, // The week that contains Jan 4th is the first week of the year.
27498        },
27499    });
27500
27501    return sd;
27502
27503})));
27504
27505
27506/***/ }),
27507
vendor: 2,542 bytes, lines 27508-27583
27508/***/ "./node_modules/moment/locale/se.js":
27509/*!******************************************!*\
27510  !*** ./node_modules/moment/locale/se.js ***!
27511  \******************************************/
27512/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
27513
27514//! moment.js locale configuration
27515//! locale : Northern Sami [se]
27516//! authors : BÃ¥rd Rolstad Henriksen : https://github.com/karamell
27517
27518;(function (global, factory) {
27519    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
27520   0
27521}(this, (function (moment) { 'use strict';
27522
27523    //! moment.js locale configuration
27524
27525    var se = moment.defineLocale('se', {
27526        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(
27527            '_'
27528        ),
27529        monthsShort:
27530            'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),
27531        weekdays:
27532            'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(
27533                '_'
27534            ),
27535        weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),
27536        weekdaysMin: 's_v_m_g_d_b_L'.split('_'),
27537        longDateFormat: {
27538            LT: 'HH:mm',
27539            LTS: 'HH:mm:ss',
27540            L: 'DD.MM.YYYY',
27541            LL: 'MMMM D. [b.] YYYY',
27542            LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',
27543            LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',
27544        },
27545        calendar: {
27546            sameDay: '[otne ti] LT',
27547            nextDay: '[ihttin ti] LT',
27548            nextWeek: 'dddd [ti] LT',
27549            lastDay: '[ikte ti] LT',
27550            lastWeek: '[ovddit] dddd [ti] LT',
27551            sameElse: 'L',
27552        },
27553        relativeTime: {
27554            future: '%s geažes',
27555            past: 'maŋit %s',
27556            s: 'moadde sekunddat',
27557            ss: '%d sekunddat',
27558            m: 'okta minuhta',
27559            mm: '%d minuhtat',
27560            h: 'okta diimmu',
27561            hh: '%d diimmut',
27562            d: 'okta beaivi',
27563            dd: '%d beaivvit',
27564            M: 'okta mánnu',
27565            MM: '%d mánut',
27566            y: 'okta jahki',
27567            yy: '%d jagit',
27568        },
27569        dayOfMonthOrdinalParse: /\d{1,2}\./,
27570        ordinal: '%d.',
27571        week: {
27572            dow: 1, // Monday is the first day of the week.
27573            doy: 4, // The week that contains Jan 4th is the first week of the year.
27574        },
27575    });
27576
27577    return se;
27578
27579})));
27580
27581
27582/***/ }),
27583
vendor: 3,422 bytes, lines 27584-27671
27584/***/ "./node_modules/moment/locale/si.js":
27585/*!******************************************!*\
27586  !*** ./node_modules/moment/locale/si.js ***!
27587  \******************************************/
27588/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
27589
27590//! moment.js locale configuration
27591//! locale : Sinhalese [si]
27592//! author : Sampath Sitinamaluwa : https://github.com/sampathsris
27593
27594;(function (global, factory) {
27595    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
27596   0
27597}(this, (function (moment) { 'use strict';
27598
27599    //! moment.js locale configuration
27600
27601    /*jshint -W100*/
27602    var si = moment.defineLocale('si', {
27603        months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(
27604            '_'
27605        ),
27606        monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(
27607            '_'
27608        ),
27609        weekdays:
27610            'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(
27611                '_'
27612            ),
27613        weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),
27614        weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),
27615        weekdaysParseExact: true,
27616        longDateFormat: {
27617            LT: 'a h:mm',
27618            LTS: 'a h:mm:ss',
27619            L: 'YYYY/MM/DD',
27620            LL: 'YYYY MMMM D',
27621            LLL: 'YYYY MMMM D, a h:mm',
27622            LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',
27623        },
27624        calendar: {
27625            sameDay: '[අද] LT[ට]',
27626            nextDay: '[හෙට] LT[ට]',
27627            nextWeek: 'dddd LT[à¶§]',
27628            lastDay: '[ඊයේ] LT[ට]',
27629            lastWeek: '[පසුගිය] dddd LT[ට]',
27630            sameElse: 'L',
27631        },
27632        relativeTime: {
27633            future: '%sකින්',
27634            past: '%sකට පෙර',
27635            s: 'තත්පර කිහිපය',
27636            ss: 'තත්පර %d',
27637            m: 'මිනිත්තුව',
27638            mm: 'මිනිත්තු %d',
27639            h: 'පැය',
27640            hh: 'පැය %d',
27641            d: 'දිනය',
27642            dd: 'දින %d',
27643            M: 'මාසය',
27644            MM: 'මාස %d',
27645            y: 'වසර',
27646            yy: 'වසර %d',
27647        },
27648        dayOfMonthOrdinalParse: /\d{1,2} වැනි/,
27649        ordinal: function (number) {
27650            return number + ' වැනි';
27651        },
27652        meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,
27653        isPM: function (input) {
27654            return input === 'ප.ව.' || input === 'පස් වරු';
27655        },
27656        meridiem: function (hours, minutes, isLower) {
27657            if (hours > 11) {
27658                return isLower ? 'ප.ව.' : 'පස් වරු';
27659            } else {
27660                return isLower ? 'පෙ.ව.' : 'පෙර වරු';
27661            }
27662        },
27663    });
27664
27665    return si;
27666
27667})));
27668
27669
27670/***/ }),
27671
vendor: 6,210 bytes, lines 27672-27835
27672/***/ "./node_modules/moment/locale/sk.js":
27673/*!******************************************!*\
27674  !*** ./node_modules/moment/locale/sk.js ***!
27675  \******************************************/
27676/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
27677
27678//! moment.js locale configuration
27679//! locale : Slovak [sk]
27680//! author : Martin Minka : https://github.com/k2s
27681//! based on work of petrbela : https://github.com/petrbela
27682
27683;(function (global, factory) {
27684    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
27685   0
27686}(this, (function (moment) { 'use strict';
27687
27688    //! moment.js locale configuration
27689
27690    var months =
27691            'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(
27692                '_'
27693            ),
27694        monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');
27695    function plural(n) {
27696        return n > 1 && n < 5;
27697    }
27698    function translate(number, withoutSuffix, key, isFuture) {
27699        var result = number + ' ';
27700        switch (key) {
27701            case 's': // a few seconds / in a few seconds / a few seconds ago
27702                return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';
27703            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
27704                if (withoutSuffix || isFuture) {
27705                    return result + (plural(number) ? 'sekundy' : 'sekúnd');
27706                } else {
27707                    return result + 'sekundami';
27708                }
27709            case 'm': // a minute / in a minute / a minute ago
27710                return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';
27711            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
27712                if (withoutSuffix || isFuture) {
27713                    return result + (plural(number) ? 'minúty' : 'minút');
27714                } else {
27715                    return result + 'minútami';
27716                }
27717            case 'h': // an hour / in an hour / an hour ago
27718                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
27719            case 'hh': // 9 hours / in 9 hours / 9 hours ago
27720                if (withoutSuffix || isFuture) {
27721                    return result + (plural(number) ? 'hodiny' : 'hodín');
27722                } else {
27723                    return result + 'hodinami';
27724                }
27725            case 'd': // a day / in a day / a day ago
27726                return withoutSuffix || isFuture ? 'deň' : 'dňom';
27727            case 'dd': // 9 days / in 9 days / 9 days ago
27728                if (withoutSuffix || isFuture) {
27729                    return result + (plural(number) ? 'dni' : 'dní');
27730                } else {
27731                    return result + 'dňami';
27732                }
27733            case 'M': // a month / in a month / a month ago
27734                return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';
27735            case 'MM': // 9 months / in 9 months / 9 months ago
27736                if (withoutSuffix || isFuture) {
27737                    return result + (plural(number) ? 'mesiace' : 'mesiacov');
27738                } else {
27739                    return result + 'mesiacmi';
27740                }
27741            case 'y': // a year / in a year / a year ago
27742                return withoutSuffix || isFuture ? 'rok' : 'rokom';
27743            case 'yy': // 9 years / in 9 years / 9 years ago
27744                if (withoutSuffix || isFuture) {
27745                    return result + (plural(number) ? 'roky' : 'rokov');
27746                } else {
27747                    return result + 'rokmi';
27748                }
27749        }
27750    }
27751
27752    var sk = moment.defineLocale('sk', {
27753        months: months,
27754        monthsShort: monthsShort,
27755        weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
27756        weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),
27757        weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),
27758        longDateFormat: {
27759            LT: 'H:mm',
27760            LTS: 'H:mm:ss',
27761            L: 'DD.MM.YYYY',
27762            LL: 'D. MMMM YYYY',
27763            LLL: 'D. MMMM YYYY H:mm',
27764            LLLL: 'dddd D. MMMM YYYY H:mm',
27765        },
27766        calendar: {
27767            sameDay: '[dnes o] LT',
27768            nextDay: '[zajtra o] LT',
27769            nextWeek: function () {
27770                switch (this.day()) {
27771                    case 0:
27772                        return '[v nedeľu o] LT';
27773                    case 1:
27774                    case 2:
27775                        return '[v] dddd [o] LT';
27776                    case 3:
27777                        return '[v stredu o] LT';
27778                    case 4:
27779                        return '[vo štvrtok o] LT';
27780                    case 5:
27781                        return '[v piatok o] LT';
27782                    case 6:
27783                        return '[v sobotu o] LT';
27784                }
27785            },
27786            lastDay: '[včera o] LT',
27787            lastWeek: function () {
27788                switch (this.day()) {
27789                    case 0:
27790                        return '[minulú nedeľu o] LT';
27791                    case 1:
27792                    case 2:
27793                        return '[minulý] dddd [o] LT';
27794                    case 3:
27795                        return '[minulú stredu o] LT';
27796                    case 4:
27797                    case 5:
27798                        return '[minulý] dddd [o] LT';
27799                    case 6:
27800                        return '[minulú sobotu o] LT';
27801                }
27802            },
27803            sameElse: 'L',
27804        },
27805        relativeTime: {
27806            future: 'za %s',
27807            past: 'pred %s',
27808            s: translate,
27809            ss: translate,
27810            m: translate,
27811            mm: translate,
27812            h: translate,
27813            hh: translate,
27814            d: translate,
27815            dd: translate,
27816            M: translate,
27817            MM: translate,
27818            y: translate,
27819            yy: translate,
27820        },
27821        dayOfMonthOrdinalParse: /\d{1,2}\./,
27822        ordinal: '%d.',
27823        week: {
27824            dow: 1, // Monday is the first day of the week.
27825            doy: 4, // The week that contains Jan 4th is the first week of the year.
27826        },
27827    });
27828
27829    return sk;
27830
27831})));
27832
27833
27834/***/ }),
27835
vendor: 7,256 bytes, lines 27836-28025
27836/***/ "./node_modules/moment/locale/sl.js":
27837/*!******************************************!*\
27838  !*** ./node_modules/moment/locale/sl.js ***!
27839  \******************************************/
27840/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
27841
27842//! moment.js locale configuration
27843//! locale : Slovenian [sl]
27844//! author : Robert Sedovšek : https://github.com/sedovsek
27845
27846;(function (global, factory) {
27847    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
27848   0
27849}(this, (function (moment) { 'use strict';
27850
27851    //! moment.js locale configuration
27852
27853    function processRelativeTime(number, withoutSuffix, key, isFuture) {
27854        var result = number + ' ';
27855        switch (key) {
27856            case 's':
27857                return withoutSuffix || isFuture
27858                    ? 'nekaj sekund'
27859                    : 'nekaj sekundami';
27860            case 'ss':
27861                if (number === 1) {
27862                    result += withoutSuffix ? 'sekundo' : 'sekundi';
27863                } else if (number === 2) {
27864                    result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';
27865                } else if (number < 5) {
27866                    result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';
27867                } else {
27868                    result += 'sekund';
27869                }
27870                return result;
27871            case 'm':
27872                return withoutSuffix ? 'ena minuta' : 'eno minuto';
27873            case 'mm':
27874                if (number === 1) {
27875                    result += withoutSuffix ? 'minuta' : 'minuto';
27876                } else if (number === 2) {
27877                    result += withoutSuffix || isFuture ? 'minuti' : 'minutama';
27878                } else if (number < 5) {
27879                    result += withoutSuffix || isFuture ? 'minute' : 'minutami';
27880                } else {
27881                    result += withoutSuffix || isFuture ? 'minut' : 'minutami';
27882                }
27883                return result;
27884            case 'h':
27885                return withoutSuffix ? 'ena ura' : 'eno uro';
27886            case 'hh':
27887                if (number === 1) {
27888                    result += withoutSuffix ? 'ura' : 'uro';
27889                } else if (number === 2) {
27890                    result += withoutSuffix || isFuture ? 'uri' : 'urama';
27891                } else if (number < 5) {
27892                    result += withoutSuffix || isFuture ? 'ure' : 'urami';
27893                } else {
27894                    result += withoutSuffix || isFuture ? 'ur' : 'urami';
27895                }
27896                return result;
27897            case 'd':
27898                return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';
27899            case 'dd':
27900                if (number === 1) {
27901                    result += withoutSuffix || isFuture ? 'dan' : 'dnem';
27902                } else if (number === 2) {
27903                    result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';
27904                } else {
27905                    result += withoutSuffix || isFuture ? 'dni' : 'dnevi';
27906                }
27907                return result;
27908            case 'M':
27909                return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';
27910            case 'MM':
27911                if (number === 1) {
27912                    result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';
27913                } else if (number === 2) {
27914                    result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';
27915                } else if (number < 5) {
27916                    result += withoutSuffix || isFuture ? 'mesece' : 'meseci';
27917                } else {
27918                    result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';
27919                }
27920                return result;
27921            case 'y':
27922                return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';
27923            case 'yy':
27924                if (number === 1) {
27925                    result += withoutSuffix || isFuture ? 'leto' : 'letom';
27926                } else if (number === 2) {
27927                    result += withoutSuffix || isFuture ? 'leti' : 'letoma';
27928                } else if (number < 5) {
27929                    result += withoutSuffix || isFuture ? 'leta' : 'leti';
27930                } else {
27931                    result += withoutSuffix || isFuture ? 'let' : 'leti';
27932                }
27933                return result;
27934        }
27935    }
27936
27937    var sl = moment.defineLocale('sl', {
27938        months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(
27939            '_'
27940        ),
27941        monthsShort:
27942            'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(
27943                '_'
27944            ),
27945        monthsParseExact: true,
27946        weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
27947        weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
27948        weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),
27949        weekdaysParseExact: true,
27950        longDateFormat: {
27951            LT: 'H:mm',
27952            LTS: 'H:mm:ss',
27953            L: 'DD. MM. YYYY',
27954            LL: 'D. MMMM YYYY',
27955            LLL: 'D. MMMM YYYY H:mm',
27956            LLLL: 'dddd, D. MMMM YYYY H:mm',
27957        },
27958        calendar: {
27959            sameDay: '[danes ob] LT',
27960            nextDay: '[jutri ob] LT',
27961
27962            nextWeek: function () {
27963                switch (this.day()) {
27964                    case 0:
27965                        return '[v] [nedeljo] [ob] LT';
27966                    case 3:
27967                        return '[v] [sredo] [ob] LT';
27968                    case 6:
27969                        return '[v] [soboto] [ob] LT';
27970                    case 1:
27971                    case 2:
27972                    case 4:
27973                    case 5:
27974                        return '[v] dddd [ob] LT';
27975                }
27976            },
27977            lastDay: '[včeraj ob] LT',
27978            lastWeek: function () {
27979                switch (this.day()) {
27980                    case 0:
27981                        return '[prejšnjo] [nedeljo] [ob] LT';
27982                    case 3:
27983                        return '[prejšnjo] [sredo] [ob] LT';
27984                    case 6:
27985                        return '[prejšnjo] [soboto] [ob] LT';
27986                    case 1:
27987                    case 2:
27988                    case 4:
27989                    case 5:
27990                        return '[prejšnji] dddd [ob] LT';
27991                }
27992            },
27993            sameElse: 'L',
27994        },
27995        relativeTime: {
27996            future: 'čez %s',
27997            past: 'pred %s',
27998            s: processRelativeTime,
27999            ss: processRelativeTime,
28000            m: processRelativeTime,
28001            mm: processRelativeTime,
28002            h: processRelativeTime,
28003            hh: processRelativeTime,
28004            d: processRelativeTime,
28005            dd: processRelativeTime,
28006            M: processRelativeTime,
28007            MM: processRelativeTime,
28008            y: processRelativeTime,
28009            yy: processRelativeTime,
28010        },
28011        dayOfMonthOrdinalParse: /\d{1,2}\./,
28012        ordinal: '%d.',
28013        week: {
28014            dow: 1, // Monday is the first day of the week.
28015            doy: 7, // The week that contains Jan 7th is the first week of the year.
28016        },
28017    });
28018
28019    return sl;
28020
28021})));
28022
28023
28024/***/ }),
28025
vendor: 2,704 bytes, lines 28026-28109
28026/***/ "./node_modules/moment/locale/sq.js":
28027/*!******************************************!*\
28028  !*** ./node_modules/moment/locale/sq.js ***!
28029  \******************************************/
28030/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
28031
28032//! moment.js locale configuration
28033//! locale : Albanian [sq]
28034//! author : Flakërim Ismani : https://github.com/flakerimi
28035//! author : Menelion Elensúle : https://github.com/Oire
28036//! author : Oerd Cukalla : https://github.com/oerd
28037
28038;(function (global, factory) {
28039    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
28040   0
28041}(this, (function (moment) { 'use strict';
28042
28043    //! moment.js locale configuration
28044
28045    var sq = moment.defineLocale('sq', {
28046        months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(
28047            '_'
28048        ),
28049        monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
28050        weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(
28051            '_'
28052        ),
28053        weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
28054        weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),
28055        weekdaysParseExact: true,
28056        meridiemParse: /PD|MD/,
28057        isPM: function (input) {
28058            return input.charAt(0) === 'M';
28059        },
28060        meridiem: function (hours, minutes, isLower) {
28061            return hours < 12 ? 'PD' : 'MD';
28062        },
28063        longDateFormat: {
28064            LT: 'HH:mm',
28065            LTS: 'HH:mm:ss',
28066            L: 'DD/MM/YYYY',
28067            LL: 'D MMMM YYYY',
28068            LLL: 'D MMMM YYYY HH:mm',
28069            LLLL: 'dddd, D MMMM YYYY HH:mm',
28070        },
28071        calendar: {
28072            sameDay: '[Sot në] LT',
28073            nextDay: '[Nesër në] LT',
28074            nextWeek: 'dddd [në] LT',
28075            lastDay: '[Dje në] LT',
28076            lastWeek: 'dddd [e kaluar në] LT',
28077            sameElse: 'L',
28078        },
28079        relativeTime: {
28080            future: 'në %s',
28081            past: '%s më parë',
28082            s: 'disa sekonda',
28083            ss: '%d sekonda',
28084            m: 'një minutë',
28085            mm: '%d minuta',
28086            h: 'një orë',
28087            hh: '%d orë',
28088            d: 'një ditë',
28089            dd: '%d ditë',
28090            M: 'një muaj',
28091            MM: '%d muaj',
28092            y: 'një vit',
28093            yy: '%d vite',
28094        },
28095        dayOfMonthOrdinalParse: /\d{1,2}\./,
28096        ordinal: '%d.',
28097        week: {
28098            dow: 1, // Monday is the first day of the week.
28099            doy: 4, // The week that contains Jan 4th is the first week of the year.
28100        },
28101    });
28102
28103    return sq;
28104
28105})));
28106
28107
28108/***/ }),
28109
vendor: 5,743 bytes, lines 28110-28255
28110/***/ "./node_modules/moment/locale/sr-cyrl.js":
28111/*!***********************************************!*\
28112  !*** ./node_modules/moment/locale/sr-cyrl.js ***!
28113  \***********************************************/
28114/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
28115
28116//! moment.js locale configuration
28117//! locale : Serbian Cyrillic [sr-cyrl]
28118//! author : Milan Janačković<[email protected]> : https://github.com/milan-j
28119//! author : Stefan Crnjaković <[email protected]> : https://github.com/crnjakovic
28120
28121;(function (global, factory) {
28122    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
28123   0
28124}(this, (function (moment) { 'use strict';
28125
28126    //! moment.js locale configuration
28127
28128    var translator = {
28129        words: {
28130            //Different grammatical cases
28131            ss: ['секунда', 'секунде', 'секунди'],
28132            m: ['један минут', 'једног минута'],
28133            mm: ['минут', 'минута', 'минута'],
28134            h: ['један сат', 'једног сата'],
28135            hh: ['сат', 'сата', 'сати'],
28136            d: ['један дан', 'једног дана'],
28137            dd: ['дан', 'дана', 'дана'],
28138            M: ['један месец', 'једног месеца'],
28139            MM: ['месец', 'месеца', 'месеци'],
28140            y: ['једну годину', 'једне године'],
28141            yy: ['годину', 'године', 'година'],
28142        },
28143        correctGrammaticalCase: function (number, wordKey) {
28144            if (
28145                number % 10 >= 1 &&
28146                number % 10 <= 4 &&
28147                (number % 100 < 10 || number % 100 >= 20)
28148            ) {
28149                return number % 10 === 1 ? wordKey[0] : wordKey[1];
28150            }
28151            return wordKey[2];
28152        },
28153        translate: function (number, withoutSuffix, key, isFuture) {
28154            var wordKey = translator.words[key],
28155                word;
28156
28157            if (key.length === 1) {
28158                // Nominativ
28159                if (key === 'y' && withoutSuffix) return 'једна година';
28160                return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];
28161            }
28162
28163            word = translator.correctGrammaticalCase(number, wordKey);
28164            // Nominativ
28165            if (key === 'yy' && withoutSuffix && word === 'годину') {
28166                return number + ' година';
28167            }
28168
28169            return number + ' ' + word;
28170        },
28171    };
28172
28173    var srCyrl = moment.defineLocale('sr-cyrl', {
28174        months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(
28175            '_'
28176        ),
28177        monthsShort:
28178            'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),
28179        monthsParseExact: true,
28180        weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),
28181        weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),
28182        weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),
28183        weekdaysParseExact: true,
28184        longDateFormat: {
28185            LT: 'H:mm',
28186            LTS: 'H:mm:ss',
28187            L: 'D. M. YYYY.',
28188            LL: 'D. MMMM YYYY.',
28189            LLL: 'D. MMMM YYYY. H:mm',
28190            LLLL: 'dddd, D. MMMM YYYY. H:mm',
28191        },
28192        calendar: {
28193            sameDay: '[данас у] LT',
28194            nextDay: '[сутра у] LT',
28195            nextWeek: function () {
28196                switch (this.day()) {
28197                    case 0:
28198                        return '[у] [недељу] [у] LT';
28199                    case 3:
28200                        return '[у] [среду] [у] LT';
28201                    case 6:
28202                        return '[у] [суботу] [у] LT';
28203                    case 1:
28204                    case 2:
28205                    case 4:
28206                    case 5:
28207                        return '[у] dddd [у] LT';
28208                }
28209            },
28210            lastDay: '[јуче у] LT',
28211            lastWeek: function () {
28212                var lastWeekDays = [
28213                    '[прошле] [недеље] [у] LT',
28214                    '[прошлог] [понедељка] [у] LT',
28215                    '[прошлог] [уторка] [у] LT',
28216                    '[прошле] [среде] [у] LT',
28217                    '[прошлог] [четвртка] [у] LT',
28218                    '[прошлог] [петка] [у] LT',
28219                    '[прошле] [суботе] [у] LT',
28220                ];
28221                return lastWeekDays[this.day()];
28222            },
28223            sameElse: 'L',
28224        },
28225        relativeTime: {
28226            future: 'за %s',
28227            past: 'пре %s',
28228            s: 'неколико секунди',
28229            ss: translator.translate,
28230            m: translator.translate,
28231            mm: translator.translate,
28232            h: translator.translate,
28233            hh: translator.translate,
28234            d: translator.translate,
28235            dd: translator.translate,
28236            M: translator.translate,
28237            MM: translator.translate,
28238            y: translator.translate,
28239            yy: translator.translate,
28240        },
28241        dayOfMonthOrdinalParse: /\d{1,2}\./,
28242        ordinal: '%d.',
28243        week: {
28244            dow: 1, // Monday is the first day of the week.
28245            doy: 7, // The week that contains Jan 1st is the first week of the year.
28246        },
28247    });
28248
28249    return srCyrl;
28250
28251})));
28252
28253
28254/***/ }),
28255
vendor: 5,170 bytes, lines 28256-28403
28256/***/ "./node_modules/moment/locale/sr.js":
28257/*!******************************************!*\
28258  !*** ./node_modules/moment/locale/sr.js ***!
28259  \******************************************/
28260/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
28261
28262//! moment.js locale configuration
28263//! locale : Serbian [sr]
28264//! author : Milan Janačković<[email protected]> : https://github.com/milan-j
28265//! author : Stefan Crnjaković <[email protected]> : https://github.com/crnjakovic
28266
28267;(function (global, factory) {
28268    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
28269   0
28270}(this, (function (moment) { 'use strict';
28271
28272    //! moment.js locale configuration
28273
28274    var translator = {
28275        words: {
28276            //Different grammatical cases
28277            ss: ['sekunda', 'sekunde', 'sekundi'],
28278            m: ['jedan minut', 'jednog minuta'],
28279            mm: ['minut', 'minuta', 'minuta'],
28280            h: ['jedan sat', 'jednog sata'],
28281            hh: ['sat', 'sata', 'sati'],
28282            d: ['jedan dan', 'jednog dana'],
28283            dd: ['dan', 'dana', 'dana'],
28284            M: ['jedan mesec', 'jednog meseca'],
28285            MM: ['mesec', 'meseca', 'meseci'],
28286            y: ['jednu godinu', 'jedne godine'],
28287            yy: ['godinu', 'godine', 'godina'],
28288        },
28289        correctGrammaticalCase: function (number, wordKey) {
28290            if (
28291                number % 10 >= 1 &&
28292                number % 10 <= 4 &&
28293                (number % 100 < 10 || number % 100 >= 20)
28294            ) {
28295                return number % 10 === 1 ? wordKey[0] : wordKey[1];
28296            }
28297            return wordKey[2];
28298        },
28299        translate: function (number, withoutSuffix, key, isFuture) {
28300            var wordKey = translator.words[key],
28301                word;
28302
28303            if (key.length === 1) {
28304                // Nominativ
28305                if (key === 'y' && withoutSuffix) return 'jedna godina';
28306                return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];
28307            }
28308
28309            word = translator.correctGrammaticalCase(number, wordKey);
28310            // Nominativ
28311            if (key === 'yy' && withoutSuffix && word === 'godinu') {
28312                return number + ' godina';
28313            }
28314
28315            return number + ' ' + word;
28316        },
28317    };
28318
28319    var sr = moment.defineLocale('sr', {
28320        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
28321            '_'
28322        ),
28323        monthsShort:
28324            'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
28325        monthsParseExact: true,
28326        weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(
28327            '_'
28328        ),
28329        weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),
28330        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
28331        weekdaysParseExact: true,
28332        longDateFormat: {
28333            LT: 'H:mm',
28334            LTS: 'H:mm:ss',
28335            L: 'D. M. YYYY.',
28336            LL: 'D. MMMM YYYY.',
28337            LLL: 'D. MMMM YYYY. H:mm',
28338            LLLL: 'dddd, D. MMMM YYYY. H:mm',
28339        },
28340        calendar: {
28341            sameDay: '[danas u] LT',
28342            nextDay: '[sutra u] LT',
28343            nextWeek: function () {
28344                switch (this.day()) {
28345                    case 0:
28346                        return '[u] [nedelju] [u] LT';
28347                    case 3:
28348                        return '[u] [sredu] [u] LT';
28349                    case 6:
28350                        return '[u] [subotu] [u] LT';
28351                    case 1:
28352                    case 2:
28353                    case 4:
28354                    case 5:
28355                        return '[u] dddd [u] LT';
28356                }
28357            },
28358            lastDay: '[juče u] LT',
28359            lastWeek: function () {
28360                var lastWeekDays = [
28361                    '[prošle] [nedelje] [u] LT',
28362                    '[prošlog] [ponedeljka] [u] LT',
28363                    '[prošlog] [utorka] [u] LT',
28364                    '[prošle] [srede] [u] LT',
28365                    '[prošlog] [četvrtka] [u] LT',
28366                    '[prošlog] [petka] [u] LT',
28367                    '[prošle] [subote] [u] LT',
28368                ];
28369                return lastWeekDays[this.day()];
28370            },
28371            sameElse: 'L',
28372        },
28373        relativeTime: {
28374            future: 'za %s',
28375            past: 'pre %s',
28376            s: 'nekoliko sekundi',
28377            ss: translator.translate,
28378            m: translator.translate,
28379            mm: translator.translate,
28380            h: translator.translate,
28381            hh: translator.translate,
28382            d: translator.translate,
28383            dd: translator.translate,
28384            M: translator.translate,
28385            MM: translator.translate,
28386            y: translator.translate,
28387            yy: translator.translate,
28388        },
28389        dayOfMonthOrdinalParse: /\d{1,2}\./,
28390        ordinal: '%d.',
28391        week: {
28392            dow: 1, // Monday is the first day of the week.
28393            doy: 7, // The week that contains Jan 7th is the first week of the year.
28394        },
28395    });
28396
28397    return sr;
28398
28399})));
28400
28401
28402/***/ }),
28403
vendor: 3,373 bytes, lines 28404-28506
28404/***/ "./node_modules/moment/locale/ss.js":
28405/*!******************************************!*\
28406  !*** ./node_modules/moment/locale/ss.js ***!
28407  \******************************************/
28408/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
28409
28410//! moment.js locale configuration
28411//! locale : siSwati [ss]
28412//! author : Nicolai Davies<[email protected]> : https://github.com/nicolaidavies
28413
28414;(function (global, factory) {
28415    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
28416   0
28417}(this, (function (moment) { 'use strict';
28418
28419    //! moment.js locale configuration
28420
28421    var ss = moment.defineLocale('ss', {
28422        months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split(
28423            '_'
28424        ),
28425        monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),
28426        weekdays:
28427            'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(
28428                '_'
28429            ),
28430        weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),
28431        weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),
28432        weekdaysParseExact: true,
28433        longDateFormat: {
28434            LT: 'h:mm A',
28435            LTS: 'h:mm:ss A',
28436            L: 'DD/MM/YYYY',
28437            LL: 'D MMMM YYYY',
28438            LLL: 'D MMMM YYYY h:mm A',
28439            LLLL: 'dddd, D MMMM YYYY h:mm A',
28440        },
28441        calendar: {
28442            sameDay: '[Namuhla nga] LT',
28443            nextDay: '[Kusasa nga] LT',
28444            nextWeek: 'dddd [nga] LT',
28445            lastDay: '[Itolo nga] LT',
28446            lastWeek: 'dddd [leliphelile] [nga] LT',
28447            sameElse: 'L',
28448        },
28449        relativeTime: {
28450            future: 'nga %s',
28451            past: 'wenteka nga %s',
28452            s: 'emizuzwana lomcane',
28453            ss: '%d mzuzwana',
28454            m: 'umzuzu',
28455            mm: '%d emizuzu',
28456            h: 'lihora',
28457            hh: '%d emahora',
28458            d: 'lilanga',
28459            dd: '%d emalanga',
28460            M: 'inyanga',
28461            MM: '%d tinyanga',
28462            y: 'umnyaka',
28463            yy: '%d iminyaka',
28464        },
28465        meridiemParse: /ekuseni|emini|entsambama|ebusuku/,
28466        meridiem: function (hours, minutes, isLower) {
28467            if (hours < 11) {
28468                return 'ekuseni';
28469            } else if (hours < 15) {
28470                return 'emini';
28471            } else if (hours < 19) {
28472                return 'entsambama';
28473            } else {
28474                return 'ebusuku';
28475            }
28476        },
28477        meridiemHour: function (hour, meridiem) {
28478            if (hour === 12) {
28479                hour = 0;
28480            }
28481            if (meridiem === 'ekuseni') {
28482                return hour;
28483            } else if (meridiem === 'emini') {
28484                return hour >= 11 ? hour : hour + 12;
28485            } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {
28486                if (hour === 0) {
28487                    return 0;
28488                }
28489                return hour + 12;
28490            }
28491        },
28492        dayOfMonthOrdinalParse: /\d{1,2}/,
28493        ordinal: '%d',
28494        week: {
28495            dow: 1, // Monday is the first day of the week.
28496            doy: 4, // The week that contains Jan 4th is the first week of the year.
28497        },
28498    });
28499
28500    return ss;
28501
28502})));
28503
28504
28505/***/ }),
28506
vendor: 2,827 bytes, lines 28507-28593
28507/***/ "./node_modules/moment/locale/sv.js":
28508/*!******************************************!*\
28509  !*** ./node_modules/moment/locale/sv.js ***!
28510  \******************************************/
28511/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
28512
28513//! moment.js locale configuration
28514//! locale : Swedish [sv]
28515//! author : Jens Alm : https://github.com/ulmus
28516
28517;(function (global, factory) {
28518    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
28519   0
28520}(this, (function (moment) { 'use strict';
28521
28522    //! moment.js locale configuration
28523
28524    var sv = moment.defineLocale('sv', {
28525        months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(
28526            '_'
28527        ),
28528        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
28529        weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
28530        weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
28531        weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),
28532        longDateFormat: {
28533            LT: 'HH:mm',
28534            LTS: 'HH:mm:ss',
28535            L: 'YYYY-MM-DD',
28536            LL: 'D MMMM YYYY',
28537            LLL: 'D MMMM YYYY [kl.] HH:mm',
28538            LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',
28539            lll: 'D MMM YYYY HH:mm',
28540            llll: 'ddd D MMM YYYY HH:mm',
28541        },
28542        calendar: {
28543            sameDay: '[Idag] LT',
28544            nextDay: '[Imorgon] LT',
28545            lastDay: '[Igår] LT',
28546            nextWeek: '[PÃ¥] dddd LT',
28547            lastWeek: '[I] dddd[s] LT',
28548            sameElse: 'L',
28549        },
28550        relativeTime: {
28551            future: 'om %s',
28552            past: 'för %s sedan',
28553            s: 'några sekunder',
28554            ss: '%d sekunder',
28555            m: 'en minut',
28556            mm: '%d minuter',
28557            h: 'en timme',
28558            hh: '%d timmar',
28559            d: 'en dag',
28560            dd: '%d dagar',
28561            M: 'en månad',
28562            MM: '%d månader',
28563            y: 'ett år',
28564            yy: '%d år',
28565        },
28566        dayOfMonthOrdinalParse: /\d{1,2}(\:e|\:a)/,
28567        ordinal: function (number) {
28568            var b = number % 10,
28569                output =
28570                    ~~((number % 100) / 10) === 1
28571                        ? ':e'
28572                        : b === 1
28573                          ? ':a'
28574                          : b === 2
28575                            ? ':a'
28576                            : b === 3
28577                              ? ':e'
28578                              : ':e';
28579            return number + output;
28580        },
28581        week: {
28582            dow: 1, // Monday is the first day of the week.
28583            doy: 4, // The week that contains Jan 4th is the first week of the year.
28584        },
28585    });
28586
28587    return sv;
28588
28589})));
28590
28591
28592/***/ }),
28593
vendor: 2,336 bytes, lines 28594-28667
28594/***/ "./node_modules/moment/locale/sw.js":
28595/*!******************************************!*\
28596  !*** ./node_modules/moment/locale/sw.js ***!
28597  \******************************************/
28598/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
28599
28600//! moment.js locale configuration
28601//! locale : Swahili [sw]
28602//! author : Fahad Kassim : https://github.com/fadsel
28603
28604;(function (global, factory) {
28605    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
28606   0
28607}(this, (function (moment) { 'use strict';
28608
28609    //! moment.js locale configuration
28610
28611    var sw = moment.defineLocale('sw', {
28612        months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(
28613            '_'
28614        ),
28615        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),
28616        weekdays:
28617            'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(
28618                '_'
28619            ),
28620        weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),
28621        weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),
28622        weekdaysParseExact: true,
28623        longDateFormat: {
28624            LT: 'hh:mm A',
28625            LTS: 'HH:mm:ss',
28626            L: 'DD.MM.YYYY',
28627            LL: 'D MMMM YYYY',
28628            LLL: 'D MMMM YYYY HH:mm',
28629            LLLL: 'dddd, D MMMM YYYY HH:mm',
28630        },
28631        calendar: {
28632            sameDay: '[leo saa] LT',
28633            nextDay: '[kesho saa] LT',
28634            nextWeek: '[wiki ijayo] dddd [saat] LT',
28635            lastDay: '[jana] LT',
28636            lastWeek: '[wiki iliyopita] dddd [saat] LT',
28637            sameElse: 'L',
28638        },
28639        relativeTime: {
28640            future: '%s baadaye',
28641            past: 'tokea %s',
28642            s: 'hivi punde',
28643            ss: 'sekunde %d',
28644            m: 'dakika moja',
28645            mm: 'dakika %d',
28646            h: 'saa limoja',
28647            hh: 'masaa %d',
28648            d: 'siku moja',
28649            dd: 'siku %d',
28650            M: 'mwezi mmoja',
28651            MM: 'miezi %d',
28652            y: 'mwaka mmoja',
28653            yy: 'miaka %d',
28654        },
28655        week: {
28656            dow: 1, // Monday is the first day of the week.
28657            doy: 7, // The week that contains Jan 7th is the first week of the year.
28658        },
28659    });
28660
28661    return sw;
28662
28663})));
28664
28665
28666/***/ }),
28667
vendor: 5,785 bytes, lines 28668-28817
28668/***/ "./node_modules/moment/locale/ta.js":
28669/*!******************************************!*\
28670  !*** ./node_modules/moment/locale/ta.js ***!
28671  \******************************************/
28672/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
28673
28674//! moment.js locale configuration
28675//! locale : Tamil [ta]
28676//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404
28677
28678;(function (global, factory) {
28679    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
28680   0
28681}(this, (function (moment) { 'use strict';
28682
28683    //! moment.js locale configuration
28684
28685    var symbolMap = {
28686            1: '௧',
28687            2: '௨',
28688            3: '௩',
28689            4: '௪',
28690            5: '௫',
28691            6: '௬',
28692            7: '௭',
28693            8: '௮',
28694            9: '௯',
28695            0: '௦',
28696        },
28697        numberMap = {
28698            '௧': '1',
28699            '௨': '2',
28700            '௩': '3',
28701            '௪': '4',
28702            '௫': '5',
28703            '௬': '6',
28704            '௭': '7',
28705            '௮': '8',
28706            '௯': '9',
28707            '௦': '0',
28708        };
28709
28710    var ta = moment.defineLocale('ta', {
28711        months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
28712            '_'
28713        ),
28714        monthsShort:
28715            'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
28716                '_'
28717            ),
28718        weekdays:
28719            'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(
28720                '_'
28721            ),
28722        weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(
28723            '_'
28724        ),
28725        weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
28726        longDateFormat: {
28727            LT: 'HH:mm',
28728            LTS: 'HH:mm:ss',
28729            L: 'DD/MM/YYYY',
28730            LL: 'D MMMM YYYY',
28731            LLL: 'D MMMM YYYY, HH:mm',
28732            LLLL: 'dddd, D MMMM YYYY, HH:mm',
28733        },
28734        calendar: {
28735            sameDay: '[இன்று] LT',
28736            nextDay: '[நாளை] LT',
28737            nextWeek: 'dddd, LT',
28738            lastDay: '[நேற்று] LT',
28739            lastWeek: '[கடந்த வாரம்] dddd, LT',
28740            sameElse: 'L',
28741        },
28742        relativeTime: {
28743            future: '%s இல்',
28744            past: '%s முன்',
28745            s: 'ஒரு சில விநாடிகள்',
28746            ss: '%d விநாடிகள்',
28747            m: 'ஒரு நிமிடம்',
28748            mm: '%d நிமிடங்கள்',
28749            h: 'ஒரு மணி நேரம்',
28750            hh: '%d மணி நேரம்',
28751            d: 'ஒரு நாள்',
28752            dd: '%d நாட்கள்',
28753            M: 'ஒரு மாதம்',
28754            MM: '%d மாதங்கள்',
28755            y: 'ஒரு வருடம்',
28756            yy: '%d ஆண்டுகள்',
28757        },
28758        dayOfMonthOrdinalParse: /\d{1,2}வது/,
28759        ordinal: function (number) {
28760            return number + 'வது';
28761        },
28762        preparse: function (string) {
28763            return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {
28764                return numberMap[match];
28765            });
28766        },
28767        postformat: function (string) {
28768            return string.replace(/\d/g, function (match) {
28769                return symbolMap[match];
28770            });
28771        },
28772        // refer http://ta.wikipedia.org/s/1er1
28773        meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,
28774        meridiem: function (hour, minute, isLower) {
28775            if (hour < 2) {
28776                return ' யாமம்';
28777            } else if (hour < 6) {
28778                return ' வைகறை'; // வைகறை
28779            } else if (hour < 10) {
28780                return ' காலை'; // காலை
28781            } else if (hour < 14) {
28782                return ' நண்பகல்'; // நண்பகல்
28783            } else if (hour < 18) {
28784                return ' எற்பாடு'; // எற்பாடு
28785            } else if (hour < 22) {
28786                return ' மாலை'; // மாலை
28787            } else {
28788                return ' யாமம்';
28789            }
28790        },
28791        meridiemHour: function (hour, meridiem) {
28792            if (hour === 12) {
28793                hour = 0;
28794            }
28795            if (meridiem === 'யாமம்') {
28796                return hour < 2 ? hour : hour + 12;
28797            } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {
28798                return hour;
28799            } else if (meridiem === 'நண்பகல்') {
28800                return hour >= 10 ? hour : hour + 12;
28801            } else {
28802                return hour + 12;
28803            }
28804        },
28805        week: {
28806            dow: 0, // Sunday is the first day of the week.
28807            doy: 6, // The week that contains Jan 6th is the first week of the year.
28808        },
28809    });
28810
28811    return ta;
28812
28813})));
28814
28815
28816/***/ }),
28817
vendor: 4,209 bytes, lines 28818-28924
28818/***/ "./node_modules/moment/locale/te.js":
28819/*!******************************************!*\
28820  !*** ./node_modules/moment/locale/te.js ***!
28821  \******************************************/
28822/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
28823
28824//! moment.js locale configuration
28825//! locale : Telugu [te]
28826//! author : Krishna Chaitanya Thota : https://github.com/kcthota
28827
28828;(function (global, factory) {
28829    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
28830   0
28831}(this, (function (moment) { 'use strict';
28832
28833    //! moment.js locale configuration
28834
28835    var te = moment.defineLocale('te', {
28836        months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(
28837            '_'
28838        ),
28839        monthsShort:
28840            'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(
28841                '_'
28842            ),
28843        monthsParseExact: true,
28844        weekdays:
28845            'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(
28846                '_'
28847            ),
28848        weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),
28849        weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),
28850        longDateFormat: {
28851            LT: 'A h:mm',
28852            LTS: 'A h:mm:ss',
28853            L: 'DD/MM/YYYY',
28854            LL: 'D MMMM YYYY',
28855            LLL: 'D MMMM YYYY, A h:mm',
28856            LLLL: 'dddd, D MMMM YYYY, A h:mm',
28857        },
28858        calendar: {
28859            sameDay: '[నేడు] LT',
28860            nextDay: '[రేపు] LT',
28861            nextWeek: 'dddd, LT',
28862            lastDay: '[నిన్న] LT',
28863            lastWeek: '[గత] dddd, LT',
28864            sameElse: 'L',
28865        },
28866        relativeTime: {
28867            future: '%s లో',
28868            past: '%s క్రితం',
28869            s: 'కొన్ని క్షణాలు',
28870            ss: '%d సెకన్లు',
28871            m: 'ఒక నిమిషం',
28872            mm: '%d నిమిషాలు',
28873            h: 'ఒక గంట',
28874            hh: '%d గంటలు',
28875            d: 'ఒక రోజు',
28876            dd: '%d రోజులు',
28877            M: 'ఒక నెల',
28878            MM: '%d నెలలు',
28879            y: 'ఒక సంవత్సరం',
28880            yy: '%d సంవత్సరాలు',
28881        },
28882        dayOfMonthOrdinalParse: /\d{1,2}à°µ/,
28883        ordinal: '%dà°µ',
28884        meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,
28885        meridiemHour: function (hour, meridiem) {
28886            if (hour === 12) {
28887                hour = 0;
28888            }
28889            if (meridiem === 'రాత్రి') {
28890                return hour < 4 ? hour : hour + 12;
28891            } else if (meridiem === 'ఉదయం') {
28892                return hour;
28893            } else if (meridiem === 'మధ్యాహ్నం') {
28894                return hour >= 10 ? hour : hour + 12;
28895            } else if (meridiem === 'సాయంత్రం') {
28896                return hour + 12;
28897            }
28898        },
28899        meridiem: function (hour, minute, isLower) {
28900            if (hour < 4) {
28901                return 'రాత్రి';
28902            } else if (hour < 10) {
28903                return 'ఉదయం';
28904            } else if (hour < 17) {
28905                return 'మధ్యాహ్నం';
28906            } else if (hour < 20) {
28907                return 'సాయంత్రం';
28908            } else {
28909                return 'రాత్రి';
28910            }
28911        },
28912        week: {
28913            dow: 0, // Sunday is the first day of the week.
28914            doy: 6, // The week that contains Jan 6th is the first week of the year.
28915        },
28916    });
28917
28918    return te;
28919
28920})));
28921
28922
28923/***/ }),
28924
vendor: 2,914 bytes, lines 28925-29011
28925/***/ "./node_modules/moment/locale/tet.js":
28926/*!*******************************************!*\
28927  !*** ./node_modules/moment/locale/tet.js ***!
28928  \*******************************************/
28929/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
28930
28931//! moment.js locale configuration
28932//! locale : Tetun Dili (East Timor) [tet]
28933//! author : Joshua Brooks : https://github.com/joshbrooks
28934//! author : Onorio De J. Afonso : https://github.com/marobo
28935//! author : Sonia Simoes : https://github.com/soniasimoes
28936
28937;(function (global, factory) {
28938    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
28939   0
28940}(this, (function (moment) { 'use strict';
28941
28942    //! moment.js locale configuration
28943
28944    var tet = moment.defineLocale('tet', {
28945        months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(
28946            '_'
28947        ),
28948        monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
28949        weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),
28950        weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),
28951        weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),
28952        longDateFormat: {
28953            LT: 'HH:mm',
28954            LTS: 'HH:mm:ss',
28955            L: 'DD/MM/YYYY',
28956            LL: 'D MMMM YYYY',
28957            LLL: 'D MMMM YYYY HH:mm',
28958            LLLL: 'dddd, D MMMM YYYY HH:mm',
28959        },
28960        calendar: {
28961            sameDay: '[Ohin iha] LT',
28962            nextDay: '[Aban iha] LT',
28963            nextWeek: 'dddd [iha] LT',
28964            lastDay: '[Horiseik iha] LT',
28965            lastWeek: 'dddd [semana kotuk] [iha] LT',
28966            sameElse: 'L',
28967        },
28968        relativeTime: {
28969            future: 'iha %s',
28970            past: '%s liuba',
28971            s: 'segundu balun',
28972            ss: 'segundu %d',
28973            m: 'minutu ida',
28974            mm: 'minutu %d',
28975            h: 'oras ida',
28976            hh: 'oras %d',
28977            d: 'loron ida',
28978            dd: 'loron %d',
28979            M: 'fulan ida',
28980            MM: 'fulan %d',
28981            y: 'tinan ida',
28982            yy: 'tinan %d',
28983        },
28984        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
28985        ordinal: function (number) {
28986            var b = number % 10,
28987                output =
28988                    ~~((number % 100) / 10) === 1
28989                        ? 'th'
28990                        : b === 1
28991                          ? 'st'
28992                          : b === 2
28993                            ? 'nd'
28994                            : b === 3
28995                              ? 'rd'
28996                              : 'th';
28997            return number + output;
28998        },
28999        week: {
29000            dow: 1, // Monday is the first day of the week.
29001            doy: 4, // The week that contains Jan 4th is the first week of the year.
29002        },
29003    });
29004
29005    return tet;
29006
29007})));
29008
29009
29010/***/ }),
29011
vendor: 4,533 bytes, lines 29012-29147
29012/***/ "./node_modules/moment/locale/tg.js":
29013/*!******************************************!*\
29014  !*** ./node_modules/moment/locale/tg.js ***!
29015  \******************************************/
29016/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
29017
29018//! moment.js locale configuration
29019//! locale : Tajik [tg]
29020//! author : Orif N. Jr. : https://github.com/orif-jr
29021
29022;(function (global, factory) {
29023    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
29024   0
29025}(this, (function (moment) { 'use strict';
29026
29027    //! moment.js locale configuration
29028
29029    var suffixes = {
29030        0: '-ум',
29031        1: '-ум',
29032        2: '-юм',
29033        3: '-юм',
29034        4: '-ум',
29035        5: '-ум',
29036        6: '-ум',
29037        7: '-ум',
29038        8: '-ум',
29039        9: '-ум',
29040        10: '-ум',
29041        12: '-ум',
29042        13: '-ум',
29043        20: '-ум',
29044        30: '-юм',
29045        40: '-ум',
29046        50: '-ум',
29047        60: '-ум',
29048        70: '-ум',
29049        80: '-ум',
29050        90: '-ум',
29051        100: '-ум',
29052    };
29053
29054    var tg = moment.defineLocale('tg', {
29055        months: {
29056            format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(
29057                '_'
29058            ),
29059            standalone:
29060                'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
29061                    '_'
29062                ),
29063        },
29064        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
29065        weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(
29066            '_'
29067        ),
29068        weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),
29069        weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),
29070        longDateFormat: {
29071            LT: 'HH:mm',
29072            LTS: 'HH:mm:ss',
29073            L: 'DD.MM.YYYY',
29074            LL: 'D MMMM YYYY',
29075            LLL: 'D MMMM YYYY HH:mm',
29076            LLLL: 'dddd, D MMMM YYYY HH:mm',
29077        },
29078        calendar: {
29079            sameDay: '[Имрӯз соати] LT',
29080            nextDay: '[Фардо соати] LT',
29081            lastDay: '[Дирӯз соати] LT',
29082            nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',
29083            lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',
29084            sameElse: 'L',
29085        },
29086        relativeTime: {
29087            future: 'баъди %s',
29088            past: '%s пеш',
29089            s: 'якчанд сония',
29090            m: 'як дақиқа',
29091            mm: '%d дақиқа',
29092            h: 'як соат',
29093            hh: '%d соат',
29094            d: 'як рӯз',
29095            dd: '%d рӯз',
29096            M: 'як моҳ',
29097            MM: '%d моҳ',
29098            y: 'як сол',
29099            yy: '%d сол',
29100        },
29101        meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,
29102        meridiemHour: function (hour, meridiem) {
29103            if (hour === 12) {
29104                hour = 0;
29105            }
29106            if (meridiem === 'шаб') {
29107                return hour < 4 ? hour : hour + 12;
29108            } else if (meridiem === 'субҳ') {
29109                return hour;
29110            } else if (meridiem === 'рӯз') {
29111                return hour >= 11 ? hour : hour + 12;
29112            } else if (meridiem === 'бегоҳ') {
29113                return hour + 12;
29114            }
29115        },
29116        meridiem: function (hour, minute, isLower) {
29117            if (hour < 4) {
29118                return 'шаб';
29119            } else if (hour < 11) {
29120                return 'субҳ';
29121            } else if (hour < 16) {
29122                return 'рӯз';
29123            } else if (hour < 19) {
29124                return 'бегоҳ';
29125            } else {
29126                return 'шаб';
29127            }
29128        },
29129        dayOfMonthOrdinalParse: /\d{1,2}-(ум|юм)/,
29130        ordinal: function (number) {
29131            var a = number % 10,
29132                b = number >= 100 ? 100 : null;
29133            return number + (suffixes[number] || suffixes[a] || suffixes[b]);
29134        },
29135        week: {
29136            dow: 1, // Monday is the first day of the week.
29137            doy: 7, // The week that contains Jan 1th is the first week of the year.
29138        },
29139    });
29140
29141    return tg;
29142
29143})));
29144
29145
29146/***/ }),
29147
vendor: 3,461 bytes, lines 29148-29231
29148/***/ "./node_modules/moment/locale/th.js":
29149/*!******************************************!*\
29150  !*** ./node_modules/moment/locale/th.js ***!
29151  \******************************************/
29152/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
29153
29154//! moment.js locale configuration
29155//! locale : Thai [th]
29156//! author : Kridsada Thanabulpong : https://github.com/sirn
29157
29158;(function (global, factory) {
29159    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
29160   0
29161}(this, (function (moment) { 'use strict';
29162
29163    //! moment.js locale configuration
29164
29165    var th = moment.defineLocale('th', {
29166        months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(
29167            '_'
29168        ),
29169        monthsShort:
29170            'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(
29171                '_'
29172            ),
29173        monthsParseExact: true,
29174        weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),
29175        weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference
29176        weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
29177        weekdaysParseExact: true,
29178        longDateFormat: {
29179            LT: 'H:mm',
29180            LTS: 'H:mm:ss',
29181            L: 'DD/MM/YYYY',
29182            LL: 'D MMMM YYYY',
29183            LLL: 'D MMMM YYYY เวลา H:mm',
29184            LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',
29185        },
29186        meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
29187        isPM: function (input) {
29188            return input === 'หลังเที่ยง';
29189        },
29190        meridiem: function (hour, minute, isLower) {
29191            if (hour < 12) {
29192                return 'ก่อนเที่ยง';
29193            } else {
29194                return 'หลังเที่ยง';
29195            }
29196        },
29197        calendar: {
29198            sameDay: '[วันนี้ เวลา] LT',
29199            nextDay: '[พรุ่งนี้ เวลา] LT',
29200            nextWeek: 'dddd[หน้า เวลา] LT',
29201            lastDay: '[เมื่อวานนี้ เวลา] LT',
29202            lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',
29203            sameElse: 'L',
29204        },
29205        relativeTime: {
29206            future: 'อีก %s',
29207            past: '%sที่แล้ว',
29208            s: 'ไม่กี่วินาที',
29209            ss: '%d วินาที',
29210            m: '1 นาที',
29211            mm: '%d นาที',
29212            h: '1 ชั่วโมง',
29213            hh: '%d ชั่วโมง',
29214            d: '1 วัน',
29215            dd: '%d วัน',
29216            w: '1 สัปดาห์',
29217            ww: '%d สัปดาห์',
29218            M: '1 เดือน',
29219            MM: '%d เดือน',
29220            y: '1 ปี',
29221            yy: '%d ปี',
29222        },
29223    });
29224
29225    return th;
29226
29227})));
29228
29229
29230/***/ }),
29231
vendor: 3,313 bytes, lines 29232-29341
29232/***/ "./node_modules/moment/locale/tk.js":
29233/*!******************************************!*\
29234  !*** ./node_modules/moment/locale/tk.js ***!
29235  \******************************************/
29236/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
29237
29238//! moment.js locale configuration
29239//! locale : Turkmen [tk]
29240//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy
29241
29242;(function (global, factory) {
29243    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
29244   0
29245}(this, (function (moment) { 'use strict';
29246
29247    //! moment.js locale configuration
29248
29249    var suffixes = {
29250        1: "'inji",
29251        5: "'inji",
29252        8: "'inji",
29253        70: "'inji",
29254        80: "'inji",
29255        2: "'nji",
29256        7: "'nji",
29257        20: "'nji",
29258        50: "'nji",
29259        3: "'ünji",
29260        4: "'ünji",
29261        100: "'ünji",
29262        6: "'njy",
29263        9: "'unjy",
29264        10: "'unjy",
29265        30: "'unjy",
29266        60: "'ynjy",
29267        90: "'ynjy",
29268    };
29269
29270    var tk = moment.defineLocale('tk', {
29271        months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(
29272            '_'
29273        ),
29274        monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),
29275        weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(
29276            '_'
29277        ),
29278        weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),
29279        weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),
29280        longDateFormat: {
29281            LT: 'HH:mm',
29282            LTS: 'HH:mm:ss',
29283            L: 'DD.MM.YYYY',
29284            LL: 'D MMMM YYYY',
29285            LLL: 'D MMMM YYYY HH:mm',
29286            LLLL: 'dddd, D MMMM YYYY HH:mm',
29287        },
29288        calendar: {
29289            sameDay: '[bugün sagat] LT',
29290            nextDay: '[ertir sagat] LT',
29291            nextWeek: '[indiki] dddd [sagat] LT',
29292            lastDay: '[düýn] LT',
29293            lastWeek: '[geçen] dddd [sagat] LT',
29294            sameElse: 'L',
29295        },
29296        relativeTime: {
29297            future: '%s soň',
29298            past: '%s öň',
29299            s: 'birnäçe sekunt',
29300            m: 'bir minut',
29301            mm: '%d minut',
29302            h: 'bir sagat',
29303            hh: '%d sagat',
29304            d: 'bir gün',
29305            dd: '%d gün',
29306            M: 'bir aý',
29307            MM: '%d aý',
29308            y: 'bir ýyl',
29309            yy: '%d ýyl',
29310        },
29311        ordinal: function (number, period) {
29312            switch (period) {
29313                case 'd':
29314                case 'D':
29315                case 'Do':
29316                case 'DD':
29317                    return number;
29318                default:
29319                    if (number === 0) {
29320                        // special case for zero
29321                        return number + "'unjy";
29322                    }
29323                    var a = number % 10,
29324                        b = (number % 100) - a,
29325                        c = number >= 100 ? 100 : null;
29326                    return number + (suffixes[a] || suffixes[b] || suffixes[c]);
29327            }
29328        },
29329        week: {
29330            dow: 1, // Monday is the first day of the week.
29331            doy: 7, // The week that contains Jan 7th is the first week of the year.
29332        },
29333    });
29334
29335    return tk;
29336
29337})));
29338
29339
29340/***/ }),
29341
vendor: 2,444 bytes, lines 29342-29417
29342/***/ "./node_modules/moment/locale/tl-ph.js":
29343/*!*********************************************!*\
29344  !*** ./node_modules/moment/locale/tl-ph.js ***!
29345  \*********************************************/
29346/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
29347
29348//! moment.js locale configuration
29349//! locale : Tagalog (Philippines) [tl-ph]
29350//! author : Dan Hagman : https://github.com/hagmandan
29351
29352;(function (global, factory) {
29353    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
29354   0
29355}(this, (function (moment) { 'use strict';
29356
29357    //! moment.js locale configuration
29358
29359    var tlPh = moment.defineLocale('tl-ph', {
29360        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
29361            '_'
29362        ),
29363        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
29364        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
29365            '_'
29366        ),
29367        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
29368        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
29369        longDateFormat: {
29370            LT: 'HH:mm',
29371            LTS: 'HH:mm:ss',
29372            L: 'MM/D/YYYY',
29373            LL: 'MMMM D, YYYY',
29374            LLL: 'MMMM D, YYYY HH:mm',
29375            LLLL: 'dddd, MMMM DD, YYYY HH:mm',
29376        },
29377        calendar: {
29378            sameDay: 'LT [ngayong araw]',
29379            nextDay: '[Bukas ng] LT',
29380            nextWeek: 'LT [sa susunod na] dddd',
29381            lastDay: 'LT [kahapon]',
29382            lastWeek: 'LT [noong nakaraang] dddd',
29383            sameElse: 'L',
29384        },
29385        relativeTime: {
29386            future: 'sa loob ng %s',
29387            past: '%s ang nakalipas',
29388            s: 'ilang segundo',
29389            ss: '%d segundo',
29390            m: 'isang minuto',
29391            mm: '%d minuto',
29392            h: 'isang oras',
29393            hh: '%d oras',
29394            d: 'isang araw',
29395            dd: '%d araw',
29396            M: 'isang buwan',
29397            MM: '%d buwan',
29398            y: 'isang taon',
29399            yy: '%d taon',
29400        },
29401        dayOfMonthOrdinalParse: /\d{1,2}/,
29402        ordinal: function (number) {
29403            return number;
29404        },
29405        week: {
29406            dow: 1, // Monday is the first day of the week.
29407            doy: 4, // The week that contains Jan 4th is the first week of the year.
29408        },
29409    });
29410
29411    return tlPh;
29412
29413})));
29414
29415
29416/***/ }),
29417
vendor: 4,726 bytes, lines 29418-29560
29418/***/ "./node_modules/moment/locale/tlh.js":
29419/*!*******************************************!*\
29420  !*** ./node_modules/moment/locale/tlh.js ***!
29421  \*******************************************/
29422/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
29423
29424//! moment.js locale configuration
29425//! locale : Klingon [tlh]
29426//! author : Dominika Kruk : https://github.com/amaranthrose
29427
29428;(function (global, factory) {
29429    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
29430   0
29431}(this, (function (moment) { 'use strict';
29432
29433    //! moment.js locale configuration
29434
29435    var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');
29436
29437    function translateFuture(output) {
29438        var time = output;
29439        time =
29440            output.indexOf('jaj') !== -1
29441                ? time.slice(0, -3) + 'leS'
29442                : output.indexOf('jar') !== -1
29443                  ? time.slice(0, -3) + 'waQ'
29444                  : output.indexOf('DIS') !== -1
29445                    ? time.slice(0, -3) + 'nem'
29446                    : time + ' pIq';
29447        return time;
29448    }
29449
29450    function translatePast(output) {
29451        var time = output;
29452        time =
29453            output.indexOf('jaj') !== -1
29454                ? time.slice(0, -3) + 'Hu’'
29455                : output.indexOf('jar') !== -1
29456                  ? time.slice(0, -3) + 'wen'
29457                  : output.indexOf('DIS') !== -1
29458                    ? time.slice(0, -3) + 'ben'
29459                    : time + ' ret';
29460        return time;
29461    }
29462
29463    function translate(number, withoutSuffix, string, isFuture) {
29464        var numberNoun = numberAsNoun(number);
29465        switch (string) {
29466            case 'ss':
29467                return numberNoun + ' lup';
29468            case 'mm':
29469                return numberNoun + ' tup';
29470            case 'hh':
29471                return numberNoun + ' rep';
29472            case 'dd':
29473                return numberNoun + ' jaj';
29474            case 'MM':
29475                return numberNoun + ' jar';
29476            case 'yy':
29477                return numberNoun + ' DIS';
29478        }
29479    }
29480
29481    function numberAsNoun(number) {
29482        var hundred = Math.floor((number % 1000) / 100),
29483            ten = Math.floor((number % 100) / 10),
29484            one = number % 10,
29485            word = '';
29486        if (hundred > 0) {
29487            word += numbersNouns[hundred] + 'vatlh';
29488        }
29489        if (ten > 0) {
29490            word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';
29491        }
29492        if (one > 0) {
29493            word += (word !== '' ? ' ' : '') + numbersNouns[one];
29494        }
29495        return word === '' ? 'pagh' : word;
29496    }
29497
29498    var tlh = moment.defineLocale('tlh', {
29499        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(
29500            '_'
29501        ),
29502        monthsShort:
29503            '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(
29504                '_'
29505            ),
29506        monthsParseExact: true,
29507        weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
29508            '_'
29509        ),
29510        weekdaysShort:
29511            'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
29512        weekdaysMin:
29513            'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
29514        longDateFormat: {
29515            LT: 'HH:mm',
29516            LTS: 'HH:mm:ss',
29517            L: 'DD.MM.YYYY',
29518            LL: 'D MMMM YYYY',
29519            LLL: 'D MMMM YYYY HH:mm',
29520            LLLL: 'dddd, D MMMM YYYY HH:mm',
29521        },
29522        calendar: {
29523            sameDay: '[DaHjaj] LT',
29524            nextDay: '[wa’leS] LT',
29525            nextWeek: 'LLL',
29526            lastDay: '[wa’Hu’] LT',
29527            lastWeek: 'LLL',
29528            sameElse: 'L',
29529        },
29530        relativeTime: {
29531            future: translateFuture,
29532            past: translatePast,
29533            s: 'puS lup',
29534            ss: translate,
29535            m: 'wa’ tup',
29536            mm: translate,
29537            h: 'wa’ rep',
29538            hh: translate,
29539            d: 'wa’ jaj',
29540            dd: translate,
29541            M: 'wa’ jar',
29542            MM: translate,
29543            y: 'wa’ DIS',
29544            yy: translate,
29545        },
29546        dayOfMonthOrdinalParse: /\d{1,2}\./,
29547        ordinal: '%d.',
29548        week: {
29549            dow: 1, // Monday is the first day of the week.
29550            doy: 4, // The week that contains Jan 4th is the first week of the year.
29551        },
29552    });
29553
29554    return tlh;
29555
29556})));
29557
29558
29559/***/ }),
29560
vendor: 3,808 bytes, lines 29561-29685
29561/***/ "./node_modules/moment/locale/tr.js":
29562/*!******************************************!*\
29563  !*** ./node_modules/moment/locale/tr.js ***!
29564  \******************************************/
29565/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
29566
29567//! moment.js locale configuration
29568//! locale : Turkish [tr]
29569//! authors : Erhan Gundogan : https://github.com/erhangundogan,
29570//!           Burak Yiğit Kaya: https://github.com/BYK
29571
29572;(function (global, factory) {
29573    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
29574   0
29575}(this, (function (moment) { 'use strict';
29576
29577    //! moment.js locale configuration
29578
29579    var suffixes = {
29580        1: "'inci",
29581        5: "'inci",
29582        8: "'inci",
29583        70: "'inci",
29584        80: "'inci",
29585        2: "'nci",
29586        7: "'nci",
29587        20: "'nci",
29588        50: "'nci",
29589        3: "'üncü",
29590        4: "'üncü",
29591        100: "'üncü",
29592        6: "'ncı",
29593        9: "'uncu",
29594        10: "'uncu",
29595        30: "'uncu",
29596        60: "'ıncı",
29597        90: "'ıncı",
29598    };
29599
29600    var tr = moment.defineLocale('tr', {
29601        months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(
29602            '_'
29603        ),
29604        monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
29605        weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(
29606            '_'
29607        ),
29608        weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),
29609        weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
29610        meridiem: function (hours, minutes, isLower) {
29611            if (hours < 12) {
29612                return isLower ? 'öö' : 'ÖÖ';
29613            } else {
29614                return isLower ? 'ös' : 'ÖS';
29615            }
29616        },
29617        meridiemParse: /öö|ÖÖ|ös|ÖS/,
29618        isPM: function (input) {
29619            return input === 'ös' || input === 'ÖS';
29620        },
29621        longDateFormat: {
29622            LT: 'HH:mm',
29623            LTS: 'HH:mm:ss',
29624            L: 'DD.MM.YYYY',
29625            LL: 'D MMMM YYYY',
29626            LLL: 'D MMMM YYYY HH:mm',
29627            LLLL: 'dddd, D MMMM YYYY HH:mm',
29628        },
29629        calendar: {
29630            sameDay: '[bugün saat] LT',
29631            nextDay: '[yarın saat] LT',
29632            nextWeek: '[gelecek] dddd [saat] LT',
29633            lastDay: '[dün] LT',
29634            lastWeek: '[geçen] dddd [saat] LT',
29635            sameElse: 'L',
29636        },
29637        relativeTime: {
29638            future: '%s sonra',
29639            past: '%s önce',
29640            s: 'birkaç saniye',
29641            ss: '%d saniye',
29642            m: 'bir dakika',
29643            mm: '%d dakika',
29644            h: 'bir saat',
29645            hh: '%d saat',
29646            d: 'bir gün',
29647            dd: '%d gün',
29648            w: 'bir hafta',
29649            ww: '%d hafta',
29650            M: 'bir ay',
29651            MM: '%d ay',
29652            y: 'bir yıl',
29653            yy: '%d yıl',
29654        },
29655        ordinal: function (number, period) {
29656            switch (period) {
29657                case 'd':
29658                case 'D':
29659                case 'Do':
29660                case 'DD':
29661                    return number;
29662                default:
29663                    if (number === 0) {
29664                        // special case for zero
29665                        return number + "'ıncı";
29666                    }
29667                    var a = number % 10,
29668                        b = (number % 100) - a,
29669                        c = number >= 100 ? 100 : null;
29670                    return number + (suffixes[a] || suffixes[b] || suffixes[c]);
29671            }
29672        },
29673        week: {
29674            dow: 1, // Monday is the first day of the week.
29675            doy: 7, // The week that contains Jan 7th is the first week of the year.
29676        },
29677    });
29678
29679    return tr;
29680
29681})));
29682
29683
29684/***/ }),
29685
vendor: 3,932 bytes, lines 29686-29793
29686/***/ "./node_modules/moment/locale/tzl.js":
29687/*!*******************************************!*\
29688  !*** ./node_modules/moment/locale/tzl.js ***!
29689  \*******************************************/
29690/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
29691
29692//! moment.js locale configuration
29693//! locale : Talossan [tzl]
29694//! author : Robin van der Vliet : https://github.com/robin0van0der0v
29695//! author : Iustì Canun
29696
29697;(function (global, factory) {
29698    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
29699   0
29700}(this, (function (moment) { 'use strict';
29701
29702    //! moment.js locale configuration
29703
29704    // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.
29705    // This is currently too difficult (maybe even impossible) to add.
29706    var tzl = moment.defineLocale('tzl', {
29707        months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(
29708            '_'
29709        ),
29710        monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),
29711        weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),
29712        weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),
29713        weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),
29714        longDateFormat: {
29715            LT: 'HH.mm',
29716            LTS: 'HH.mm.ss',
29717            L: 'DD.MM.YYYY',
29718            LL: 'D. MMMM [dallas] YYYY',
29719            LLL: 'D. MMMM [dallas] YYYY HH.mm',
29720            LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',
29721        },
29722        meridiemParse: /d\'o|d\'a/i,
29723        isPM: function (input) {
29724            return "d'o" === input.toLowerCase();
29725        },
29726        meridiem: function (hours, minutes, isLower) {
29727            if (hours > 11) {
29728                return isLower ? "d'o" : "D'O";
29729            } else {
29730                return isLower ? "d'a" : "D'A";
29731            }
29732        },
29733        calendar: {
29734            sameDay: '[oxhi à] LT',
29735            nextDay: '[demà à] LT',
29736            nextWeek: 'dddd [à] LT',
29737            lastDay: '[ieiri à] LT',
29738            lastWeek: '[sür el] dddd [lasteu à] LT',
29739            sameElse: 'L',
29740        },
29741        relativeTime: {
29742            future: 'osprei %s',
29743            past: 'ja%s',
29744            s: processRelativeTime,
29745            ss: processRelativeTime,
29746            m: processRelativeTime,
29747            mm: processRelativeTime,
29748            h: processRelativeTime,
29749            hh: processRelativeTime,
29750            d: processRelativeTime,
29751            dd: processRelativeTime,
29752            M: processRelativeTime,
29753            MM: processRelativeTime,
29754            y: processRelativeTime,
29755            yy: processRelativeTime,
29756        },
29757        dayOfMonthOrdinalParse: /\d{1,2}\./,
29758        ordinal: '%d.',
29759        week: {
29760            dow: 1, // Monday is the first day of the week.
29761            doy: 4, // The week that contains Jan 4th is the first week of the year.
29762        },
29763    });
29764
29765    function processRelativeTime(number, withoutSuffix, key, isFuture) {
29766        var format = {
29767            s: ['viensas secunds', "'iensas secunds"],
29768            ss: [number + ' secunds', '' + number + ' secunds'],
29769            m: ["'n míut", "'iens míut"],
29770            mm: [number + ' míuts', '' + number + ' míuts'],
29771            h: ["'n þora", "'iensa þora"],
29772            hh: [number + ' þoras', '' + number + ' þoras'],
29773            d: ["'n ziua", "'iensa ziua"],
29774            dd: [number + ' ziuas', '' + number + ' ziuas'],
29775            M: ["'n mes", "'iens mes"],
29776            MM: [number + ' mesen', '' + number + ' mesen'],
29777            y: ["'n ar", "'iens ar"],
29778            yy: [number + ' ars', '' + number + ' ars'],
29779        };
29780        return isFuture
29781            ? format[key][0]
29782            : withoutSuffix
29783              ? format[key][0]
29784              : format[key][1];
29785    }
29786
29787    return tzl;
29788
29789})));
29790
29791
29792/***/ }),
29793
vendor: 2,406 bytes, lines 29794-29866
29794/***/ "./node_modules/moment/locale/tzm-latn.js":
29795/*!************************************************!*\
29796  !*** ./node_modules/moment/locale/tzm-latn.js ***!
29797  \************************************************/
29798/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
29799
29800//! moment.js locale configuration
29801//! locale : Central Atlas Tamazight Latin [tzm-latn]
29802//! author : Abdel Said : https://github.com/abdelsaid
29803
29804;(function (global, factory) {
29805    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
29806   0
29807}(this, (function (moment) { 'use strict';
29808
29809    //! moment.js locale configuration
29810
29811    var tzmLatn = moment.defineLocale('tzm-latn', {
29812        months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
29813            '_'
29814        ),
29815        monthsShort:
29816            'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
29817                '_'
29818            ),
29819        weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
29820        weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
29821        weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
29822        longDateFormat: {
29823            LT: 'HH:mm',
29824            LTS: 'HH:mm:ss',
29825            L: 'DD/MM/YYYY',
29826            LL: 'D MMMM YYYY',
29827            LLL: 'D MMMM YYYY HH:mm',
29828            LLLL: 'dddd D MMMM YYYY HH:mm',
29829        },
29830        calendar: {
29831            sameDay: '[asdkh g] LT',
29832            nextDay: '[aska g] LT',
29833            nextWeek: 'dddd [g] LT',
29834            lastDay: '[assant g] LT',
29835            lastWeek: 'dddd [g] LT',
29836            sameElse: 'L',
29837        },
29838        relativeTime: {
29839            future: 'dadkh s yan %s',
29840            past: 'yan %s',
29841            s: 'imik',
29842            ss: '%d imik',
29843            m: 'minuḍ',
29844            mm: '%d minuḍ',
29845            h: 'saɛa',
29846            hh: '%d tassaɛin',
29847            d: 'ass',
29848            dd: '%d ossan',
29849            M: 'ayowr',
29850            MM: '%d iyyirn',
29851            y: 'asgas',
29852            yy: '%d isgasn',
29853        },
29854        week: {
29855            dow: 6, // Saturday is the first day of the week.
29856            doy: 12, // The week that contains Jan 12th is the first week of the year.
29857        },
29858    });
29859
29860    return tzmLatn;
29861
29862})));
29863
29864
29865/***/ }),
29866
vendor: 3,009 bytes, lines 29867-29939
29867/***/ "./node_modules/moment/locale/tzm.js":
29868/*!*******************************************!*\
29869  !*** ./node_modules/moment/locale/tzm.js ***!
29870  \*******************************************/
29871/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
29872
29873//! moment.js locale configuration
29874//! locale : Central Atlas Tamazight [tzm]
29875//! author : Abdel Said : https://github.com/abdelsaid
29876
29877;(function (global, factory) {
29878    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
29879   0
29880}(this, (function (moment) { 'use strict';
29881
29882    //! moment.js locale configuration
29883
29884    var tzm = moment.defineLocale('tzm', {
29885        months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
29886            '_'
29887        ),
29888        monthsShort:
29889            'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
29890                '_'
29891            ),
29892        weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
29893        weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
29894        weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
29895        longDateFormat: {
29896            LT: 'HH:mm',
29897            LTS: 'HH:mm:ss',
29898            L: 'DD/MM/YYYY',
29899            LL: 'D MMMM YYYY',
29900            LLL: 'D MMMM YYYY HH:mm',
29901            LLLL: 'dddd D MMMM YYYY HH:mm',
29902        },
29903        calendar: {
29904            sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',
29905            nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
29906            nextWeek: 'dddd [â´´] LT',
29907            lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',
29908            lastWeek: 'dddd [â´´] LT',
29909            sameElse: 'L',
29910        },
29911        relativeTime: {
29912            future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',
29913            past: 'ⵢⴰⵏ %s',
29914            s: 'ⵉⵎⵉⴽ',
29915            ss: '%d ⵉⵎⵉⴽ',
29916            m: 'ⵎⵉⵏⵓⴺ',
29917            mm: '%d ⵎⵉⵏⵓⴺ',
29918            h: 'ⵙⴰⵄⴰ',
29919            hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',
29920            d: 'ⴰⵙⵙ',
29921            dd: '%d oⵙⵙⴰⵏ',
29922            M: 'ⴰⵢoⵓⵔ',
29923            MM: '%d ⵉⵢⵢⵉⵔⵏ',
29924            y: 'ⴰⵙⴳⴰⵙ',
29925            yy: '%d ⵉⵙⴳⴰⵙⵏ',
29926        },
29927        week: {
29928            dow: 6, // Saturday is the first day of the week.
29929            doy: 12, // The week that contains Jan 12th is the first week of the year.
29930        },
29931    });
29932
29933    return tzm;
29934
29935})));
29936
29937
29938/***/ }),
29939
vendor: 4,801 bytes, lines 29940-30069
29940/***/ "./node_modules/moment/locale/ug-cn.js":
29941/*!*********************************************!*\
29942  !*** ./node_modules/moment/locale/ug-cn.js ***!
29943  \*********************************************/
29944/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
29945
29946//! moment.js locale configuration
29947//! locale : Uyghur (China) [ug-cn]
29948//! author: boyaq : https://github.com/boyaq
29949
29950;(function (global, factory) {
29951    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
29952   0
29953}(this, (function (moment) { 'use strict';
29954
29955    //! moment.js locale configuration
29956
29957    var ugCn = moment.defineLocale('ug-cn', {
29958        months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
29959            '_'
29960        ),
29961        monthsShort:
29962            'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
29963                '_'
29964            ),
29965        weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(
29966            '_'
29967        ),
29968        weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
29969        weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
29970        longDateFormat: {
29971            LT: 'HH:mm',
29972            LTS: 'HH:mm:ss',
29973            L: 'YYYY-MM-DD',
29974            LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',
29975            LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
29976            LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
29977        },
29978        meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,
29979        meridiemHour: function (hour, meridiem) {
29980            if (hour === 12) {
29981                hour = 0;
29982            }
29983            if (
29984                meridiem === 'يېرىم كېچە' ||
29985                meridiem === 'سەھەر' ||
29986                meridiem === 'چۈشتىن بۇرۇن'
29987            ) {
29988                return hour;
29989            } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {
29990                return hour + 12;
29991            } else {
29992                return hour >= 11 ? hour : hour + 12;
29993            }
29994        },
29995        meridiem: function (hour, minute, isLower) {
29996            var hm = hour * 100 + minute;
29997            if (hm < 600) {
29998                return 'يېرىم كېچە';
29999            } else if (hm < 900) {
30000                return 'سەھەر';
30001            } else if (hm < 1130) {
30002                return 'چۈشتىن بۇرۇن';
30003            } else if (hm < 1230) {
30004                return 'چۈش';
30005            } else if (hm < 1800) {
30006                return 'چۈشتىن كېيىن';
30007            } else {
30008                return 'كەچ';
30009            }
30010        },
30011        calendar: {
30012            sameDay: '[بۈگۈن سائەت] LT',
30013            nextDay: '[ئەتە سائەت] LT',
30014            nextWeek: '[كېلەركى] dddd [سائەت] LT',
30015            lastDay: '[تۆنۈگۈن] LT',
30016            lastWeek: '[ئالدىنقى] dddd [سائەت] LT',
30017            sameElse: 'L',
30018        },
30019        relativeTime: {
30020            future: '%s كېيىن',
30021            past: '%s بۇرۇن',
30022            s: 'نەچچە سېكونت',
30023            ss: '%d سېكونت',
30024            m: 'بىر مىنۇت',
30025            mm: '%d مىنۇت',
30026            h: 'بىر سائەت',
30027            hh: '%d سائەت',
30028            d: 'بىر كۈن',
30029            dd: '%d كۈن',
30030            M: 'بىر ئاي',
30031            MM: '%d ئاي',
30032            y: 'بىر يىل',
30033            yy: '%d يىل',
30034        },
30035
30036        dayOfMonthOrdinalParse: /\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,
30037        ordinal: function (number, period) {
30038            switch (period) {
30039                case 'd':
30040                case 'D':
30041                case 'DDD':
30042                    return number + '-كۈنى';
30043                case 'w':
30044                case 'W':
30045                    return number + '-ھەپتە';
30046                default:
30047                    return number;
30048            }
30049        },
30050        preparse: function (string) {
30051            return string.replace(/،/g, ',');
30052        },
30053        postformat: function (string) {
30054            return string.replace(/,/g, '،');
30055        },
30056        week: {
30057            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
30058            dow: 1, // Monday is the first day of the week.
30059            doy: 7, // The week that contains Jan 1st is the first week of the year.
30060        },
30061    });
30062
30063    return ugCn;
30064
30065})));
30066
30067
30068/***/ }),
30069
vendor: 7,080 bytes, lines 30070-30255
30070/***/ "./node_modules/moment/locale/uk.js":
30071/*!******************************************!*\
30072  !*** ./node_modules/moment/locale/uk.js ***!
30073  \******************************************/
30074/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
30075
30076//! moment.js locale configuration
30077//! locale : Ukrainian [uk]
30078//! author : zemlanin : https://github.com/zemlanin
30079//! Author : Menelion Elensúle : https://github.com/Oire
30080
30081;(function (global, factory) {
30082    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
30083   0
30084}(this, (function (moment) { 'use strict';
30085
30086    //! moment.js locale configuration
30087
30088    function plural(word, num) {
30089        var forms = word.split('_');
30090        return num % 10 === 1 && num % 100 !== 11
30091            ? forms[0]
30092            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
30093              ? forms[1]
30094              : forms[2];
30095    }
30096    function relativeTimeWithPlural(number, withoutSuffix, key) {
30097        var format = {
30098            ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',
30099            mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',
30100            hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',
30101            dd: 'день_дні_днів',
30102            MM: 'місяць_місяці_місяців',
30103            yy: 'рік_роки_років',
30104        };
30105        if (key === 'm') {
30106            return withoutSuffix ? 'хвилина' : 'хвилину';
30107        } else if (key === 'h') {
30108            return withoutSuffix ? 'година' : 'годину';
30109        } else {
30110            return number + ' ' + plural(format[key], +number);
30111        }
30112    }
30113    function weekdaysCaseReplace(m, format) {
30114        var weekdays = {
30115                nominative:
30116                    'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(
30117                        '_'
30118                    ),
30119                accusative:
30120                    'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(
30121                        '_'
30122                    ),
30123                genitive:
30124                    'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(
30125                        '_'
30126                    ),
30127            },
30128            nounCase;
30129
30130        if (m === true) {
30131            return weekdays['nominative']
30132                .slice(1, 7)
30133                .concat(weekdays['nominative'].slice(0, 1));
30134        }
30135        if (!m) {
30136            return weekdays['nominative'];
30137        }
30138
30139        nounCase = /(\[[ВвУу]\]) ?dddd/.test(format)
30140            ? 'accusative'
30141            : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format)
30142              ? 'genitive'
30143              : 'nominative';
30144        return weekdays[nounCase][m.day()];
30145    }
30146    function processHoursFunction(str) {
30147        return function () {
30148            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
30149        };
30150    }
30151
30152    var uk = moment.defineLocale('uk', {
30153        months: {
30154            format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(
30155                '_'
30156            ),
30157            standalone:
30158                'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(
30159                    '_'
30160                ),
30161        },
30162        monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(
30163            '_'
30164        ),
30165        weekdays: weekdaysCaseReplace,
30166        weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
30167        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
30168        longDateFormat: {
30169            LT: 'HH:mm',
30170            LTS: 'HH:mm:ss',
30171            L: 'DD.MM.YYYY',
30172            LL: 'D MMMM YYYY р.',
30173            LLL: 'D MMMM YYYY р., HH:mm',
30174            LLLL: 'dddd, D MMMM YYYY р., HH:mm',
30175        },
30176        calendar: {
30177            sameDay: processHoursFunction('[Сьогодні '),
30178            nextDay: processHoursFunction('[Завтра '),
30179            lastDay: processHoursFunction('[Вчора '),
30180            nextWeek: processHoursFunction('[У] dddd ['),
30181            lastWeek: function () {
30182                switch (this.day()) {
30183                    case 0:
30184                    case 3:
30185                    case 5:
30186                    case 6:
30187                        return processHoursFunction('[Минулої] dddd [').call(this);
30188                    case 1:
30189                    case 2:
30190                    case 4:
30191                        return processHoursFunction('[Минулого] dddd [').call(this);
30192                }
30193            },
30194            sameElse: 'L',
30195        },
30196        relativeTime: {
30197            future: 'за %s',
30198            past: '%s тому',
30199            s: 'декілька секунд',
30200            ss: relativeTimeWithPlural,
30201            m: relativeTimeWithPlural,
30202            mm: relativeTimeWithPlural,
30203            h: 'годину',
30204            hh: relativeTimeWithPlural,
30205            d: 'день',
30206            dd: relativeTimeWithPlural,
30207            M: 'місяць',
30208            MM: relativeTimeWithPlural,
30209            y: 'рік',
30210            yy: relativeTimeWithPlural,
30211        },
30212        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
30213        meridiemParse: /ночі|ранку|дня|вечора/,
30214        isPM: function (input) {
30215            return /^(дня|вечора)$/.test(input);
30216        },
30217        meridiem: function (hour, minute, isLower) {
30218            if (hour < 4) {
30219                return 'ночі';
30220            } else if (hour < 12) {
30221                return 'ранку';
30222            } else if (hour < 17) {
30223                return 'дня';
30224            } else {
30225                return 'вечора';
30226            }
30227        },
30228        dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/,
30229        ordinal: function (number, period) {
30230            switch (period) {
30231                case 'M':
30232                case 'd':
30233                case 'DDD':
30234                case 'w':
30235                case 'W':
30236                    return number + '-й';
30237                case 'D':
30238                    return number + '-го';
30239                default:
30240                    return number;
30241            }
30242        },
30243        week: {
30244            dow: 1, // Monday is the first day of the week.
30245            doy: 7, // The week that contains Jan 7th is the first week of the year.
30246        },
30247    });
30248
30249    return uk;
30250
30251})));
30252
30253
30254/***/ }),
30255
vendor: 2,985 bytes, lines 30256-30356
30256/***/ "./node_modules/moment/locale/ur.js":
30257/*!******************************************!*\
30258  !*** ./node_modules/moment/locale/ur.js ***!
30259  \******************************************/
30260/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
30261
30262//! moment.js locale configuration
30263//! locale : Urdu [ur]
30264//! author : Sawood Alam : https://github.com/ibnesayeed
30265//! author : Zack : https://github.com/ZackVision
30266
30267;(function (global, factory) {
30268    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
30269   0
30270}(this, (function (moment) { 'use strict';
30271
30272    //! moment.js locale configuration
30273
30274    var months = [
30275            'جنوری',
30276            'فروری',
30277            'مارچ',
30278            'اپریل',
30279            'مئی',
30280            'جون',
30281            'جولائی',
30282            'اگست',
30283            'ستمبر',
30284            'اکتوبر',
30285            'نومبر',
30286            'دسمبر',
30287        ],
30288        days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];
30289
30290    var ur = moment.defineLocale('ur', {
30291        months: months,
30292        monthsShort: months,
30293        weekdays: days,
30294        weekdaysShort: days,
30295        weekdaysMin: days,
30296        longDateFormat: {
30297            LT: 'HH:mm',
30298            LTS: 'HH:mm:ss',
30299            L: 'DD/MM/YYYY',
30300            LL: 'D MMMM YYYY',
30301            LLL: 'D MMMM YYYY HH:mm',
30302            LLLL: 'dddd، D MMMM YYYY HH:mm',
30303        },
30304        meridiemParse: /صبح|شام/,
30305        isPM: function (input) {
30306            return 'شام' === input;
30307        },
30308        meridiem: function (hour, minute, isLower) {
30309            if (hour < 12) {
30310                return 'صبح';
30311            }
30312            return 'شام';
30313        },
30314        calendar: {
30315            sameDay: '[آج بوقت] LT',
30316            nextDay: '[کل بوقت] LT',
30317            nextWeek: 'dddd [بوقت] LT',
30318            lastDay: '[گذشتہ روز بوقت] LT',
30319            lastWeek: '[گذشتہ] dddd [بوقت] LT',
30320            sameElse: 'L',
30321        },
30322        relativeTime: {
30323            future: '%s بعد',
30324            past: '%s قبل',
30325            s: 'چند سیکنڈ',
30326            ss: '%d سیکنڈ',
30327            m: 'ایک منٹ',
30328            mm: '%d منٹ',
30329            h: 'ایک گھنٹہ',
30330            hh: '%d گھنٹے',
30331            d: 'ایک دن',
30332            dd: '%d دن',
30333            M: 'ایک ماہ',
30334            MM: '%d ماہ',
30335            y: 'ایک سال',
30336            yy: '%d سال',
30337        },
30338        preparse: function (string) {
30339            return string.replace(/،/g, ',');
30340        },
30341        postformat: function (string) {
30342            return string.replace(/,/g, '،');
30343        },
30344        week: {
30345            dow: 1, // Monday is the first day of the week.
30346            doy: 4, // The week that contains Jan 4th is the first week of the year.
30347        },
30348    });
30349
30350    return ur;
30351
30352})));
30353
30354
30355/***/ }),
30356
vendor: 2,348 bytes, lines 30357-30429
30357/***/ "./node_modules/moment/locale/uz-latn.js":
30358/*!***********************************************!*\
30359  !*** ./node_modules/moment/locale/uz-latn.js ***!
30360  \***********************************************/
30361/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
30362
30363//! moment.js locale configuration
30364//! locale : Uzbek Latin [uz-latn]
30365//! author : Rasulbek Mirzayev : github.com/Rasulbeeek
30366
30367;(function (global, factory) {
30368    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
30369   0
30370}(this, (function (moment) { 'use strict';
30371
30372    //! moment.js locale configuration
30373
30374    var uzLatn = moment.defineLocale('uz-latn', {
30375        months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(
30376            '_'
30377        ),
30378        monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),
30379        weekdays:
30380            'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(
30381                '_'
30382            ),
30383        weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),
30384        weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),
30385        longDateFormat: {
30386            LT: 'HH:mm',
30387            LTS: 'HH:mm:ss',
30388            L: 'DD/MM/YYYY',
30389            LL: 'D MMMM YYYY',
30390            LLL: 'D MMMM YYYY HH:mm',
30391            LLLL: 'D MMMM YYYY, dddd HH:mm',
30392        },
30393        calendar: {
30394            sameDay: '[Bugun soat] LT [da]',
30395            nextDay: '[Ertaga] LT [da]',
30396            nextWeek: 'dddd [kuni soat] LT [da]',
30397            lastDay: '[Kecha soat] LT [da]',
30398            lastWeek: "[O'tgan] dddd [kuni soat] LT [da]",
30399            sameElse: 'L',
30400        },
30401        relativeTime: {
30402            future: 'Yaqin %s ichida',
30403            past: 'Bir necha %s oldin',
30404            s: 'soniya',
30405            ss: '%d soniya',
30406            m: 'bir daqiqa',
30407            mm: '%d daqiqa',
30408            h: 'bir soat',
30409            hh: '%d soat',
30410            d: 'bir kun',
30411            dd: '%d kun',
30412            M: 'bir oy',
30413            MM: '%d oy',
30414            y: 'bir yil',
30415            yy: '%d yil',
30416        },
30417        week: {
30418            dow: 1, // Monday is the first day of the week.
30419            doy: 7, // The week that contains Jan 7th is the first week of the year.
30420        },
30421    });
30422
30423    return uzLatn;
30424
30425})));
30426
30427
30428/***/ }),
30429
vendor: 2,554 bytes, lines 30430-30499
30430/***/ "./node_modules/moment/locale/uz.js":
30431/*!******************************************!*\
30432  !*** ./node_modules/moment/locale/uz.js ***!
30433  \******************************************/
30434/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
30435
30436//! moment.js locale configuration
30437//! locale : Uzbek [uz]
30438//! author : Sardor Muminov : https://github.com/muminoff
30439
30440;(function (global, factory) {
30441    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
30442   0
30443}(this, (function (moment) { 'use strict';
30444
30445    //! moment.js locale configuration
30446
30447    var uz = moment.defineLocale('uz', {
30448        months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
30449            '_'
30450        ),
30451        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
30452        weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
30453        weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),
30454        weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
30455        longDateFormat: {
30456            LT: 'HH:mm',
30457            LTS: 'HH:mm:ss',
30458            L: 'DD/MM/YYYY',
30459            LL: 'D MMMM YYYY',
30460            LLL: 'D MMMM YYYY HH:mm',
30461            LLLL: 'D MMMM YYYY, dddd HH:mm',
30462        },
30463        calendar: {
30464            sameDay: '[Бугун соат] LT [да]',
30465            nextDay: '[Эртага] LT [да]',
30466            nextWeek: 'dddd [куни соат] LT [да]',
30467            lastDay: '[Кеча соат] LT [да]',
30468            lastWeek: '[Утган] dddd [куни соат] LT [да]',
30469            sameElse: 'L',
30470        },
30471        relativeTime: {
30472            future: 'Якин %s ичида',
30473            past: 'Бир неча %s олдин',
30474            s: 'фурсат',
30475            ss: '%d фурсат',
30476            m: 'бир дакика',
30477            mm: '%d дакика',
30478            h: 'бир соат',
30479            hh: '%d соат',
30480            d: 'бир кун',
30481            dd: '%d кун',
30482            M: 'бир ой',
30483            MM: '%d ой',
30484            y: 'бир йил',
30485            yy: '%d йил',
30486        },
30487        week: {
30488            dow: 1, // Monday is the first day of the week.
30489            doy: 7, // The week that contains Jan 4th is the first week of the year.
30490        },
30491    });
30492
30493    return uz;
30494
30495})));
30496
30497
30498/***/ }),
30499
vendor: 3,211 bytes, lines 30500-30598
30500/***/ "./node_modules/moment/locale/vi.js":
30501/*!******************************************!*\
30502  !*** ./node_modules/moment/locale/vi.js ***!
30503  \******************************************/
30504/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
30505
30506//! moment.js locale configuration
30507//! locale : Vietnamese [vi]
30508//! author : Bang Nguyen : https://github.com/bangnk
30509//! author : Chien Kira : https://github.com/chienkira
30510
30511;(function (global, factory) {
30512    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
30513   0
30514}(this, (function (moment) { 'use strict';
30515
30516    //! moment.js locale configuration
30517
30518    var vi = moment.defineLocale('vi', {
30519        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(
30520            '_'
30521        ),
30522        monthsShort:
30523            '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(
30524                '_'
30525            ),
30526        monthsParseExact: true,
30527        weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(
30528            '_'
30529        ),
30530        weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
30531        weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
30532        weekdaysParseExact: true,
30533        meridiemParse: /sa|ch/i,
30534        isPM: function (input) {
30535            return /^ch$/i.test(input);
30536        },
30537        meridiem: function (hours, minutes, isLower) {
30538            if (hours < 12) {
30539                return isLower ? 'sa' : 'SA';
30540            } else {
30541                return isLower ? 'ch' : 'CH';
30542            }
30543        },
30544        longDateFormat: {
30545            LT: 'HH:mm',
30546            LTS: 'HH:mm:ss',
30547            L: 'DD/MM/YYYY',
30548            LL: 'D MMMM [năm] YYYY',
30549            LLL: 'D MMMM [năm] YYYY HH:mm',
30550            LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',
30551            l: 'DD/M/YYYY',
30552            ll: 'D MMM YYYY',
30553            lll: 'D MMM YYYY HH:mm',
30554            llll: 'ddd, D MMM YYYY HH:mm',
30555        },
30556        calendar: {
30557            sameDay: '[Hôm nay lúc] LT',
30558            nextDay: '[Ngày mai lúc] LT',
30559            nextWeek: 'dddd [tuần tới lúc] LT',
30560            lastDay: '[Hôm qua lúc] LT',
30561            lastWeek: 'dddd [tuần trước lúc] LT',
30562            sameElse: 'L',
30563        },
30564        relativeTime: {
30565            future: '%s tới',
30566            past: '%s trước',
30567            s: 'vài giây',
30568            ss: '%d giây',
30569            m: 'một phút',
30570            mm: '%d phút',
30571            h: 'một giờ',
30572            hh: '%d giờ',
30573            d: 'một ngày',
30574            dd: '%d ngày',
30575            w: 'một tuần',
30576            ww: '%d tuần',
30577            M: 'một tháng',
30578            MM: '%d tháng',
30579            y: 'một năm',
30580            yy: '%d năm',
30581        },
30582        dayOfMonthOrdinalParse: /\d{1,2}/,
30583        ordinal: function (number) {
30584            return number;
30585        },
30586        week: {
30587            dow: 1, // Monday is the first day of the week.
30588            doy: 4, // The week that contains Jan 4th is the first week of the year.
30589        },
30590    });
30591
30592    return vi;
30593
30594})));
30595
30596
30597/***/ }),
30598
vendor: 3,163 bytes, lines 30599-30690
30599/***/ "./node_modules/moment/locale/x-pseudo.js":
30600/*!************************************************!*\
30601  !*** ./node_modules/moment/locale/x-pseudo.js ***!
30602  \************************************************/
30603/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
30604
30605//! moment.js locale configuration
30606//! locale : Pseudo [x-pseudo]
30607//! author : Andrew Hood : https://github.com/andrewhood125
30608
30609;(function (global, factory) {
30610    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
30611   0
30612}(this, (function (moment) { 'use strict';
30613
30614    //! moment.js locale configuration
30615
30616    var xPseudo = moment.defineLocale('x-pseudo', {
30617        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(
30618            '_'
30619        ),
30620        monthsShort:
30621            'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(
30622                '_'
30623            ),
30624        monthsParseExact: true,
30625        weekdays:
30626            'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(
30627                '_'
30628            ),
30629        weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),
30630        weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),
30631        weekdaysParseExact: true,
30632        longDateFormat: {
30633            LT: 'HH:mm',
30634            L: 'DD/MM/YYYY',
30635            LL: 'D MMMM YYYY',
30636            LLL: 'D MMMM YYYY HH:mm',
30637            LLLL: 'dddd, D MMMM YYYY HH:mm',
30638        },
30639        calendar: {
30640            sameDay: '[T~ódá~ý át] LT',
30641            nextDay: '[T~ómó~rró~w át] LT',
30642            nextWeek: 'dddd [át] LT',
30643            lastDay: '[Ý~ést~érdá~ý át] LT',
30644            lastWeek: '[L~ást] dddd [át] LT',
30645            sameElse: 'L',
30646        },
30647        relativeTime: {
30648            future: 'í~ñ %s',
30649            past: '%s á~gó',
30650            s: 'á ~féw ~sécó~ñds',
30651            ss: '%d s~écóñ~ds',
30652            m: 'á ~míñ~úté',
30653            mm: '%d m~íñú~tés',
30654            h: 'á~ñ hó~úr',
30655            hh: '%d h~óúrs',
30656            d: 'á ~dáý',
30657            dd: '%d d~áýs',
30658            M: 'á ~móñ~th',
30659            MM: '%d m~óñt~hs',
30660            y: 'á ~ýéár',
30661            yy: '%d ý~éárs',
30662        },
30663        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
30664        ordinal: function (number) {
30665            var b = number % 10,
30666                output =
30667                    ~~((number % 100) / 10) === 1
30668                        ? 'th'
30669                        : b === 1
30670                          ? 'st'
30671                          : b === 2
30672                            ? 'nd'
30673                            : b === 3
30674                              ? 'rd'
30675                              : 'th';
30676            return number + output;
30677        },
30678        week: {
30679            dow: 1, // Monday is the first day of the week.
30680            doy: 4, // The week that contains Jan 4th is the first week of the year.
30681        },
30682    });
30683
30684    return xPseudo;
30685
30686})));
30687
30688
30689/***/ }),
30690
vendor: 2,564 bytes, lines 30691-30762
30691/***/ "./node_modules/moment/locale/yo.js":
30692/*!******************************************!*\
30693  !*** ./node_modules/moment/locale/yo.js ***!
30694  \******************************************/
30695/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
30696
30697//! moment.js locale configuration
30698//! locale : Yoruba Nigeria [yo]
30699//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe
30700
30701;(function (global, factory) {
30702    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
30703   0
30704}(this, (function (moment) { 'use strict';
30705
30706    //! moment.js locale configuration
30707
30708    var yo = moment.defineLocale('yo', {
30709        months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(
30710            '_'
30711        ),
30712        monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),
30713        weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),
30714        weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),
30715        weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),
30716        longDateFormat: {
30717            LT: 'h:mm A',
30718            LTS: 'h:mm:ss A',
30719            L: 'DD/MM/YYYY',
30720            LL: 'D MMMM YYYY',
30721            LLL: 'D MMMM YYYY h:mm A',
30722            LLLL: 'dddd, D MMMM YYYY h:mm A',
30723        },
30724        calendar: {
30725            sameDay: '[Ònì ni] LT',
30726            nextDay: '[Ọ̀la ni] LT',
30727            nextWeek: "dddd [Ọsẹ̀ tón'bọ] [ni] LT",
30728            lastDay: '[Àna ni] LT',
30729            lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',
30730            sameElse: 'L',
30731        },
30732        relativeTime: {
30733            future: 'ní %s',
30734            past: '%s kọjá',
30735            s: 'ìsẹjú aayá die',
30736            ss: 'aayá %d',
30737            m: 'ìsẹjú kan',
30738            mm: 'ìsẹjú %d',
30739            h: 'wákati kan',
30740            hh: 'wákati %d',
30741            d: 'ọjọ́ kan',
30742            dd: 'ọjọ́ %d',
30743            M: 'osù kan',
30744            MM: 'osù %d',
30745            y: 'ọdún kan',
30746            yy: 'ọdún %d',
30747        },
30748        dayOfMonthOrdinalParse: /ọjọ́\s\d{1,2}/,
30749        ordinal: 'ọjọ́ %d',
30750        week: {
30751            dow: 1, // Monday is the first day of the week.
30752            doy: 4, // The week that contains Jan 4th is the first week of the year.
30753        },
30754    });
30755
30756    return yo;
30757
30758})));
30759
30760
30761/***/ }),
30762
vendor: 4,664 bytes, lines 30763-30901
30763/***/ "./node_modules/moment/locale/zh-cn.js":
30764/*!*********************************************!*\
30765  !*** ./node_modules/moment/locale/zh-cn.js ***!
30766  \*********************************************/
30767/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
30768
30769//! moment.js locale configuration
30770//! locale : Chinese (China) [zh-cn]
30771//! author : suupic : https://github.com/suupic
30772//! author : Zeno Zeng : https://github.com/zenozeng
30773//! author : uu109 : https://github.com/uu109
30774
30775;(function (global, factory) {
30776    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
30777   0
30778}(this, (function (moment) { 'use strict';
30779
30780    //! moment.js locale configuration
30781
30782    var zhCn = moment.defineLocale('zh-cn', {
30783        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
30784            '_'
30785        ),
30786        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
30787            '_'
30788        ),
30789        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
30790        weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
30791        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
30792        longDateFormat: {
30793            LT: 'HH:mm',
30794            LTS: 'HH:mm:ss',
30795            L: 'YYYY/MM/DD',
30796            LL: 'YYYY年M月D日',
30797            LLL: 'YYYY年M月D日Ah点mm分',
30798            LLLL: 'YYYY年M月D日ddddAh点mm分',
30799            l: 'YYYY/M/D',
30800            ll: 'YYYY年M月D日',
30801            lll: 'YYYY年M月D日 HH:mm',
30802            llll: 'YYYY年M月D日dddd HH:mm',
30803        },
30804        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
30805        meridiemHour: function (hour, meridiem) {
30806            if (hour === 12) {
30807                hour = 0;
30808            }
30809            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
30810                return hour;
30811            } else if (meridiem === '下午' || meridiem === '晚上') {
30812                return hour + 12;
30813            } else {
30814                // '中午'
30815                return hour >= 11 ? hour : hour + 12;
30816            }
30817        },
30818        meridiem: function (hour, minute, isLower) {
30819            var hm = hour * 100 + minute;
30820            if (hm < 600) {
30821                return '凌晨';
30822            } else if (hm < 900) {
30823                return '早上';
30824            } else if (hm < 1130) {
30825                return '上午';
30826            } else if (hm < 1230) {
30827                return '中午';
30828            } else if (hm < 1800) {
30829                return '下午';
30830            } else {
30831                return '晚上';
30832            }
30833        },
30834        calendar: {
30835            sameDay: '[今天]LT',
30836            nextDay: '[明天]LT',
30837            nextWeek: function (now) {
30838                if (now.week() !== this.week()) {
30839                    return '[下]dddLT';
30840                } else {
30841                    return '[本]dddLT';
30842                }
30843            },
30844            lastDay: '[昨天]LT',
30845            lastWeek: function (now) {
30846                if (this.week() !== now.week()) {
30847                    return '[上]dddLT';
30848                } else {
30849                    return '[本]dddLT';
30850                }
30851            },
30852            sameElse: 'L',
30853        },
30854        dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
30855        ordinal: function (number, period) {
30856            switch (period) {
30857                case 'd':
30858                case 'D':
30859                case 'DDD':
30860                    return number + '日';
30861                case 'M':
30862                    return number + '月';
30863                case 'w':
30864                case 'W':
30865                    return number + '周';
30866                default:
30867                    return number;
30868            }
30869        },
30870        relativeTime: {
30871            future: '%s后',
30872            past: '%s前',
30873            s: '几秒',
30874            ss: '%d 秒',
30875            m: '1 分钟',
30876            mm: '%d 分钟',
30877            h: '1 小时',
30878            hh: '%d 小时',
30879            d: '1 天',
30880            dd: '%d 天',
30881            w: '1 周',
30882            ww: '%d 周',
30883            M: '1 个月',
30884            MM: '%d 个月',
30885            y: '1 å¹´',
30886            yy: '%d å¹´',
30887        },
30888        week: {
30889            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
30890            dow: 1, // Monday is the first day of the week.
30891            doy: 4, // The week that contains Jan 4th is the first week of the year.
30892        },
30893    });
30894
30895    return zhCn;
30896
30897})));
30898
30899
30900/***/ }),
30901
vendor: 3,989 bytes, lines 30902-31021
30902/***/ "./node_modules/moment/locale/zh-hk.js":
30903/*!*********************************************!*\
30904  !*** ./node_modules/moment/locale/zh-hk.js ***!
30905  \*********************************************/
30906/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
30907
30908//! moment.js locale configuration
30909//! locale : Chinese (Hong Kong) [zh-hk]
30910//! author : Ben : https://github.com/ben-lin
30911//! author : Chris Lam : https://github.com/hehachris
30912//! author : Konstantin : https://github.com/skfd
30913//! author : Anthony : https://github.com/anthonylau
30914
30915;(function (global, factory) {
30916    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
30917   0
30918}(this, (function (moment) { 'use strict';
30919
30920    //! moment.js locale configuration
30921
30922    var zhHk = moment.defineLocale('zh-hk', {
30923        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
30924            '_'
30925        ),
30926        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
30927            '_'
30928        ),
30929        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
30930        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
30931        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
30932        longDateFormat: {
30933            LT: 'HH:mm',
30934            LTS: 'HH:mm:ss',
30935            L: 'YYYY/MM/DD',
30936            LL: 'YYYY年M月D日',
30937            LLL: 'YYYY年M月D日 HH:mm',
30938            LLLL: 'YYYY年M月D日dddd HH:mm',
30939            l: 'YYYY/M/D',
30940            ll: 'YYYY年M月D日',
30941            lll: 'YYYY年M月D日 HH:mm',
30942            llll: 'YYYY年M月D日dddd HH:mm',
30943        },
30944        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
30945        meridiemHour: function (hour, meridiem) {
30946            if (hour === 12) {
30947                hour = 0;
30948            }
30949            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
30950                return hour;
30951            } else if (meridiem === '中午') {
30952                return hour >= 11 ? hour : hour + 12;
30953            } else if (meridiem === '下午' || meridiem === '晚上') {
30954                return hour + 12;
30955            }
30956        },
30957        meridiem: function (hour, minute, isLower) {
30958            var hm = hour * 100 + minute;
30959            if (hm < 600) {
30960                return '凌晨';
30961            } else if (hm < 900) {
30962                return '早上';
30963            } else if (hm < 1200) {
30964                return '上午';
30965            } else if (hm === 1200) {
30966                return '中午';
30967            } else if (hm < 1800) {
30968                return '下午';
30969            } else {
30970                return '晚上';
30971            }
30972        },
30973        calendar: {
30974            sameDay: '[今天]LT',
30975            nextDay: '[明天]LT',
30976            nextWeek: '[下]ddddLT',
30977            lastDay: '[昨天]LT',
30978            lastWeek: '[上]ddddLT',
30979            sameElse: 'L',
30980        },
30981        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
30982        ordinal: function (number, period) {
30983            switch (period) {
30984                case 'd':
30985                case 'D':
30986                case 'DDD':
30987                    return number + '日';
30988                case 'M':
30989                    return number + '月';
30990                case 'w':
30991                case 'W':
30992                    return number + '週';
30993                default:
30994                    return number;
30995            }
30996        },
30997        relativeTime: {
30998            future: '%s後',
30999            past: '%s前',
31000            s: '幾秒',
31001            ss: '%d 秒',
31002            m: '1 分鐘',
31003            mm: '%d 分鐘',
31004            h: '1 小時',
31005            hh: '%d 小時',
31006            d: '1 天',
31007            dd: '%d 天',
31008            M: '1 個月',
31009            MM: '%d 個月',
31010            y: '1 å¹´',
31011            yy: '%d å¹´',
31012        },
31013    });
31014
31015    return zhHk;
31016
31017})));
31018
31019
31020/***/ }),
31021
vendor: 3,939 bytes, lines 31022-31140
31022/***/ "./node_modules/moment/locale/zh-mo.js":
31023/*!*********************************************!*\
31024  !*** ./node_modules/moment/locale/zh-mo.js ***!
31025  \*********************************************/
31026/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
31027
31028//! moment.js locale configuration
31029//! locale : Chinese (Macau) [zh-mo]
31030//! author : Ben : https://github.com/ben-lin
31031//! author : Chris Lam : https://github.com/hehachris
31032//! author : Tan Yuanhong : https://github.com/le0tan
31033
31034;(function (global, factory) {
31035    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
31036   0
31037}(this, (function (moment) { 'use strict';
31038
31039    //! moment.js locale configuration
31040
31041    var zhMo = moment.defineLocale('zh-mo', {
31042        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
31043            '_'
31044        ),
31045        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
31046            '_'
31047        ),
31048        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
31049        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
31050        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
31051        longDateFormat: {
31052            LT: 'HH:mm',
31053            LTS: 'HH:mm:ss',
31054            L: 'DD/MM/YYYY',
31055            LL: 'YYYY年M月D日',
31056            LLL: 'YYYY年M月D日 HH:mm',
31057            LLLL: 'YYYY年M月D日dddd HH:mm',
31058            l: 'D/M/YYYY',
31059            ll: 'YYYY年M月D日',
31060            lll: 'YYYY年M月D日 HH:mm',
31061            llll: 'YYYY年M月D日dddd HH:mm',
31062        },
31063        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
31064        meridiemHour: function (hour, meridiem) {
31065            if (hour === 12) {
31066                hour = 0;
31067            }
31068            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
31069                return hour;
31070            } else if (meridiem === '中午') {
31071                return hour >= 11 ? hour : hour + 12;
31072            } else if (meridiem === '下午' || meridiem === '晚上') {
31073                return hour + 12;
31074            }
31075        },
31076        meridiem: function (hour, minute, isLower) {
31077            var hm = hour * 100 + minute;
31078            if (hm < 600) {
31079                return '凌晨';
31080            } else if (hm < 900) {
31081                return '早上';
31082            } else if (hm < 1130) {
31083                return '上午';
31084            } else if (hm < 1230) {
31085                return '中午';
31086            } else if (hm < 1800) {
31087                return '下午';
31088            } else {
31089                return '晚上';
31090            }
31091        },
31092        calendar: {
31093            sameDay: '[今天] LT',
31094            nextDay: '[明天] LT',
31095            nextWeek: '[下]dddd LT',
31096            lastDay: '[昨天] LT',
31097            lastWeek: '[上]dddd LT',
31098            sameElse: 'L',
31099        },
31100        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
31101        ordinal: function (number, period) {
31102            switch (period) {
31103                case 'd':
31104                case 'D':
31105                case 'DDD':
31106                    return number + '日';
31107                case 'M':
31108                    return number + '月';
31109                case 'w':
31110                case 'W':
31111                    return number + '週';
31112                default:
31113                    return number;
31114            }
31115        },
31116        relativeTime: {
31117            future: '%s內',
31118            past: '%s前',
31119            s: '幾秒',
31120            ss: '%d 秒',
31121            m: '1 分鐘',
31122            mm: '%d 分鐘',
31123            h: '1 小時',
31124            hh: '%d 小時',
31125            d: '1 天',
31126            dd: '%d 天',
31127            M: '1 個月',
31128            MM: '%d 個月',
31129            y: '1 å¹´',
31130            yy: '%d å¹´',
31131        },
31132    });
31133
31134    return zhMo;
31135
31136})));
31137
31138
31139/***/ }),
31140
vendor: 3,886 bytes, lines 31141-31258
31141/***/ "./node_modules/moment/locale/zh-tw.js":
31142/*!*********************************************!*\
31143  !*** ./node_modules/moment/locale/zh-tw.js ***!
31144  \*********************************************/
31145/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
31146
31147//! moment.js locale configuration
31148//! locale : Chinese (Taiwan) [zh-tw]
31149//! author : Ben : https://github.com/ben-lin
31150//! author : Chris Lam : https://github.com/hehachris
31151
31152;(function (global, factory) {
31153    true ? factory(__webpack_require__(/*! ../moment */ "./node_modules/moment/moment.js")) :
31154   0
31155}(this, (function (moment) { 'use strict';
31156
31157    //! moment.js locale configuration
31158
31159    var zhTw = moment.defineLocale('zh-tw', {
31160        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
31161            '_'
31162        ),
31163        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
31164            '_'
31165        ),
31166        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
31167        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
31168        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
31169        longDateFormat: {
31170            LT: 'HH:mm',
31171            LTS: 'HH:mm:ss',
31172            L: 'YYYY/MM/DD',
31173            LL: 'YYYY年M月D日',
31174            LLL: 'YYYY年M月D日 HH:mm',
31175            LLLL: 'YYYY年M月D日dddd HH:mm',
31176            l: 'YYYY/M/D',
31177            ll: 'YYYY年M月D日',
31178            lll: 'YYYY年M月D日 HH:mm',
31179            llll: 'YYYY年M月D日dddd HH:mm',
31180        },
31181        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
31182        meridiemHour: function (hour, meridiem) {
31183            if (hour === 12) {
31184                hour = 0;
31185            }
31186            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
31187                return hour;
31188            } else if (meridiem === '中午') {
31189                return hour >= 11 ? hour : hour + 12;
31190            } else if (meridiem === '下午' || meridiem === '晚上') {
31191                return hour + 12;
31192            }
31193        },
31194        meridiem: function (hour, minute, isLower) {
31195            var hm = hour * 100 + minute;
31196            if (hm < 600) {
31197                return '凌晨';
31198            } else if (hm < 900) {
31199                return '早上';
31200            } else if (hm < 1130) {
31201                return '上午';
31202            } else if (hm < 1230) {
31203                return '中午';
31204            } else if (hm < 1800) {
31205                return '下午';
31206            } else {
31207                return '晚上';
31208            }
31209        },
31210        calendar: {
31211            sameDay: '[今天] LT',
31212            nextDay: '[明天] LT',
31213            nextWeek: '[下]dddd LT',
31214            lastDay: '[昨天] LT',
31215            lastWeek: '[上]dddd LT',
31216            sameElse: 'L',
31217        },
31218        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
31219        ordinal: function (number, period) {
31220            switch (period) {
31221                case 'd':
31222                case 'D':
31223                case 'DDD':
31224                    return number + '日';
31225                case 'M':
31226                    return number + '月';
31227                case 'w':
31228                case 'W':
31229                    return number + '週';
31230                default:
31231                    return number;
31232            }
31233        },
31234        relativeTime: {
31235            future: '%s後',
31236            past: '%s前',
31237            s: '幾秒',
31238            ss: '%d 秒',
31239            m: '1 分鐘',
31240            mm: '%d 分鐘',
31241            h: '1 小時',
31242            hh: '%d 小時',
31243            d: '1 天',
31244            dd: '%d 天',
31245            M: '1 個月',
31246            MM: '%d 個月',
31247            y: '1 å¹´',
31248            yy: '%d å¹´',
31249        },
31250    });
31251
31252    return zhTw;
31253
31254})));
31255
31256
31257/***/ }),
31258
vendor: 176,669 bytes, lines 31259-36956
31259/***/ "./node_modules/moment/moment.js":
31260/*!***************************************!*\
31261  !*** ./node_modules/moment/moment.js ***!
31262  \***************************************/
31263/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
31264
31265/* module decorator */ module = __webpack_require__.nmd(module);
31266//! moment.js
31267//! version : 2.30.1
31268//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
31269//! license : MIT
31270//! momentjs.com
31271
31272;(function (global, factory) {
31273     true ? module.exports = factory() :
31274    0
31275}(this, (function () { 'use strict';
31276
31277    var hookCallback;
31278
31279    function hooks() {
31280        return hookCallback.apply(null, arguments);
31281    }
31282
31283    // This is done to register the method called with moment()
31284    // without creating circular dependencies.
31285    function setHookCallback(callback) {
31286        hookCallback = callback;
31287    }
31288
31289    function isArray(input) {
31290        return (
31291            input instanceof Array ||
31292            Object.prototype.toString.call(input) === '[object Array]'
31293        );
31294    }
31295
31296    function isObject(input) {
31297        // IE8 will treat undefined and null as object if it wasn't for
31298        // input != null
31299        return (
31300            input != null &&
31301            Object.prototype.toString.call(input) === '[object Object]'
31302        );
31303    }
31304
31305    function hasOwnProp(a, b) {
31306        return Object.prototype.hasOwnProperty.call(a, b);
31307    }
31308
31309    function isObjectEmpty(obj) {
31310        if (Object.getOwnPropertyNames) {
31311            return Object.getOwnPropertyNames(obj).length === 0;
31312        } else {
31313            var k;
31314            for (k in obj) {
31315                if (hasOwnProp(obj, k)) {
31316                    return false;
31317                }
31318            }
31319            return true;
31320        }
31321    }
31322
31323    function isUndefined(input) {
31324        return input === void 0;
31325    }
31326
31327    function isNumber(input) {
31328        return (
31329            typeof input === 'number' ||
31330            Object.prototype.toString.call(input) === '[object Number]'
31331        );
31332    }
31333
31334    function isDate(input) {
31335        return (
31336            input instanceof Date ||
31337            Object.prototype.toString.call(input) === '[object Date]'
31338        );
31339    }
31340
31341    function map(arr, fn) {
31342        var res = [],
31343            i,
31344            arrLen = arr.length;
31345        for (i = 0; i < arrLen; ++i) {
31346            res.push(fn(arr[i], i));
31347        }
31348        return res;
31349    }
31350
31351    function extend(a, b) {
31352        for (var i in b) {
31353            if (hasOwnProp(b, i)) {
31354                a[i] = b[i];
31355            }
31356        }
31357
31358        if (hasOwnProp(b, 'toString')) {
31359            a.toString = b.toString;
31360        }
31361
31362        if (hasOwnProp(b, 'valueOf')) {
31363            a.valueOf = b.valueOf;
31364        }
31365
31366        return a;
31367    }
31368
31369    function createUTC(input, format, locale, strict) {
31370        return createLocalOrUTC(input, format, locale, strict, true).utc();
31371    }
31372
31373    function defaultParsingFlags() {
31374        // We need to deep clone this object.
31375        return {
31376            empty: false,
31377            unusedTokens: [],
31378            unusedInput: [],
31379            overflow: -2,
31380            charsLeftOver: 0,
31381            nullInput: false,
31382            invalidEra: null,
31383            invalidMonth: null,
31384            invalidFormat: false,
31385            userInvalidated: false,
31386            iso: false,
31387            parsedDateParts: [],
31388            era: null,
31389            meridiem: null,
31390            rfc2822: false,
31391            weekdayMismatch: false,
31392        };
31393    }
31394
31395    function getParsingFlags(m) {
31396        if (m._pf == null) {
31397            m._pf = defaultParsingFlags();
31398        }
31399        return m._pf;
31400    }
31401
31402    var some;
31403    if (Array.prototype.some) {
31404        some = Array.prototype.some;
31405    } else {
31406        some = function (fun) {
31407            var t = Object(this),
31408                len = t.length >>> 0,
31409                i;
31410
31411            for (i = 0; i < len; i++) {
31412                if (i in t && fun.call(this, t[i], i, t)) {
31413                    return true;
31414                }
31415            }
31416
31417            return false;
31418        };
31419    }
31420
31421    function isValid(m) {
31422        var flags = null,
31423            parsedParts = false,
31424            isNowValid = m._d && !isNaN(m._d.getTime());
31425        if (isNowValid) {
31426            flags = getParsingFlags(m);
31427            parsedParts = some.call(flags.parsedDateParts, function (i) {
31428                return i != null;
31429            });
31430            isNowValid =
31431                flags.overflow < 0 &&
31432                !flags.empty &&
31433                !flags.invalidEra &&
31434                !flags.invalidMonth &&
31435                !flags.invalidWeekday &&
31436                !flags.weekdayMismatch &&
31437                !flags.nullInput &&
31438                !flags.invalidFormat &&
31439                !flags.userInvalidated &&
31440                (!flags.meridiem || (flags.meridiem && parsedParts));
31441            if (m._strict) {
31442                isNowValid =
31443                    isNowValid &&
31444                    flags.charsLeftOver === 0 &&
31445                    flags.unusedTokens.length === 0 &&
31446                    flags.bigHour === undefined;
31447            }
31448        }
31449        if (Object.isFrozen == null || !Object.isFrozen(m)) {
31450            m._isValid = isNowValid;
31451        } else {
31452            return isNowValid;
31453        }
31454        return m._isValid;
31455    }
31456
31457    function createInvalid(flags) {
31458        var m = createUTC(NaN);
31459        if (flags != null) {
31460            extend(getParsingFlags(m), flags);
31461        } else {
31462            getParsingFlags(m).userInvalidated = true;
31463        }
31464
31465        return m;
31466    }
31467
31468    // Plugins that add properties should also add the key here (null value),
31469    // so we can properly clone ourselves.
31470    var momentProperties = (hooks.momentProperties = []),
31471        updateInProgress = false;
31472
31473    function copyConfig(to, from) {
31474        var i,
31475            prop,
31476            val,
31477            momentPropertiesLen = momentProperties.length;
31478
31479        if (!isUndefined(from._isAMomentObject)) {
31480            to._isAMomentObject = from._isAMomentObject;
31481        }
31482        if (!isUndefined(from._i)) {
31483            to._i = from._i;
31484        }
31485        if (!isUndefined(from._f)) {
31486            to._f = from._f;
31487        }
31488        if (!isUndefined(from._l)) {
31489            to._l = from._l;
31490        }
31491        if (!isUndefined(from._strict)) {
31492            to._strict = from._strict;
31493        }
31494        if (!isUndefined(from._tzm)) {
31495            to._tzm = from._tzm;
31496        }
31497        if (!isUndefined(from._isUTC)) {
31498            to._isUTC = from._isUTC;
31499        }
31500        if (!isUndefined(from._offset)) {
31501            to._offset = from._offset;
31502        }
31503        if (!isUndefined(from._pf)) {
31504            to._pf = getParsingFlags(from);
31505        }
31506        if (!isUndefined(from._locale)) {
31507            to._locale = from._locale;
31508        }
31509
31510        if (momentPropertiesLen > 0) {
31511            for (i = 0; i < momentPropertiesLen; i++) {
31512                prop = momentProperties[i];
31513                val = from[prop];
31514                if (!isUndefined(val)) {
31515                    to[prop] = val;
31516                }
31517            }
31518        }
31519
31520        return to;
31521    }
31522
31523    // Moment prototype object
31524    function Moment(config) {
31525        copyConfig(this, config);
31526        this._d = new Date(config._d != null ? config._d.getTime() : NaN);
31527        if (!this.isValid()) {
31528            this._d = new Date(NaN);
31529        }
31530        // Prevent infinite loop in case updateOffset creates new moment
31531        // objects.
31532        if (updateInProgress === false) {
31533            updateInProgress = true;
31534            hooks.updateOffset(this);
31535            updateInProgress = false;
31536        }
31537    }
31538
31539    function isMoment(obj) {
31540        return (
31541            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)
31542        );
31543    }
31544
31545    function warn(msg) {
31546        if (
31547            hooks.suppressDeprecationWarnings === false &&
31548            typeof console !== 'undefined' &&
31549            console.warn
31550        ) {
31551            console.warn('Deprecation warning: ' + msg);
31552        }
31553    }
31554
31555    function deprecate(msg, fn) {
31556        var firstTime = true;
31557
31558        return extend(function () {
31559            if (hooks.deprecationHandler != null) {
31560                hooks.deprecationHandler(null, msg);
31561            }
31562            if (firstTime) {
31563                var args = [],
31564                    arg,
31565                    i,
31566                    key,
31567                    argLen = arguments.length;
31568                for (i = 0; i < argLen; i++) {
31569                    arg = '';
31570                    if (typeof arguments[i] === 'object') {
31571                        arg += '\n[' + i + '] ';
31572                        for (key in arguments[0]) {
31573                            if (hasOwnProp(arguments[0], key)) {
31574                                arg += key + ': ' + arguments[0][key] + ', ';
31575                            }
31576                        }
31577                        arg = arg.slice(0, -2); // Remove trailing comma and space
31578                    } else {
31579                        arg = arguments[i];
31580                    }
31581                    args.push(arg);
31582                }
31583                warn(
31584                    msg +
31585                        '\nArguments: ' +
31586                        Array.prototype.slice.call(args).join('') +
31587                        '\n' +
31588                        new Error().stack
31589                );
31590                firstTime = false;
31591            }
31592            return fn.apply(this, arguments);
31593        }, fn);
31594    }
31595
31596    var deprecations = {};
31597
31598    function deprecateSimple(name, msg) {
31599        if (hooks.deprecationHandler != null) {
31600            hooks.deprecationHandler(name, msg);
31601        }
31602        if (!deprecations[name]) {
31603            warn(msg);
31604            deprecations[name] = true;
31605        }
31606    }
31607
31608    hooks.suppressDeprecationWarnings = false;
31609    hooks.deprecationHandler = null;
31610
31611    function isFunction(input) {
31612        return (
31613            (typeof Function !== 'undefined' && input instanceof Function) ||
31614            Object.prototype.toString.call(input) === '[object Function]'
31615        );
31616    }
31617
31618    function set(config) {
31619        var prop, i;
31620        for (i in config) {
31621            if (hasOwnProp(config, i)) {
31622                prop = config[i];
31623                if (isFunction(prop)) {
31624                    this[i] = prop;
31625                } else {
31626                    this['_' + i] = prop;
31627                }
31628            }
31629        }
31630        this._config = config;
31631        // Lenient ordinal parsing accepts just a number in addition to
31632        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.
31633        // TODO: Remove "ordinalParse" fallback in next major release.
31634        this._dayOfMonthOrdinalParseLenient = new RegExp(
31635            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +
31636                '|' +
31637                /\d{1,2}/.source
31638        );
31639    }
31640
31641    function mergeConfigs(parentConfig, childConfig) {
31642        var res = extend({}, parentConfig),
31643            prop;
31644        for (prop in childConfig) {
31645            if (hasOwnProp(childConfig, prop)) {
31646                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
31647                    res[prop] = {};
31648                    extend(res[prop], parentConfig[prop]);
31649                    extend(res[prop], childConfig[prop]);
31650                } else if (childConfig[prop] != null) {
31651                    res[prop] = childConfig[prop];
31652                } else {
31653                    delete res[prop];
31654                }
31655            }
31656        }
31657        for (prop in parentConfig) {
31658            if (
31659                hasOwnProp(parentConfig, prop) &&
31660                !hasOwnProp(childConfig, prop) &&
31661                isObject(parentConfig[prop])
31662            ) {
31663                // make sure changes to properties don't modify parent config
31664                res[prop] = extend({}, res[prop]);
31665            }
31666        }
31667        return res;
31668    }
31669
31670    function Locale(config) {
31671        if (config != null) {
31672            this.set(config);
31673        }
31674    }
31675
31676    var keys;
31677
31678    if (Object.keys) {
31679        keys = Object.keys;
31680    } else {
31681        keys = function (obj) {
31682            var i,
31683                res = [];
31684            for (i in obj) {
31685                if (hasOwnProp(obj, i)) {
31686                    res.push(i);
31687                }
31688            }
31689            return res;
31690        };
31691    }
31692
31693    var defaultCalendar = {
31694        sameDay: '[Today at] LT',
31695        nextDay: '[Tomorrow at] LT',
31696        nextWeek: 'dddd [at] LT',
31697        lastDay: '[Yesterday at] LT',
31698        lastWeek: '[Last] dddd [at] LT',
31699        sameElse: 'L',
31700    };
31701
31702    function calendar(key, mom, now) {
31703        var output = this._calendar[key] || this._calendar['sameElse'];
31704        return isFunction(output) ? output.call(mom, now) : output;
31705    }
31706
31707    function zeroFill(number, targetLength, forceSign) {
31708        var absNumber = '' + Math.abs(number),
31709            zerosToFill = targetLength - absNumber.length,
31710            sign = number >= 0;
31711        return (
31712            (sign ? (forceSign ? '+' : '') : '-') +
31713            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +
31714            absNumber
31715        );
31716    }
31717
31718    var formattingTokens =
31719            /(\[[^\[]*\])|(\\)?([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,
31720        localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
31721        formatFunctions = {},
31722        formatTokenFunctions = {};
31723
31724    // token:    'M'
31725    // padded:   ['MM', 2]
31726    // ordinal:  'Mo'
31727    // callback: function () { this.month() + 1 }
31728    function addFormatToken(token, padded, ordinal, callback) {
31729        var func = callback;
31730        if (typeof callback === 'string') {
31731            func = function () {
31732                return this[callback]();
31733            };
31734        }
31735        if (token) {
31736            formatTokenFunctions[token] = func;
31737        }
31738        if (padded) {
31739            formatTokenFunctions[padded[0]] = function () {
31740                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
31741            };
31742        }
31743        if (ordinal) {
31744            formatTokenFunctions[ordinal] = function () {
31745                return this.localeData().ordinal(
31746                    func.apply(this, arguments),
31747                    token
31748                );
31749            };
31750        }
31751    }
31752
31753    function removeFormattingTokens(input) {
31754        if (input.match(/\[[\s\S]/)) {
31755            return input.replace(/^\[|\]$/g, '');
31756        }
31757        return input.replace(/\\/g, '');
31758    }
31759
31760    function makeFormatFunction(format) {
31761        var array = format.match(formattingTokens),
31762            i,
31763            length;
31764
31765        for (i = 0, length = array.length; i < length; i++) {
31766            if (formatTokenFunctions[array[i]]) {
31767                array[i] = formatTokenFunctions[array[i]];
31768            } else {
31769                array[i] = removeFormattingTokens(array[i]);
31770            }
31771        }
31772
31773        return function (mom) {
31774            var output = '',
31775                i;
31776            for (i = 0; i < length; i++) {
31777                output += isFunction(array[i])
31778                    ? array[i].call(mom, format)
31779                    : array[i];
31780            }
31781            return output;
31782        };
31783    }
31784
31785    // format date using native date object
31786    function formatMoment(m, format) {
31787        if (!m.isValid()) {
31788            return m.localeData().invalidDate();
31789        }
31790
31791        format = expandFormat(format, m.localeData());
31792        formatFunctions[format] =
31793            formatFunctions[format] || makeFormatFunction(format);
31794
31795        return formatFunctions[format](m);
31796    }
31797
31798    function expandFormat(format, locale) {
31799        var i = 5;
31800
31801        function replaceLongDateFormatTokens(input) {
31802            return locale.longDateFormat(input) || input;
31803        }
31804
31805        localFormattingTokens.lastIndex = 0;
31806        while (i >= 0 && localFormattingTokens.test(format)) {
31807            format = format.replace(
31808                localFormattingTokens,
31809                replaceLongDateFormatTokens
31810            );
31811            localFormattingTokens.lastIndex = 0;
31812            i -= 1;
31813        }
31814
31815        return format;
31816    }
31817
31818    var defaultLongDateFormat = {
31819        LTS: 'h:mm:ss A',
31820        LT: 'h:mm A',
31821        L: 'MM/DD/YYYY',
31822        LL: 'MMMM D, YYYY',
31823        LLL: 'MMMM D, YYYY h:mm A',
31824        LLLL: 'dddd, MMMM D, YYYY h:mm A',
31825    };
31826
31827    function longDateFormat(key) {
31828        var format = this._longDateFormat[key],
31829            formatUpper = this._longDateFormat[key.toUpperCase()];
31830
31831        if (format || !formatUpper) {
31832            return format;
31833        }
31834
31835        this._longDateFormat[key] = formatUpper
31836            .match(formattingTokens)
31837            .map(function (tok) {
31838                if (
31839                    tok === 'MMMM' ||
31840                    tok === 'MM' ||
31841                    tok === 'DD' ||
31842                    tok === 'dddd'
31843                ) {
31844                    return tok.slice(1);
31845                }
31846                return tok;
31847            })
31848            .join('');
31849
31850        return this._longDateFormat[key];
31851    }
31852
31853    var defaultInvalidDate = 'Invalid date';
31854
31855    function invalidDate() {
31856        return this._invalidDate;
31857    }
31858
31859    var defaultOrdinal = '%d',
31860        defaultDayOfMonthOrdinalParse = /\d{1,2}/;
31861
31862    function ordinal(number) {
31863        return this._ordinal.replace('%d', number);
31864    }
31865
31866    var defaultRelativeTime = {
31867        future: 'in %s',
31868        past: '%s ago',
31869        s: 'a few seconds',
31870        ss: '%d seconds',
31871        m: 'a minute',
31872        mm: '%d minutes',
31873        h: 'an hour',
31874        hh: '%d hours',
31875        d: 'a day',
31876        dd: '%d days',
31877        w: 'a week',
31878        ww: '%d weeks',
31879        M: 'a month',
31880        MM: '%d months',
31881        y: 'a year',
31882        yy: '%d years',
31883    };
31884
31885    function relativeTime(number, withoutSuffix, string, isFuture) {
31886        var output = this._relativeTime[string];
31887        return isFunction(output)
31888            ? output(number, withoutSuffix, string, isFuture)
31889            : output.replace(/%d/i, number);
31890    }
31891
31892    function pastFuture(diff, output) {
31893        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
31894        return isFunction(format) ? format(output) : format.replace(/%s/i, output);
31895    }
31896
31897    var aliases = {
31898        D: 'date',
31899        dates: 'date',
31900        date: 'date',
31901        d: 'day',
31902        days: 'day',
31903        day: 'day',
31904        e: 'weekday',
31905        weekdays: 'weekday',
31906        weekday: 'weekday',
31907        E: 'isoWeekday',
31908        isoweekdays: 'isoWeekday',
31909        isoweekday: 'isoWeekday',
31910        DDD: 'dayOfYear',
31911        dayofyears: 'dayOfYear',
31912        dayofyear: 'dayOfYear',
31913        h: 'hour',
31914        hours: 'hour',
31915        hour: 'hour',
31916        ms: 'millisecond',
31917        milliseconds: 'millisecond',
31918        millisecond: 'millisecond',
31919        m: 'minute',
31920        minutes: 'minute',
31921        minute: 'minute',
31922        M: 'month',
31923        months: 'month',
31924        month: 'month',
31925        Q: 'quarter',
31926        quarters: 'quarter',
31927        quarter: 'quarter',
31928        s: 'second',
31929        seconds: 'second',
31930        second: 'second',
31931        gg: 'weekYear',
31932        weekyears: 'weekYear',
31933        weekyear: 'weekYear',
31934        GG: 'isoWeekYear',
31935        isoweekyears: 'isoWeekYear',
31936        isoweekyear: 'isoWeekYear',
31937        w: 'week',
31938        weeks: 'week',
31939        week: 'week',
31940        W: 'isoWeek',
31941        isoweeks: 'isoWeek',
31942        isoweek: 'isoWeek',
31943        y: 'year',
31944        years: 'year',
31945        year: 'year',
31946    };
31947
31948    function normalizeUnits(units) {
31949        return typeof units === 'string'
31950            ? aliases[units] || aliases[units.toLowerCase()]
31951            : undefined;
31952    }
31953
31954    function normalizeObjectUnits(inputObject) {
31955        var normalizedInput = {},
31956            normalizedProp,
31957            prop;
31958
31959        for (prop in inputObject) {
31960            if (hasOwnProp(inputObject, prop)) {
31961                normalizedProp = normalizeUnits(prop);
31962                if (normalizedProp) {
31963                    normalizedInput[normalizedProp] = inputObject[prop];
31964                }
31965            }
31966        }
31967
31968        return normalizedInput;
31969    }
31970
31971    var priorities = {
31972        date: 9,
31973        day: 11,
31974        weekday: 11,
31975        isoWeekday: 11,
31976        dayOfYear: 4,
31977        hour: 13,
31978        millisecond: 16,
31979        minute: 14,
31980        month: 8,
31981        quarter: 7,
31982        second: 15,
31983        weekYear: 1,
31984        isoWeekYear: 1,
31985        week: 5,
31986        isoWeek: 5,
31987        year: 1,
31988    };
31989
31990    function getPrioritizedUnits(unitsObj) {
31991        var units = [],
31992            u;
31993        for (u in unitsObj) {
31994            if (hasOwnProp(unitsObj, u)) {
31995                units.push({ unit: u, priority: priorities[u] });
31996            }
31997        }
31998        units.sort(function (a, b) {
31999            return a.priority - b.priority;
32000        });
32001        return units;
32002    }
32003
32004    var match1 = /\d/, //       0 - 9
32005        match2 = /\d\d/, //      00 - 99
32006        match3 = /\d{3}/, //     000 - 999
32007        match4 = /\d{4}/, //    0000 - 9999
32008        match6 = /[+-]?\d{6}/, // -999999 - 999999
32009        match1to2 = /\d\d?/, //       0 - 99
32010        match3to4 = /\d\d\d\d?/, //     999 - 9999
32011        match5to6 = /\d\d\d\d\d\d?/, //   99999 - 999999
32012        match1to3 = /\d{1,3}/, //       0 - 999
32013        match1to4 = /\d{1,4}/, //       0 - 9999
32014        match1to6 = /[+-]?\d{1,6}/, // -999999 - 999999
32015        matchUnsigned = /\d+/, //       0 - inf
32016        matchSigned = /[+-]?\d+/, //    -inf - inf
32017        matchOffset = /Z|[+-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z
32018        matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z
32019        matchTimestamp = /[+-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123
32020        // any word (or two) characters or numbers including two/three word month in arabic.
32021        // includes scottish gaelic two word and hyphenated months
32022        matchWord =
32023            /[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,
32024        match1to2NoLeadingZero = /^[1-9]\d?/, //         1-99
32025        match1to2HasZero = /^([1-9]\d|\d)/, //           0-99
32026        regexes;
32027
32028    regexes = {};
32029
32030    function addRegexToken(token, regex, strictRegex) {
32031        regexes[token] = isFunction(regex)
32032            ? regex
32033            : function (isStrict, localeData) {
32034                  return isStrict && strictRegex ? strictRegex : regex;
32035              };
32036    }
32037
32038    function getParseRegexForToken(token, config) {
32039        if (!hasOwnProp(regexes, token)) {
32040            return new RegExp(unescapeFormat(token));
32041        }
32042
32043        return regexes[token](config._strict, config._locale);
32044    }
32045
32046    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
32047    function unescapeFormat(s) {
32048        return regexEscape(
32049            s
32050                .replace('\\', '')
32051                .replace(
32052                    /\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,
32053                    function (matched, p1, p2, p3, p4) {
32054                        return p1 || p2 || p3 || p4;
32055                    }
32056                )
32057        );
32058    }
32059
32060    function regexEscape(s) {
32061        return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
32062    }
32063
32064    function absFloor(number) {
32065        if (number < 0) {
32066            // -0 -> 0
32067            return Math.ceil(number) || 0;
32068        } else {
32069            return Math.floor(number);
32070        }
32071    }
32072
32073    function toInt(argumentForCoercion) {
32074        var coercedNumber = +argumentForCoercion,
32075            value = 0;
32076
32077        if (coercedNumber !== 0 && isFinite(coercedNumber)) {
32078            value = absFloor(coercedNumber);
32079        }
32080
32081        return value;
32082    }
32083
32084    var tokens = {};
32085
32086    function addParseToken(token, callback) {
32087        var i,
32088            func = callback,
32089            tokenLen;
32090        if (typeof token === 'string') {
32091            token = [token];
32092        }
32093        if (isNumber(callback)) {
32094            func = function (input, array) {
32095                array[callback] = toInt(input);
32096            };
32097        }
32098        tokenLen = token.length;
32099        for (i = 0; i < tokenLen; i++) {
32100            tokens[token[i]] = func;
32101        }
32102    }
32103
32104    function addWeekParseToken(token, callback) {
32105        addParseToken(token, function (input, array, config, token) {
32106            config._w = config._w || {};
32107            callback(input, config._w, config, token);
32108        });
32109    }
32110
32111    function addTimeToArrayFromToken(token, input, config) {
32112        if (input != null && hasOwnProp(tokens, token)) {
32113            tokens[token](input, config._a, config, token);
32114        }
32115    }
32116
32117    function isLeapYear(year) {
32118        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
32119    }
32120
32121    var YEAR = 0,
32122        MONTH = 1,
32123        DATE = 2,
32124        HOUR = 3,
32125        MINUTE = 4,
32126        SECOND = 5,
32127        MILLISECOND = 6,
32128        WEEK = 7,
32129        WEEKDAY = 8;
32130
32131    // FORMATTING
32132
32133    addFormatToken('Y', 0, 0, function () {
32134        var y = this.year();
32135        return y <= 9999 ? zeroFill(y, 4) : '+' + y;
32136    });
32137
32138    addFormatToken(0, ['YY', 2], 0, function () {
32139        return this.year() % 100;
32140    });
32141
32142    addFormatToken(0, ['YYYY', 4], 0, 'year');
32143    addFormatToken(0, ['YYYYY', 5], 0, 'year');
32144    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
32145
32146    // PARSING
32147
32148    addRegexToken('Y', matchSigned);
32149    addRegexToken('YY', match1to2, match2);
32150    addRegexToken('YYYY', match1to4, match4);
32151    addRegexToken('YYYYY', match1to6, match6);
32152    addRegexToken('YYYYYY', match1to6, match6);
32153
32154    addParseToken(['YYYYY', 'YYYYYY'], YEAR);
32155    addParseToken('YYYY', function (input, array) {
32156        array[YEAR] =
32157            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);
32158    });
32159    addParseToken('YY', function (input, array) {
32160        array[YEAR] = hooks.parseTwoDigitYear(input);
32161    });
32162    addParseToken('Y', function (input, array) {
32163        array[YEAR] = parseInt(input, 10);
32164    });
32165
32166    // HELPERS
32167
32168    function daysInYear(year) {
32169        return isLeapYear(year) ? 366 : 365;
32170    }
32171
32172    // HOOKS
32173
32174    hooks.parseTwoDigitYear = function (input) {
32175        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
32176    };
32177
32178    // MOMENTS
32179
32180    var getSetYear = makeGetSet('FullYear', true);
32181
32182    function getIsLeapYear() {
32183        return isLeapYear(this.year());
32184    }
32185
32186    function makeGetSet(unit, keepTime) {
32187        return function (value) {
32188            if (value != null) {
32189                set$1(this, unit, value);
32190                hooks.updateOffset(this, keepTime);
32191                return this;
32192            } else {
32193                return get(this, unit);
32194            }
32195        };
32196    }
32197
32198    function get(mom, unit) {
32199        if (!mom.isValid()) {
32200            return NaN;
32201        }
32202
32203        var d = mom._d,
32204            isUTC = mom._isUTC;
32205
32206        switch (unit) {
32207            case 'Milliseconds':
32208                return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();
32209            case 'Seconds':
32210                return isUTC ? d.getUTCSeconds() : d.getSeconds();
32211            case 'Minutes':
32212                return isUTC ? d.getUTCMinutes() : d.getMinutes();
32213            case 'Hours':
32214                return isUTC ? d.getUTCHours() : d.getHours();
32215            case 'Date':
32216                return isUTC ? d.getUTCDate() : d.getDate();
32217            case 'Day':
32218                return isUTC ? d.getUTCDay() : d.getDay();
32219            case 'Month':
32220                return isUTC ? d.getUTCMonth() : d.getMonth();
32221            case 'FullYear':
32222                return isUTC ? d.getUTCFullYear() : d.getFullYear();
32223            default:
32224                return NaN; // Just in case
32225        }
32226    }
32227
32228    function set$1(mom, unit, value) {
32229        var d, isUTC, year, month, date;
32230
32231        if (!mom.isValid() || isNaN(value)) {
32232            return;
32233        }
32234
32235        d = mom._d;
32236        isUTC = mom._isUTC;
32237
32238        switch (unit) {
32239            case 'Milliseconds':
32240                return void (isUTC
32241                    ? d.setUTCMilliseconds(value)
32242                    : d.setMilliseconds(value));
32243            case 'Seconds':
32244                return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));
32245            case 'Minutes':
32246                return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));
32247            case 'Hours':
32248                return void (isUTC ? d.setUTCHours(value) : d.setHours(value));
32249            case 'Date':
32250                return void (isUTC ? d.setUTCDate(value) : d.setDate(value));
32251            // case 'Day': // Not real
32252            //    return void (isUTC ? d.setUTCDay(value) : d.setDay(value));
32253            // case 'Month': // Not used because we need to pass two variables
32254            //     return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));
32255            case 'FullYear':
32256                break; // See below ...
32257            default:
32258                return; // Just in case
32259        }
32260
32261        year = value;
32262        month = mom.month();
32263        date = mom.date();
32264        date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;
32265        void (isUTC
32266            ? d.setUTCFullYear(year, month, date)
32267            : d.setFullYear(year, month, date));
32268    }
32269
32270    // MOMENTS
32271
32272    function stringGet(units) {
32273        units = normalizeUnits(units);
32274        if (isFunction(this[units])) {
32275            return this[units]();
32276        }
32277        return this;
32278    }
32279
32280    function stringSet(units, value) {
32281        if (typeof units === 'object') {
32282            units = normalizeObjectUnits(units);
32283            var prioritized = getPrioritizedUnits(units),
32284                i,
32285                prioritizedLen = prioritized.length;
32286            for (i = 0; i < prioritizedLen; i++) {
32287                this[prioritized[i].unit](units[prioritized[i].unit]);
32288            }
32289        } else {
32290            units = normalizeUnits(units);
32291            if (isFunction(this[units])) {
32292                return this[units](value);
32293            }
32294        }
32295        return this;
32296    }
32297
32298    function mod(n, x) {
32299        return ((n % x) + x) % x;
32300    }
32301
32302    var indexOf;
32303
32304    if (Array.prototype.indexOf) {
32305        indexOf = Array.prototype.indexOf;
32306    } else {
32307        indexOf = function (o) {
32308            // I know
32309            var i;
32310            for (i = 0; i < this.length; ++i) {
32311                if (this[i] === o) {
32312                    return i;
32313                }
32314            }
32315            return -1;
32316        };
32317    }
32318
32319    function daysInMonth(year, month) {
32320        if (isNaN(year) || isNaN(month)) {
32321            return NaN;
32322        }
32323        var modMonth = mod(month, 12);
32324        year += (month - modMonth) / 12;
32325        return modMonth === 1
32326            ? isLeapYear(year)
32327                ? 29
32328                : 28
32329            : 31 - ((modMonth % 7) % 2);
32330    }
32331
32332    // FORMATTING
32333
32334    addFormatToken('M', ['MM', 2], 'Mo', function () {
32335        return this.month() + 1;
32336    });
32337
32338    addFormatToken('MMM', 0, 0, function (format) {
32339        return this.localeData().monthsShort(this, format);
32340    });
32341
32342    addFormatToken('MMMM', 0, 0, function (format) {
32343        return this.localeData().months(this, format);
32344    });
32345
32346    // PARSING
32347
32348    addRegexToken('M', match1to2, match1to2NoLeadingZero);
32349    addRegexToken('MM', match1to2, match2);
32350    addRegexToken('MMM', function (isStrict, locale) {
32351        return locale.monthsShortRegex(isStrict);
32352    });
32353    addRegexToken('MMMM', function (isStrict, locale) {
32354        return locale.monthsRegex(isStrict);
32355    });
32356
32357    addParseToken(['M', 'MM'], function (input, array) {
32358        array[MONTH] = toInt(input) - 1;
32359    });
32360
32361    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
32362        var month = config._locale.monthsParse(input, token, config._strict);
32363        // if we didn't find a month name, mark the date as invalid.
32364        if (month != null) {
32365            array[MONTH] = month;
32366        } else {
32367            getParsingFlags(config).invalidMonth = input;
32368        }
32369    });
32370
32371    // LOCALES
32372
32373    var defaultLocaleMonths =
32374            'January_February_March_April_May_June_July_August_September_October_November_December'.split(
32375                '_'
32376            ),
32377        defaultLocaleMonthsShort =
32378            'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
32379        MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,
32380        defaultMonthsShortRegex = matchWord,
32381        defaultMonthsRegex = matchWord;
32382
32383    function localeMonths(m, format) {
32384        if (!m) {
32385            return isArray(this._months)
32386                ? this._months
32387                : this._months['standalone'];
32388        }
32389        return isArray(this._months)
32390            ? this._months[m.month()]
32391            : this._months[
32392                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)
32393                      ? 'format'
32394                      : 'standalone'
32395              ][m.month()];
32396    }
32397
32398    function localeMonthsShort(m, format) {
32399        if (!m) {
32400            return isArray(this._monthsShort)
32401                ? this._monthsShort
32402                : this._monthsShort['standalone'];
32403        }
32404        return isArray(this._monthsShort)
32405            ? this._monthsShort[m.month()]
32406            : this._monthsShort[
32407                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'
32408              ][m.month()];
32409    }
32410
32411    function handleStrictParse(monthName, format, strict) {
32412        var i,
32413            ii,
32414            mom,
32415            llc = monthName.toLocaleLowerCase();
32416        if (!this._monthsParse) {
32417            // this is not used
32418            this._monthsParse = [];
32419            this._longMonthsParse = [];
32420            this._shortMonthsParse = [];
32421            for (i = 0; i < 12; ++i) {
32422                mom = createUTC([2000, i]);
32423                this._shortMonthsParse[i] = this.monthsShort(
32424                    mom,
32425                    ''
32426                ).toLocaleLowerCase();
32427                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
32428            }
32429        }
32430
32431        if (strict) {
32432            if (format === 'MMM') {
32433                ii = indexOf.call(this._shortMonthsParse, llc);
32434                return ii !== -1 ? ii : null;
32435            } else {
32436                ii = indexOf.call(this._longMonthsParse, llc);
32437                return ii !== -1 ? ii : null;
32438            }
32439        } else {
32440            if (format === 'MMM') {
32441                ii = indexOf.call(this._shortMonthsParse, llc);
32442                if (ii !== -1) {
32443                    return ii;
32444                }
32445                ii = indexOf.call(this._longMonthsParse, llc);
32446                return ii !== -1 ? ii : null;
32447            } else {
32448                ii = indexOf.call(this._longMonthsParse, llc);
32449                if (ii !== -1) {
32450                    return ii;
32451                }
32452                ii = indexOf.call(this._shortMonthsParse, llc);
32453                return ii !== -1 ? ii : null;
32454            }
32455        }
32456    }
32457
32458    function localeMonthsParse(monthName, format, strict) {
32459        var i, mom, regex;
32460
32461        if (this._monthsParseExact) {
32462            return handleStrictParse.call(this, monthName, format, strict);
32463        }
32464
32465        if (!this._monthsParse) {
32466            this._monthsParse = [];
32467            this._longMonthsParse = [];
32468            this._shortMonthsParse = [];
32469        }
32470
32471        // TODO: add sorting
32472        // Sorting makes sure if one month (or abbr) is a prefix of another
32473        // see sorting in computeMonthsParse
32474        for (i = 0; i < 12; i++) {
32475            // make the regex if we don't have it already
32476            mom = createUTC([2000, i]);
32477            if (strict && !this._longMonthsParse[i]) {
32478                this._longMonthsParse[i] = new RegExp(
32479                    '^' + this.months(mom, '').replace('.', '') + '$',
32480                    'i'
32481                );
32482                this._shortMonthsParse[i] = new RegExp(
32483                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',
32484                    'i'
32485                );
32486            }
32487            if (!strict && !this._monthsParse[i]) {
32488                regex =
32489                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
32490                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
32491            }
32492            // test the regex
32493            if (
32494                strict &&
32495                format === 'MMMM' &&
32496                this._longMonthsParse[i].test(monthName)
32497            ) {
32498                return i;
32499            } else if (
32500                strict &&
32501                format === 'MMM' &&
32502                this._shortMonthsParse[i].test(monthName)
32503            ) {
32504                return i;
32505            } else if (!strict && this._monthsParse[i].test(monthName)) {
32506                return i;
32507            }
32508        }
32509    }
32510
32511    // MOMENTS
32512
32513    function setMonth(mom, value) {
32514        if (!mom.isValid()) {
32515            // No op
32516            return mom;
32517        }
32518
32519        if (typeof value === 'string') {
32520            if (/^\d+$/.test(value)) {
32521                value = toInt(value);
32522            } else {
32523                value = mom.localeData().monthsParse(value);
32524                // TODO: Another silent failure?
32525                if (!isNumber(value)) {
32526                    return mom;
32527                }
32528            }
32529        }
32530
32531        var month = value,
32532            date = mom.date();
32533
32534        date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));
32535        void (mom._isUTC
32536            ? mom._d.setUTCMonth(month, date)
32537            : mom._d.setMonth(month, date));
32538        return mom;
32539    }
32540
32541    function getSetMonth(value) {
32542        if (value != null) {
32543            setMonth(this, value);
32544            hooks.updateOffset(this, true);
32545            return this;
32546        } else {
32547            return get(this, 'Month');
32548        }
32549    }
32550
32551    function getDaysInMonth() {
32552        return daysInMonth(this.year(), this.month());
32553    }
32554
32555    function monthsShortRegex(isStrict) {
32556        if (this._monthsParseExact) {
32557            if (!hasOwnProp(this, '_monthsRegex')) {
32558                computeMonthsParse.call(this);
32559            }
32560            if (isStrict) {
32561                return this._monthsShortStrictRegex;
32562            } else {
32563                return this._monthsShortRegex;
32564            }
32565        } else {
32566            if (!hasOwnProp(this, '_monthsShortRegex')) {
32567                this._monthsShortRegex = defaultMonthsShortRegex;
32568            }
32569            return this._monthsShortStrictRegex && isStrict
32570                ? this._monthsShortStrictRegex
32571                : this._monthsShortRegex;
32572        }
32573    }
32574
32575    function monthsRegex(isStrict) {
32576        if (this._monthsParseExact) {
32577            if (!hasOwnProp(this, '_monthsRegex')) {
32578                computeMonthsParse.call(this);
32579            }
32580            if (isStrict) {
32581                return this._monthsStrictRegex;
32582            } else {
32583                return this._monthsRegex;
32584            }
32585        } else {
32586            if (!hasOwnProp(this, '_monthsRegex')) {
32587                this._monthsRegex = defaultMonthsRegex;
32588            }
32589            return this._monthsStrictRegex && isStrict
32590                ? this._monthsStrictRegex
32591                : this._monthsRegex;
32592        }
32593    }
32594
32595    function computeMonthsParse() {
32596        function cmpLenRev(a, b) {
32597            return b.length - a.length;
32598        }
32599
32600        var shortPieces = [],
32601            longPieces = [],
32602            mixedPieces = [],
32603            i,
32604            mom,
32605            shortP,
32606            longP;
32607        for (i = 0; i < 12; i++) {
32608            // make the regex if we don't have it already
32609            mom = createUTC([2000, i]);
32610            shortP = regexEscape(this.monthsShort(mom, ''));
32611            longP = regexEscape(this.months(mom, ''));
32612            shortPieces.push(shortP);
32613            longPieces.push(longP);
32614            mixedPieces.push(longP);
32615            mixedPieces.push(shortP);
32616        }
32617        // Sorting makes sure if one month (or abbr) is a prefix of another it
32618        // will match the longer piece.
32619        shortPieces.sort(cmpLenRev);
32620        longPieces.sort(cmpLenRev);
32621        mixedPieces.sort(cmpLenRev);
32622
32623        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
32624        this._monthsShortRegex = this._monthsRegex;
32625        this._monthsStrictRegex = new RegExp(
32626            '^(' + longPieces.join('|') + ')',
32627            'i'
32628        );
32629        this._monthsShortStrictRegex = new RegExp(
32630            '^(' + shortPieces.join('|') + ')',
32631            'i'
32632        );
32633    }
32634
32635    function createDate(y, m, d, h, M, s, ms) {
32636        // can't just apply() to create a date:
32637        // https://stackoverflow.com/q/181348
32638        var date;
32639        // the date constructor remaps years 0-99 to 1900-1999
32640        if (y < 100 && y >= 0) {
32641            // preserve leap years using a full 400 year cycle, then reset
32642            date = new Date(y + 400, m, d, h, M, s, ms);
32643            if (isFinite(date.getFullYear())) {
32644                date.setFullYear(y);
32645            }
32646        } else {
32647            date = new Date(y, m, d, h, M, s, ms);
32648        }
32649
32650        return date;
32651    }
32652
32653    function createUTCDate(y) {
32654        var date, args;
32655        // the Date.UTC function remaps years 0-99 to 1900-1999
32656        if (y < 100 && y >= 0) {
32657            args = Array.prototype.slice.call(arguments);
32658            // preserve leap years using a full 400 year cycle, then reset
32659            args[0] = y + 400;
32660            date = new Date(Date.UTC.apply(null, args));
32661            if (isFinite(date.getUTCFullYear())) {
32662                date.setUTCFullYear(y);
32663            }
32664        } else {
32665            date = new Date(Date.UTC.apply(null, arguments));
32666        }
32667
32668        return date;
32669    }
32670
32671    // start-of-first-week - start-of-year
32672    function firstWeekOffset(year, dow, doy) {
32673        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
32674            fwd = 7 + dow - doy,
32675            // first-week day local weekday -- which local weekday is fwd
32676            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
32677
32678        return -fwdlw + fwd - 1;
32679    }
32680
32681    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
32682    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
32683        var localWeekday = (7 + weekday - dow) % 7,
32684            weekOffset = firstWeekOffset(year, dow, doy),
32685            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
32686            resYear,
32687            resDayOfYear;
32688
32689        if (dayOfYear <= 0) {
32690            resYear = year - 1;
32691            resDayOfYear = daysInYear(resYear) + dayOfYear;
32692        } else if (dayOfYear > daysInYear(year)) {
32693            resYear = year + 1;
32694            resDayOfYear = dayOfYear - daysInYear(year);
32695        } else {
32696            resYear = year;
32697            resDayOfYear = dayOfYear;
32698        }
32699
32700        return {
32701            year: resYear,
32702            dayOfYear: resDayOfYear,
32703        };
32704    }
32705
32706    function weekOfYear(mom, dow, doy) {
32707        var weekOffset = firstWeekOffset(mom.year(), dow, doy),
32708            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
32709            resWeek,
32710            resYear;
32711
32712        if (week < 1) {
32713            resYear = mom.year() - 1;
32714            resWeek = week + weeksInYear(resYear, dow, doy);
32715        } else if (week > weeksInYear(mom.year(), dow, doy)) {
32716            resWeek = week - weeksInYear(mom.year(), dow, doy);
32717            resYear = mom.year() + 1;
32718        } else {
32719            resYear = mom.year();
32720            resWeek = week;
32721        }
32722
32723        return {
32724            week: resWeek,
32725            year: resYear,
32726        };
32727    }
32728
32729    function weeksInYear(year, dow, doy) {
32730        var weekOffset = firstWeekOffset(year, dow, doy),
32731            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
32732        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
32733    }
32734
32735    // FORMATTING
32736
32737    addFormatToken('w', ['ww', 2], 'wo', 'week');
32738    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
32739
32740    // PARSING
32741
32742    addRegexToken('w', match1to2, match1to2NoLeadingZero);
32743    addRegexToken('ww', match1to2, match2);
32744    addRegexToken('W', match1to2, match1to2NoLeadingZero);
32745    addRegexToken('WW', match1to2, match2);
32746
32747    addWeekParseToken(
32748        ['w', 'ww', 'W', 'WW'],
32749        function (input, week, config, token) {
32750            week[token.substr(0, 1)] = toInt(input);
32751        }
32752    );
32753
32754    // HELPERS
32755
32756    // LOCALES
32757
32758    function localeWeek(mom) {
32759        return weekOfYear(mom, this._week.dow, this._week.doy).week;
32760    }
32761
32762    var defaultLocaleWeek = {
32763        dow: 0, // Sunday is the first day of the week.
32764        doy: 6, // The week that contains Jan 6th is the first week of the year.
32765    };
32766
32767    function localeFirstDayOfWeek() {
32768        return this._week.dow;
32769    }
32770
32771    function localeFirstDayOfYear() {
32772        return this._week.doy;
32773    }
32774
32775    // MOMENTS
32776
32777    function getSetWeek(input) {
32778        var week = this.localeData().week(this);
32779        return input == null ? week : this.add((input - week) * 7, 'd');
32780    }
32781
32782    function getSetISOWeek(input) {
32783        var week = weekOfYear(this, 1, 4).week;
32784        return input == null ? week : this.add((input - week) * 7, 'd');
32785    }
32786
32787    // FORMATTING
32788
32789    addFormatToken('d', 0, 'do', 'day');
32790
32791    addFormatToken('dd', 0, 0, function (format) {
32792        return this.localeData().weekdaysMin(this, format);
32793    });
32794
32795    addFormatToken('ddd', 0, 0, function (format) {
32796        return this.localeData().weekdaysShort(this, format);
32797    });
32798
32799    addFormatToken('dddd', 0, 0, function (format) {
32800        return this.localeData().weekdays(this, format);
32801    });
32802
32803    addFormatToken('e', 0, 0, 'weekday');
32804    addFormatToken('E', 0, 0, 'isoWeekday');
32805
32806    // PARSING
32807
32808    addRegexToken('d', match1to2);
32809    addRegexToken('e', match1to2);
32810    addRegexToken('E', match1to2);
32811    addRegexToken('dd', function (isStrict, locale) {
32812        return locale.weekdaysMinRegex(isStrict);
32813    });
32814    addRegexToken('ddd', function (isStrict, locale) {
32815        return locale.weekdaysShortRegex(isStrict);
32816    });
32817    addRegexToken('dddd', function (isStrict, locale) {
32818        return locale.weekdaysRegex(isStrict);
32819    });
32820
32821    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
32822        var weekday = config._locale.weekdaysParse(input, token, config._strict);
32823        // if we didn't get a weekday name, mark the date as invalid
32824        if (weekday != null) {
32825            week.d = weekday;
32826        } else {
32827            getParsingFlags(config).invalidWeekday = input;
32828        }
32829    });
32830
32831    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
32832        week[token] = toInt(input);
32833    });
32834
32835    // HELPERS
32836
32837    function parseWeekday(input, locale) {
32838        if (typeof input !== 'string') {
32839            return input;
32840        }
32841
32842        if (!isNaN(input)) {
32843            return parseInt(input, 10);
32844        }
32845
32846        input = locale.weekdaysParse(input);
32847        if (typeof input === 'number') {
32848            return input;
32849        }
32850
32851        return null;
32852    }
32853
32854    function parseIsoWeekday(input, locale) {
32855        if (typeof input === 'string') {
32856            return locale.weekdaysParse(input) % 7 || 7;
32857        }
32858        return isNaN(input) ? null : input;
32859    }
32860
32861    // LOCALES
32862    function shiftWeekdays(ws, n) {
32863        return ws.slice(n, 7).concat(ws.slice(0, n));
32864    }
32865
32866    var defaultLocaleWeekdays =
32867            'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
32868        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
32869        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
32870        defaultWeekdaysRegex = matchWord,
32871        defaultWeekdaysShortRegex = matchWord,
32872        defaultWeekdaysMinRegex = matchWord;
32873
32874    function localeWeekdays(m, format) {
32875        var weekdays = isArray(this._weekdays)
32876            ? this._weekdays
32877            : this._weekdays[
32878                  m && m !== true && this._weekdays.isFormat.test(format)
32879                      ? 'format'
32880                      : 'standalone'
32881              ];
32882        return m === true
32883            ? shiftWeekdays(weekdays, this._week.dow)
32884            : m
32885              ? weekdays[m.day()]
32886              : weekdays;
32887    }
32888
32889    function localeWeekdaysShort(m) {
32890        return m === true
32891            ? shiftWeekdays(this._weekdaysShort, this._week.dow)
32892            : m
32893              ? this._weekdaysShort[m.day()]
32894              : this._weekdaysShort;
32895    }
32896
32897    function localeWeekdaysMin(m) {
32898        return m === true
32899            ? shiftWeekdays(this._weekdaysMin, this._week.dow)
32900            : m
32901              ? this._weekdaysMin[m.day()]
32902              : this._weekdaysMin;
32903    }
32904
32905    function handleStrictParse$1(weekdayName, format, strict) {
32906        var i,
32907            ii,
32908            mom,
32909            llc = weekdayName.toLocaleLowerCase();
32910        if (!this._weekdaysParse) {
32911            this._weekdaysParse = [];
32912            this._shortWeekdaysParse = [];
32913            this._minWeekdaysParse = [];
32914
32915            for (i = 0; i < 7; ++i) {
32916                mom = createUTC([2000, 1]).day(i);
32917                this._minWeekdaysParse[i] = this.weekdaysMin(
32918                    mom,
32919                    ''
32920                ).toLocaleLowerCase();
32921                this._shortWeekdaysParse[i] = this.weekdaysShort(
32922                    mom,
32923                    ''
32924                ).toLocaleLowerCase();
32925                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();
32926            }
32927        }
32928
32929        if (strict) {
32930            if (format === 'dddd') {
32931                ii = indexOf.call(this._weekdaysParse, llc);
32932                return ii !== -1 ? ii : null;
32933            } else if (format === 'ddd') {
32934                ii = indexOf.call(this._shortWeekdaysParse, llc);
32935                return ii !== -1 ? ii : null;
32936            } else {
32937                ii = indexOf.call(this._minWeekdaysParse, llc);
32938                return ii !== -1 ? ii : null;
32939            }
32940        } else {
32941            if (format === 'dddd') {
32942                ii = indexOf.call(this._weekdaysParse, llc);
32943                if (ii !== -1) {
32944                    return ii;
32945                }
32946                ii = indexOf.call(this._shortWeekdaysParse, llc);
32947                if (ii !== -1) {
32948                    return ii;
32949                }
32950                ii = indexOf.call(this._minWeekdaysParse, llc);
32951                return ii !== -1 ? ii : null;
32952            } else if (format === 'ddd') {
32953                ii = indexOf.call(this._shortWeekdaysParse, llc);
32954                if (ii !== -1) {
32955                    return ii;
32956                }
32957                ii = indexOf.call(this._weekdaysParse, llc);
32958                if (ii !== -1) {
32959                    return ii;
32960                }
32961                ii = indexOf.call(this._minWeekdaysParse, llc);
32962                return ii !== -1 ? ii : null;
32963            } else {
32964                ii = indexOf.call(this._minWeekdaysParse, llc);
32965                if (ii !== -1) {
32966                    return ii;
32967                }
32968                ii = indexOf.call(this._weekdaysParse, llc);
32969                if (ii !== -1) {
32970                    return ii;
32971                }
32972                ii = indexOf.call(this._shortWeekdaysParse, llc);
32973                return ii !== -1 ? ii : null;
32974            }
32975        }
32976    }
32977
32978    function localeWeekdaysParse(weekdayName, format, strict) {
32979        var i, mom, regex;
32980
32981        if (this._weekdaysParseExact) {
32982            return handleStrictParse$1.call(this, weekdayName, format, strict);
32983        }
32984
32985        if (!this._weekdaysParse) {
32986            this._weekdaysParse = [];
32987            this._minWeekdaysParse = [];
32988            this._shortWeekdaysParse = [];
32989            this._fullWeekdaysParse = [];
32990        }
32991
32992        for (i = 0; i < 7; i++) {
32993            // make the regex if we don't have it already
32994
32995            mom = createUTC([2000, 1]).day(i);
32996            if (strict && !this._fullWeekdaysParse[i]) {
32997                this._fullWeekdaysParse[i] = new RegExp(
32998                    '^' + this.weekdays(mom, '').replace('.', '\\.?') + '$',
32999                    'i'
33000                );
33001                this._shortWeekdaysParse[i] = new RegExp(
33002                    '^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$',
33003                    'i'
33004                );
33005                this._minWeekdaysParse[i] = new RegExp(
33006                    '^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$',
33007                    'i'
33008                );
33009            }
33010            if (!this._weekdaysParse[i]) {
33011                regex =
33012                    '^' +
33013                    this.weekdays(mom, '') +
33014                    '|^' +
33015                    this.weekdaysShort(mom, '') +
33016                    '|^' +
33017                    this.weekdaysMin(mom, '');
33018                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
33019            }
33020            // test the regex
33021            if (
33022                strict &&
33023                format === 'dddd' &&
33024                this._fullWeekdaysParse[i].test(weekdayName)
33025            ) {
33026                return i;
33027            } else if (
33028                strict &&
33029                format === 'ddd' &&
33030                this._shortWeekdaysParse[i].test(weekdayName)
33031            ) {
33032                return i;
33033            } else if (
33034                strict &&
33035                format === 'dd' &&
33036                this._minWeekdaysParse[i].test(weekdayName)
33037            ) {
33038                return i;
33039            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
33040                return i;
33041            }
33042        }
33043    }
33044
33045    // MOMENTS
33046
33047    function getSetDayOfWeek(input) {
33048        if (!this.isValid()) {
33049            return input != null ? this : NaN;
33050        }
33051
33052        var day = get(this, 'Day');
33053        if (input != null) {
33054            input = parseWeekday(input, this.localeData());
33055            return this.add(input - day, 'd');
33056        } else {
33057            return day;
33058        }
33059    }
33060
33061    function getSetLocaleDayOfWeek(input) {
33062        if (!this.isValid()) {
33063            return input != null ? this : NaN;
33064        }
33065        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
33066        return input == null ? weekday : this.add(input - weekday, 'd');
33067    }
33068
33069    function getSetISODayOfWeek(input) {
33070        if (!this.isValid()) {
33071            return input != null ? this : NaN;
33072        }
33073
33074        // behaves the same as moment#day except
33075        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
33076        // as a setter, sunday should belong to the previous week.
33077
33078        if (input != null) {
33079            var weekday = parseIsoWeekday(input, this.localeData());
33080            return this.day(this.day() % 7 ? weekday : weekday - 7);
33081        } else {
33082            return this.day() || 7;
33083        }
33084    }
33085
33086    function weekdaysRegex(isStrict) {
33087        if (this._weekdaysParseExact) {
33088            if (!hasOwnProp(this, '_weekdaysRegex')) {
33089                computeWeekdaysParse.call(this);
33090            }
33091            if (isStrict) {
33092                return this._weekdaysStrictRegex;
33093            } else {
33094                return this._weekdaysRegex;
33095            }
33096        } else {
33097            if (!hasOwnProp(this, '_weekdaysRegex')) {
33098                this._weekdaysRegex = defaultWeekdaysRegex;
33099            }
33100            return this._weekdaysStrictRegex && isStrict
33101                ? this._weekdaysStrictRegex
33102                : this._weekdaysRegex;
33103        }
33104    }
33105
33106    function weekdaysShortRegex(isStrict) {
33107        if (this._weekdaysParseExact) {
33108            if (!hasOwnProp(this, '_weekdaysRegex')) {
33109                computeWeekdaysParse.call(this);
33110            }
33111            if (isStrict) {
33112                return this._weekdaysShortStrictRegex;
33113            } else {
33114                return this._weekdaysShortRegex;
33115            }
33116        } else {
33117            if (!hasOwnProp(this, '_weekdaysShortRegex')) {
33118                this._weekdaysShortRegex = defaultWeekdaysShortRegex;
33119            }
33120            return this._weekdaysShortStrictRegex && isStrict
33121                ? this._weekdaysShortStrictRegex
33122                : this._weekdaysShortRegex;
33123        }
33124    }
33125
33126    function weekdaysMinRegex(isStrict) {
33127        if (this._weekdaysParseExact) {
33128            if (!hasOwnProp(this, '_weekdaysRegex')) {
33129                computeWeekdaysParse.call(this);
33130            }
33131            if (isStrict) {
33132                return this._weekdaysMinStrictRegex;
33133            } else {
33134                return this._weekdaysMinRegex;
33135            }
33136        } else {
33137            if (!hasOwnProp(this, '_weekdaysMinRegex')) {
33138                this._weekdaysMinRegex = defaultWeekdaysMinRegex;
33139            }
33140            return this._weekdaysMinStrictRegex && isStrict
33141                ? this._weekdaysMinStrictRegex
33142                : this._weekdaysMinRegex;
33143        }
33144    }
33145
33146    function computeWeekdaysParse() {
33147        function cmpLenRev(a, b) {
33148            return b.length - a.length;
33149        }
33150
33151        var minPieces = [],
33152            shortPieces = [],
33153            longPieces = [],
33154            mixedPieces = [],
33155            i,
33156            mom,
33157            minp,
33158            shortp,
33159            longp;
33160        for (i = 0; i < 7; i++) {
33161            // make the regex if we don't have it already
33162            mom = createUTC([2000, 1]).day(i);
33163            minp = regexEscape(this.weekdaysMin(mom, ''));
33164            shortp = regexEscape(this.weekdaysShort(mom, ''));
33165            longp = regexEscape(this.weekdays(mom, ''));
33166            minPieces.push(minp);
33167            shortPieces.push(shortp);
33168            longPieces.push(longp);
33169            mixedPieces.push(minp);
33170            mixedPieces.push(shortp);
33171            mixedPieces.push(longp);
33172        }
33173        // Sorting makes sure if one weekday (or abbr) is a prefix of another it
33174        // will match the longer piece.
33175        minPieces.sort(cmpLenRev);
33176        shortPieces.sort(cmpLenRev);
33177        longPieces.sort(cmpLenRev);
33178        mixedPieces.sort(cmpLenRev);
33179
33180        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
33181        this._weekdaysShortRegex = this._weekdaysRegex;
33182        this._weekdaysMinRegex = this._weekdaysRegex;
33183
33184        this._weekdaysStrictRegex = new RegExp(
33185            '^(' + longPieces.join('|') + ')',
33186            'i'
33187        );
33188        this._weekdaysShortStrictRegex = new RegExp(
33189            '^(' + shortPieces.join('|') + ')',
33190            'i'
33191        );
33192        this._weekdaysMinStrictRegex = new RegExp(
33193            '^(' + minPieces.join('|') + ')',
33194            'i'
33195        );
33196    }
33197
33198    // FORMATTING
33199
33200    function hFormat() {
33201        return this.hours() % 12 || 12;
33202    }
33203
33204    function kFormat() {
33205        return this.hours() || 24;
33206    }
33207
33208    addFormatToken('H', ['HH', 2], 0, 'hour');
33209    addFormatToken('h', ['hh', 2], 0, hFormat);
33210    addFormatToken('k', ['kk', 2], 0, kFormat);
33211
33212    addFormatToken('hmm', 0, 0, function () {
33213        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
33214    });
33215
33216    addFormatToken('hmmss', 0, 0, function () {
33217        return (
33218            '' +
33219            hFormat.apply(this) +
33220            zeroFill(this.minutes(), 2) +
33221            zeroFill(this.seconds(), 2)
33222        );
33223    });
33224
33225    addFormatToken('Hmm', 0, 0, function () {
33226        return '' + this.hours() + zeroFill(this.minutes(), 2);
33227    });
33228
33229    addFormatToken('Hmmss', 0, 0, function () {
33230        return (
33231            '' +
33232            this.hours() +
33233            zeroFill(this.minutes(), 2) +
33234            zeroFill(this.seconds(), 2)
33235        );
33236    });
33237
33238    function meridiem(token, lowercase) {
33239        addFormatToken(token, 0, 0, function () {
33240            return this.localeData().meridiem(
33241                this.hours(),
33242                this.minutes(),
33243                lowercase
33244            );
33245        });
33246    }
33247
33248    meridiem('a', true);
33249    meridiem('A', false);
33250
33251    // PARSING
33252
33253    function matchMeridiem(isStrict, locale) {
33254        return locale._meridiemParse;
33255    }
33256
33257    addRegexToken('a', matchMeridiem);
33258    addRegexToken('A', matchMeridiem);
33259    addRegexToken('H', match1to2, match1to2HasZero);
33260    addRegexToken('h', match1to2, match1to2NoLeadingZero);
33261    addRegexToken('k', match1to2, match1to2NoLeadingZero);
33262    addRegexToken('HH', match1to2, match2);
33263    addRegexToken('hh', match1to2, match2);
33264    addRegexToken('kk', match1to2, match2);
33265
33266    addRegexToken('hmm', match3to4);
33267    addRegexToken('hmmss', match5to6);
33268    addRegexToken('Hmm', match3to4);
33269    addRegexToken('Hmmss', match5to6);
33270
33271    addParseToken(['H', 'HH'], HOUR);
33272    addParseToken(['k', 'kk'], function (input, array, config) {
33273        var kInput = toInt(input);
33274        array[HOUR] = kInput === 24 ? 0 : kInput;
33275    });
33276    addParseToken(['a', 'A'], function (input, array, config) {
33277        config._isPm = config._locale.isPM(input);
33278        config._meridiem = input;
33279    });
33280    addParseToken(['h', 'hh'], function (input, array, config) {
33281        array[HOUR] = toInt(input);
33282        getParsingFlags(config).bigHour = true;
33283    });
33284    addParseToken('hmm', function (input, array, config) {
33285        var pos = input.length - 2;
33286        array[HOUR] = toInt(input.substr(0, pos));
33287        array[MINUTE] = toInt(input.substr(pos));
33288        getParsingFlags(config).bigHour = true;
33289    });
33290    addParseToken('hmmss', function (input, array, config) {
33291        var pos1 = input.length - 4,
33292            pos2 = input.length - 2;
33293        array[HOUR] = toInt(input.substr(0, pos1));
33294        array[MINUTE] = toInt(input.substr(pos1, 2));
33295        array[SECOND] = toInt(input.substr(pos2));
33296        getParsingFlags(config).bigHour = true;
33297    });
33298    addParseToken('Hmm', function (input, array, config) {
33299        var pos = input.length - 2;
33300        array[HOUR] = toInt(input.substr(0, pos));
33301        array[MINUTE] = toInt(input.substr(pos));
33302    });
33303    addParseToken('Hmmss', function (input, array, config) {
33304        var pos1 = input.length - 4,
33305            pos2 = input.length - 2;
33306        array[HOUR] = toInt(input.substr(0, pos1));
33307        array[MINUTE] = toInt(input.substr(pos1, 2));
33308        array[SECOND] = toInt(input.substr(pos2));
33309    });
33310
33311    // LOCALES
33312
33313    function localeIsPM(input) {
33314        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
33315        // Using charAt should be more compatible.
33316        return (input + '').toLowerCase().charAt(0) === 'p';
33317    }
33318
33319    var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i,
33320        // Setting the hour should keep the time, because the user explicitly
33321        // specified which hour they want. So trying to maintain the same hour (in
33322        // a new timezone) makes sense. Adding/subtracting hours does not follow
33323        // this rule.
33324        getSetHour = makeGetSet('Hours', true);
33325
33326    function localeMeridiem(hours, minutes, isLower) {
33327        if (hours > 11) {
33328            return isLower ? 'pm' : 'PM';
33329        } else {
33330            return isLower ? 'am' : 'AM';
33331        }
33332    }
33333
33334    var baseConfig = {
33335        calendar: defaultCalendar,
33336        longDateFormat: defaultLongDateFormat,
33337        invalidDate: defaultInvalidDate,
33338        ordinal: defaultOrdinal,
33339        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,
33340        relativeTime: defaultRelativeTime,
33341
33342        months: defaultLocaleMonths,
33343        monthsShort: defaultLocaleMonthsShort,
33344
33345        week: defaultLocaleWeek,
33346
33347        weekdays: defaultLocaleWeekdays,
33348        weekdaysMin: defaultLocaleWeekdaysMin,
33349        weekdaysShort: defaultLocaleWeekdaysShort,
33350
33351        meridiemParse: defaultLocaleMeridiemParse,
33352    };
33353
33354    // internal storage for locale config files
33355    var locales = {},
33356        localeFamilies = {},
33357        globalLocale;
33358
33359    function commonPrefix(arr1, arr2) {
33360        var i,
33361            minl = Math.min(arr1.length, arr2.length);
33362        for (i = 0; i < minl; i += 1) {
33363            if (arr1[i] !== arr2[i]) {
33364                return i;
33365            }
33366        }
33367        return minl;
33368    }
33369
33370    function normalizeLocale(key) {
33371        return key ? key.toLowerCase().replace('_', '-') : key;
33372    }
33373
33374    // pick the locale from the array
33375    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
33376    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
33377    function chooseLocale(names) {
33378        var i = 0,
33379            j,
33380            next,
33381            locale,
33382            split;
33383
33384        while (i < names.length) {
33385            split = normalizeLocale(names[i]).split('-');
33386            j = split.length;
33387            next = normalizeLocale(names[i + 1]);
33388            next = next ? next.split('-') : null;
33389            while (j > 0) {
33390                locale = loadLocale(split.slice(0, j).join('-'));
33391                if (locale) {
33392                    return locale;
33393                }
33394                if (
33395                    next &&
33396                    next.length >= j &&
33397                    commonPrefix(split, next) >= j - 1
33398                ) {
33399                    //the next array item is better than a shallower substring of this one
33400                    break;
33401                }
33402                j--;
33403            }
33404            i++;
33405        }
33406        return globalLocale;
33407    }
33408
33409    function isLocaleNameSane(name) {
33410        // Prevent names that look like filesystem paths, i.e contain '/' or '\'
33411        // Ensure name is available and function returns boolean
33412        return !!(name && name.match('^[^/\\\\]*$'));
33413    }
33414
33415    function loadLocale(name) {
33416        var oldLocale = null,
33417            aliasedRequire;
33418        // TODO: Find a better way to register and load all the locales in Node
33419        if (
33420            locales[name] === undefined &&
33421            "object" !== 'undefined' &&
33422            module &&
33423            module.exports &&
33424            isLocaleNameSane(name)
33425        ) {
33426            try {
33427                oldLocale = globalLocale._abbr;
33428                aliasedRequire = undefined;
33429                __webpack_require__("./node_modules/moment/locale sync recursive ^\\.\\/.*$")("./" + name);
33430                getSetGlobalLocale(oldLocale);
33431            } catch (e) {
33432                // mark as not found to avoid repeating expensive file require call causing high CPU
33433                // when trying to find en-US, en_US, en-us for every format call
33434                locales[name] = null; // null means not found
33435            }
33436        }
33437        return locales[name];
33438    }
33439
33440    // This function will load locale and then set the global locale.  If
33441    // no arguments are passed in, it will simply return the current global
33442    // locale key.
33443    function getSetGlobalLocale(key, values) {
33444        var data;
33445        if (key) {
33446            if (isUndefined(values)) {
33447                data = getLocale(key);
33448            } else {
33449                data = defineLocale(key, values);
33450            }
33451
33452            if (data) {
33453                // moment.duration._locale = moment._locale = data;
33454                globalLocale = data;
33455            } else {
33456                if (typeof console !== 'undefined' && console.warn) {
33457                    //warn user if arguments are passed but the locale could not be set
33458                    console.warn(
33459                        'Locale ' + key + ' not found. Did you forget to load it?'
33460                    );
33461                }
33462            }
33463        }
33464
33465        return globalLocale._abbr;
33466    }
33467
33468    function defineLocale(name, config) {
33469        if (config !== null) {
33470            var locale,
33471                parentConfig = baseConfig;
33472            config.abbr = name;
33473            if (locales[name] != null) {
33474                deprecateSimple(
33475                    'defineLocaleOverride',
33476                    'use moment.updateLocale(localeName, config) to change ' +
33477                        'an existing locale. moment.defineLocale(localeName, ' +
33478                        'config) should only be used for creating a new locale ' +
33479                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'
33480                );
33481                parentConfig = locales[name]._config;
33482            } else if (config.parentLocale != null) {
33483                if (locales[config.parentLocale] != null) {
33484                    parentConfig = locales[config.parentLocale]._config;
33485                } else {
33486                    locale = loadLocale(config.parentLocale);
33487                    if (locale != null) {
33488                        parentConfig = locale._config;
33489                    } else {
33490                        if (!localeFamilies[config.parentLocale]) {
33491                            localeFamilies[config.parentLocale] = [];
33492                        }
33493                        localeFamilies[config.parentLocale].push({
33494                            name: name,
33495                            config: config,
33496                        });
33497                        return null;
33498                    }
33499                }
33500            }
33501            locales[name] = new Locale(mergeConfigs(parentConfig, config));
33502
33503            if (localeFamilies[name]) {
33504                localeFamilies[name].forEach(function (x) {
33505                    defineLocale(x.name, x.config);
33506                });
33507            }
33508
33509            // backwards compat for now: also set the locale
33510            // make sure we set the locale AFTER all child locales have been
33511            // created, so we won't end up with the child locale set.
33512            getSetGlobalLocale(name);
33513
33514            return locales[name];
33515        } else {
33516            // useful for testing
33517            delete locales[name];
33518            return null;
33519        }
33520    }
33521
33522    function updateLocale(name, config) {
33523        if (config != null) {
33524            var locale,
33525                tmpLocale,
33526                parentConfig = baseConfig;
33527
33528            if (locales[name] != null && locales[name].parentLocale != null) {
33529                // Update existing child locale in-place to avoid memory-leaks
33530                locales[name].set(mergeConfigs(locales[name]._config, config));
33531            } else {
33532                // MERGE
33533                tmpLocale = loadLocale(name);
33534                if (tmpLocale != null) {
33535                    parentConfig = tmpLocale._config;
33536                }
33537                config = mergeConfigs(parentConfig, config);
33538                if (tmpLocale == null) {
33539                    // updateLocale is called for creating a new locale
33540                    // Set abbr so it will have a name (getters return
33541                    // undefined otherwise).
33542                    config.abbr = name;
33543                }
33544                locale = new Locale(config);
33545                locale.parentLocale = locales[name];
33546                locales[name] = locale;
33547            }
33548
33549            // backwards compat for now: also set the locale
33550            getSetGlobalLocale(name);
33551        } else {
33552            // pass null for config to unupdate, useful for tests
33553            if (locales[name] != null) {
33554                if (locales[name].parentLocale != null) {
33555                    locales[name] = locales[name].parentLocale;
33556                    if (name === getSetGlobalLocale()) {
33557                        getSetGlobalLocale(name);
33558                    }
33559                } else if (locales[name] != null) {
33560                    delete locales[name];
33561                }
33562            }
33563        }
33564        return locales[name];
33565    }
33566
33567    // returns locale data
33568    function getLocale(key) {
33569        var locale;
33570
33571        if (key && key._locale && key._locale._abbr) {
33572            key = key._locale._abbr;
33573        }
33574
33575        if (!key) {
33576            return globalLocale;
33577        }
33578
33579        if (!isArray(key)) {
33580            //short-circuit everything else
33581            locale = loadLocale(key);
33582            if (locale) {
33583                return locale;
33584            }
33585            key = [key];
33586        }
33587
33588        return chooseLocale(key);
33589    }
33590
33591    function listLocales() {
33592        return keys(locales);
33593    }
33594
33595    function checkOverflow(m) {
33596        var overflow,
33597            a = m._a;
33598
33599        if (a && getParsingFlags(m).overflow === -2) {
33600            overflow =
33601                a[MONTH] < 0 || a[MONTH] > 11
33602                    ? MONTH
33603                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])
33604                      ? DATE
33605                      : a[HOUR] < 0 ||
33606                          a[HOUR] > 24 ||
33607                          (a[HOUR] === 24 &&
33608                              (a[MINUTE] !== 0 ||
33609                                  a[SECOND] !== 0 ||
33610                                  a[MILLISECOND] !== 0))
33611                        ? HOUR
33612                        : a[MINUTE] < 0 || a[MINUTE] > 59
33613                          ? MINUTE
33614                          : a[SECOND] < 0 || a[SECOND] > 59
33615                            ? SECOND
33616                            : a[MILLISECOND] < 0 || a[MILLISECOND] > 999
33617                              ? MILLISECOND
33618                              : -1;
33619
33620            if (
33621                getParsingFlags(m)._overflowDayOfYear &&
33622                (overflow < YEAR || overflow > DATE)
33623            ) {
33624                overflow = DATE;
33625            }
33626            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
33627                overflow = WEEK;
33628            }
33629            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
33630                overflow = WEEKDAY;
33631            }
33632
33633            getParsingFlags(m).overflow = overflow;
33634        }
33635
33636        return m;
33637    }
33638
33639    // iso 8601 regex
33640    // 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)
33641    var extendedIsoRegex =
33642            /^\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)?)?$/,
33643        basicIsoRegex =
33644            /^\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)?)?$/,
33645        tzRegex = /Z|[+-]\d\d(?::?\d\d)?/,
33646        isoDates = [
33647            ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
33648            ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
33649            ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
33650            ['GGGG-[W]WW', /\d{4}-W\d\d/, false],
33651            ['YYYY-DDD', /\d{4}-\d{3}/],
33652            ['YYYY-MM', /\d{4}-\d\d/, false],
33653            ['YYYYYYMMDD', /[+-]\d{10}/],
33654            ['YYYYMMDD', /\d{8}/],
33655            ['GGGG[W]WWE', /\d{4}W\d{3}/],
33656            ['GGGG[W]WW', /\d{4}W\d{2}/, false],
33657            ['YYYYDDD', /\d{7}/],
33658            ['YYYYMM', /\d{6}/, false],
33659            ['YYYY', /\d{4}/, false],
33660        ],
33661        // iso time formats and regexes
33662        isoTimes = [
33663            ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
33664            ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
33665            ['HH:mm:ss', /\d\d:\d\d:\d\d/],
33666            ['HH:mm', /\d\d:\d\d/],
33667            ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
33668            ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
33669            ['HHmmss', /\d\d\d\d\d\d/],
33670            ['HHmm', /\d\d\d\d/],
33671            ['HH', /\d\d/],
33672        ],
33673        aspNetJsonRegex = /^\/?Date\((-?\d+)/i,
33674        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3
33675        rfc2822 =
33676            /^(?:(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}))$/,
33677        obsOffsets = {
33678            UT: 0,
33679            GMT: 0,
33680            EDT: -4 * 60,
33681            EST: -5 * 60,
33682            CDT: -5 * 60,
33683            CST: -6 * 60,
33684            MDT: -6 * 60,
33685            MST: -7 * 60,
33686            PDT: -7 * 60,
33687            PST: -8 * 60,
33688        };
33689
33690    // date from iso format
33691    function configFromISO(config) {
33692        var i,
33693            l,
33694            string = config._i,
33695            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
33696            allowTime,
33697            dateFormat,
33698            timeFormat,
33699            tzFormat,
33700            isoDatesLen = isoDates.length,
33701            isoTimesLen = isoTimes.length;
33702
33703        if (match) {
33704            getParsingFlags(config).iso = true;
33705            for (i = 0, l = isoDatesLen; i < l; i++) {
33706                if (isoDates[i][1].exec(match[1])) {
33707                    dateFormat = isoDates[i][0];
33708                    allowTime = isoDates[i][2] !== false;
33709                    break;
33710                }
33711            }
33712            if (dateFormat == null) {
33713                config._isValid = false;
33714                return;
33715            }
33716            if (match[3]) {
33717                for (i = 0, l = isoTimesLen; i < l; i++) {
33718                    if (isoTimes[i][1].exec(match[3])) {
33719                        // match[2] should be 'T' or space
33720                        timeFormat = (match[2] || ' ') + isoTimes[i][0];
33721                        break;
33722                    }
33723                }
33724                if (timeFormat == null) {
33725                    config._isValid = false;
33726                    return;
33727                }
33728            }
33729            if (!allowTime && timeFormat != null) {
33730                config._isValid = false;
33731                return;
33732            }
33733            if (match[4]) {
33734                if (tzRegex.exec(match[4])) {
33735                    tzFormat = 'Z';
33736                } else {
33737                    config._isValid = false;
33738                    return;
33739                }
33740            }
33741            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
33742            configFromStringAndFormat(config);
33743        } else {
33744            config._isValid = false;
33745        }
33746    }
33747
33748    function extractFromRFC2822Strings(
33749        yearStr,
33750        monthStr,
33751        dayStr,
33752        hourStr,
33753        minuteStr,
33754        secondStr
33755    ) {
33756        var result = [
33757            untruncateYear(yearStr),
33758            defaultLocaleMonthsShort.indexOf(monthStr),
33759            parseInt(dayStr, 10),
33760            parseInt(hourStr, 10),
33761            parseInt(minuteStr, 10),
33762        ];
33763
33764        if (secondStr) {
33765            result.push(parseInt(secondStr, 10));
33766        }
33767
33768        return result;
33769    }
33770
33771    function untruncateYear(yearStr) {
33772        var year = parseInt(yearStr, 10);
33773        if (year <= 49) {
33774            return 2000 + year;
33775        } else if (year <= 999) {
33776            return 1900 + year;
33777        }
33778        return year;
33779    }
33780
33781    function preprocessRFC2822(s) {
33782        // Remove comments and folding whitespace and replace multiple-spaces with a single space
33783        return s
33784            .replace(/\([^()]*\)|[\n\t]/g, ' ')
33785            .replace(/(\s\s+)/g, ' ')
33786            .replace(/^\s\s*/, '')
33787            .replace(/\s\s*$/, '');
33788    }
33789
33790    function checkWeekday(weekdayStr, parsedInput, config) {
33791        if (weekdayStr) {
33792            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.
33793            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),
33794                weekdayActual = new Date(
33795                    parsedInput[0],
33796                    parsedInput[1],
33797                    parsedInput[2]
33798                ).getDay();
33799            if (weekdayProvided !== weekdayActual) {
33800                getParsingFlags(config).weekdayMismatch = true;
33801                config._isValid = false;
33802                return false;
33803            }
33804        }
33805        return true;
33806    }
33807
33808    function calculateOffset(obsOffset, militaryOffset, numOffset) {
33809        if (obsOffset) {
33810            return obsOffsets[obsOffset];
33811        } else if (militaryOffset) {
33812            // the only allowed military tz is Z
33813            return 0;
33814        } else {
33815            var hm = parseInt(numOffset, 10),
33816                m = hm % 100,
33817                h = (hm - m) / 100;
33818            return h * 60 + m;
33819        }
33820    }
33821
33822    // date and time from ref 2822 format
33823    function configFromRFC2822(config) {
33824        var match = rfc2822.exec(preprocessRFC2822(config._i)),
33825            parsedArray;
33826        if (match) {
33827            parsedArray = extractFromRFC2822Strings(
33828                match[4],
33829                match[3],
33830                match[2],
33831                match[5],
33832                match[6],
33833                match[7]
33834            );
33835            if (!checkWeekday(match[1], parsedArray, config)) {
33836                return;
33837            }
33838
33839            config._a = parsedArray;
33840            config._tzm = calculateOffset(match[8], match[9], match[10]);
33841
33842            config._d = createUTCDate.apply(null, config._a);
33843            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
33844
33845            getParsingFlags(config).rfc2822 = true;
33846        } else {
33847            config._isValid = false;
33848        }
33849    }
33850
33851    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict
33852    function configFromString(config) {
33853        var matched = aspNetJsonRegex.exec(config._i);
33854        if (matched !== null) {
33855            config._d = new Date(+matched[1]);
33856            return;
33857        }
33858
33859        configFromISO(config);
33860        if (config._isValid === false) {
33861            delete config._isValid;
33862        } else {
33863            return;
33864        }
33865
33866        configFromRFC2822(config);
33867        if (config._isValid === false) {
33868            delete config._isValid;
33869        } else {
33870            return;
33871        }
33872
33873        if (config._strict) {
33874            config._isValid = false;
33875        } else {
33876            // Final attempt, use Input Fallback
33877            hooks.createFromInputFallback(config);
33878        }
33879    }
33880
33881    hooks.createFromInputFallback = deprecate(
33882        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +
33883            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +
33884            'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',
33885        function (config) {
33886            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
33887        }
33888    );
33889
33890    // Pick the first defined of two or three arguments.
33891    function defaults(a, b, c) {
33892        if (a != null) {
33893            return a;
33894        }
33895        if (b != null) {
33896            return b;
33897        }
33898        return c;
33899    }
33900
33901    function currentDateArray(config) {
33902        // hooks is actually the exported moment object
33903        var nowValue = new Date(hooks.now());
33904        if (config._useUTC) {
33905            return [
33906                nowValue.getUTCFullYear(),
33907                nowValue.getUTCMonth(),
33908                nowValue.getUTCDate(),
33909            ];
33910        }
33911        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
33912    }
33913
33914    // convert an array to a date.
33915    // the array should mirror the parameters below
33916    // note: all values past the year are optional and will default to the lowest possible value.
33917    // [year, month, day , hour, minute, second, millisecond]
33918    function configFromArray(config) {
33919        var i,
33920            date,
33921            input = [],
33922            currentDate,
33923            expectedWeekday,
33924            yearToUse;
33925
33926        if (config._d) {
33927            return;
33928        }
33929
33930        currentDate = currentDateArray(config);
33931
33932        //compute day of the year from weeks and weekdays
33933        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
33934            dayOfYearFromWeekInfo(config);
33935        }
33936
33937        //if the day of the year is set, figure out what it is
33938        if (config._dayOfYear != null) {
33939            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
33940
33941            if (
33942                config._dayOfYear > daysInYear(yearToUse) ||
33943                config._dayOfYear === 0
33944            ) {
33945                getParsingFlags(config)._overflowDayOfYear = true;
33946            }
33947
33948            date = createUTCDate(yearToUse, 0, config._dayOfYear);
33949            config._a[MONTH] = date.getUTCMonth();
33950            config._a[DATE] = date.getUTCDate();
33951        }
33952
33953        // Default to current date.
33954        // * if no year, month, day of month are given, default to today
33955        // * if day of month is given, default month and year
33956        // * if month is given, default only year
33957        // * if year is given, don't default anything
33958        for (i = 0; i < 3 && config._a[i] == null; ++i) {
33959            config._a[i] = input[i] = currentDate[i];
33960        }
33961
33962        // Zero out whatever was not defaulted, including time
33963        for (; i < 7; i++) {
33964            config._a[i] = input[i] =
33965                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];
33966        }
33967
33968        // Check for 24:00:00.000
33969        if (
33970            config._a[HOUR] === 24 &&
33971            config._a[MINUTE] === 0 &&
33972            config._a[SECOND] === 0 &&
33973            config._a[MILLISECOND] === 0
33974        ) {
33975            config._nextDay = true;
33976            config._a[HOUR] = 0;
33977        }
33978
33979        config._d = (config._useUTC ? createUTCDate : createDate).apply(
33980            null,
33981            input
33982        );
33983        expectedWeekday = config._useUTC
33984            ? config._d.getUTCDay()
33985            : config._d.getDay();
33986
33987        // Apply timezone offset from input. The actual utcOffset can be changed
33988        // with parseZone.
33989        if (config._tzm != null) {
33990            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
33991        }
33992
33993        if (config._nextDay) {
33994            config._a[HOUR] = 24;
33995        }
33996
33997        // check for mismatching day of week
33998        if (
33999            config._w &&
34000            typeof config._w.d !== 'undefined' &&
34001            config._w.d !== expectedWeekday
34002        ) {
34003            getParsingFlags(config).weekdayMismatch = true;
34004        }
34005    }
34006
34007    function dayOfYearFromWeekInfo(config) {
34008        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;
34009
34010        w = config._w;
34011        if (w.GG != null || w.W != null || w.E != null) {
34012            dow = 1;
34013            doy = 4;
34014
34015            // TODO: We need to take the current isoWeekYear, but that depends on
34016            // how we interpret now (local, utc, fixed offset). So create
34017            // a now version of current config (take local/utc/offset flags, and
34018            // create now).
34019            weekYear = defaults(
34020                w.GG,
34021                config._a[YEAR],
34022                weekOfYear(createLocal(), 1, 4).year
34023            );
34024            week = defaults(w.W, 1);
34025            weekday = defaults(w.E, 1);
34026            if (weekday < 1 || weekday > 7) {
34027                weekdayOverflow = true;
34028            }
34029        } else {
34030            dow = config._locale._week.dow;
34031            doy = config._locale._week.doy;
34032
34033            curWeek = weekOfYear(createLocal(), dow, doy);
34034
34035            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);
34036
34037            // Default to current week.
34038            week = defaults(w.w, curWeek.week);
34039
34040            if (w.d != null) {
34041                // weekday -- low day numbers are considered next week
34042                weekday = w.d;
34043                if (weekday < 0 || weekday > 6) {
34044                    weekdayOverflow = true;
34045                }
34046            } else if (w.e != null) {
34047                // local weekday -- counting starts from beginning of week
34048                weekday = w.e + dow;
34049                if (w.e < 0 || w.e > 6) {
34050                    weekdayOverflow = true;
34051                }
34052            } else {
34053                // default to beginning of week
34054                weekday = dow;
34055            }
34056        }
34057        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
34058            getParsingFlags(config)._overflowWeeks = true;
34059        } else if (weekdayOverflow != null) {
34060            getParsingFlags(config)._overflowWeekday = true;
34061        } else {
34062            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
34063            config._a[YEAR] = temp.year;
34064            config._dayOfYear = temp.dayOfYear;
34065        }
34066    }
34067
34068    // constant that refers to the ISO standard
34069    hooks.ISO_8601 = function () {};
34070
34071    // constant that refers to the RFC 2822 form
34072    hooks.RFC_2822 = function () {};
34073
34074    // date from string and format string
34075    function configFromStringAndFormat(config) {
34076        // TODO: Move this to another part of the creation flow to prevent circular deps
34077        if (config._f === hooks.ISO_8601) {
34078            configFromISO(config);
34079            return;
34080        }
34081        if (config._f === hooks.RFC_2822) {
34082            configFromRFC2822(config);
34083            return;
34084        }
34085        config._a = [];
34086        getParsingFlags(config).empty = true;
34087
34088        // This array is used to make a Date, either with `new Date` or `Date.UTC`
34089        var string = '' + config._i,
34090            i,
34091            parsedInput,
34092            tokens,
34093            token,
34094            skipped,
34095            stringLength = string.length,
34096            totalParsedInputLength = 0,
34097            era,
34098            tokenLen;
34099
34100        tokens =
34101            expandFormat(config._f, config._locale).match(formattingTokens) || [];
34102        tokenLen = tokens.length;
34103        for (i = 0; i < tokenLen; i++) {
34104            token = tokens[i];
34105            parsedInput = (string.match(getParseRegexForToken(token, config)) ||
34106                [])[0];
34107            if (parsedInput) {
34108                skipped = string.substr(0, string.indexOf(parsedInput));
34109                if (skipped.length > 0) {
34110                    getParsingFlags(config).unusedInput.push(skipped);
34111                }
34112                string = string.slice(
34113                    string.indexOf(parsedInput) + parsedInput.length
34114                );
34115                totalParsedInputLength += parsedInput.length;
34116            }
34117            // don't parse if it's not a known token
34118            if (formatTokenFunctions[token]) {
34119                if (parsedInput) {
34120                    getParsingFlags(config).empty = false;
34121                } else {
34122                    getParsingFlags(config).unusedTokens.push(token);
34123                }
34124                addTimeToArrayFromToken(token, parsedInput, config);
34125            } else if (config._strict && !parsedInput) {
34126                getParsingFlags(config).unusedTokens.push(token);
34127            }
34128        }
34129
34130        // add remaining unparsed input length to the string
34131        getParsingFlags(config).charsLeftOver =
34132            stringLength - totalParsedInputLength;
34133        if (string.length > 0) {
34134            getParsingFlags(config).unusedInput.push(string);
34135        }
34136
34137        // clear _12h flag if hour is <= 12
34138        if (
34139            config._a[HOUR] <= 12 &&
34140            getParsingFlags(config).bigHour === true &&
34141            config._a[HOUR] > 0
34142        ) {
34143            getParsingFlags(config).bigHour = undefined;
34144        }
34145
34146        getParsingFlags(config).parsedDateParts = config._a.slice(0);
34147        getParsingFlags(config).meridiem = config._meridiem;
34148        // handle meridiem
34149        config._a[HOUR] = meridiemFixWrap(
34150            config._locale,
34151            config._a[HOUR],
34152            config._meridiem
34153        );
34154
34155        // handle era
34156        era = getParsingFlags(config).era;
34157        if (era !== null) {
34158            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);
34159        }
34160
34161        configFromArray(config);
34162        checkOverflow(config);
34163    }
34164
34165    function meridiemFixWrap(locale, hour, meridiem) {
34166        var isPm;
34167
34168        if (meridiem == null) {
34169            // nothing to do
34170            return hour;
34171        }
34172        if (locale.meridiemHour != null) {
34173            return locale.meridiemHour(hour, meridiem);
34174        } else if (locale.isPM != null) {
34175            // Fallback
34176            isPm = locale.isPM(meridiem);
34177            if (isPm && hour < 12) {
34178                hour += 12;
34179            }
34180            if (!isPm && hour === 12) {
34181                hour = 0;
34182            }
34183            return hour;
34184        } else {
34185            // this is not supposed to happen
34186            return hour;
34187        }
34188    }
34189
34190    // date from string and array of format strings
34191    function configFromStringAndArray(config) {
34192        var tempConfig,
34193            bestMoment,
34194            scoreToBeat,
34195            i,
34196            currentScore,
34197            validFormatFound,
34198            bestFormatIsValid = false,
34199            configfLen = config._f.length;
34200
34201        if (configfLen === 0) {
34202            getParsingFlags(config).invalidFormat = true;
34203            config._d = new Date(NaN);
34204            return;
34205        }
34206
34207        for (i = 0; i < configfLen; i++) {
34208            currentScore = 0;
34209            validFormatFound = false;
34210            tempConfig = copyConfig({}, config);
34211            if (config._useUTC != null) {
34212                tempConfig._useUTC = config._useUTC;
34213            }
34214            tempConfig._f = config._f[i];
34215            configFromStringAndFormat(tempConfig);
34216
34217            if (isValid(tempConfig)) {
34218                validFormatFound = true;
34219            }
34220
34221            // if there is any input that was not parsed add a penalty for that format
34222            currentScore += getParsingFlags(tempConfig).charsLeftOver;
34223
34224            //or tokens
34225            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
34226
34227            getParsingFlags(tempConfig).score = currentScore;
34228
34229            if (!bestFormatIsValid) {
34230                if (
34231                    scoreToBeat == null ||
34232                    currentScore < scoreToBeat ||
34233                    validFormatFound
34234                ) {
34235                    scoreToBeat = currentScore;
34236                    bestMoment = tempConfig;
34237                    if (validFormatFound) {
34238                        bestFormatIsValid = true;
34239                    }
34240                }
34241            } else {
34242                if (currentScore < scoreToBeat) {
34243                    scoreToBeat = currentScore;
34244                    bestMoment = tempConfig;
34245                }
34246            }
34247        }
34248
34249        extend(config, bestMoment || tempConfig);
34250    }
34251
34252    function configFromObject(config) {
34253        if (config._d) {
34254            return;
34255        }
34256
34257        var i = normalizeObjectUnits(config._i),
34258            dayOrDate = i.day === undefined ? i.date : i.day;
34259        config._a = map(
34260            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],
34261            function (obj) {
34262                return obj && parseInt(obj, 10);
34263            }
34264        );
34265
34266        configFromArray(config);
34267    }
34268
34269    function createFromConfig(config) {
34270        var res = new Moment(checkOverflow(prepareConfig(config)));
34271        if (res._nextDay) {
34272            // Adding is smart enough around DST
34273            res.add(1, 'd');
34274            res._nextDay = undefined;
34275        }
34276
34277        return res;
34278    }
34279
34280    function prepareConfig(config) {
34281        var input = config._i,
34282            format = config._f;
34283
34284        config._locale = config._locale || getLocale(config._l);
34285
34286        if (input === null || (format === undefined && input === '')) {
34287            return createInvalid({ nullInput: true });
34288        }
34289
34290        if (typeof input === 'string') {
34291            config._i = input = config._locale.preparse(input);
34292        }
34293
34294        if (isMoment(input)) {
34295            return new Moment(checkOverflow(input));
34296        } else if (isDate(input)) {
34297            config._d = input;
34298        } else if (isArray(format)) {
34299            configFromStringAndArray(config);
34300        } else if (format) {
34301            configFromStringAndFormat(config);
34302        } else {
34303            configFromInput(config);
34304        }
34305
34306        if (!isValid(config)) {
34307            config._d = null;
34308        }
34309
34310        return config;
34311    }
34312
34313    function configFromInput(config) {
34314        var input = config._i;
34315        if (isUndefined(input)) {
34316            config._d = new Date(hooks.now());
34317        } else if (isDate(input)) {
34318            config._d = new Date(input.valueOf());
34319        } else if (typeof input === 'string') {
34320            configFromString(config);
34321        } else if (isArray(input)) {
34322            config._a = map(input.slice(0), function (obj) {
34323                return parseInt(obj, 10);
34324            });
34325            configFromArray(config);
34326        } else if (isObject(input)) {
34327            configFromObject(config);
34328        } else if (isNumber(input)) {
34329            // from milliseconds
34330            config._d = new Date(input);
34331        } else {
34332            hooks.createFromInputFallback(config);
34333        }
34334    }
34335
34336    function createLocalOrUTC(input, format, locale, strict, isUTC) {
34337        var c = {};
34338
34339        if (format === true || format === false) {
34340            strict = format;
34341            format = undefined;
34342        }
34343
34344        if (locale === true || locale === false) {
34345            strict = locale;
34346            locale = undefined;
34347        }
34348
34349        if (
34350            (isObject(input) && isObjectEmpty(input)) ||
34351            (isArray(input) && input.length === 0)
34352        ) {
34353            input = undefined;
34354        }
34355        // object construction must be done this way.
34356        // https://github.com/moment/moment/issues/1423
34357        c._isAMomentObject = true;
34358        c._useUTC = c._isUTC = isUTC;
34359        c._l = locale;
34360        c._i = input;
34361        c._f = format;
34362        c._strict = strict;
34363
34364        return createFromConfig(c);
34365    }
34366
34367    function createLocal(input, format, locale, strict) {
34368        return createLocalOrUTC(input, format, locale, strict, false);
34369    }
34370
34371    var prototypeMin = deprecate(
34372            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',
34373            function () {
34374                var other = createLocal.apply(null, arguments);
34375                if (this.isValid() && other.isValid()) {
34376                    return other < this ? this : other;
34377                } else {
34378                    return createInvalid();
34379                }
34380            }
34381        ),
34382        prototypeMax = deprecate(
34383            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',
34384            function () {
34385                var other = createLocal.apply(null, arguments);
34386                if (this.isValid() && other.isValid()) {
34387                    return other > this ? this : other;
34388                } else {
34389                    return createInvalid();
34390                }
34391            }
34392        );
34393
34394    // Pick a moment m from moments so that m[fn](other) is true for all
34395    // other. This relies on the function fn to be transitive.
34396    //
34397    // moments should either be an array of moment objects or an array, whose
34398    // first element is an array of moment objects.
34399    function pickBy(fn, moments) {
34400        var res, i;
34401        if (moments.length === 1 && isArray(moments[0])) {
34402            moments = moments[0];
34403        }
34404        if (!moments.length) {
34405            return createLocal();
34406        }
34407        res = moments[0];
34408        for (i = 1; i < moments.length; ++i) {
34409            if (!moments[i].isValid() || moments[i][fn](res)) {
34410                res = moments[i];
34411            }
34412        }
34413        return res;
34414    }
34415
34416    // TODO: Use [].sort instead?
34417    function min() {
34418        var args = [].slice.call(arguments, 0);
34419
34420        return pickBy('isBefore', args);
34421    }
34422
34423    function max() {
34424        var args = [].slice.call(arguments, 0);
34425
34426        return pickBy('isAfter', args);
34427    }
34428
34429    var now = function () {
34430        return Date.now ? Date.now() : +new Date();
34431    };
34432
34433    var ordering = [
34434        'year',
34435        'quarter',
34436        'month',
34437        'week',
34438        'day',
34439        'hour',
34440        'minute',
34441        'second',
34442        'millisecond',
34443    ];
34444
34445    function isDurationValid(m) {
34446        var key,
34447            unitHasDecimal = false,
34448            i,
34449            orderLen = ordering.length;
34450        for (key in m) {
34451            if (
34452                hasOwnProp(m, key) &&
34453                !(
34454                    indexOf.call(ordering, key) !== -1 &&
34455                    (m[key] == null || !isNaN(m[key]))
34456                )
34457            ) {
34458                return false;
34459            }
34460        }
34461
34462        for (i = 0; i < orderLen; ++i) {
34463            if (m[ordering[i]]) {
34464                if (unitHasDecimal) {
34465                    return false; // only allow non-integers for smallest unit
34466                }
34467                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {
34468                    unitHasDecimal = true;
34469                }
34470            }
34471        }
34472
34473        return true;
34474    }
34475
34476    function isValid$1() {
34477        return this._isValid;
34478    }
34479
34480    function createInvalid$1() {
34481        return createDuration(NaN);
34482    }
34483
34484    function Duration(duration) {
34485        var normalizedInput = normalizeObjectUnits(duration),
34486            years = normalizedInput.year || 0,
34487            quarters = normalizedInput.quarter || 0,
34488            months = normalizedInput.month || 0,
34489            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,
34490            days = normalizedInput.day || 0,
34491            hours = normalizedInput.hour || 0,
34492            minutes = normalizedInput.minute || 0,
34493            seconds = normalizedInput.second || 0,
34494            milliseconds = normalizedInput.millisecond || 0;
34495
34496        this._isValid = isDurationValid(normalizedInput);
34497
34498        // representation for dateAddRemove
34499        this._milliseconds =
34500            +milliseconds +
34501            seconds * 1e3 + // 1000
34502            minutes * 6e4 + // 1000 * 60
34503            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
34504        // Because of dateAddRemove treats 24 hours as different from a
34505        // day when working around DST, we need to store them separately
34506        this._days = +days + weeks * 7;
34507        // It is impossible to translate months into days without knowing
34508        // which months you are are talking about, so we have to store
34509        // it separately.
34510        this._months = +months + quarters * 3 + years * 12;
34511
34512        this._data = {};
34513
34514        this._locale = getLocale();
34515
34516        this._bubble();
34517    }
34518
34519    function isDuration(obj) {
34520        return obj instanceof Duration;
34521    }
34522
34523    function absRound(number) {
34524        if (number < 0) {
34525            return Math.round(-1 * number) * -1;
34526        } else {
34527            return Math.round(number);
34528        }
34529    }
34530
34531    // compare two arrays, return the number of differences
34532    function compareArrays(array1, array2, dontConvert) {
34533        var len = Math.min(array1.length, array2.length),
34534            lengthDiff = Math.abs(array1.length - array2.length),
34535            diffs = 0,
34536            i;
34537        for (i = 0; i < len; i++) {
34538            if (
34539                (dontConvert && array1[i] !== array2[i]) ||
34540                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))
34541            ) {
34542                diffs++;
34543            }
34544        }
34545        return diffs + lengthDiff;
34546    }
34547
34548    // FORMATTING
34549
34550    function offset(token, separator) {
34551        addFormatToken(token, 0, 0, function () {
34552            var offset = this.utcOffset(),
34553                sign = '+';
34554            if (offset < 0) {
34555                offset = -offset;
34556                sign = '-';
34557            }
34558            return (
34559                sign +
34560                zeroFill(~~(offset / 60), 2) +
34561                separator +
34562                zeroFill(~~offset % 60, 2)
34563            );
34564        });
34565    }
34566
34567    offset('Z', ':');
34568    offset('ZZ', '');
34569
34570    // PARSING
34571
34572    addRegexToken('Z', matchShortOffset);
34573    addRegexToken('ZZ', matchShortOffset);
34574    addParseToken(['Z', 'ZZ'], function (input, array, config) {
34575        config._useUTC = true;
34576        config._tzm = offsetFromString(matchShortOffset, input);
34577    });
34578
34579    // HELPERS
34580
34581    // timezone chunker
34582    // '+10:00' > ['10',  '00']
34583    // '-1530'  > ['-15', '30']
34584    var chunkOffset = /([\+\-]|\d\d)/gi;
34585
34586    function offsetFromString(matcher, string) {
34587        var matches = (string || '').match(matcher),
34588            chunk,
34589            parts,
34590            minutes;
34591
34592        if (matches === null) {
34593            return null;
34594        }
34595
34596        chunk = matches[matches.length - 1] || [];
34597        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];
34598        minutes = +(parts[1] * 60) + toInt(parts[2]);
34599
34600        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;
34601    }
34602
34603    // Return a moment from input, that is local/utc/zone equivalent to model.
34604    function cloneWithOffset(input, model) {
34605        var res, diff;
34606        if (model._isUTC) {
34607            res = model.clone();
34608            diff =
34609                (isMoment(input) || isDate(input)
34610                    ? input.valueOf()
34611                    : createLocal(input).valueOf()) - res.valueOf();
34612            // Use low-level api, because this fn is low-level api.
34613            res._d.setTime(res._d.valueOf() + diff);
34614            hooks.updateOffset(res, false);
34615            return res;
34616        } else {
34617            return createLocal(input).local();
34618        }
34619    }
34620
34621    function getDateOffset(m) {
34622        // On Firefox.24 Date#getTimezoneOffset returns a floating point.
34623        // https://github.com/moment/moment/pull/1871
34624        return -Math.round(m._d.getTimezoneOffset());
34625    }
34626
34627    // HOOKS
34628
34629    // This function will be called whenever a moment is mutated.
34630    // It is intended to keep the offset in sync with the timezone.
34631    hooks.updateOffset = function () {};
34632
34633    // MOMENTS
34634
34635    // keepLocalTime = true means only change the timezone, without
34636    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
34637    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
34638    // +0200, so we adjust the time as needed, to be valid.
34639    //
34640    // Keeping the time actually adds/subtracts (one hour)
34641    // from the actual represented time. That is why we call updateOffset
34642    // a second time. In case it wants us to change the offset again
34643    // _changeInProgress == true case, then we have to adjust, because
34644    // there is no such time in the given timezone.
34645    function getSetOffset(input, keepLocalTime, keepMinutes) {
34646        var offset = this._offset || 0,
34647            localAdjust;
34648        if (!this.isValid()) {
34649            return input != null ? this : NaN;
34650        }
34651        if (input != null) {
34652            if (typeof input === 'string') {
34653                input = offsetFromString(matchShortOffset, input);
34654                if (input === null) {
34655                    return this;
34656                }
34657            } else if (Math.abs(input) < 16 && !keepMinutes) {
34658                input = input * 60;
34659            }
34660            if (!this._isUTC && keepLocalTime) {
34661                localAdjust = getDateOffset(this);
34662            }
34663            this._offset = input;
34664            this._isUTC = true;
34665            if (localAdjust != null) {
34666                this.add(localAdjust, 'm');
34667            }
34668            if (offset !== input) {
34669                if (!keepLocalTime || this._changeInProgress) {
34670                    addSubtract(
34671                        this,
34672                        createDuration(input - offset, 'm'),
34673                        1,
34674                        false
34675                    );
34676                } else if (!this._changeInProgress) {
34677                    this._changeInProgress = true;
34678                    hooks.updateOffset(this, true);
34679                    this._changeInProgress = null;
34680                }
34681            }
34682            return this;
34683        } else {
34684            return this._isUTC ? offset : getDateOffset(this);
34685        }
34686    }
34687
34688    function getSetZone(input, keepLocalTime) {
34689        if (input != null) {
34690            if (typeof input !== 'string') {
34691                input = -input;
34692            }
34693
34694            this.utcOffset(input, keepLocalTime);
34695
34696            return this;
34697        } else {
34698            return -this.utcOffset();
34699        }
34700    }
34701
34702    function setOffsetToUTC(keepLocalTime) {
34703        return this.utcOffset(0, keepLocalTime);
34704    }
34705
34706    function setOffsetToLocal(keepLocalTime) {
34707        if (this._isUTC) {
34708            this.utcOffset(0, keepLocalTime);
34709            this._isUTC = false;
34710
34711            if (keepLocalTime) {
34712                this.subtract(getDateOffset(this), 'm');
34713            }
34714        }
34715        return this;
34716    }
34717
34718    function setOffsetToParsedOffset() {
34719        if (this._tzm != null) {
34720            this.utcOffset(this._tzm, false, true);
34721        } else if (typeof this._i === 'string') {
34722            var tZone = offsetFromString(matchOffset, this._i);
34723            if (tZone != null) {
34724                this.utcOffset(tZone);
34725            } else {
34726                this.utcOffset(0, true);
34727            }
34728        }
34729        return this;
34730    }
34731
34732    function hasAlignedHourOffset(input) {
34733        if (!this.isValid()) {
34734            return false;
34735        }
34736        input = input ? createLocal(input).utcOffset() : 0;
34737
34738        return (this.utcOffset() - input) % 60 === 0;
34739    }
34740
34741    function isDaylightSavingTime() {
34742        return (
34743            this.utcOffset() > this.clone().month(0).utcOffset() ||
34744            this.utcOffset() > this.clone().month(5).utcOffset()
34745        );
34746    }
34747
34748    function isDaylightSavingTimeShifted() {
34749        if (!isUndefined(this._isDSTShifted)) {
34750            return this._isDSTShifted;
34751        }
34752
34753        var c = {},
34754            other;
34755
34756        copyConfig(c, this);
34757        c = prepareConfig(c);
34758
34759        if (c._a) {
34760            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
34761            this._isDSTShifted =
34762                this.isValid() && compareArrays(c._a, other.toArray()) > 0;
34763        } else {
34764            this._isDSTShifted = false;
34765        }
34766
34767        return this._isDSTShifted;
34768    }
34769
34770    function isLocal() {
34771        return this.isValid() ? !this._isUTC : false;
34772    }
34773
34774    function isUtcOffset() {
34775        return this.isValid() ? this._isUTC : false;
34776    }
34777
34778    function isUtc() {
34779        return this.isValid() ? this._isUTC && this._offset === 0 : false;
34780    }
34781
34782    // ASP.NET json date format regex
34783    var aspNetRegex = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,
34784        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
34785        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
34786        // and further modified to allow for strings containing both week and day
34787        isoRegex =
34788            /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
34789
34790    function createDuration(input, key) {
34791        var duration = input,
34792            // matching against regexp is expensive, do it on demand
34793            match = null,
34794            sign,
34795            ret,
34796            diffRes;
34797
34798        if (isDuration(input)) {
34799            duration = {
34800                ms: input._milliseconds,
34801                d: input._days,
34802                M: input._months,
34803            };
34804        } else if (isNumber(input) || !isNaN(+input)) {
34805            duration = {};
34806            if (key) {
34807                duration[key] = +input;
34808            } else {
34809                duration.milliseconds = +input;
34810            }
34811        } else if ((match = aspNetRegex.exec(input))) {
34812            sign = match[1] === '-' ? -1 : 1;
34813            duration = {
34814                y: 0,
34815                d: toInt(match[DATE]) * sign,
34816                h: toInt(match[HOUR]) * sign,
34817                m: toInt(match[MINUTE]) * sign,
34818                s: toInt(match[SECOND]) * sign,
34819                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match
34820            };
34821        } else if ((match = isoRegex.exec(input))) {
34822            sign = match[1] === '-' ? -1 : 1;
34823            duration = {
34824                y: parseIso(match[2], sign),
34825                M: parseIso(match[3], sign),
34826                w: parseIso(match[4], sign),
34827                d: parseIso(match[5], sign),
34828                h: parseIso(match[6], sign),
34829                m: parseIso(match[7], sign),
34830                s: parseIso(match[8], sign),
34831            };
34832        } else if (duration == null) {
34833            // checks for null or undefined
34834            duration = {};
34835        } else if (
34836            typeof duration === 'object' &&
34837            ('from' in duration || 'to' in duration)
34838        ) {
34839            diffRes = momentsDifference(
34840                createLocal(duration.from),
34841                createLocal(duration.to)
34842            );
34843
34844            duration = {};
34845            duration.ms = diffRes.milliseconds;
34846            duration.M = diffRes.months;
34847        }
34848
34849        ret = new Duration(duration);
34850
34851        if (isDuration(input) && hasOwnProp(input, '_locale')) {
34852            ret._locale = input._locale;
34853        }
34854
34855        if (isDuration(input) && hasOwnProp(input, '_isValid')) {
34856            ret._isValid = input._isValid;
34857        }
34858
34859        return ret;
34860    }
34861
34862    createDuration.fn = Duration.prototype;
34863    createDuration.invalid = createInvalid$1;
34864
34865    function parseIso(inp, sign) {
34866        // We'd normally use ~~inp for this, but unfortunately it also
34867        // converts floats to ints.
34868        // inp may be undefined, so careful calling replace on it.
34869        var res = inp && parseFloat(inp.replace(',', '.'));
34870        // apply sign while we're at it
34871        return (isNaN(res) ? 0 : res) * sign;
34872    }
34873
34874    function positiveMomentsDifference(base, other) {
34875        var res = {};
34876
34877        res.months =
34878            other.month() - base.month() + (other.year() - base.year()) * 12;
34879        if (base.clone().add(res.months, 'M').isAfter(other)) {
34880            --res.months;
34881        }
34882
34883        res.milliseconds = +other - +base.clone().add(res.months, 'M');
34884
34885        return res;
34886    }
34887
34888    function momentsDifference(base, other) {
34889        var res;
34890        if (!(base.isValid() && other.isValid())) {
34891            return { milliseconds: 0, months: 0 };
34892        }
34893
34894        other = cloneWithOffset(other, base);
34895        if (base.isBefore(other)) {
34896            res = positiveMomentsDifference(base, other);
34897        } else {
34898            res = positiveMomentsDifference(other, base);
34899            res.milliseconds = -res.milliseconds;
34900            res.months = -res.months;
34901        }
34902
34903        return res;
34904    }
34905
34906    // TODO: remove 'name' arg after deprecation is removed
34907    function createAdder(direction, name) {
34908        return function (val, period) {
34909            var dur, tmp;
34910            //invert the arguments, but complain about it
34911            if (period !== null && !isNaN(+period)) {
34912                deprecateSimple(
34913                    name,
34914                    'moment().' +
34915                        name +
34916                        '(period, number) is deprecated. Please use moment().' +
34917                        name +
34918                        '(number, period). ' +
34919                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'
34920                );
34921                tmp = val;
34922                val = period;
34923                period = tmp;
34924            }
34925
34926            dur = createDuration(val, period);
34927            addSubtract(this, dur, direction);
34928            return this;
34929        };
34930    }
34931
34932    function addSubtract(mom, duration, isAdding, updateOffset) {
34933        var milliseconds = duration._milliseconds,
34934            days = absRound(duration._days),
34935            months = absRound(duration._months);
34936
34937        if (!mom.isValid()) {
34938            // No op
34939            return;
34940        }
34941
34942        updateOffset = updateOffset == null ? true : updateOffset;
34943
34944        if (months) {
34945            setMonth(mom, get(mom, 'Month') + months * isAdding);
34946        }
34947        if (days) {
34948            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);
34949        }
34950        if (milliseconds) {
34951            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
34952        }
34953        if (updateOffset) {
34954            hooks.updateOffset(mom, days || months);
34955        }
34956    }
34957
34958    var add = createAdder(1, 'add'),
34959        subtract = createAdder(-1, 'subtract');
34960
34961    function isString(input) {
34962        return typeof input === 'string' || input instanceof String;
34963    }
34964
34965    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined
34966    function isMomentInput(input) {
34967        return (
34968            isMoment(input) ||
34969            isDate(input) ||
34970            isString(input) ||
34971            isNumber(input) ||
34972            isNumberOrStringArray(input) ||
34973            isMomentInputObject(input) ||
34974            input === null ||
34975            input === undefined
34976        );
34977    }
34978
34979    function isMomentInputObject(input) {
34980        var objectTest = isObject(input) && !isObjectEmpty(input),
34981            propertyTest = false,
34982            properties = [
34983                'years',
34984                'year',
34985                'y',
34986                'months',
34987                'month',
34988                'M',
34989                'days',
34990                'day',
34991                'd',
34992                'dates',
34993                'date',
34994                'D',
34995                'hours',
34996                'hour',
34997                'h',
34998                'minutes',
34999                'minute',
35000                'm',
35001                'seconds',
35002                'second',
35003                's',
35004                'milliseconds',
35005                'millisecond',
35006                'ms',
35007            ],
35008            i,
35009            property,
35010            propertyLen = properties.length;
35011
35012        for (i = 0; i < propertyLen; i += 1) {
35013            property = properties[i];
35014            propertyTest = propertyTest || hasOwnProp(input, property);
35015        }
35016
35017        return objectTest && propertyTest;
35018    }
35019
35020    function isNumberOrStringArray(input) {
35021        var arrayTest = isArray(input),
35022            dataTypeTest = false;
35023        if (arrayTest) {
35024            dataTypeTest =
35025                input.filter(function (item) {
35026                    return !isNumber(item) && isString(input);
35027                }).length === 0;
35028        }
35029        return arrayTest && dataTypeTest;
35030    }
35031
35032    function isCalendarSpec(input) {
35033        var objectTest = isObject(input) && !isObjectEmpty(input),
35034            propertyTest = false,
35035            properties = [
35036                'sameDay',
35037                'nextDay',
35038                'lastDay',
35039                'nextWeek',
35040                'lastWeek',
35041                'sameElse',
35042            ],
35043            i,
35044            property;
35045
35046        for (i = 0; i < properties.length; i += 1) {
35047            property = properties[i];
35048            propertyTest = propertyTest || hasOwnProp(input, property);
35049        }
35050
35051        return objectTest && propertyTest;
35052    }
35053
35054    function getCalendarFormat(myMoment, now) {
35055        var diff = myMoment.diff(now, 'days', true);
35056        return diff < -6
35057            ? 'sameElse'
35058            : diff < -1
35059              ? 'lastWeek'
35060              : diff < 0
35061                ? 'lastDay'
35062                : diff < 1
35063                  ? 'sameDay'
35064                  : diff < 2
35065                    ? 'nextDay'
35066                    : diff < 7
35067                      ? 'nextWeek'
35068                      : 'sameElse';
35069    }
35070
35071    function calendar$1(time, formats) {
35072        // Support for single parameter, formats only overload to the calendar function
35073        if (arguments.length === 1) {
35074            if (!arguments[0]) {
35075                time = undefined;
35076                formats = undefined;
35077            } else if (isMomentInput(arguments[0])) {
35078                time = arguments[0];
35079                formats = undefined;
35080            } else if (isCalendarSpec(arguments[0])) {
35081                formats = arguments[0];
35082                time = undefined;
35083            }
35084        }
35085        // We want to compare the start of today, vs this.
35086        // Getting start-of-today depends on whether we're local/utc/offset or not.
35087        var now = time || createLocal(),
35088            sod = cloneWithOffset(now, this).startOf('day'),
35089            format = hooks.calendarFormat(this, sod) || 'sameElse',
35090            output =
35091                formats &&
35092                (isFunction(formats[format])
35093                    ? formats[format].call(this, now)
35094                    : formats[format]);
35095
35096        return this.format(
35097            output || this.localeData().calendar(format, this, createLocal(now))
35098        );
35099    }
35100
35101    function clone() {
35102        return new Moment(this);
35103    }
35104
35105    function isAfter(input, units) {
35106        var localInput = isMoment(input) ? input : createLocal(input);
35107        if (!(this.isValid() && localInput.isValid())) {
35108            return false;
35109        }
35110        units = normalizeUnits(units) || 'millisecond';
35111        if (units === 'millisecond') {
35112            return this.valueOf() > localInput.valueOf();
35113        } else {
35114            return localInput.valueOf() < this.clone().startOf(units).valueOf();
35115        }
35116    }
35117
35118    function isBefore(input, units) {
35119        var localInput = isMoment(input) ? input : createLocal(input);
35120        if (!(this.isValid() && localInput.isValid())) {
35121            return false;
35122        }
35123        units = normalizeUnits(units) || 'millisecond';
35124        if (units === 'millisecond') {
35125            return this.valueOf() < localInput.valueOf();
35126        } else {
35127            return this.clone().endOf(units).valueOf() < localInput.valueOf();
35128        }
35129    }
35130
35131    function isBetween(from, to, units, inclusivity) {
35132        var localFrom = isMoment(from) ? from : createLocal(from),
35133            localTo = isMoment(to) ? to : createLocal(to);
35134        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {
35135            return false;
35136        }
35137        inclusivity = inclusivity || '()';
35138        return (
35139            (inclusivity[0] === '('
35140                ? this.isAfter(localFrom, units)
35141                : !this.isBefore(localFrom, units)) &&
35142            (inclusivity[1] === ')'
35143                ? this.isBefore(localTo, units)
35144                : !this.isAfter(localTo, units))
35145        );
35146    }
35147
35148    function isSame(input, units) {
35149        var localInput = isMoment(input) ? input : createLocal(input),
35150            inputMs;
35151        if (!(this.isValid() && localInput.isValid())) {
35152            return false;
35153        }
35154        units = normalizeUnits(units) || 'millisecond';
35155        if (units === 'millisecond') {
35156            return this.valueOf() === localInput.valueOf();
35157        } else {
35158            inputMs = localInput.valueOf();
35159            return (
35160                this.clone().startOf(units).valueOf() <= inputMs &&
35161                inputMs <= this.clone().endOf(units).valueOf()
35162            );
35163        }
35164    }
35165
35166    function isSameOrAfter(input, units) {
35167        return this.isSame(input, units) || this.isAfter(input, units);
35168    }
35169
35170    function isSameOrBefore(input, units) {
35171        return this.isSame(input, units) || this.isBefore(input, units);
35172    }
35173
35174    function diff(input, units, asFloat) {
35175        var that, zoneDelta, output;
35176
35177        if (!this.isValid()) {
35178            return NaN;
35179        }
35180
35181        that = cloneWithOffset(input, this);
35182
35183        if (!that.isValid()) {
35184            return NaN;
35185        }
35186
35187        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
35188
35189        units = normalizeUnits(units);
35190
35191        switch (units) {
35192            case 'year':
35193                output = monthDiff(this, that) / 12;
35194                break;
35195            case 'month':
35196                output = monthDiff(this, that);
35197                break;
35198            case 'quarter':
35199                output = monthDiff(this, that) / 3;
35200                break;
35201            case 'second':
35202                output = (this - that) / 1e3;
35203                break; // 1000
35204            case 'minute':
35205                output = (this - that) / 6e4;
35206                break; // 1000 * 60
35207            case 'hour':
35208                output = (this - that) / 36e5;
35209                break; // 1000 * 60 * 60
35210            case 'day':
35211                output = (this - that - zoneDelta) / 864e5;
35212                break; // 1000 * 60 * 60 * 24, negate dst
35213            case 'week':
35214                output = (this - that - zoneDelta) / 6048e5;
35215                break; // 1000 * 60 * 60 * 24 * 7, negate dst
35216            default:
35217                output = this - that;
35218        }
35219
35220        return asFloat ? output : absFloor(output);
35221    }
35222
35223    function monthDiff(a, b) {
35224        if (a.date() < b.date()) {
35225            // end-of-month calculations work correct when the start month has more
35226            // days than the end month.
35227            return -monthDiff(b, a);
35228        }
35229        // difference in months
35230        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),
35231            // b is in (anchor - 1 month, anchor + 1 month)
35232            anchor = a.clone().add(wholeMonthDiff, 'months'),
35233            anchor2,
35234            adjust;
35235
35236        if (b - anchor < 0) {
35237            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
35238            // linear across the month
35239            adjust = (b - anchor) / (anchor - anchor2);
35240        } else {
35241            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
35242            // linear across the month
35243            adjust = (b - anchor) / (anchor2 - anchor);
35244        }
35245
35246        //check for negative zero, return zero if negative zero
35247        return -(wholeMonthDiff + adjust) || 0;
35248    }
35249
35250    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
35251    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';
35252
35253    function toString() {
35254        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
35255    }
35256
35257    function toISOString(keepOffset) {
35258        if (!this.isValid()) {
35259            return null;
35260        }
35261        var utc = keepOffset !== true,
35262            m = utc ? this.clone().utc() : this;
35263        if (m.year() < 0 || m.year() > 9999) {
35264            return formatMoment(
35265                m,
35266                utc
35267                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'
35268                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'
35269            );
35270        }
35271        if (isFunction(Date.prototype.toISOString)) {
35272            // native implementation is ~50x faster, use it when we can
35273            if (utc) {
35274                return this.toDate().toISOString();
35275            } else {
35276                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)
35277                    .toISOString()
35278                    .replace('Z', formatMoment(m, 'Z'));
35279            }
35280        }
35281        return formatMoment(
35282            m,
35283            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'
35284        );
35285    }
35286
35287    /**
35288     * Return a human readable representation of a moment that can
35289     * also be evaluated to get a new moment which is the same
35290     *
35291     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
35292     */
35293    function inspect() {
35294        if (!this.isValid()) {
35295            return 'moment.invalid(/* ' + this._i + ' */)';
35296        }
35297        var func = 'moment',
35298            zone = '',
35299            prefix,
35300            year,
35301            datetime,
35302            suffix;
35303        if (!this.isLocal()) {
35304            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';
35305            zone = 'Z';
35306        }
35307        prefix = '[' + func + '("]';
35308        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';
35309        datetime = '-MM-DD[T]HH:mm:ss.SSS';
35310        suffix = zone + '[")]';
35311
35312        return this.format(prefix + year + datetime + suffix);
35313    }
35314
35315    function format(inputString) {
35316        if (!inputString) {
35317            inputString = this.isUtc()
35318                ? hooks.defaultFormatUtc
35319                : hooks.defaultFormat;
35320        }
35321        var output = formatMoment(this, inputString);
35322        return this.localeData().postformat(output);
35323    }
35324
35325    function from(time, withoutSuffix) {
35326        if (
35327            this.isValid() &&
35328            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
35329        ) {
35330            return createDuration({ to: this, from: time })
35331                .locale(this.locale())
35332                .humanize(!withoutSuffix);
35333        } else {
35334            return this.localeData().invalidDate();
35335        }
35336    }
35337
35338    function fromNow(withoutSuffix) {
35339        return this.from(createLocal(), withoutSuffix);
35340    }
35341
35342    function to(time, withoutSuffix) {
35343        if (
35344            this.isValid() &&
35345            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
35346        ) {
35347            return createDuration({ from: this, to: time })
35348                .locale(this.locale())
35349                .humanize(!withoutSuffix);
35350        } else {
35351            return this.localeData().invalidDate();
35352        }
35353    }
35354
35355    function toNow(withoutSuffix) {
35356        return this.to(createLocal(), withoutSuffix);
35357    }
35358
35359    // If passed a locale key, it will set the locale for this
35360    // instance.  Otherwise, it will return the locale configuration
35361    // variables for this instance.
35362    function locale(key) {
35363        var newLocaleData;
35364
35365        if (key === undefined) {
35366            return this._locale._abbr;
35367        } else {
35368            newLocaleData = getLocale(key);
35369            if (newLocaleData != null) {
35370                this._locale = newLocaleData;
35371            }
35372            return this;
35373        }
35374    }
35375
35376    var lang = deprecate(
35377        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
35378        function (key) {
35379            if (key === undefined) {
35380                return this.localeData();
35381            } else {
35382                return this.locale(key);
35383            }
35384        }
35385    );
35386
35387    function localeData() {
35388        return this._locale;
35389    }
35390
35391    var MS_PER_SECOND = 1000,
35392        MS_PER_MINUTE = 60 * MS_PER_SECOND,
35393        MS_PER_HOUR = 60 * MS_PER_MINUTE,
35394        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;
35395
35396    // actual modulo - handles negative numbers (for dates before 1970):
35397    function mod$1(dividend, divisor) {
35398        return ((dividend % divisor) + divisor) % divisor;
35399    }
35400
35401    function localStartOfDate(y, m, d) {
35402        // the date constructor remaps years 0-99 to 1900-1999
35403        if (y < 100 && y >= 0) {
35404            // preserve leap years using a full 400 year cycle, then reset
35405            return new Date(y + 400, m, d) - MS_PER_400_YEARS;
35406        } else {
35407            return new Date(y, m, d).valueOf();
35408        }
35409    }
35410
35411    function utcStartOfDate(y, m, d) {
35412        // Date.UTC remaps years 0-99 to 1900-1999
35413        if (y < 100 && y >= 0) {
35414            // preserve leap years using a full 400 year cycle, then reset
35415            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;
35416        } else {
35417            return Date.UTC(y, m, d);
35418        }
35419    }
35420
35421    function startOf(units) {
35422        var time, startOfDate;
35423        units = normalizeUnits(units);
35424        if (units === undefined || units === 'millisecond' || !this.isValid()) {
35425            return this;
35426        }
35427
35428        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
35429
35430        switch (units) {
35431            case 'year':
35432                time = startOfDate(this.year(), 0, 1);
35433                break;
35434            case 'quarter':
35435                time = startOfDate(
35436                    this.year(),
35437                    this.month() - (this.month() % 3),
35438                    1
35439                );
35440                break;
35441            case 'month':
35442                time = startOfDate(this.year(), this.month(), 1);
35443                break;
35444            case 'week':
35445                time = startOfDate(
35446                    this.year(),
35447                    this.month(),
35448                    this.date() - this.weekday()
35449                );
35450                break;
35451            case 'isoWeek':
35452                time = startOfDate(
35453                    this.year(),
35454                    this.month(),
35455                    this.date() - (this.isoWeekday() - 1)
35456                );
35457                break;
35458            case 'day':
35459            case 'date':
35460                time = startOfDate(this.year(), this.month(), this.date());
35461                break;
35462            case 'hour':
35463                time = this._d.valueOf();
35464                time -= mod$1(
35465                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
35466                    MS_PER_HOUR
35467                );
35468                break;
35469            case 'minute':
35470                time = this._d.valueOf();
35471                time -= mod$1(time, MS_PER_MINUTE);
35472                break;
35473            case 'second':
35474                time = this._d.valueOf();
35475                time -= mod$1(time, MS_PER_SECOND);
35476                break;
35477        }
35478
35479        this._d.setTime(time);
35480        hooks.updateOffset(this, true);
35481        return this;
35482    }
35483
35484    function endOf(units) {
35485        var time, startOfDate;
35486        units = normalizeUnits(units);
35487        if (units === undefined || units === 'millisecond' || !this.isValid()) {
35488            return this;
35489        }
35490
35491        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
35492
35493        switch (units) {
35494            case 'year':
35495                time = startOfDate(this.year() + 1, 0, 1) - 1;
35496                break;
35497            case 'quarter':
35498                time =
35499                    startOfDate(
35500                        this.year(),
35501                        this.month() - (this.month() % 3) + 3,
35502                        1
35503                    ) - 1;
35504                break;
35505            case 'month':
35506                time = startOfDate(this.year(), this.month() + 1, 1) - 1;
35507                break;
35508            case 'week':
35509                time =
35510                    startOfDate(
35511                        this.year(),
35512                        this.month(),
35513                        this.date() - this.weekday() + 7
35514                    ) - 1;
35515                break;
35516            case 'isoWeek':
35517                time =
35518                    startOfDate(
35519                        this.year(),
35520                        this.month(),
35521                        this.date() - (this.isoWeekday() - 1) + 7
35522                    ) - 1;
35523                break;
35524            case 'day':
35525            case 'date':
35526                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;
35527                break;
35528            case 'hour':
35529                time = this._d.valueOf();
35530                time +=
35531                    MS_PER_HOUR -
35532                    mod$1(
35533                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
35534                        MS_PER_HOUR
35535                    ) -
35536                    1;
35537                break;
35538            case 'minute':
35539                time = this._d.valueOf();
35540                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;
35541                break;
35542            case 'second':
35543                time = this._d.valueOf();
35544                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;
35545                break;
35546        }
35547
35548        this._d.setTime(time);
35549        hooks.updateOffset(this, true);
35550        return this;
35551    }
35552
35553    function valueOf() {
35554        return this._d.valueOf() - (this._offset || 0) * 60000;
35555    }
35556
35557    function unix() {
35558        return Math.floor(this.valueOf() / 1000);
35559    }
35560
35561    function toDate() {
35562        return new Date(this.valueOf());
35563    }
35564
35565    function toArray() {
35566        var m = this;
35567        return [
35568            m.year(),
35569            m.month(),
35570            m.date(),
35571            m.hour(),
35572            m.minute(),
35573            m.second(),
35574            m.millisecond(),
35575        ];
35576    }
35577
35578    function toObject() {
35579        var m = this;
35580        return {
35581            years: m.year(),
35582            months: m.month(),
35583            date: m.date(),
35584            hours: m.hours(),
35585            minutes: m.minutes(),
35586            seconds: m.seconds(),
35587            milliseconds: m.milliseconds(),
35588        };
35589    }
35590
35591    function toJSON() {
35592        // new Date(NaN).toJSON() === null
35593        return this.isValid() ? this.toISOString() : null;
35594    }
35595
35596    function isValid$2() {
35597        return isValid(this);
35598    }
35599
35600    function parsingFlags() {
35601        return extend({}, getParsingFlags(this));
35602    }
35603
35604    function invalidAt() {
35605        return getParsingFlags(this).overflow;
35606    }
35607
35608    function creationData() {
35609        return {
35610            input: this._i,
35611            format: this._f,
35612            locale: this._locale,
35613            isUTC: this._isUTC,
35614            strict: this._strict,
35615        };
35616    }
35617
35618    addFormatToken('N', 0, 0, 'eraAbbr');
35619    addFormatToken('NN', 0, 0, 'eraAbbr');
35620    addFormatToken('NNN', 0, 0, 'eraAbbr');
35621    addFormatToken('NNNN', 0, 0, 'eraName');
35622    addFormatToken('NNNNN', 0, 0, 'eraNarrow');
35623
35624    addFormatToken('y', ['y', 1], 'yo', 'eraYear');
35625    addFormatToken('y', ['yy', 2], 0, 'eraYear');
35626    addFormatToken('y', ['yyy', 3], 0, 'eraYear');
35627    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');
35628
35629    addRegexToken('N', matchEraAbbr);
35630    addRegexToken('NN', matchEraAbbr);
35631    addRegexToken('NNN', matchEraAbbr);
35632    addRegexToken('NNNN', matchEraName);
35633    addRegexToken('NNNNN', matchEraNarrow);
35634
35635    addParseToken(
35636        ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],
35637        function (input, array, config, token) {
35638            var era = config._locale.erasParse(input, token, config._strict);
35639            if (era) {
35640                getParsingFlags(config).era = era;
35641            } else {
35642                getParsingFlags(config).invalidEra = input;
35643            }
35644        }
35645    );
35646
35647    addRegexToken('y', matchUnsigned);
35648    addRegexToken('yy', matchUnsigned);
35649    addRegexToken('yyy', matchUnsigned);
35650    addRegexToken('yyyy', matchUnsigned);
35651    addRegexToken('yo', matchEraYearOrdinal);
35652
35653    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);
35654    addParseToken(['yo'], function (input, array, config, token) {
35655        var match;
35656        if (config._locale._eraYearOrdinalRegex) {
35657            match = input.match(config._locale._eraYearOrdinalRegex);
35658        }
35659
35660        if (config._locale.eraYearOrdinalParse) {
35661            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);
35662        } else {
35663            array[YEAR] = parseInt(input, 10);
35664        }
35665    });
35666
35667    function localeEras(m, format) {
35668        var i,
35669            l,
35670            date,
35671            eras = this._eras || getLocale('en')._eras;
35672        for (i = 0, l = eras.length; i < l; ++i) {
35673            switch (typeof eras[i].since) {
35674                case 'string':
35675                    // truncate time
35676                    date = hooks(eras[i].since).startOf('day');
35677                    eras[i].since = date.valueOf();
35678                    break;
35679            }
35680
35681            switch (typeof eras[i].until) {
35682                case 'undefined':
35683                    eras[i].until = +Infinity;
35684                    break;
35685                case 'string':
35686                    // truncate time
35687                    date = hooks(eras[i].until).startOf('day').valueOf();
35688                    eras[i].until = date.valueOf();
35689                    break;
35690            }
35691        }
35692        return eras;
35693    }
35694
35695    function localeErasParse(eraName, format, strict) {
35696        var i,
35697            l,
35698            eras = this.eras(),
35699            name,
35700            abbr,
35701            narrow;
35702        eraName = eraName.toUpperCase();
35703
35704        for (i = 0, l = eras.length; i < l; ++i) {
35705            name = eras[i].name.toUpperCase();
35706            abbr = eras[i].abbr.toUpperCase();
35707            narrow = eras[i].narrow.toUpperCase();
35708
35709            if (strict) {
35710                switch (format) {
35711                    case 'N':
35712                    case 'NN':
35713                    case 'NNN':
35714                        if (abbr === eraName) {
35715                            return eras[i];
35716                        }
35717                        break;
35718
35719                    case 'NNNN':
35720                        if (name === eraName) {
35721                            return eras[i];
35722                        }
35723                        break;
35724
35725                    case 'NNNNN':
35726                        if (narrow === eraName) {
35727                            return eras[i];
35728                        }
35729                        break;
35730                }
35731            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {
35732                return eras[i];
35733            }
35734        }
35735    }
35736
35737    function localeErasConvertYear(era, year) {
35738        var dir = era.since <= era.until ? +1 : -1;
35739        if (year === undefined) {
35740            return hooks(era.since).year();
35741        } else {
35742            return hooks(era.since).year() + (year - era.offset) * dir;
35743        }
35744    }
35745
35746    function getEraName() {
35747        var i,
35748            l,
35749            val,
35750            eras = this.localeData().eras();
35751        for (i = 0, l = eras.length; i < l; ++i) {
35752            // truncate time
35753            val = this.clone().startOf('day').valueOf();
35754
35755            if (eras[i].since <= val && val <= eras[i].until) {
35756                return eras[i].name;
35757            }
35758            if (eras[i].until <= val && val <= eras[i].since) {
35759                return eras[i].name;
35760            }
35761        }
35762
35763        return '';
35764    }
35765
35766    function getEraNarrow() {
35767        var i,
35768            l,
35769            val,
35770            eras = this.localeData().eras();
35771        for (i = 0, l = eras.length; i < l; ++i) {
35772            // truncate time
35773            val = this.clone().startOf('day').valueOf();
35774
35775            if (eras[i].since <= val && val <= eras[i].until) {
35776                return eras[i].narrow;
35777            }
35778            if (eras[i].until <= val && val <= eras[i].since) {
35779                return eras[i].narrow;
35780            }
35781        }
35782
35783        return '';
35784    }
35785
35786    function getEraAbbr() {
35787        var i,
35788            l,
35789            val,
35790            eras = this.localeData().eras();
35791        for (i = 0, l = eras.length; i < l; ++i) {
35792            // truncate time
35793            val = this.clone().startOf('day').valueOf();
35794
35795            if (eras[i].since <= val && val <= eras[i].until) {
35796                return eras[i].abbr;
35797            }
35798            if (eras[i].until <= val && val <= eras[i].since) {
35799                return eras[i].abbr;
35800            }
35801        }
35802
35803        return '';
35804    }
35805
35806    function getEraYear() {
35807        var i,
35808            l,
35809            dir,
35810            val,
35811            eras = this.localeData().eras();
35812        for (i = 0, l = eras.length; i < l; ++i) {
35813            dir = eras[i].since <= eras[i].until ? +1 : -1;
35814
35815            // truncate time
35816            val = this.clone().startOf('day').valueOf();
35817
35818            if (
35819                (eras[i].since <= val && val <= eras[i].until) ||
35820                (eras[i].until <= val && val <= eras[i].since)
35821            ) {
35822                return (
35823                    (this.year() - hooks(eras[i].since).year()) * dir +
35824                    eras[i].offset
35825                );
35826            }
35827        }
35828
35829        return this.year();
35830    }
35831
35832    function erasNameRegex(isStrict) {
35833        if (!hasOwnProp(this, '_erasNameRegex')) {
35834            computeErasParse.call(this);
35835        }
35836        return isStrict ? this._erasNameRegex : this._erasRegex;
35837    }
35838
35839    function erasAbbrRegex(isStrict) {
35840        if (!hasOwnProp(this, '_erasAbbrRegex')) {
35841            computeErasParse.call(this);
35842        }
35843        return isStrict ? this._erasAbbrRegex : this._erasRegex;
35844    }
35845
35846    function erasNarrowRegex(isStrict) {
35847        if (!hasOwnProp(this, '_erasNarrowRegex')) {
35848            computeErasParse.call(this);
35849        }
35850        return isStrict ? this._erasNarrowRegex : this._erasRegex;
35851    }
35852
35853    function matchEraAbbr(isStrict, locale) {
35854        return locale.erasAbbrRegex(isStrict);
35855    }
35856
35857    function matchEraName(isStrict, locale) {
35858        return locale.erasNameRegex(isStrict);
35859    }
35860
35861    function matchEraNarrow(isStrict, locale) {
35862        return locale.erasNarrowRegex(isStrict);
35863    }
35864
35865    function matchEraYearOrdinal(isStrict, locale) {
35866        return locale._eraYearOrdinalRegex || matchUnsigned;
35867    }
35868
35869    function computeErasParse() {
35870        var abbrPieces = [],
35871            namePieces = [],
35872            narrowPieces = [],
35873            mixedPieces = [],
35874            i,
35875            l,
35876            erasName,
35877            erasAbbr,
35878            erasNarrow,
35879            eras = this.eras();
35880
35881        for (i = 0, l = eras.length; i < l; ++i) {
35882            erasName = regexEscape(eras[i].name);
35883            erasAbbr = regexEscape(eras[i].abbr);
35884            erasNarrow = regexEscape(eras[i].narrow);
35885
35886            namePieces.push(erasName);
35887            abbrPieces.push(erasAbbr);
35888            narrowPieces.push(erasNarrow);
35889            mixedPieces.push(erasName);
35890            mixedPieces.push(erasAbbr);
35891            mixedPieces.push(erasNarrow);
35892        }
35893
35894        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
35895        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');
35896        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');
35897        this._erasNarrowRegex = new RegExp(
35898            '^(' + narrowPieces.join('|') + ')',
35899            'i'
35900        );
35901    }
35902
35903    // FORMATTING
35904
35905    addFormatToken(0, ['gg', 2], 0, function () {
35906        return this.weekYear() % 100;
35907    });
35908
35909    addFormatToken(0, ['GG', 2], 0, function () {
35910        return this.isoWeekYear() % 100;
35911    });
35912
35913    function addWeekYearFormatToken(token, getter) {
35914        addFormatToken(0, [token, token.length], 0, getter);
35915    }
35916
35917    addWeekYearFormatToken('gggg', 'weekYear');
35918    addWeekYearFormatToken('ggggg', 'weekYear');
35919    addWeekYearFormatToken('GGGG', 'isoWeekYear');
35920    addWeekYearFormatToken('GGGGG', 'isoWeekYear');
35921
35922    // ALIASES
35923
35924    // PARSING
35925
35926    addRegexToken('G', matchSigned);
35927    addRegexToken('g', matchSigned);
35928    addRegexToken('GG', match1to2, match2);
35929    addRegexToken('gg', match1to2, match2);
35930    addRegexToken('GGGG', match1to4, match4);
35931    addRegexToken('gggg', match1to4, match4);
35932    addRegexToken('GGGGG', match1to6, match6);
35933    addRegexToken('ggggg', match1to6, match6);
35934
35935    addWeekParseToken(
35936        ['gggg', 'ggggg', 'GGGG', 'GGGGG'],
35937        function (input, week, config, token) {
35938            week[token.substr(0, 2)] = toInt(input);
35939        }
35940    );
35941
35942    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
35943        week[token] = hooks.parseTwoDigitYear(input);
35944    });
35945
35946    // MOMENTS
35947
35948    function getSetWeekYear(input) {
35949        return getSetWeekYearHelper.call(
35950            this,
35951            input,
35952            this.week(),
35953            this.weekday() + this.localeData()._week.dow,
35954            this.localeData()._week.dow,
35955            this.localeData()._week.doy
35956        );
35957    }
35958
35959    function getSetISOWeekYear(input) {
35960        return getSetWeekYearHelper.call(
35961            this,
35962            input,
35963            this.isoWeek(),
35964            this.isoWeekday(),
35965            1,
35966            4
35967        );
35968    }
35969
35970    function getISOWeeksInYear() {
35971        return weeksInYear(this.year(), 1, 4);
35972    }
35973
35974    function getISOWeeksInISOWeekYear() {
35975        return weeksInYear(this.isoWeekYear(), 1, 4);
35976    }
35977
35978    function getWeeksInYear() {
35979        var weekInfo = this.localeData()._week;
35980        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
35981    }
35982
35983    function getWeeksInWeekYear() {
35984        var weekInfo = this.localeData()._week;
35985        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);
35986    }
35987
35988    function getSetWeekYearHelper(input, week, weekday, dow, doy) {
35989        var weeksTarget;
35990        if (input == null) {
35991            return weekOfYear(this, dow, doy).year;
35992        } else {
35993            weeksTarget = weeksInYear(input, dow, doy);
35994            if (week > weeksTarget) {
35995                week = weeksTarget;
35996            }
35997            return setWeekAll.call(this, input, week, weekday, dow, doy);
35998        }
35999    }
36000
36001    function setWeekAll(weekYear, week, weekday, dow, doy) {
36002        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
36003            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
36004
36005        this.year(date.getUTCFullYear());
36006        this.month(date.getUTCMonth());
36007        this.date(date.getUTCDate());
36008        return this;
36009    }
36010
36011    // FORMATTING
36012
36013    addFormatToken('Q', 0, 'Qo', 'quarter');
36014
36015    // PARSING
36016
36017    addRegexToken('Q', match1);
36018    addParseToken('Q', function (input, array) {
36019        array[MONTH] = (toInt(input) - 1) * 3;
36020    });
36021
36022    // MOMENTS
36023
36024    function getSetQuarter(input) {
36025        return input == null
36026            ? Math.ceil((this.month() + 1) / 3)
36027            : this.month((input - 1) * 3 + (this.month() % 3));
36028    }
36029
36030    // FORMATTING
36031
36032    addFormatToken('D', ['DD', 2], 'Do', 'date');
36033
36034    // PARSING
36035
36036    addRegexToken('D', match1to2, match1to2NoLeadingZero);
36037    addRegexToken('DD', match1to2, match2);
36038    addRegexToken('Do', function (isStrict, locale) {
36039        // TODO: Remove "ordinalParse" fallback in next major release.
36040        return isStrict
36041            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse
36042            : locale._dayOfMonthOrdinalParseLenient;
36043    });
36044
36045    addParseToken(['D', 'DD'], DATE);
36046    addParseToken('Do', function (input, array) {
36047        array[DATE] = toInt(input.match(match1to2)[0]);
36048    });
36049
36050    // MOMENTS
36051
36052    var getSetDayOfMonth = makeGetSet('Date', true);
36053
36054    // FORMATTING
36055
36056    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
36057
36058    // PARSING
36059
36060    addRegexToken('DDD', match1to3);
36061    addRegexToken('DDDD', match3);
36062    addParseToken(['DDD', 'DDDD'], function (input, array, config) {
36063        config._dayOfYear = toInt(input);
36064    });
36065
36066    // HELPERS
36067
36068    // MOMENTS
36069
36070    function getSetDayOfYear(input) {
36071        var dayOfYear =
36072            Math.round(
36073                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5
36074            ) + 1;
36075        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');
36076    }
36077
36078    // FORMATTING
36079
36080    addFormatToken('m', ['mm', 2], 0, 'minute');
36081
36082    // PARSING
36083
36084    addRegexToken('m', match1to2, match1to2HasZero);
36085    addRegexToken('mm', match1to2, match2);
36086    addParseToken(['m', 'mm'], MINUTE);
36087
36088    // MOMENTS
36089
36090    var getSetMinute = makeGetSet('Minutes', false);
36091
36092    // FORMATTING
36093
36094    addFormatToken('s', ['ss', 2], 0, 'second');
36095
36096    // PARSING
36097
36098    addRegexToken('s', match1to2, match1to2HasZero);
36099    addRegexToken('ss', match1to2, match2);
36100    addParseToken(['s', 'ss'], SECOND);
36101
36102    // MOMENTS
36103
36104    var getSetSecond = makeGetSet('Seconds', false);
36105
36106    // FORMATTING
36107
36108    addFormatToken('S', 0, 0, function () {
36109        return ~~(this.millisecond() / 100);
36110    });
36111
36112    addFormatToken(0, ['SS', 2], 0, function () {
36113        return ~~(this.millisecond() / 10);
36114    });
36115
36116    addFormatToken(0, ['SSS', 3], 0, 'millisecond');
36117    addFormatToken(0, ['SSSS', 4], 0, function () {
36118        return this.millisecond() * 10;
36119    });
36120    addFormatToken(0, ['SSSSS', 5], 0, function () {
36121        return this.millisecond() * 100;
36122    });
36123    addFormatToken(0, ['SSSSSS', 6], 0, function () {
36124        return this.millisecond() * 1000;
36125    });
36126    addFormatToken(0, ['SSSSSSS', 7], 0, function () {
36127        return this.millisecond() * 10000;
36128    });
36129    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
36130        return this.millisecond() * 100000;
36131    });
36132    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
36133        return this.millisecond() * 1000000;
36134    });
36135
36136    // PARSING
36137
36138    addRegexToken('S', match1to3, match1);
36139    addRegexToken('SS', match1to3, match2);
36140    addRegexToken('SSS', match1to3, match3);
36141
36142    var token, getSetMillisecond;
36143    for (token = 'SSSS'; token.length <= 9; token += 'S') {
36144        addRegexToken(token, matchUnsigned);
36145    }
36146
36147    function parseMs(input, array) {
36148        array[MILLISECOND] = toInt(('0.' + input) * 1000);
36149    }
36150
36151    for (token = 'S'; token.length <= 9; token += 'S') {
36152        addParseToken(token, parseMs);
36153    }
36154
36155    getSetMillisecond = makeGetSet('Milliseconds', false);
36156
36157    // FORMATTING
36158
36159    addFormatToken('z', 0, 0, 'zoneAbbr');
36160    addFormatToken('zz', 0, 0, 'zoneName');
36161
36162    // MOMENTS
36163
36164    function getZoneAbbr() {
36165        return this._isUTC ? 'UTC' : '';
36166    }
36167
36168    function getZoneName() {
36169        return this._isUTC ? 'Coordinated Universal Time' : '';
36170    }
36171
36172    var proto = Moment.prototype;
36173
36174    proto.add = add;
36175    proto.calendar = calendar$1;
36176    proto.clone = clone;
36177    proto.diff = diff;
36178    proto.endOf = endOf;
36179    proto.format = format;
36180    proto.from = from;
36181    proto.fromNow = fromNow;
36182    proto.to = to;
36183    proto.toNow = toNow;
36184    proto.get = stringGet;
36185    proto.invalidAt = invalidAt;
36186    proto.isAfter = isAfter;
36187    proto.isBefore = isBefore;
36188    proto.isBetween = isBetween;
36189    proto.isSame = isSame;
36190    proto.isSameOrAfter = isSameOrAfter;
36191    proto.isSameOrBefore = isSameOrBefore;
36192    proto.isValid = isValid$2;
36193    proto.lang = lang;
36194    proto.locale = locale;
36195    proto.localeData = localeData;
36196    proto.max = prototypeMax;
36197    proto.min = prototypeMin;
36198    proto.parsingFlags = parsingFlags;
36199    proto.set = stringSet;
36200    proto.startOf = startOf;
36201    proto.subtract = subtract;
36202    proto.toArray = toArray;
36203    proto.toObject = toObject;
36204    proto.toDate = toDate;
36205    proto.toISOString = toISOString;
36206    proto.inspect = inspect;
36207    if (typeof Symbol !== 'undefined' && Symbol.for != null) {
36208        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {
36209            return 'Moment<' + this.format() + '>';
36210        };
36211    }
36212    proto.toJSON = toJSON;
36213    proto.toString = toString;
36214    proto.unix = unix;
36215    proto.valueOf = valueOf;
36216    proto.creationData = creationData;
36217    proto.eraName = getEraName;
36218    proto.eraNarrow = getEraNarrow;
36219    proto.eraAbbr = getEraAbbr;
36220    proto.eraYear = getEraYear;
36221    proto.year = getSetYear;
36222    proto.isLeapYear = getIsLeapYear;
36223    proto.weekYear = getSetWeekYear;
36224    proto.isoWeekYear = getSetISOWeekYear;
36225    proto.quarter = proto.quarters = getSetQuarter;
36226    proto.month = getSetMonth;
36227    proto.daysInMonth = getDaysInMonth;
36228    proto.week = proto.weeks = getSetWeek;
36229    proto.isoWeek = proto.isoWeeks = getSetISOWeek;
36230    proto.weeksInYear = getWeeksInYear;
36231    proto.weeksInWeekYear = getWeeksInWeekYear;
36232    proto.isoWeeksInYear = getISOWeeksInYear;
36233    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;
36234    proto.date = getSetDayOfMonth;
36235    proto.day = proto.days = getSetDayOfWeek;
36236    proto.weekday = getSetLocaleDayOfWeek;
36237    proto.isoWeekday = getSetISODayOfWeek;
36238    proto.dayOfYear = getSetDayOfYear;
36239    proto.hour = proto.hours = getSetHour;
36240    proto.minute = proto.minutes = getSetMinute;
36241    proto.second = proto.seconds = getSetSecond;
36242    proto.millisecond = proto.milliseconds = getSetMillisecond;
36243    proto.utcOffset = getSetOffset;
36244    proto.utc = setOffsetToUTC;
36245    proto.local = setOffsetToLocal;
36246    proto.parseZone = setOffsetToParsedOffset;
36247    proto.hasAlignedHourOffset = hasAlignedHourOffset;
36248    proto.isDST = isDaylightSavingTime;
36249    proto.isLocal = isLocal;
36250    proto.isUtcOffset = isUtcOffset;
36251    proto.isUtc = isUtc;
36252    proto.isUTC = isUtc;
36253    proto.zoneAbbr = getZoneAbbr;
36254    proto.zoneName = getZoneName;
36255    proto.dates = deprecate(
36256        'dates accessor is deprecated. Use date instead.',
36257        getSetDayOfMonth
36258    );
36259    proto.months = deprecate(
36260        'months accessor is deprecated. Use month instead',
36261        getSetMonth
36262    );
36263    proto.years = deprecate(
36264        'years accessor is deprecated. Use year instead',
36265        getSetYear
36266    );
36267    proto.zone = deprecate(
36268        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',
36269        getSetZone
36270    );
36271    proto.isDSTShifted = deprecate(
36272        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',
36273        isDaylightSavingTimeShifted
36274    );
36275
36276    function createUnix(input) {
36277        return createLocal(input * 1000);
36278    }
36279
36280    function createInZone() {
36281        return createLocal.apply(null, arguments).parseZone();
36282    }
36283
36284    function preParsePostFormat(string) {
36285        return string;
36286    }
36287
36288    var proto$1 = Locale.prototype;
36289
36290    proto$1.calendar = calendar;
36291    proto$1.longDateFormat = longDateFormat;
36292    proto$1.invalidDate = invalidDate;
36293    proto$1.ordinal = ordinal;
36294    proto$1.preparse = preParsePostFormat;
36295    proto$1.postformat = preParsePostFormat;
36296    proto$1.relativeTime = relativeTime;
36297    proto$1.pastFuture = pastFuture;
36298    proto$1.set = set;
36299    proto$1.eras = localeEras;
36300    proto$1.erasParse = localeErasParse;
36301    proto$1.erasConvertYear = localeErasConvertYear;
36302    proto$1.erasAbbrRegex = erasAbbrRegex;
36303    proto$1.erasNameRegex = erasNameRegex;
36304    proto$1.erasNarrowRegex = erasNarrowRegex;
36305
36306    proto$1.months = localeMonths;
36307    proto$1.monthsShort = localeMonthsShort;
36308    proto$1.monthsParse = localeMonthsParse;
36309    proto$1.monthsRegex = monthsRegex;
36310    proto$1.monthsShortRegex = monthsShortRegex;
36311    proto$1.week = localeWeek;
36312    proto$1.firstDayOfYear = localeFirstDayOfYear;
36313    proto$1.firstDayOfWeek = localeFirstDayOfWeek;
36314
36315    proto$1.weekdays = localeWeekdays;
36316    proto$1.weekdaysMin = localeWeekdaysMin;
36317    proto$1.weekdaysShort = localeWeekdaysShort;
36318    proto$1.weekdaysParse = localeWeekdaysParse;
36319
36320    proto$1.weekdaysRegex = weekdaysRegex;
36321    proto$1.weekdaysShortRegex = weekdaysShortRegex;
36322    proto$1.weekdaysMinRegex = weekdaysMinRegex;
36323
36324    proto$1.isPM = localeIsPM;
36325    proto$1.meridiem = localeMeridiem;
36326
36327    function get$1(format, index, field, setter) {
36328        var locale = getLocale(),
36329            utc = createUTC().set(setter, index);
36330        return locale[field](utc, format);
36331    }
36332
36333    function listMonthsImpl(format, index, field) {
36334        if (isNumber(format)) {
36335            index = format;
36336            format = undefined;
36337        }
36338
36339        format = format || '';
36340
36341        if (index != null) {
36342            return get$1(format, index, field, 'month');
36343        }
36344
36345        var i,
36346            out = [];
36347        for (i = 0; i < 12; i++) {
36348            out[i] = get$1(format, i, field, 'month');
36349        }
36350        return out;
36351    }
36352
36353    // ()
36354    // (5)
36355    // (fmt, 5)
36356    // (fmt)
36357    // (true)
36358    // (true, 5)
36359    // (true, fmt, 5)
36360    // (true, fmt)
36361    function listWeekdaysImpl(localeSorted, format, index, field) {
36362        if (typeof localeSorted === 'boolean') {
36363            if (isNumber(format)) {
36364                index = format;
36365                format = undefined;
36366            }
36367
36368            format = format || '';
36369        } else {
36370            format = localeSorted;
36371            index = format;
36372            localeSorted = false;
36373
36374            if (isNumber(format)) {
36375                index = format;
36376                format = undefined;
36377            }
36378
36379            format = format || '';
36380        }
36381
36382        var locale = getLocale(),
36383            shift = localeSorted ? locale._week.dow : 0,
36384            i,
36385            out = [];
36386
36387        if (index != null) {
36388            return get$1(format, (index + shift) % 7, field, 'day');
36389        }
36390
36391        for (i = 0; i < 7; i++) {
36392            out[i] = get$1(format, (i + shift) % 7, field, 'day');
36393        }
36394        return out;
36395    }
36396
36397    function listMonths(format, index) {
36398        return listMonthsImpl(format, index, 'months');
36399    }
36400
36401    function listMonthsShort(format, index) {
36402        return listMonthsImpl(format, index, 'monthsShort');
36403    }
36404
36405    function listWeekdays(localeSorted, format, index) {
36406        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');
36407    }
36408
36409    function listWeekdaysShort(localeSorted, format, index) {
36410        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');
36411    }
36412
36413    function listWeekdaysMin(localeSorted, format, index) {
36414        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');
36415    }
36416
36417    getSetGlobalLocale('en', {
36418        eras: [
36419            {
36420                since: '0001-01-01',
36421                until: +Infinity,
36422                offset: 1,
36423                name: 'Anno Domini',
36424                narrow: 'AD',
36425                abbr: 'AD',
36426            },
36427            {
36428                since: '0000-12-31',
36429                until: -Infinity,
36430                offset: 1,
36431                name: 'Before Christ',
36432                narrow: 'BC',
36433                abbr: 'BC',
36434            },
36435        ],
36436        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
36437        ordinal: function (number) {
36438            var b = number % 10,
36439                output =
36440                    toInt((number % 100) / 10) === 1
36441                        ? 'th'
36442                        : b === 1
36443                          ? 'st'
36444                          : b === 2
36445                            ? 'nd'
36446                            : b === 3
36447                              ? 'rd'
36448                              : 'th';
36449            return number + output;
36450        },
36451    });
36452
36453    // Side effect imports
36454
36455    hooks.lang = deprecate(
36456        'moment.lang is deprecated. Use moment.locale instead.',
36457        getSetGlobalLocale
36458    );
36459    hooks.langData = deprecate(
36460        'moment.langData is deprecated. Use moment.localeData instead.',
36461        getLocale
36462    );
36463
36464    var mathAbs = Math.abs;
36465
36466    function abs() {
36467        var data = this._data;
36468
36469        this._milliseconds = mathAbs(this._milliseconds);
36470        this._days = mathAbs(this._days);
36471        this._months = mathAbs(this._months);
36472
36473        data.milliseconds = mathAbs(data.milliseconds);
36474        data.seconds = mathAbs(data.seconds);
36475        data.minutes = mathAbs(data.minutes);
36476        data.hours = mathAbs(data.hours);
36477        data.months = mathAbs(data.months);
36478        data.years = mathAbs(data.years);
36479
36480        return this;
36481    }
36482
36483    function addSubtract$1(duration, input, value, direction) {
36484        var other = createDuration(input, value);
36485
36486        duration._milliseconds += direction * other._milliseconds;
36487        duration._days += direction * other._days;
36488        duration._months += direction * other._months;
36489
36490        return duration._bubble();
36491    }
36492
36493    // supports only 2.0-style add(1, 's') or add(duration)
36494    function add$1(input, value) {
36495        return addSubtract$1(this, input, value, 1);
36496    }
36497
36498    // supports only 2.0-style subtract(1, 's') or subtract(duration)
36499    function subtract$1(input, value) {
36500        return addSubtract$1(this, input, value, -1);
36501    }
36502
36503    function absCeil(number) {
36504        if (number < 0) {
36505            return Math.floor(number);
36506        } else {
36507            return Math.ceil(number);
36508        }
36509    }
36510
36511    function bubble() {
36512        var milliseconds = this._milliseconds,
36513            days = this._days,
36514            months = this._months,
36515            data = this._data,
36516            seconds,
36517            minutes,
36518            hours,
36519            years,
36520            monthsFromDays;
36521
36522        // if we have a mix of positive and negative values, bubble down first
36523        // check: https://github.com/moment/moment/issues/2166
36524        if (
36525            !(
36526                (milliseconds >= 0 && days >= 0 && months >= 0) ||
36527                (milliseconds <= 0 && days <= 0 && months <= 0)
36528            )
36529        ) {
36530            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
36531            days = 0;
36532            months = 0;
36533        }
36534
36535        // The following code bubbles up values, see the tests for
36536        // examples of what that means.
36537        data.milliseconds = milliseconds % 1000;
36538
36539        seconds = absFloor(milliseconds / 1000);
36540        data.seconds = seconds % 60;
36541
36542        minutes = absFloor(seconds / 60);
36543        data.minutes = minutes % 60;
36544
36545        hours = absFloor(minutes / 60);
36546        data.hours = hours % 24;
36547
36548        days += absFloor(hours / 24);
36549
36550        // convert days to months
36551        monthsFromDays = absFloor(daysToMonths(days));
36552        months += monthsFromDays;
36553        days -= absCeil(monthsToDays(monthsFromDays));
36554
36555        // 12 months -> 1 year
36556        years = absFloor(months / 12);
36557        months %= 12;
36558
36559        data.days = days;
36560        data.months = months;
36561        data.years = years;
36562
36563        return this;
36564    }
36565
36566    function daysToMonths(days) {
36567        // 400 years have 146097 days (taking into account leap year rules)
36568        // 400 years have 12 months === 4800
36569        return (days * 4800) / 146097;
36570    }
36571
36572    function monthsToDays(months) {
36573        // the reverse of daysToMonths
36574        return (months * 146097) / 4800;
36575    }
36576
36577    function as(units) {
36578        if (!this.isValid()) {
36579            return NaN;
36580        }
36581        var days,
36582            months,
36583            milliseconds = this._milliseconds;
36584
36585        units = normalizeUnits(units);
36586
36587        if (units === 'month' || units === 'quarter' || units === 'year') {
36588            days = this._days + milliseconds / 864e5;
36589            months = this._months + daysToMonths(days);
36590            switch (units) {
36591                case 'month':
36592                    return months;
36593                case 'quarter':
36594                    return months / 3;
36595                case 'year':
36596                    return months / 12;
36597            }
36598        } else {
36599            // handle milliseconds separately because of floating point math errors (issue #1867)
36600            days = this._days + Math.round(monthsToDays(this._months));
36601            switch (units) {
36602                case 'week':
36603                    return days / 7 + milliseconds / 6048e5;
36604                case 'day':
36605                    return days + milliseconds / 864e5;
36606                case 'hour':
36607                    return days * 24 + milliseconds / 36e5;
36608                case 'minute':
36609                    return days * 1440 + milliseconds / 6e4;
36610                case 'second':
36611                    return days * 86400 + milliseconds / 1000;
36612                // Math.floor prevents floating point math errors here
36613                case 'millisecond':
36614                    return Math.floor(days * 864e5) + milliseconds;
36615                default:
36616                    throw new Error('Unknown unit ' + units);
36617            }
36618        }
36619    }
36620
36621    function makeAs(alias) {
36622        return function () {
36623            return this.as(alias);
36624        };
36625    }
36626
36627    var asMilliseconds = makeAs('ms'),
36628        asSeconds = makeAs('s'),
36629        asMinutes = makeAs('m'),
36630        asHours = makeAs('h'),
36631        asDays = makeAs('d'),
36632        asWeeks = makeAs('w'),
36633        asMonths = makeAs('M'),
36634        asQuarters = makeAs('Q'),
36635        asYears = makeAs('y'),
36636        valueOf$1 = asMilliseconds;
36637
36638    function clone$1() {
36639        return createDuration(this);
36640    }
36641
36642    function get$2(units) {
36643        units = normalizeUnits(units);
36644        return this.isValid() ? this[units + 's']() : NaN;
36645    }
36646
36647    function makeGetter(name) {
36648        return function () {
36649            return this.isValid() ? this._data[name] : NaN;
36650        };
36651    }
36652
36653    var milliseconds = makeGetter('milliseconds'),
36654        seconds = makeGetter('seconds'),
36655        minutes = makeGetter('minutes'),
36656        hours = makeGetter('hours'),
36657        days = makeGetter('days'),
36658        months = makeGetter('months'),
36659        years = makeGetter('years');
36660
36661    function weeks() {
36662        return absFloor(this.days() / 7);
36663    }
36664
36665    var round = Math.round,
36666        thresholds = {
36667            ss: 44, // a few seconds to seconds
36668            s: 45, // seconds to minute
36669            m: 45, // minutes to hour
36670            h: 22, // hours to day
36671            d: 26, // days to month/week
36672            w: null, // weeks to month
36673            M: 11, // months to year
36674        };
36675
36676    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
36677    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
36678        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
36679    }
36680
36681    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {
36682        var duration = createDuration(posNegDuration).abs(),
36683            seconds = round(duration.as('s')),
36684            minutes = round(duration.as('m')),
36685            hours = round(duration.as('h')),
36686            days = round(duration.as('d')),
36687            months = round(duration.as('M')),
36688            weeks = round(duration.as('w')),
36689            years = round(duration.as('y')),
36690            a =
36691                (seconds <= thresholds.ss && ['s', seconds]) ||
36692                (seconds < thresholds.s && ['ss', seconds]) ||
36693                (minutes <= 1 && ['m']) ||
36694                (minutes < thresholds.m && ['mm', minutes]) ||
36695                (hours <= 1 && ['h']) ||
36696                (hours < thresholds.h && ['hh', hours]) ||
36697                (days <= 1 && ['d']) ||
36698                (days < thresholds.d && ['dd', days]);
36699
36700        if (thresholds.w != null) {
36701            a =
36702                a ||
36703                (weeks <= 1 && ['w']) ||
36704                (weeks < thresholds.w && ['ww', weeks]);
36705        }
36706        a = a ||
36707            (months <= 1 && ['M']) ||
36708            (months < thresholds.M && ['MM', months]) ||
36709            (years <= 1 && ['y']) || ['yy', years];
36710
36711        a[2] = withoutSuffix;
36712        a[3] = +posNegDuration > 0;
36713        a[4] = locale;
36714        return substituteTimeAgo.apply(null, a);
36715    }
36716
36717    // This function allows you to set the rounding function for relative time strings
36718    function getSetRelativeTimeRounding(roundingFunction) {
36719        if (roundingFunction === undefined) {
36720            return round;
36721        }
36722        if (typeof roundingFunction === 'function') {
36723            round = roundingFunction;
36724            return true;
36725        }
36726        return false;
36727    }
36728
36729    // This function allows you to set a threshold for relative time strings
36730    function getSetRelativeTimeThreshold(threshold, limit) {
36731        if (thresholds[threshold] === undefined) {
36732            return false;
36733        }
36734        if (limit === undefined) {
36735            return thresholds[threshold];
36736        }
36737        thresholds[threshold] = limit;
36738        if (threshold === 's') {
36739            thresholds.ss = limit - 1;
36740        }
36741        return true;
36742    }
36743
36744    function humanize(argWithSuffix, argThresholds) {
36745        if (!this.isValid()) {
36746            return this.localeData().invalidDate();
36747        }
36748
36749        var withSuffix = false,
36750            th = thresholds,
36751            locale,
36752            output;
36753
36754        if (typeof argWithSuffix === 'object') {
36755            argThresholds = argWithSuffix;
36756            argWithSuffix = false;
36757        }
36758        if (typeof argWithSuffix === 'boolean') {
36759            withSuffix = argWithSuffix;
36760        }
36761        if (typeof argThresholds === 'object') {
36762            th = Object.assign({}, thresholds, argThresholds);
36763            if (argThresholds.s != null && argThresholds.ss == null) {
36764                th.ss = argThresholds.s - 1;
36765            }
36766        }
36767
36768        locale = this.localeData();
36769        output = relativeTime$1(this, !withSuffix, th, locale);
36770
36771        if (withSuffix) {
36772            output = locale.pastFuture(+this, output);
36773        }
36774
36775        return locale.postformat(output);
36776    }
36777
36778    var abs$1 = Math.abs;
36779
36780    function sign(x) {
36781        return (x > 0) - (x < 0) || +x;
36782    }
36783
36784    function toISOString$1() {
36785        // for ISO strings we do not use the normal bubbling rules:
36786        //  * milliseconds bubble up until they become hours
36787        //  * days do not bubble at all
36788        //  * months bubble up until they become years
36789        // This is because there is no context-free conversion between hours and days
36790        // (think of clock changes)
36791        // and also not between days and months (28-31 days per month)
36792        if (!this.isValid()) {
36793            return this.localeData().invalidDate();
36794        }
36795
36796        var seconds = abs$1(this._milliseconds) / 1000,
36797            days = abs$1(this._days),
36798            months = abs$1(this._months),
36799            minutes,
36800            hours,
36801            years,
36802            s,
36803            total = this.asSeconds(),
36804            totalSign,
36805            ymSign,
36806            daysSign,
36807            hmsSign;
36808
36809        if (!total) {
36810            // this is the same as C#'s (Noda) and python (isodate)...
36811            // but not other JS (goog.date)
36812            return 'P0D';
36813        }
36814
36815        // 3600 seconds -> 60 minutes -> 1 hour
36816        minutes = absFloor(seconds / 60);
36817        hours = absFloor(minutes / 60);
36818        seconds %= 60;
36819        minutes %= 60;
36820
36821        // 12 months -> 1 year
36822        years = absFloor(months / 12);
36823        months %= 12;
36824
36825        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
36826        s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : '';
36827
36828        totalSign = total < 0 ? '-' : '';
36829        ymSign = sign(this._months) !== sign(total) ? '-' : '';
36830        daysSign = sign(this._days) !== sign(total) ? '-' : '';
36831        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';
36832
36833        return (
36834            totalSign +
36835            'P' +
36836            (years ? ymSign + years + 'Y' : '') +
36837            (months ? ymSign + months + 'M' : '') +
36838            (days ? daysSign + days + 'D' : '') +
36839            (hours || minutes || seconds ? 'T' : '') +
36840            (hours ? hmsSign + hours + 'H' : '') +
36841            (minutes ? hmsSign + minutes + 'M' : '') +
36842            (seconds ? hmsSign + s + 'S' : '')
36843        );
36844    }
36845
36846    var proto$2 = Duration.prototype;
36847
36848    proto$2.isValid = isValid$1;
36849    proto$2.abs = abs;
36850    proto$2.add = add$1;
36851    proto$2.subtract = subtract$1;
36852    proto$2.as = as;
36853    proto$2.asMilliseconds = asMilliseconds;
36854    proto$2.asSeconds = asSeconds;
36855    proto$2.asMinutes = asMinutes;
36856    proto$2.asHours = asHours;
36857    proto$2.asDays = asDays;
36858    proto$2.asWeeks = asWeeks;
36859    proto$2.asMonths = asMonths;
36860    proto$2.asQuarters = asQuarters;
36861    proto$2.asYears = asYears;
36862    proto$2.valueOf = valueOf$1;
36863    proto$2._bubble = bubble;
36864    proto$2.clone = clone$1;
36865    proto$2.get = get$2;
36866    proto$2.milliseconds = milliseconds;
36867    proto$2.seconds = seconds;
36868    proto$2.minutes = minutes;
36869    proto$2.hours = hours;
36870    proto$2.days = days;
36871    proto$2.weeks = weeks;
36872    proto$2.months = months;
36873    proto$2.years = years;
36874    proto$2.humanize = humanize;
36875    proto$2.toISOString = toISOString$1;
36876    proto$2.toString = toISOString$1;
36877    proto$2.toJSON = toISOString$1;
36878    proto$2.locale = locale;
36879    proto$2.localeData = localeData;
36880
36881    proto$2.toIsoString = deprecate(
36882        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',
36883        toISOString$1
36884    );
36885    proto$2.lang = lang;
36886
36887    // FORMATTING
36888
36889    addFormatToken('X', 0, 0, 'unix');
36890    addFormatToken('x', 0, 0, 'valueOf');
36891
36892    // PARSING
36893
36894    addRegexToken('x', matchSigned);
36895    addRegexToken('X', matchTimestamp);
36896    addParseToken('X', function (input, array, config) {
36897        config._d = new Date(parseFloat(input) * 1000);
36898    });
36899    addParseToken('x', function (input, array, config) {
36900        config._d = new Date(toInt(input));
36901    });
36902
36903    //! moment.js
36904
36905    hooks.version = '2.30.1';
36906
36907    setHookCallback(createLocal);
36908
36909    hooks.fn = proto;
36910    hooks.min = min;
36911    hooks.max = max;
36912    hooks.now = now;
36913    hooks.utc = createUTC;
36914    hooks.unix = createUnix;
36915    hooks.months = listMonths;
36916    hooks.isDate = isDate;
36917    hooks.locale = getSetGlobalLocale;
36918    hooks.invalid = createInvalid;
36919    hooks.duration = createDuration;
36920    hooks.isMoment = isMoment;
36921    hooks.weekdays = listWeekdays;
36922    hooks.parseZone = createInZone;
36923    hooks.localeData = getLocale;
36924    hooks.isDuration = isDuration;
36925    hooks.monthsShort = listMonthsShort;
36926    hooks.weekdaysMin = listWeekdaysMin;
36927    hooks.defineLocale = defineLocale;
36928    hooks.updateLocale = updateLocale;
36929    hooks.locales = listLocales;
36930    hooks.weekdaysShort = listWeekdaysShort;
36931    hooks.normalizeUnits = normalizeUnits;
36932    hooks.relativeTimeRounding = getSetRelativeTimeRounding;
36933    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
36934    hooks.calendarFormat = getCalendarFormat;
36935    hooks.prototype = proto;
36936
36937    // currently HTML5 input type only supports 24-hour formats
36938    hooks.HTML5_FMT = {
36939        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type="datetime-local" />
36940        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type="datetime-local" step="1" />
36941        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type="datetime-local" step="0.001" />
36942        DATE: 'YYYY-MM-DD', // <input type="date" />
36943        TIME: 'HH:mm', // <input type="time" />
36944        TIME_SECONDS: 'HH:mm:ss', // <input type="time" step="1" />
36945        TIME_MS: 'HH:mm:ss.SSS', // <input type="time" step="0.001" />
36946        WEEK: 'GGGG-[W]WW', // <input type="week" />
36947        MONTH: 'YYYY-MM', // <input type="month" />
36948    };
36949
36950    return hooks;
36951
36952})));
36953
36954
36955/***/ }),
36956
vendor: 8,509 bytes, lines 36957-37181
36957/***/ "./node_modules/vanillajs-datepicker/js/DateRangePicker.js":
36958/*!*****************************************************************!*\
36959  !*** ./node_modules/vanillajs-datepicker/js/DateRangePicker.js ***!
36960  \*****************************************************************/
36961/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
36962
36963"use strict";
36964__webpack_require__.r(__webpack_exports__);
36965/* harmony export */ __webpack_require__.d(__webpack_exports__, {
36966/* harmony export */   "default": () => (/* binding */ DateRangePicker)
36967/* harmony export */ });
36968/* harmony import */ var _lib_event_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/event.js */ "./node_modules/vanillajs-datepicker/js/lib/event.js");
36969/* harmony import */ var _lib_date_format_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lib/date-format.js */ "./node_modules/vanillajs-datepicker/js/lib/date-format.js");
36970/* harmony import */ var _Datepicker_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Datepicker.js */ "./node_modules/vanillajs-datepicker/js/Datepicker.js");
36971
36972
36973
36974
36975// filter out the config options inapproprite to pass to Datepicker
36976function filterOptions(options) {
36977  const newOpts = Object.assign({}, options);
36978
36979  delete newOpts.inputs;
36980  delete newOpts.allowOneSidedRange;
36981  delete newOpts.maxNumberOfDates; // to ensure each datepicker handles a single date
36982
36983  return newOpts;
36984}
36985
36986function setupDatepicker(rangepicker, changeDateListener, el, options) {
36987  (0,_lib_event_js__WEBPACK_IMPORTED_MODULE_0__.registerListeners)(rangepicker, [
36988    [el, 'changeDate', changeDateListener],
36989  ]);
36990  new _Datepicker_js__WEBPACK_IMPORTED_MODULE_2__["default"](el, options, rangepicker);
36991}
36992
36993function onChangeDate(rangepicker, ev) {
36994  // to prevent both datepickers trigger the other side's update each other
36995  if (rangepicker._updating) {
36996    return;
36997  }
36998  rangepicker._updating = true;
36999
37000  const target = ev.target;
37001  if (target.datepicker === undefined) {
37002    return;
37003  }
37004
37005  const datepickers = rangepicker.datepickers;
37006  const [datepicker0, datepicker1] = datepickers;
37007  const setDateOptions = {render: false};
37008  const changedSide = rangepicker.inputs.indexOf(target);
37009  const otherSide = changedSide === 0 ? 1 : 0;
37010  const changedDate = datepickers[changedSide].dates[0];
37011  const otherDate = datepickers[otherSide].dates[0];
37012
37013  if (changedDate !== undefined && otherDate !== undefined) {
37014    // if the start of the range > the end, swap them
37015    if (changedSide === 0 && changedDate > otherDate) {
37016      datepicker0.setDate(otherDate, setDateOptions);
37017      datepicker1.setDate(changedDate, setDateOptions);
37018    } else if (changedSide === 1 && changedDate < otherDate) {
37019      datepicker0.setDate(changedDate, setDateOptions);
37020      datepicker1.setDate(otherDate, setDateOptions);
37021    }
37022  } else if (!rangepicker.allowOneSidedRange) {
37023    // to prevent the range from becoming one-sided, copy changed side's
37024    // selection (no matter if it's empty) to the other side
37025    if (changedDate !== undefined || otherDate !== undefined) {
37026      setDateOptions.clear = true;
37027      datepickers[otherSide].setDate(datepickers[changedSide].dates, setDateOptions);
37028    }
37029  }
37030  datepickers.forEach((datepicker) => {
37031    datepicker.picker.update().render();
37032  });
37033  delete rangepicker._updating;
37034}
37035
37036/**
37037 * Class representing a date range picker
37038 */
37039class DateRangePicker  {
37040  /**
37041   * Create a date range picker
37042   * @param  {Element} element - element to bind a date range picker
37043   * @param  {Object} [options] - config options
37044   */
37045  constructor(element, options = {}) {
37046    let inputs = Array.isArray(options.inputs)
37047      ? options.inputs
37048      : Array.from(element.querySelectorAll('input'));
37049    if (inputs.length < 2) {
37050      return;
37051    }
37052
37053    element.rangepicker = this;
37054    this.element = element;
37055    this.inputs = inputs = inputs.slice(0, 2);
37056    Object.freeze(inputs);
37057    this.allowOneSidedRange = !!options.allowOneSidedRange;
37058
37059    const changeDateListener = onChangeDate.bind(null, this);
37060    const cleanOptions = filterOptions(options);
37061    // in order for initial date setup to work right when pcicLvel > 0,
37062    // let Datepicker constructor add the instance to the rangepicker
37063    const datepickers = this.datepickers = [];
37064    inputs.forEach((input) => {
37065      setupDatepicker(this, changeDateListener, input, cleanOptions);
37066    });
37067    Object.freeze(datepickers);
37068    Object.defineProperty(this, 'dates', {
37069      get() {
37070        return datepickers.map(datepicker => datepicker.dates[0]);
37071      },
37072    });
37073    // normalize the range if inital dates are given
37074    if (datepickers[0].dates.length > 0) {
37075      onChangeDate(this, {target: inputs[0]});
37076    } else if (datepickers[1].dates.length > 0) {
37077      onChangeDate(this, {target: inputs[1]});
37078    }
37079  }
37080
37081  /**
37082   * Set new values to the config options
37083   * @param {Object} options - config options to update
37084   */
37085  setOptions(options) {
37086    this.allowOneSidedRange = !!options.allowOneSidedRange;
37087
37088    const cleanOptions = filterOptions(options);
37089    this.datepickers.forEach((datepicker) => {
37090      datepicker.setOptions(cleanOptions);
37091    });
37092  }
37093
37094  /**
37095   * Destroy the DateRangePicker instance
37096   * @return {DateRangePicker} - the instance destroyed
37097   */
37098  destroy() {
37099    this.datepickers.forEach((datepicker) => {
37100      datepicker.destroy();
37101    });
37102    (0,_lib_event_js__WEBPACK_IMPORTED_MODULE_0__.unregisterListeners)(this);
37103    delete this.element.rangepicker;
37104  }
37105
37106  /**
37107   * Get the start and end dates of the date range
37108   *
37109   * The method returns Date objects by default. If format string is passed,
37110   * it returns date strings formatted in given format.
37111   * The result array always contains 2 items (start date/end date) and
37112   * undefined is used for unselected side. (e.g. If none is selected,
37113   * the result will be [undefined, undefined]. If only the end date is set
37114   * when allowOneSidedRange config option is true, [undefined, endDate] will
37115   * be returned.)
37116   *
37117   * @param  {String} [format] - Format string to stringify the dates
37118   * @return {Array} - Start and end dates
37119   */
37120  getDates(format = undefined) {
37121    const callback = format
37122      ? date => (0,_lib_date_format_js__WEBPACK_IMPORTED_MODULE_1__.formatDate)(date, format, this.datepickers[0].config.locale)
37123      : date => new Date(date);
37124
37125    return this.dates.map(date => date === undefined ? date : callback(date));
37126  }
37127
37128  /**
37129   * Set the start and end dates of the date range
37130   *
37131   * The method calls datepicker.setDate() internally using each of the
37132   * arguments in start→end order.
37133   *
37134   * When a clear: true option object is passed instead of a date, the method
37135   * clears the date.
37136   *
37137   * If an invalid date, the same date as the current one or an option object
37138   * without clear: true is passed, the method considers that argument as an
37139   * "ineffective" argument because calling datepicker.setDate() with those
37140   * values makes no changes to the date selection.
37141   *
37142   * When the allowOneSidedRange config option is false, passing {clear: true}
37143   * to clear the range works only when it is done to the last effective
37144   * argument (in other words, passed to rangeEnd or to rangeStart along with
37145   * ineffective rangeEnd). This is because when the date range is changed,
37146   * it gets normalized based on the last change at the end of the changing
37147   * process.
37148   *
37149   * @param {Date|Number|String|Object} rangeStart - Start date of the range
37150   * or {clear: true} to clear the date
37151   * @param {Date|Number|String|Object} rangeEnd - End date of the range
37152   * or {clear: true} to clear the date
37153   */
37154  setDates(rangeStart, rangeEnd) {
37155    const {
37156      datepickers: [datepicker0, datepicker1],
37157      inputs: [input0, input1],
37158      dates: [origDate0, origDate1],
37159    } = this;
37160
37161    // If range normalization runs on every change, we can't set a new range
37162    // that starts after the end of the current range correctly because the
37163    // normalization process swaps start↔︎end right after setting the new start
37164    // date. To prevent this, the normalization process needs to run once after
37165    // both of the new dates are set.
37166    this._updating = true;
37167    datepicker0.setDate(rangeStart);
37168    datepicker1.setDate(rangeEnd);
37169    delete this._updating;
37170
37171    if (datepicker1.dates[0] !== origDate1) {
37172      onChangeDate(this, {target: input1});
37173    } else if (datepicker0.dates[0] !== origDate0) {
37174      onChangeDate(this, {target: input0});
37175    }
37176  }
37177}
37178
37179
37180/***/ }),
37181
vendor: 24,530 bytes, lines 37182-37787
37182/***/ "./node_modules/vanillajs-datepicker/js/Datepicker.js":
37183/*!************************************************************!*\
37184  !*** ./node_modules/vanillajs-datepicker/js/Datepicker.js ***!
37185  \************************************************************/
37186/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
37187
37188"use strict";
37189__webpack_require__.r(__webpack_exports__);
37190/* harmony export */ __webpack_require__.d(__webpack_exports__, {
37191/* harmony export */   "default": () => (/* binding */ Datepicker)
37192/* harmony export */ });
37193/* harmony import */ var _lib_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lib/utils.js */ "./node_modules/vanillajs-datepicker/js/lib/utils.js");
37194/* harmony import */ var _lib_date_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lib/date.js */ "./node_modules/vanillajs-datepicker/js/lib/date.js");
37195/* harmony import */ var _lib_date_format_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lib/date-format.js */ "./node_modules/vanillajs-datepicker/js/lib/date-format.js");
37196/* harmony import */ var _lib_dom_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./lib/dom.js */ "./node_modules/vanillajs-datepicker/js/lib/dom.js");
37197/* harmony import */ var _lib_event_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./lib/event.js */ "./node_modules/vanillajs-datepicker/js/lib/event.js");
37198/* harmony import */ var _i18n_base_locales_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./i18n/base-locales.js */ "./node_modules/vanillajs-datepicker/js/i18n/base-locales.js");
37199/* harmony import */ var _options_defaultOptions_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./options/defaultOptions.js */ "./node_modules/vanillajs-datepicker/js/options/defaultOptions.js");
37200/* harmony import */ var _options_processOptions_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./options/processOptions.js */ "./node_modules/vanillajs-datepicker/js/options/processOptions.js");
37201/* harmony import */ var _options_shortcutKeys_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./options/shortcutKeys.js */ "./node_modules/vanillajs-datepicker/js/options/shortcutKeys.js");
37202/* harmony import */ var _picker_Picker_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./picker/Picker.js */ "./node_modules/vanillajs-datepicker/js/picker/Picker.js");
37203/* harmony import */ var _events_functions_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./events/functions.js */ "./node_modules/vanillajs-datepicker/js/events/functions.js");
37204/* harmony import */ var _events_elementListeners_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./events/elementListeners.js */ "./node_modules/vanillajs-datepicker/js/events/elementListeners.js");
37205/* harmony import */ var _events_otherListeners_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./events/otherListeners.js */ "./node_modules/vanillajs-datepicker/js/events/otherListeners.js");
37206
37207
37208
37209
37210
37211
37212
37213
37214
37215
37216
37217
37218
37219
37220function stringifyDates(dates, config) {
37221  return dates
37222    .map(dt => (0,_lib_date_format_js__WEBPACK_IMPORTED_MODULE_2__.formatDate)(dt, config.format, config.locale))
37223    .join(config.dateDelimiter);
37224}
37225
37226// parse input dates and create an array of time values for selection
37227// returns undefined if there are no valid dates in inputDates
37228// when origDates (current selection) is passed, the function works to mix
37229// the input dates into the current selection
37230function processInputDates(datepicker, inputDates, clear = false) {
37231  if (inputDates.length === 0) {
37232    // empty input is considered valid unless origiDates is passed
37233    return clear ? [] : undefined;
37234  }
37235
37236  const {config, dates: origDates, rangeSideIndex} = datepicker;
37237  const {pickLevel, maxNumberOfDates} = config;
37238  let newDates = inputDates.reduce((dates, dt) => {
37239    let date = (0,_lib_date_format_js__WEBPACK_IMPORTED_MODULE_2__.parseDate)(dt, config.format, config.locale);
37240    if (date === undefined) {
37241      return dates;
37242    }
37243    // adjust to 1st of the month/Jan 1st of the year
37244    // or to the last day of the monh/Dec 31st of the year if the datepicker
37245    // is the range-end picker of a rangepicker
37246    date = (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_1__.regularizeDate)(date, pickLevel, rangeSideIndex);
37247    if (
37248      (0,_lib_utils_js__WEBPACK_IMPORTED_MODULE_0__.isInRange)(date, config.minDate, config.maxDate)
37249      && !dates.includes(date)
37250      && !config.checkDisabled(date, pickLevel)
37251      && (pickLevel > 0 || !config.daysOfWeekDisabled.includes(new Date(date).getDay()))
37252    ) {
37253      dates.push(date);
37254    }
37255    return dates;
37256  }, []);
37257  if (newDates.length === 0) {
37258    return;
37259  }
37260  if (config.multidate && !clear) {
37261    // get the synmetric difference between origDates and newDates
37262    newDates = newDates.reduce((dates, date) => {
37263      if (!origDates.includes(date)) {
37264        dates.push(date);
37265      }
37266      return dates;
37267    }, origDates.filter(date => !newDates.includes(date)));
37268  }
37269  // do length check always because user can input multiple dates regardless of the mode
37270  return maxNumberOfDates && newDates.length > maxNumberOfDates
37271    ? newDates.slice(maxNumberOfDates * -1)
37272    : newDates;
37273}
37274
37275// refresh the UI elements
37276// modes: 1: input only, 2, picker only, 3 both
37277function refreshUI(datepicker, mode = 3, quickRender = true, viewDate = undefined) {
37278  const {config, picker, inputField} = datepicker;
37279  if (mode & 2) {
37280    const newView = picker.active ? config.pickLevel : config.startView;
37281    picker.update(viewDate).changeView(newView).render(quickRender);
37282  }
37283  if (mode & 1 && inputField) {
37284    inputField.value = stringifyDates(datepicker.dates, config);
37285  }
37286}
37287
37288function setDate(datepicker, inputDates, options) {
37289  const config = datepicker.config;
37290  let {clear, render, autohide, revert, forceRefresh, viewDate} = options;
37291  if (render === undefined) {
37292    render = true;
37293  }
37294  if (!render) {
37295    autohide = forceRefresh = false;
37296  } else if (autohide === undefined) {
37297    autohide = config.autohide;
37298  }
37299  viewDate = (0,_lib_date_format_js__WEBPACK_IMPORTED_MODULE_2__.parseDate)(viewDate, config.format, config.locale);
37300
37301  const newDates = processInputDates(datepicker, inputDates, clear);
37302  if (!newDates && !revert) {
37303    return;
37304  }
37305  if (newDates && newDates.toString() !== datepicker.dates.toString()) {
37306    datepicker.dates = newDates;
37307    refreshUI(datepicker, render ? 3 : 1, true, viewDate);
37308    (0,_events_functions_js__WEBPACK_IMPORTED_MODULE_10__.triggerDatepickerEvent)(datepicker, 'changeDate');
37309  } else {
37310    refreshUI(datepicker, forceRefresh ? 3 : 1, true, viewDate);
37311  }
37312
37313  if (autohide) {
37314    datepicker.hide();
37315  }
37316}
37317
37318function getOutputConverter(datepicker, format) {
37319  return format
37320    ? date => (0,_lib_date_format_js__WEBPACK_IMPORTED_MODULE_2__.formatDate)(date, format, datepicker.config.locale)
37321    : date => new Date(date);
37322}
37323
37324/**
37325 * Class representing a date picker
37326 */
37327class Datepicker {
37328  /**
37329   * Create a date picker
37330   * @param  {Element} element - element to bind a date picker
37331   * @param  {Object} [options] - config options
37332   * @param  {DateRangePicker} [rangepicker] - DateRangePicker instance the
37333   * date picker belongs to. Use this only when creating date picker as a part
37334   * of date range picker
37335   */
37336  constructor(element, options = {}, rangepicker = undefined) {
37337    element.datepicker = this;
37338    this.element = element;
37339    this.dates = [];
37340
37341    // initialize config
37342    const config = this.config = Object.assign({
37343      buttonClass: (options.buttonClass && String(options.buttonClass)) || 'button',
37344      container: null,
37345      defaultViewDate: (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_1__.today)(),
37346      maxDate: undefined,
37347      minDate: undefined,
37348    }, (0,_options_processOptions_js__WEBPACK_IMPORTED_MODULE_7__["default"])(_options_defaultOptions_js__WEBPACK_IMPORTED_MODULE_6__["default"], this));
37349
37350    // configure by type
37351    let inputField;
37352    if (element.tagName === 'INPUT') {
37353      inputField = this.inputField = element;
37354      inputField.classList.add('datepicker-input');
37355      if (options.container) {
37356        // omit string type check because it doesn't guarantee to avoid errors
37357        // (invalid selector string causes abend with sytax error)
37358        config.container = options.container instanceof HTMLElement
37359          ? options.container
37360          : document.querySelector(options.container);
37361      }
37362    } else {
37363      config.container = element;
37364    }
37365    if (rangepicker) {
37366      // check validiry
37367      const index = rangepicker.inputs.indexOf(inputField);
37368      const datepickers = rangepicker.datepickers;
37369      if (index < 0 || index > 1 || !Array.isArray(datepickers)) {
37370        throw Error('Invalid rangepicker object.');
37371      }
37372      // attach itaelf to the rangepicker here so that processInputDates() can
37373      // determine if this is the range-end picker of the rangepicker while
37374      // setting inital values when pickLevel > 0
37375      datepickers[index] = this;
37376      this.rangepicker = rangepicker;
37377      this.rangeSideIndex = index;
37378    }
37379
37380    // set up config
37381    this._options = options;
37382    Object.assign(config, (0,_options_processOptions_js__WEBPACK_IMPORTED_MODULE_7__["default"])(options, this));
37383    config.shortcutKeys = (0,_options_shortcutKeys_js__WEBPACK_IMPORTED_MODULE_8__["default"])(options.shortcutKeys || {});
37384
37385    // process initial value
37386    const initialDates = (0,_lib_utils_js__WEBPACK_IMPORTED_MODULE_0__.stringToArray)(
37387      element.value || element.dataset.date,
37388      config.dateDelimiter
37389    );
37390    delete element.dataset.date;
37391    const inputDateValues = processInputDates(this, initialDates);
37392    if (inputDateValues && inputDateValues.length > 0) {
37393      this.dates = inputDateValues;
37394    }
37395    if (inputField) {
37396      inputField.value = stringifyDates(this.dates, config);
37397    }
37398
37399    // set up picekr element
37400    const picker = this.picker = new _picker_Picker_js__WEBPACK_IMPORTED_MODULE_9__["default"](this);
37401
37402    const keydownListener = [element, 'keydown', _events_elementListeners_js__WEBPACK_IMPORTED_MODULE_11__.onKeydown.bind(null, this)];
37403    if (inputField) {
37404      (0,_lib_event_js__WEBPACK_IMPORTED_MODULE_4__.registerListeners)(this, [
37405        keydownListener,
37406        [inputField, 'focus', _events_elementListeners_js__WEBPACK_IMPORTED_MODULE_11__.onFocus.bind(null, this)],
37407        [inputField, 'mousedown', _events_elementListeners_js__WEBPACK_IMPORTED_MODULE_11__.onMousedown.bind(null, this)],
37408        [inputField, 'click', _events_elementListeners_js__WEBPACK_IMPORTED_MODULE_11__.onClickInput.bind(null, this)],
37409        [inputField, 'paste', _events_elementListeners_js__WEBPACK_IMPORTED_MODULE_11__.onPaste.bind(null, this)],
37410        // To detect a click on outside, just listening to mousedown is enough,
37411        // no need to listen to touchstart.
37412        // Actually, listening to touchstart can be a problem because, while
37413        // mousedown is fired only on tapping but not on swiping/pinching,
37414        // touchstart is fired on swiping/pinching as well.
37415        // (issue #95)
37416        [document, 'mousedown', _events_otherListeners_js__WEBPACK_IMPORTED_MODULE_12__.onClickOutside.bind(null, this)],
37417        [window, 'resize', picker.place.bind(picker)]
37418      ]);
37419    } else {
37420      (0,_lib_event_js__WEBPACK_IMPORTED_MODULE_4__.registerListeners)(this, [keydownListener]);
37421      this.show();
37422    }
37423  }
37424
37425  /**
37426   * Format Date object or time value in given format and language
37427   * @param  {Date|Number} date - date or time value to format
37428   * @param  {String|Object} format - format string or object that contains
37429   * toDisplay() custom formatter, whose signature is
37430   * - args:
37431   *   - date: {Date} - Date instance of the date passed to the method
37432   *   - format: {Object} - the format object passed to the method
37433   *   - locale: {Object} - locale for the language specified by `lang`
37434   * - return:
37435   *     {String} formatted date
37436   * @param  {String} [lang=en] - language code for the locale to use
37437   * @return {String} formatted date
37438   */
37439  static formatDate(date, format, lang) {
37440    return (0,_lib_date_format_js__WEBPACK_IMPORTED_MODULE_2__.formatDate)(date, format, lang && _i18n_base_locales_js__WEBPACK_IMPORTED_MODULE_5__["default"][lang] || _i18n_base_locales_js__WEBPACK_IMPORTED_MODULE_5__["default"].en);
37441  }
37442
37443  /**
37444   * Parse date string
37445   * @param  {String|Date|Number} dateStr - date string, Date object or time
37446   * value to parse
37447   * @param  {String|Object} format - format string or object that contains
37448   * toValue() custom parser, whose signature is
37449   * - args:
37450   *   - dateStr: {String|Date|Number} - the dateStr passed to the method
37451   *   - format: {Object} - the format object passed to the method
37452   *   - locale: {Object} - locale for the language specified by `lang`
37453   * - return:
37454   *     {Date|Number} parsed date or its time value
37455   * @param  {String} [lang=en] - language code for the locale to use
37456   * @return {Number} time value of parsed date
37457   */
37458  static parseDate(dateStr, format, lang) {
37459    return (0,_lib_date_format_js__WEBPACK_IMPORTED_MODULE_2__.parseDate)(dateStr, format, lang && _i18n_base_locales_js__WEBPACK_IMPORTED_MODULE_5__["default"][lang] || _i18n_base_locales_js__WEBPACK_IMPORTED_MODULE_5__["default"].en);
37460  }
37461
37462  /**
37463   * @type {Object} - Installed locales in `[languageCode]: localeObject` format
37464   * en`:_English (US)_ is pre-installed.
37465   */
37466  static get locales() {
37467    return _i18n_base_locales_js__WEBPACK_IMPORTED_MODULE_5__["default"];
37468  }
37469
37470  /**
37471   * @type {Boolean} - Whether the picker element is shown. `true` whne shown
37472   */
37473  get active() {
37474    return !!(this.picker && this.picker.active);
37475  }
37476
37477  /**
37478   * @type {HTMLDivElement} - DOM object of picker element
37479   */
37480  get pickerElement() {
37481    return this.picker ? this.picker.element : undefined;
37482  }
37483
37484  /**
37485   * Set new values to the config options
37486   * @param {Object} options - config options to update
37487   */
37488  setOptions(options) {
37489    const newOptions = (0,_options_processOptions_js__WEBPACK_IMPORTED_MODULE_7__["default"])(options, this);
37490    Object.assign(this._options, options);
37491    Object.assign(this.config, newOptions);
37492    this.picker.setOptions(newOptions);
37493
37494    refreshUI(this, 3);
37495  }
37496
37497  /**
37498   * Show the picker element
37499   */
37500  show() {
37501    if (this.inputField) {
37502      const {config, inputField} = this;
37503      if (inputField.disabled || (inputField.readOnly && !config.enableOnReadonly)) {
37504        return;
37505      }
37506      if (!(0,_lib_dom_js__WEBPACK_IMPORTED_MODULE_3__.isActiveElement)(inputField) && !config.disableTouchKeyboard) {
37507        this._showing = true;
37508        inputField.focus();
37509        delete this._showing;
37510      }
37511    }
37512    this.picker.show();
37513  }
37514
37515  /**
37516   * Hide the picker element
37517   * Not available on inline picker
37518   */
37519  hide() {
37520    if (!this.inputField) {
37521      return;
37522    }
37523    this.picker.hide();
37524    this.picker.update().changeView(this.config.startView).render();
37525  }
37526
37527  /**
37528   * Toggle the display of the picker element
37529   * Not available on inline picker
37530   *
37531   * Unlike hide(), the picker does not return to the start view when hiding.
37532   */
37533  toggle() {
37534    if (!this.picker.active) {
37535      this.show();
37536    } else if (this.inputField) {
37537      this.picker.hide();
37538    }
37539  }
37540
37541  /**
37542   * Destroy the Datepicker instance
37543   * @return {Detepicker} - the instance destroyed
37544   */
37545  destroy() {
37546    this.hide();
37547    (0,_lib_event_js__WEBPACK_IMPORTED_MODULE_4__.unregisterListeners)(this);
37548    this.picker.detach();
37549    const element = this.element;
37550    element.classList.remove('datepicker-input');
37551    delete element.datepicker;
37552    return this;
37553  }
37554
37555  /**
37556   * Get the selected date(s)
37557   *
37558   * The method returns a Date object of selected date by default, and returns
37559   * an array of selected dates in multidate mode. If format string is passed,
37560   * it returns date string(s) formatted in given format.
37561   *
37562   * @param  {String} [format] - format string to stringify the date(s)
37563   * @return {Date|String|Date[]|String[]} - selected date(s), or if none is
37564   * selected, empty array in multidate mode and undefined in sigledate mode
37565   */
37566  getDate(format = undefined) {
37567    const callback = getOutputConverter(this, format);
37568
37569    if (this.config.multidate) {
37570      return this.dates.map(callback);
37571    }
37572    if (this.dates.length > 0) {
37573      return callback(this.dates[0]);
37574    }
37575  }
37576
37577  /**
37578   * Set selected date(s)
37579   *
37580   * In multidate mode, you can pass multiple dates as a series of arguments
37581   * or an array. (Since each date is parsed individually, the type of the
37582   * dates doesn't have to be the same.)
37583   * The given dates are used to toggle the select status of each date. The
37584   * number of selected dates is kept from exceeding the length set to
37585   * maxNumberOfDates.
37586   *
37587   * With clear: true option, the method can be used to clear the selection
37588   * and to replace the selection instead of toggling in multidate mode.
37589   * If the option is passed with no date arguments or an empty dates array,
37590   * it works as "clear" (clear the selection then set nothing), and if the
37591   * option is passed with new dates to select, it works as "replace" (clear
37592   * the selection then set the given dates)
37593   *
37594   * When render: false option is used, the method omits re-rendering the
37595   * picker element. In this case, you need to call refresh() method later in
37596   * order for the picker element to reflect the changes. The input field is
37597   * refreshed always regardless of this option.
37598   *
37599   * When invalid (unparsable, repeated, disabled or out-of-range) dates are
37600   * passed, the method ignores them and applies only valid ones. In the case
37601   * that all the given dates are invalid, which is distinguished from passing
37602   * no dates, the method considers it as an error and leaves the selection
37603   * untouched. (The input field also remains untouched unless revert: true
37604   * option is used.)
37605   * Replacing the selection with the same date(s) also causes a similar
37606   * situation. In both cases, the method does not refresh the picker element
37607   * unless forceRefresh: true option is used.
37608   *
37609   * If viewDate option is used, the method changes the focused date to the
37610   * specified date instead of the last item of the selection.
37611   *
37612   * @param {...(Date|Number|String)|Array} [dates] - Date strings, Date
37613   * objects, time values or mix of those for new selection
37614   * @param {Object} [options] - function options
37615   * - clear: {boolean} - Whether to clear the existing selection
37616   *     defualt: false
37617   * - render: {boolean} - Whether to re-render the picker element
37618   *     default: true
37619   * - autohide: {boolean} - Whether to hide the picker element after re-render
37620   *     Ignored when used with render: false
37621   *     default: config.autohide
37622   * - revert: {boolean} - Whether to refresh the input field when all the
37623   *     passed dates are invalid
37624   *     default: false
37625   * - forceRefresh: {boolean} - Whether to refresh the picker element when
37626   *     passed dates don't change the existing selection
37627   *     default: false
37628   * - viewDate: {Date|Number|String} - Date to be focused after setiing date(s)
37629   *     default: The last item of the resulting selection, or defaultViewDate
37630   *     config option if none is selected
37631   */
37632  setDate(...args) {
37633    const dates = [...args];
37634    const opts = {};
37635    const lastArg = (0,_lib_utils_js__WEBPACK_IMPORTED_MODULE_0__.lastItemOf)(args);
37636    if (
37637      lastArg
37638      && typeof lastArg === 'object'
37639      && !Array.isArray(lastArg)
37640      && !(lastArg instanceof Date)
37641    ) {
37642      Object.assign(opts, dates.pop());
37643    }
37644
37645    const inputDates = Array.isArray(dates[0]) ? dates[0] : dates;
37646    setDate(this, inputDates, opts);
37647  }
37648
37649  /**
37650   * Update the selected date(s) with input field's value
37651   * Not available on inline picker
37652   *
37653   * The input field will be refreshed with properly formatted date string.
37654   *
37655   * In the case that all the entered dates are invalid (unparsable, repeated,
37656   * disabled or out-of-range), which is distinguished from empty input field,
37657   * the method leaves the input field untouched as well as the selection by
37658   * default. If revert: true option is used in this case, the input field is
37659   * refreshed with the existing selection.
37660   * The method also doesn't refresh the picker element in this case and when
37661   * the entered dates are the same as the existing selection. If
37662   * forceRefresh: true option is used, the picker element is refreshed in
37663   * these cases too.
37664   *
37665   * @param  {Object} [options] - function options
37666   * - autohide: {boolean} - whether to hide the picker element after refresh
37667   *     default: false
37668   * - revert: {boolean} - Whether to refresh the input field when all the
37669   *     passed dates are invalid
37670   *     default: false
37671   * - forceRefresh: {boolean} - Whether to refresh the picer element when
37672   *     input field's value doesn't change the existing selection
37673   *     default: false
37674   */
37675  update(options = undefined) {
37676    if (!this.inputField) {
37677      return;
37678    }
37679
37680    const opts = Object.assign(options || {}, {clear: true, render: true, viewDate: undefined});
37681    const inputDates = (0,_lib_utils_js__WEBPACK_IMPORTED_MODULE_0__.stringToArray)(this.inputField.value, this.config.dateDelimiter);
37682    setDate(this, inputDates, opts);
37683  }
37684
37685  /**
37686   * Get the focused date
37687   *
37688   * The method returns a Date object of focused date by default. If format
37689   * string is passed, it returns date string formatted in given format.
37690   *
37691   * @param  {String} [format] - format string to stringify the date
37692   * @return {Date|String} - focused date (viewDate)
37693   */
37694  getFocusedDate(format = undefined) {
37695    return getOutputConverter(this, format)(this.picker.viewDate);
37696  }
37697
37698  /**
37699   * Set focused date
37700   *
37701   * By default, the method updates the focus on the view shown at the time,
37702   * or the one set to the startView config option if the picker is hidden.
37703   * When resetView: true is passed, the view displayed is changed to the
37704   * pickLevel config option's if the picker is shown.
37705   *
37706   * @param {Date|Number|String} viewDate - date string, Date object, time
37707   * values of the date to focus
37708   * @param {Boolean} [resetView] - whether to change the view to pickLevel
37709   * config option's when the picker is shown. Ignored when the picker is
37710   * hidden
37711   */
37712  setFocusedDate(viewDate, resetView = false) {
37713    const {config, picker, active, rangeSideIndex} = this;
37714    const pickLevel = config.pickLevel;
37715    const newViewDate = (0,_lib_date_format_js__WEBPACK_IMPORTED_MODULE_2__.parseDate)(viewDate, config.format, config.locale);
37716    if (newViewDate === undefined) {
37717      return;
37718    }
37719
37720    picker.changeFocus((0,_lib_date_js__WEBPACK_IMPORTED_MODULE_1__.regularizeDate)(newViewDate, pickLevel, rangeSideIndex));
37721    if (active && resetView) {
37722      picker.changeView(pickLevel);
37723    }
37724    picker.render();
37725  }
37726
37727  /**
37728   * Refresh the picker element and the associated input field
37729   * @param {String} [target] - target item when refreshing one item only
37730   * 'picker' or 'input'
37731   * @param {Boolean} [forceRender] - whether to re-render the picker element
37732   * regardless of its state instead of optimized refresh
37733   */
37734  refresh(target = undefined, forceRender = false) {
37735    if (target && typeof target !== 'string') {
37736      forceRender = target;
37737      target = undefined;
37738    }
37739
37740    let mode;
37741    if (target === 'picker') {
37742      mode = 2;
37743    } else if (target === 'input') {
37744      mode = 1;
37745    } else {
37746      mode = 3;
37747    }
37748    refreshUI(this, mode, !forceRender);
37749  }
37750
37751  /**
37752   * Enter edit mode
37753   * Not available on inline picker or when the picker element is hidden
37754   */
37755  enterEditMode() {
37756    const inputField = this.inputField;
37757    if (!inputField || inputField.readOnly || !this.picker.active || this.editMode) {
37758      return;
37759    }
37760    this.editMode = true;
37761    inputField.classList.add('in-edit');
37762  }
37763
37764  /**
37765   * Exit from edit mode
37766   * Not available on inline picker
37767   * @param  {Object} [options] - function options
37768   * - update: {boolean} - whether to call update() after exiting
37769   *     If false, input field is revert to the existing selection
37770   *     default: false
37771   */
37772  exitEditMode(options = undefined) {
37773    if (!this.inputField || !this.editMode) {
37774      return;
37775    }
37776    const opts = Object.assign({update: false}, options);
37777    delete this.editMode;
37778    this.inputField.classList.remove('in-edit');
37779    if (opts.update) {
37780      this.update(opts);
37781    }
37782  }
37783}
37784
37785
37786/***/ }),
37787
vendor: 8,075 bytes, lines 37788-38018
37788/***/ "./node_modules/vanillajs-datepicker/js/events/elementListeners.js":
37789/*!*************************************************************************!*\
37790  !*** ./node_modules/vanillajs-datepicker/js/events/elementListeners.js ***!
37791  \*************************************************************************/
37792/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
37793
37794"use strict";
37795__webpack_require__.r(__webpack_exports__);
37796/* harmony export */ __webpack_require__.d(__webpack_exports__, {
37797/* harmony export */   onClickInput: () => (/* binding */ onClickInput),
37798/* harmony export */   onFocus: () => (/* binding */ onFocus),
37799/* harmony export */   onKeydown: () => (/* binding */ onKeydown),
37800/* harmony export */   onMousedown: () => (/* binding */ onMousedown),
37801/* harmony export */   onPaste: () => (/* binding */ onPaste)
37802/* harmony export */ });
37803/* harmony import */ var _lib_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../lib/utils.js */ "./node_modules/vanillajs-datepicker/js/lib/utils.js");
37804/* harmony import */ var _lib_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../lib/dom.js */ "./node_modules/vanillajs-datepicker/js/lib/dom.js");
37805/* harmony import */ var _lib_date_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../lib/date.js */ "./node_modules/vanillajs-datepicker/js/lib/date.js");
37806/* harmony import */ var _functions_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./functions.js */ "./node_modules/vanillajs-datepicker/js/events/functions.js");
37807
37808
37809
37810
37811
37812// Find the closest date that doesn't meet the condition for unavailable date
37813// Returns undefined if no available date is found
37814// addFn: function to calculate the next date
37815//   - args: time value, amount
37816// increase: amount to pass to addFn
37817// testFn: function to test the unavailability of the date
37818//   - args: time value; return: true if unavailable
37819function findNextAvailableOne(date, addFn, increase, testFn, min, max) {
37820  if (!(0,_lib_utils_js__WEBPACK_IMPORTED_MODULE_0__.isInRange)(date, min, max)) {
37821    return;
37822  }
37823  if (testFn(date)) {
37824    const newDate = addFn(date, increase);
37825    return findNextAvailableOne(newDate, addFn, increase, testFn, min, max);
37826  }
37827  return date;
37828}
37829
37830// direction: -1 (left/up), 1 (right/down)
37831// vertical: true for up/down, false for left/right
37832function moveByArrowKey(datepicker, direction, vertical) {
37833  const picker = datepicker.picker;
37834  const currentView = picker.currentView;
37835  const step = currentView.step || 1;
37836  let viewDate = picker.viewDate;
37837  let addFn;
37838  switch (currentView.id) {
37839    case 0:
37840      viewDate = (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_2__.addDays)(viewDate, vertical ? direction * 7 : direction);
37841      addFn = _lib_date_js__WEBPACK_IMPORTED_MODULE_2__.addDays;
37842      break;
37843    case 1:
37844      viewDate = (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_2__.addMonths)(viewDate, vertical ? direction * 4 : direction);
37845      addFn = _lib_date_js__WEBPACK_IMPORTED_MODULE_2__.addMonths;
37846      break;
37847    default:
37848      viewDate = (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_2__.addYears)(viewDate, direction * (vertical ? 4 : 1) * step);
37849      addFn = _lib_date_js__WEBPACK_IMPORTED_MODULE_2__.addYears;
37850  }
37851  viewDate = findNextAvailableOne(
37852    viewDate,
37853    addFn,
37854    direction < 0 ? -step : step,
37855    (date) => currentView.disabled.includes(date),
37856    currentView.minDate,
37857    currentView.maxDate
37858  );
37859  if (viewDate !== undefined) {
37860    picker.changeFocus(viewDate).render();
37861  }
37862}
37863
37864function onKeydown(datepicker, ev) {
37865  const {config, picker, editMode} = datepicker;
37866  const active = picker.active;
37867  const {key, altKey, shiftKey} = ev;
37868  const ctrlOrMetaKey = ev.ctrlKey || ev.metaKey;
37869  const cancelEvent = () => {
37870    ev.preventDefault();
37871    ev.stopPropagation();
37872  };
37873
37874  // tab/enter keys should not be taken by shortcut keys
37875  if (key === 'Tab') {
37876    (0,_functions_js__WEBPACK_IMPORTED_MODULE_3__.unfocus)(datepicker);
37877    return;
37878  }
37879  if (key === 'Enter') {
37880    if (!active) {
37881      datepicker.update();
37882    } else if (editMode) {
37883      datepicker.exitEditMode({update: true, autohide: config.autohide});
37884    } else {
37885      const currentView = picker.currentView;
37886      if (currentView.isMinView) {
37887        datepicker.setDate(picker.viewDate);
37888      } else {
37889        picker.changeView(currentView.id - 1).render();
37890        cancelEvent();
37891      }
37892    }
37893    return;
37894  }
37895
37896  const shortcutKeys = config.shortcutKeys;
37897  const keyInfo = {key, ctrlOrMetaKey, altKey, shiftKey};
37898  const shortcut = Object.keys(shortcutKeys).find((item) => {
37899    const keyDef = shortcutKeys[item];
37900    return !Object.keys(keyDef).find(prop => keyDef[prop] !== keyInfo[prop]);
37901  });
37902  if (shortcut) {
37903    let action;
37904    if (shortcut === 'toggle') {
37905      action = shortcut;
37906    } else if (editMode) {
37907      if (shortcut === 'exitEditMode') {
37908        action = shortcut;
37909      }
37910    } else if (active) {
37911      if (shortcut === 'hide') {
37912        action = shortcut;
37913      } else if (shortcut === 'prevButton') {
37914        action = [_functions_js__WEBPACK_IMPORTED_MODULE_3__.goToPrevOrNext, [datepicker, -1]];
37915      } else if (shortcut === 'nextButton') {
37916        action = [_functions_js__WEBPACK_IMPORTED_MODULE_3__.goToPrevOrNext, [datepicker, 1]];
37917      } else if (shortcut === 'viewSwitch') {
37918        action = [_functions_js__WEBPACK_IMPORTED_MODULE_3__.switchView, [datepicker]];
37919      } else if (config.clearButton && shortcut === 'clearButton') {
37920        action = [_functions_js__WEBPACK_IMPORTED_MODULE_3__.clearSelection, [datepicker]];
37921      } else if (config.todayButton && shortcut === 'todayButton') {
37922        action = [_functions_js__WEBPACK_IMPORTED_MODULE_3__.goToOrSelectToday, [datepicker]];
37923      }
37924    } else if (shortcut === 'show') {
37925      action = shortcut;
37926    }
37927    if (action) {
37928      if (Array.isArray(action)) {
37929        action[0].apply(null, action[1]);
37930      } else {
37931        datepicker[action]();
37932      }
37933      cancelEvent();
37934      return;
37935    }
37936  }
37937
37938  // perform as a regular <input> when picker in hidden or in edit mode
37939  if (!active || editMode) {
37940    return;
37941  }
37942
37943  const handleArrowKeyPress = (direction, vertical) => {
37944    if (shiftKey || ctrlOrMetaKey || altKey) {
37945      datepicker.enterEditMode();
37946    } else {
37947      moveByArrowKey(datepicker, direction, vertical);
37948      ev.preventDefault();
37949    }
37950  };
37951
37952  if (key === 'ArrowLeft') {
37953    handleArrowKeyPress(-1, false);
37954  } else if (key === 'ArrowRight') {
37955    handleArrowKeyPress(1, false);
37956  } else if (key === 'ArrowUp') {
37957    handleArrowKeyPress(-1, true);
37958  } else if (key === 'ArrowDown') {
37959    handleArrowKeyPress(1, true);
37960  } else if (
37961    key === 'Backspace'
37962    || key === 'Delete'
37963      // When autofill is performed, Chromium-based browsers trigger fake
37964      // keydown/keyup events that don't have the `key` property (on Edge,
37965      // keyup only) in addition to the input event. Therefore, we need to
37966      // check the existence of `key`'s value before checking the length.
37967      // (issue #144)
37968    || (key && key.length === 1 && !ctrlOrMetaKey)
37969  ) {
37970    datepicker.enterEditMode();
37971  }
37972}
37973
37974function onFocus(datepicker) {
37975  if (datepicker.config.showOnFocus && !datepicker._showing) {
37976    datepicker.show();
37977  }
37978}
37979
37980// for the prevention for entering edit mode while getting focus on click
37981function onMousedown(datepicker, ev) {
37982  const el = ev.target;
37983  if (datepicker.picker.active || datepicker.config.showOnClick) {
37984    el._active = (0,_lib_dom_js__WEBPACK_IMPORTED_MODULE_1__.isActiveElement)(el);
37985    el._clicking = setTimeout(() => {
37986      delete el._active;
37987      delete el._clicking;
37988    }, 2000);
37989  }
37990}
37991
37992function onClickInput(datepicker, ev) {
37993  const el = ev.target;
37994  if (!el._clicking) {
37995    return;
37996  }
37997  clearTimeout(el._clicking);
37998  delete el._clicking;
37999
38000  if (el._active) {
38001    datepicker.enterEditMode();
38002  }
38003  delete el._active;
38004
38005  if (datepicker.config.showOnClick) {
38006    datepicker.show();
38007  }
38008}
38009
38010function onPaste(datepicker, ev) {
38011  if (ev.clipboardData.types.includes('text/plain')) {
38012    datepicker.enterEditMode();
38013  }
38014}
38015
38016
38017/***/ }),
38018
vendor: 3,664 bytes, lines 38019-38116
38019/***/ "./node_modules/vanillajs-datepicker/js/events/functions.js":
38020/*!******************************************************************!*\
38021  !*** ./node_modules/vanillajs-datepicker/js/events/functions.js ***!
38022  \******************************************************************/
38023/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
38024
38025"use strict";
38026__webpack_require__.r(__webpack_exports__);
38027/* harmony export */ __webpack_require__.d(__webpack_exports__, {
38028/* harmony export */   clearSelection: () => (/* binding */ clearSelection),
38029/* harmony export */   goToOrSelectToday: () => (/* binding */ goToOrSelectToday),
38030/* harmony export */   goToPrevOrNext: () => (/* binding */ goToPrevOrNext),
38031/* harmony export */   switchView: () => (/* binding */ switchView),
38032/* harmony export */   triggerDatepickerEvent: () => (/* binding */ triggerDatepickerEvent),
38033/* harmony export */   unfocus: () => (/* binding */ unfocus)
38034/* harmony export */ });
38035/* harmony import */ var _lib_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../lib/utils.js */ "./node_modules/vanillajs-datepicker/js/lib/utils.js");
38036/* harmony import */ var _lib_date_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../lib/date.js */ "./node_modules/vanillajs-datepicker/js/lib/date.js");
38037/* harmony import */ var _lib_dom_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../lib/dom.js */ "./node_modules/vanillajs-datepicker/js/lib/dom.js");
38038
38039
38040
38041
38042function triggerDatepickerEvent(datepicker, type) {
38043  const options = {
38044    bubbles: true,
38045    cancelable: true,
38046    detail: {
38047      date: datepicker.getDate(),
38048      viewDate: new Date(datepicker.picker.viewDate),
38049      viewId: datepicker.picker.currentView.id,
38050      datepicker,
38051    },
38052  };
38053  datepicker.element.dispatchEvent(new CustomEvent(type, options));
38054}
38055
38056// direction: -1 (to previous), 1 (to next)
38057function goToPrevOrNext(datepicker, direction) {
38058  const {config, picker} = datepicker;
38059  const {currentView, viewDate} = picker;
38060  let newViewDate;
38061  switch (currentView.id) {
38062    case 0:
38063      newViewDate = (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_1__.addMonths)(viewDate, direction);
38064      break;
38065    case 1:
38066      newViewDate = (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_1__.addYears)(viewDate, direction);
38067      break;
38068    default:
38069      newViewDate = (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_1__.addYears)(viewDate, direction * currentView.navStep);
38070  }
38071  newViewDate = (0,_lib_utils_js__WEBPACK_IMPORTED_MODULE_0__.limitToRange)(newViewDate, config.minDate, config.maxDate);
38072  picker.changeFocus(newViewDate).render();
38073}
38074
38075function switchView(datepicker) {
38076  const viewId = datepicker.picker.currentView.id;
38077  if (viewId === datepicker.config.maxView) {
38078    return;
38079  }
38080  datepicker.picker.changeView(viewId + 1).render();
38081}
38082
38083function clearSelection(datepicker) {
38084  datepicker.setDate({clear: true});
38085}
38086
38087function goToOrSelectToday(datepicker) {
38088  const currentDate = (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_1__.today)();
38089  if (datepicker.config.todayButtonMode === 1) {
38090    datepicker.setDate(currentDate, {forceRefresh: true, viewDate: currentDate});
38091  } else {
38092    datepicker.setFocusedDate(currentDate, true);
38093  }
38094}
38095
38096function unfocus(datepicker) {
38097  const onBlur = () => {
38098    if (datepicker.config.updateOnBlur) {
38099      datepicker.update({revert: true});
38100    } else {
38101      datepicker.refresh('input');
38102    }
38103    datepicker.hide();
38104  };
38105  const element = datepicker.element;
38106
38107  if ((0,_lib_dom_js__WEBPACK_IMPORTED_MODULE_2__.isActiveElement)(element)) {
38108    element.addEventListener('blur', onBlur, {once: true});
38109  } else {
38110    onBlur();
38111  }
38112}
38113
38114
38115/***/ }),
38116
vendor: 1,916 bytes, lines 38117-38154
38117/***/ "./node_modules/vanillajs-datepicker/js/events/otherListeners.js":
38118/*!***********************************************************************!*\
38119  !*** ./node_modules/vanillajs-datepicker/js/events/otherListeners.js ***!
38120  \***********************************************************************/
38121/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
38122
38123"use strict";
38124__webpack_require__.r(__webpack_exports__);
38125/* harmony export */ __webpack_require__.d(__webpack_exports__, {
38126/* harmony export */   onClickOutside: () => (/* binding */ onClickOutside)
38127/* harmony export */ });
38128/* harmony import */ var _lib_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../lib/dom.js */ "./node_modules/vanillajs-datepicker/js/lib/dom.js");
38129/* harmony import */ var _lib_event_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../lib/event.js */ "./node_modules/vanillajs-datepicker/js/lib/event.js");
38130/* harmony import */ var _functions_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./functions.js */ "./node_modules/vanillajs-datepicker/js/events/functions.js");
38131
38132
38133
38134
38135// for the `document` to delegate the events from outside the picker/input field
38136function onClickOutside(datepicker, ev) {
38137  const {element, picker} = datepicker;
38138  // check both picker's and input's activeness to make updateOnBlur work in
38139  // the cases where...
38140  // - picker is hidden by ESC key press → input stays focused
38141  // - input is unfocused by closing mobile keyboard → piker is kept shown
38142  if (!picker.active && !(0,_lib_dom_js__WEBPACK_IMPORTED_MODULE_0__.isActiveElement)(element)) {
38143    return;
38144  }
38145  const pickerElem = picker.element;
38146  if ((0,_lib_event_js__WEBPACK_IMPORTED_MODULE_1__.findElementInEventPath)(ev, el => el === element || el === pickerElem)) {
38147    return;
38148  }
38149  (0,_functions_js__WEBPACK_IMPORTED_MODULE_2__.unfocus)(datepicker);
38150}
38151
38152
38153/***/ }),
38154
vendor: 3,011 bytes, lines 38155-38224
38155/***/ "./node_modules/vanillajs-datepicker/js/events/pickerListeners.js":
38156/*!************************************************************************!*\
38157  !*** ./node_modules/vanillajs-datepicker/js/events/pickerListeners.js ***!
38158  \************************************************************************/
38159/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
38160
38161"use strict";
38162__webpack_require__.r(__webpack_exports__);
38163/* harmony export */ __webpack_require__.d(__webpack_exports__, {
38164/* harmony export */   onClickNextButton: () => (/* binding */ onClickNextButton),
38165/* harmony export */   onClickPrevButton: () => (/* binding */ onClickPrevButton),
38166/* harmony export */   onClickView: () => (/* binding */ onClickView),
38167/* harmony export */   onClickViewSwitch: () => (/* binding */ onClickViewSwitch),
38168/* harmony export */   onMousedownPicker: () => (/* binding */ onMousedownPicker)
38169/* harmony export */ });
38170/* harmony import */ var _lib_date_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../lib/date.js */ "./node_modules/vanillajs-datepicker/js/lib/date.js");
38171/* harmony import */ var _lib_event_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../lib/event.js */ "./node_modules/vanillajs-datepicker/js/lib/event.js");
38172/* harmony import */ var _functions_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./functions.js */ "./node_modules/vanillajs-datepicker/js/events/functions.js");
38173
38174
38175
38176
38177function goToSelectedMonthOrYear(datepicker, selection) {
38178  const picker = datepicker.picker;
38179  const viewDate = new Date(picker.viewDate);
38180  const viewId = picker.currentView.id;
38181  const newDate = viewId === 1
38182    ? (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_0__.addMonths)(viewDate, selection - viewDate.getMonth())
38183    : (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_0__.addYears)(viewDate, selection - viewDate.getFullYear());
38184
38185  picker.changeFocus(newDate).changeView(viewId - 1).render();
38186}
38187
38188function onClickViewSwitch(datepicker) {
38189  (0,_functions_js__WEBPACK_IMPORTED_MODULE_2__.switchView)(datepicker);
38190}
38191
38192function onClickPrevButton(datepicker) {
38193  (0,_functions_js__WEBPACK_IMPORTED_MODULE_2__.goToPrevOrNext)(datepicker, -1);
38194}
38195
38196function onClickNextButton(datepicker) {
38197  (0,_functions_js__WEBPACK_IMPORTED_MODULE_2__.goToPrevOrNext)(datepicker, 1);
38198}
38199
38200// For the picker's main block to delegete the events from `datepicker-cell`s
38201function onClickView(datepicker, ev) {
38202  const target = (0,_lib_event_js__WEBPACK_IMPORTED_MODULE_1__.findElementInEventPath)(ev, '.datepicker-cell');
38203  if (!target || target.classList.contains('disabled')) {
38204    return;
38205  }
38206
38207  const {id, isMinView} = datepicker.picker.currentView;
38208  const data = target.dataset;
38209  if (isMinView) {
38210    datepicker.setDate(Number(data.date));
38211  } else if (id === 1) {
38212    goToSelectedMonthOrYear(datepicker, Number(data.month));
38213  } else {
38214    goToSelectedMonthOrYear(datepicker, Number(data.year));
38215  }
38216}
38217
38218function onMousedownPicker(ev) {
38219  ev.preventDefault();
38220}
38221
38222
38223/***/ }),
38224
vendor: 1,229 bytes, lines 38225-38252
38225/***/ "./node_modules/vanillajs-datepicker/js/i18n/base-locales.js":
38226/*!*******************************************************************!*\
38227  !*** ./node_modules/vanillajs-datepicker/js/i18n/base-locales.js ***!
38228  \*******************************************************************/
38229/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
38230
38231"use strict";
38232__webpack_require__.r(__webpack_exports__);
38233/* harmony export */ __webpack_require__.d(__webpack_exports__, {
38234/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
38235/* harmony export */ });
38236// default locales
38237/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
38238  en: {
38239    days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
38240    daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
38241    daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
38242    months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
38243    monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
38244    today: "Today",
38245    clear: "Clear",
38246    titleFormat: "MM y"
38247  }
38248});
38249
38250
38251/***/ }),
38252
vendor: 6,545 bytes, lines 38253-38457
38253/***/ "./node_modules/vanillajs-datepicker/js/lib/date-format.js":
38254/*!*****************************************************************!*\
38255  !*** ./node_modules/vanillajs-datepicker/js/lib/date-format.js ***!
38256  \*****************************************************************/
38257/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
38258
38259"use strict";
38260__webpack_require__.r(__webpack_exports__);
38261/* harmony export */ __webpack_require__.d(__webpack_exports__, {
38262/* harmony export */   formatDate: () => (/* binding */ formatDate),
38263/* harmony export */   parseDate: () => (/* binding */ parseDate),
38264/* harmony export */   reFormatTokens: () => (/* binding */ reFormatTokens),
38265/* harmony export */   reNonDateParts: () => (/* binding */ reNonDateParts)
38266/* harmony export */ });
38267/* harmony import */ var _date_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./date.js */ "./node_modules/vanillajs-datepicker/js/lib/date.js");
38268/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils.js */ "./node_modules/vanillajs-datepicker/js/lib/utils.js");
38269
38270
38271
38272// pattern for format parts
38273const reFormatTokens = /dd?|DD?|mm?|MM?|yy?(?:yy)?/;
38274// pattern for non date parts
38275const reNonDateParts = /[\s!-/:-@[-`{-~年月日]+/;
38276// cache for persed formats
38277let knownFormats = {};
38278// parse funtions for date parts
38279const parseFns = {
38280  y(date, year) {
38281    return new Date(date).setFullYear(parseInt(year, 10));
38282  },
38283  m(date, month, locale) {
38284    const newDate = new Date(date);
38285    let monthIndex = parseInt(month, 10) - 1;
38286
38287    if (isNaN(monthIndex)) {
38288      if (!month) {
38289        return NaN;
38290      }
38291
38292      const monthName = month.toLowerCase();
38293      const compareNames = name => name.toLowerCase().startsWith(monthName);
38294      // compare with both short and full names because some locales have periods
38295      // in the short names (not equal to the first X letters of the full names)
38296      monthIndex = locale.monthsShort.findIndex(compareNames);
38297      if (monthIndex < 0) {
38298        monthIndex = locale.months.findIndex(compareNames);
38299      }
38300      if (monthIndex < 0) {
38301        return NaN;
38302      }
38303    }
38304
38305    newDate.setMonth(monthIndex);
38306    return newDate.getMonth() !== normalizeMonth(monthIndex)
38307      ? newDate.setDate(0)
38308      : newDate.getTime();
38309  },
38310  d(date, day) {
38311    return new Date(date).setDate(parseInt(day, 10));
38312  },
38313};
38314// format functions for date parts
38315const formatFns = {
38316  d(date) {
38317    return date.getDate();
38318  },
38319  dd(date) {
38320    return padZero(date.getDate(), 2);
38321  },
38322  D(date, locale) {
38323    return locale.daysShort[date.getDay()];
38324  },
38325  DD(date, locale) {
38326    return locale.days[date.getDay()];
38327  },
38328  m(date) {
38329    return date.getMonth() + 1;
38330  },
38331  mm(date) {
38332    return padZero(date.getMonth() + 1, 2);
38333  },
38334  M(date, locale) {
38335    return locale.monthsShort[date.getMonth()];
38336  },
38337  MM(date, locale) {
38338    return locale.months[date.getMonth()];
38339  },
38340  y(date) {
38341    return date.getFullYear();
38342  },
38343  yy(date) {
38344    return padZero(date.getFullYear(), 2).slice(-2);
38345  },
38346  yyyy(date) {
38347    return padZero(date.getFullYear(), 4);
38348  },
38349};
38350
38351// get month index in normal range (0 - 11) from any number
38352function normalizeMonth(monthIndex) {
38353  return monthIndex > -1 ? monthIndex % 12 : normalizeMonth(monthIndex + 12);
38354}
38355
38356function padZero(num, length) {
38357  return num.toString().padStart(length, '0');
38358}
38359
38360function parseFormatString(format) {
38361  if (typeof format !== 'string') {
38362    throw new Error("Invalid date format.");
38363  }
38364  if (format in knownFormats) {
38365    return knownFormats[format];
38366  }
38367
38368  // sprit the format string into parts and seprators
38369  const separators = format.split(reFormatTokens);
38370  const parts = format.match(new RegExp(reFormatTokens, 'g'));
38371  if (separators.length === 0 || !parts) {
38372    throw new Error("Invalid date format.");
38373  }
38374
38375  // collect format functions used in the format
38376  const partFormatters = parts.map(token => formatFns[token]);
38377
38378  // collect parse function keys used in the format
38379  // iterate over parseFns' keys in order to keep the order of the keys.
38380  const partParserKeys = Object.keys(parseFns).reduce((keys, key) => {
38381    const token = parts.find(part => part[0] !== 'D' && part[0].toLowerCase() === key);
38382    if (token) {
38383      keys.push(key);
38384    }
38385    return keys;
38386  }, []);
38387
38388  return knownFormats[format] = {
38389    parser(dateStr, locale) {
38390      const dateParts = dateStr.split(reNonDateParts).reduce((dtParts, part, index) => {
38391        if (part.length > 0 && parts[index]) {
38392          const token = parts[index][0];
38393          if (token === 'M') {
38394            dtParts.m = part;
38395          } else if (token !== 'D') {
38396            dtParts[token] = part;
38397          }
38398        }
38399        return dtParts;
38400      }, {});
38401
38402      // iterate over partParserkeys so that the parsing is made in the oder
38403      // of year, month and day to prevent the day parser from correcting last
38404      // day of month wrongly
38405      return partParserKeys.reduce((origDate, key) => {
38406        const newDate = parseFns[key](origDate, dateParts[key], locale);
38407        // ingnore the part failed to parse
38408        return isNaN(newDate) ? origDate : newDate;
38409      }, (0,_date_js__WEBPACK_IMPORTED_MODULE_0__.today)());
38410    },
38411    formatter(date, locale) {
38412      let dateStr = partFormatters.reduce((str, fn, index) => {
38413        return str += `${separators[index]}${fn(date, locale)}`;
38414      }, '');
38415      // separators' length is always parts' length + 1,
38416      return dateStr += (0,_utils_js__WEBPACK_IMPORTED_MODULE_1__.lastItemOf)(separators);
38417    },
38418  };
38419}
38420
38421function parseDate(dateStr, format, locale) {
38422  if (dateStr instanceof Date || typeof dateStr === 'number') {
38423    const date = (0,_date_js__WEBPACK_IMPORTED_MODULE_0__.stripTime)(dateStr);
38424    return isNaN(date) ? undefined : date;
38425  }
38426  if (!dateStr) {
38427    return undefined;
38428  }
38429  if (dateStr === 'today') {
38430    return (0,_date_js__WEBPACK_IMPORTED_MODULE_0__.today)();
38431  }
38432
38433  if (format && format.toValue) {
38434    const date = format.toValue(dateStr, format, locale);
38435    return isNaN(date) ? undefined : (0,_date_js__WEBPACK_IMPORTED_MODULE_0__.stripTime)(date);
38436  }
38437
38438  return parseFormatString(format).parser(dateStr, locale);
38439}
38440
38441function formatDate(date, format, locale) {
38442  if (isNaN(date) || (!date && date !== 0)) {
38443    return '';
38444  }
38445
38446  const dateObj = typeof date === 'number' ? new Date(date) : date;
38447
38448  if (format.toDisplay) {
38449    return format.toDisplay(dateObj, format, locale);
38450  }
38451
38452  return parseFormatString(format).formatter(dateObj, locale);
38453}
38454
38455
38456/***/ }),
38457
vendor: 6,261 bytes, lines 38458-38622
38458/***/ "./node_modules/vanillajs-datepicker/js/lib/date.js":
38459/*!**********************************************************!*\
38460  !*** ./node_modules/vanillajs-datepicker/js/lib/date.js ***!
38461  \**********************************************************/
38462/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
38463
38464"use strict";
38465__webpack_require__.r(__webpack_exports__);
38466/* harmony export */ __webpack_require__.d(__webpack_exports__, {
38467/* harmony export */   addDays: () => (/* binding */ addDays),
38468/* harmony export */   addMonths: () => (/* binding */ addMonths),
38469/* harmony export */   addWeeks: () => (/* binding */ addWeeks),
38470/* harmony export */   addYears: () => (/* binding */ addYears),
38471/* harmony export */   dateValue: () => (/* binding */ dateValue),
38472/* harmony export */   dayOfTheWeekOf: () => (/* binding */ dayOfTheWeekOf),
38473/* harmony export */   getIsoWeek: () => (/* binding */ getIsoWeek),
38474/* harmony export */   getMidEasternWeek: () => (/* binding */ getMidEasternWeek),
38475/* harmony export */   getWesternTradWeek: () => (/* binding */ getWesternTradWeek),
38476/* harmony export */   regularizeDate: () => (/* binding */ regularizeDate),
38477/* harmony export */   startOfYearPeriod: () => (/* binding */ startOfYearPeriod),
38478/* harmony export */   stripTime: () => (/* binding */ stripTime),
38479/* harmony export */   today: () => (/* binding */ today)
38480/* harmony export */ });
38481function stripTime(timeValue) {
38482  return new Date(timeValue).setHours(0, 0, 0, 0);
38483}
38484
38485function today() {
38486  return new Date().setHours(0, 0, 0, 0);
38487}
38488
38489// Get the time value of the start of given date or year, month and day
38490function dateValue(...args) {
38491  switch (args.length) {
38492    case 0:
38493      return today();
38494    case 1:
38495      return stripTime(args[0]);
38496  }
38497
38498  // use setFullYear() to keep 2-digit year from being mapped to 1900-1999
38499  const newDate = new Date(0);
38500  newDate.setFullYear(...args);
38501  return newDate.setHours(0, 0, 0, 0);
38502}
38503
38504function addDays(date, amount) {
38505  const newDate = new Date(date);
38506  return newDate.setDate(newDate.getDate() + amount);
38507}
38508
38509function addWeeks(date, amount) {
38510  return addDays(date, amount * 7);
38511}
38512
38513function addMonths(date, amount) {
38514  // If the day of the date is not in the new month, the last day of the new
38515  // month will be returned. e.g. Jan 31 + 1 month → Feb 28 (not Mar 03)
38516  const newDate = new Date(date);
38517  const monthsToSet = newDate.getMonth() + amount;
38518  let expectedMonth = monthsToSet % 12;
38519  if (expectedMonth < 0) {
38520    expectedMonth += 12;
38521  }
38522
38523  const time = newDate.setMonth(monthsToSet);
38524  return newDate.getMonth() !== expectedMonth ? newDate.setDate(0) : time;
38525}
38526
38527function addYears(date, amount) {
38528  // If the date is Feb 29 and the new year is not a leap year, Feb 28 of the
38529  // new year will be returned.
38530  const newDate = new Date(date);
38531  const expectedMonth = newDate.getMonth();
38532  const time = newDate.setFullYear(newDate.getFullYear() + amount);
38533  return expectedMonth === 1 && newDate.getMonth() === 2 ? newDate.setDate(0) : time;
38534}
38535
38536// Calculate the distance bettwen 2 days of the week
38537function dayDiff(day, from) {
38538  return (day - from + 7) % 7;
38539}
38540
38541// Get the date of the specified day of the week of given base date
38542function dayOfTheWeekOf(baseDate, dayOfWeek, weekStart = 0) {
38543  const baseDay = new Date(baseDate).getDay();
38544  return addDays(baseDate, dayDiff(dayOfWeek, weekStart) - dayDiff(baseDay, weekStart));
38545}
38546
38547function calcWeekNum(dayOfTheWeek, sameDayOfFirstWeek) {
38548  return Math.round((dayOfTheWeek - sameDayOfFirstWeek) / 604800000) + 1;
38549}
38550
38551// Get the ISO week number of a date
38552function getIsoWeek(date) {
38553  // - Start of ISO week is Monday
38554  // - Use Thursday for culculation because the first Thursday of ISO week is
38555  //   always in January
38556  const thuOfTheWeek = dayOfTheWeekOf(date, 4, 1);
38557  // - Week 1 in ISO week is the week including Jan 04
38558  // - Use the Thu of given date's week (instead of given date itself) to
38559  //   calculate week 1 of the year so that Jan 01 - 03 won't be miscalculated
38560  //   as week 0 when Jan 04 is Mon - Wed
38561  const firstThu = dayOfTheWeekOf(new Date(thuOfTheWeek).setMonth(0, 4), 4, 1);
38562  // return Math.round((thuOfTheWeek - firstThu) / 604800000) + 1;
38563  return calcWeekNum(thuOfTheWeek, firstThu);
38564}
38565
38566// Calculate week number in traditional week number system
38567// @see https://en.wikipedia.org/wiki/Week#Other_week_numbering_systems
38568function calcTraditionalWeekNumber(date, weekStart) {
38569  // - Week 1 of traditional week is the week including the Jan 01
38570  // - Use Jan 01 of given date's year to calculate the start of week 1
38571  const startOfFirstWeek = dayOfTheWeekOf(new Date(date).setMonth(0, 1), weekStart, weekStart);
38572  const startOfTheWeek = dayOfTheWeekOf(date, weekStart, weekStart);
38573  const weekNum = calcWeekNum(startOfTheWeek, startOfFirstWeek);
38574  if (weekNum < 53) {
38575    return weekNum;
38576  }
38577  // If the 53rd week includes Jan 01, it's actually next year's week 1
38578  const weekOneOfNextYear = dayOfTheWeekOf(new Date(date).setDate(32), weekStart, weekStart);
38579  return startOfTheWeek === weekOneOfNextYear ? 1 : weekNum;
38580}
38581
38582// Get the Western traditional week number of a date
38583function getWesternTradWeek(date) {
38584  // Start of Western traditionl week is Sunday
38585  return calcTraditionalWeekNumber(date, 0);
38586}
38587
38588// Get the Middle Eastern week number of a date
38589function getMidEasternWeek(date) {
38590  // Start of Middle Eastern week is Saturday
38591  return calcTraditionalWeekNumber(date, 6);
38592}
38593
38594// Get the start year of the period of years that includes given date
38595// years: length of the year period
38596function startOfYearPeriod(date, years) {
38597  /* @see https://en.wikipedia.org/wiki/Year_zero#ISO_8601 */
38598  const year = new Date(date).getFullYear();
38599  return Math.floor(year / years) * years;
38600}
38601
38602// Convert date to the first/last date of the month/year of the date
38603function regularizeDate(date, timeSpan, useLastDate) {
38604  if (timeSpan !== 1 && timeSpan !== 2) {
38605    return date;
38606  }
38607  const newDate = new Date(date);
38608  if (timeSpan === 1) {
38609    useLastDate
38610      ? newDate.setMonth(newDate.getMonth() + 1, 0)
38611      : newDate.setDate(1);
38612  } else {
38613    useLastDate
38614      ? newDate.setFullYear(newDate.getFullYear() + 1, 0, 0)
38615      : newDate.setMonth(0, 1);
38616  }
38617  return newDate.setHours(0, 0, 0, 0);
38618}
38619
38620
38621/***/ }),
38622
vendor: 2,607 bytes, lines 38623-38707
38623/***/ "./node_modules/vanillajs-datepicker/js/lib/dom.js":
38624/*!*********************************************************!*\
38625  !*** ./node_modules/vanillajs-datepicker/js/lib/dom.js ***!
38626  \*********************************************************/
38627/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
38628
38629"use strict";
38630__webpack_require__.r(__webpack_exports__);
38631/* harmony export */ __webpack_require__.d(__webpack_exports__, {
38632/* harmony export */   emptyChildNodes: () => (/* binding */ emptyChildNodes),
38633/* harmony export */   getParent: () => (/* binding */ getParent),
38634/* harmony export */   hideElement: () => (/* binding */ hideElement),
38635/* harmony export */   isActiveElement: () => (/* binding */ isActiveElement),
38636/* harmony export */   isVisible: () => (/* binding */ isVisible),
38637/* harmony export */   parseHTML: () => (/* binding */ parseHTML),
38638/* harmony export */   replaceChildNodes: () => (/* binding */ replaceChildNodes),
38639/* harmony export */   showElement: () => (/* binding */ showElement)
38640/* harmony export */ });
38641const range = document.createRange();
38642
38643function parseHTML(html) {
38644  return range.createContextualFragment(html);
38645}
38646
38647function getParent(el) {
38648  return el.parentElement
38649    || (el.parentNode instanceof ShadowRoot ? el.parentNode.host : undefined);
38650}
38651
38652function isActiveElement(el) {
38653  return el.getRootNode().activeElement === el;
38654}
38655
38656// equivalent to jQuery's :visble
38657function isVisible(el) {
38658  return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length);
38659}
38660
38661function hideElement(el) {
38662  if (el.style.display === 'none') {
38663    return;
38664  }
38665  // back up the existing display setting in data-style-display
38666  if (el.style.display) {
38667    el.dataset.styleDisplay = el.style.display;
38668  }
38669  el.style.display = 'none';
38670}
38671
38672function showElement(el) {
38673  if (el.style.display !== 'none') {
38674    return;
38675  }
38676  if (el.dataset.styleDisplay) {
38677    // restore backed-up dispay property
38678    el.style.display = el.dataset.styleDisplay;
38679    delete el.dataset.styleDisplay;
38680  } else {
38681    el.style.display = '';
38682  }
38683}
38684
38685function emptyChildNodes(el) {
38686  if (el.firstChild) {
38687    el.removeChild(el.firstChild);
38688    emptyChildNodes(el);
38689  }
38690}
38691
38692function replaceChildNodes(el, newChildNodes) {
38693  emptyChildNodes(el);
38694  if (newChildNodes instanceof DocumentFragment) {
38695    el.appendChild(newChildNodes);
38696  } else if (typeof newChildNodes === 'string') {
38697    el.appendChild(parseHTML(newChildNodes));
38698  } else if (typeof newChildNodes.forEach === 'function') {
38699    newChildNodes.forEach((node) => {
38700      el.appendChild(node);
38701    });
38702  }
38703}
38704
38705
38706/***/ }),
38707
vendor: 2,908 bytes, lines 38708-38795
38708/***/ "./node_modules/vanillajs-datepicker/js/lib/event.js":
38709/*!***********************************************************!*\
38710  !*** ./node_modules/vanillajs-datepicker/js/lib/event.js ***!
38711  \***********************************************************/
38712/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
38713
38714"use strict";
38715__webpack_require__.r(__webpack_exports__);
38716/* harmony export */ __webpack_require__.d(__webpack_exports__, {
38717/* harmony export */   findElementInEventPath: () => (/* binding */ findElementInEventPath),
38718/* harmony export */   registerListeners: () => (/* binding */ registerListeners),
38719/* harmony export */   unregisterListeners: () => (/* binding */ unregisterListeners)
38720/* harmony export */ });
38721const listenerRegistry = new WeakMap();
38722const {addEventListener, removeEventListener} = EventTarget.prototype;
38723
38724// Register event listeners to a key object
38725// listeners: array of listener definitions;
38726//   - each definition must be a flat array of event target and the arguments
38727//     used to call addEventListener() on the target
38728function registerListeners(keyObj, listeners) {
38729  let registered = listenerRegistry.get(keyObj);
38730  if (!registered) {
38731    registered = [];
38732    listenerRegistry.set(keyObj, registered);
38733  }
38734  listeners.forEach((listener) => {
38735    addEventListener.call(...listener);
38736    registered.push(listener);
38737  });
38738}
38739
38740function unregisterListeners(keyObj) {
38741  let listeners = listenerRegistry.get(keyObj);
38742  if (!listeners) {
38743    return;
38744  }
38745  listeners.forEach((listener) => {
38746    removeEventListener.call(...listener);
38747  });
38748  listenerRegistry.delete(keyObj);
38749}
38750
38751// Event.composedPath() polyfill for Edge
38752// based on https://gist.github.com/kleinfreund/e9787d73776c0e3750dcfcdc89f100ec
38753if (!Event.prototype.composedPath) {
38754  const getComposedPath = (node, path = []) => {
38755    path.push(node);
38756
38757    let parent;
38758    if (node.parentNode) {
38759      parent = node.parentNode;
38760    } else if (node.host) { // ShadowRoot
38761      parent = node.host;
38762    } else if (node.defaultView) {  // Document
38763      parent = node.defaultView;
38764    }
38765    return parent ? getComposedPath(parent, path) : path;
38766  };
38767
38768  Event.prototype.composedPath = function () {
38769    return getComposedPath(this.target);
38770  };
38771}
38772
38773function findFromPath(path, criteria, currentTarget) {
38774  const [node, ...rest] = path;
38775  if (criteria(node)) {
38776    return node;
38777  }
38778  if (node === currentTarget || node.tagName === 'HTML' || rest.length === 0) {
38779    // stop when reaching currentTarget or <html>
38780    return;
38781  }
38782  return findFromPath(rest, criteria, currentTarget);
38783}
38784
38785// Search for the actual target of a delegated event
38786function findElementInEventPath(ev, selector) {
38787  const criteria = typeof selector === 'function'
38788    ? selector
38789    : el => el instanceof Element && el.matches(selector);
38790  return findFromPath(ev.composedPath(), criteria, ev.currentTarget);
38791}
38792
38793
38794/***/ }),
38795
vendor: 2,412 bytes, lines 38796-38873
38796/***/ "./node_modules/vanillajs-datepicker/js/lib/utils.js":
38797/*!***********************************************************!*\
38798  !*** ./node_modules/vanillajs-datepicker/js/lib/utils.js ***!
38799  \***********************************************************/
38800/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
38801
38802"use strict";
38803__webpack_require__.r(__webpack_exports__);
38804/* harmony export */ __webpack_require__.d(__webpack_exports__, {
38805/* harmony export */   createTagRepeat: () => (/* binding */ createTagRepeat),
38806/* harmony export */   isInRange: () => (/* binding */ isInRange),
38807/* harmony export */   lastItemOf: () => (/* binding */ lastItemOf),
38808/* harmony export */   limitToRange: () => (/* binding */ limitToRange),
38809/* harmony export */   optimizeTemplateHTML: () => (/* binding */ optimizeTemplateHTML),
38810/* harmony export */   pushUnique: () => (/* binding */ pushUnique),
38811/* harmony export */   stringToArray: () => (/* binding */ stringToArray)
38812/* harmony export */ });
38813function lastItemOf(arr) {
38814  return arr[arr.length - 1];
38815}
38816
38817// push only the items not included in the array
38818function pushUnique(arr, ...items) {
38819  items.forEach((item) => {
38820    if (arr.includes(item)) {
38821      return;
38822    }
38823    arr.push(item);
38824  });
38825  return arr;
38826}
38827
38828function stringToArray(str, separator) {
38829  // convert empty string to an empty array
38830  return str ? str.split(separator) : [];
38831}
38832
38833function isInRange(testVal, min, max) {
38834  const minOK = min === undefined || testVal >= min;
38835  const maxOK = max === undefined || testVal <= max;
38836  return minOK && maxOK;
38837}
38838
38839function limitToRange(val, min, max) {
38840  if (val < min) {
38841    return min;
38842  }
38843  if (val > max) {
38844    return max;
38845  }
38846  return val;
38847}
38848
38849function createTagRepeat(tagName, repeat, attributes = {}, index = 0, html = '') {
38850  const openTagSrc = Object.keys(attributes).reduce((src, attr) => {
38851    let val = attributes[attr];
38852    if (typeof val === 'function') {
38853      val = val(index);
38854    }
38855    return `${src} ${attr}="${val}"`;
38856  }, tagName);
38857  html += `<${openTagSrc}></${tagName}>`;
38858
38859  const next = index + 1;
38860  return next < repeat
38861    ? createTagRepeat(tagName, repeat, attributes, next, html)
38862    : html;
38863}
38864
38865// Remove the spacing surrounding tags for HTML parser not to create text nodes
38866// before/after elements
38867function optimizeTemplateHTML(html) {
38868  return html.replace(/>\s+/g, '>').replace(/\s+</, '<');
38869}
38870
38871
38872/***/ }),
38873
vendor: 1,096 bytes, lines 38874-38893
38874/***/ "./node_modules/vanillajs-datepicker/js/main.js":
38875/*!******************************************************!*\
38876  !*** ./node_modules/vanillajs-datepicker/js/main.js ***!
38877  \******************************************************/
38878/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
38879
38880"use strict";
38881__webpack_require__.r(__webpack_exports__);
38882/* harmony export */ __webpack_require__.d(__webpack_exports__, {
38883/* harmony export */   DateRangePicker: () => (/* reexport safe */ _DateRangePicker_js__WEBPACK_IMPORTED_MODULE_1__["default"]),
38884/* harmony export */   Datepicker: () => (/* reexport safe */ _Datepicker_js__WEBPACK_IMPORTED_MODULE_0__["default"])
38885/* harmony export */ });
38886/* harmony import */ var _Datepicker_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Datepicker.js */ "./node_modules/vanillajs-datepicker/js/Datepicker.js");
38887/* harmony import */ var _DateRangePicker_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DateRangePicker.js */ "./node_modules/vanillajs-datepicker/js/DateRangePicker.js");
38888
38889
38890
38891
38892/***/ }),
38893
vendor: 1,556 bytes, lines 38894-38945
38894/***/ "./node_modules/vanillajs-datepicker/js/options/defaultOptions.js":
38895/*!************************************************************************!*\
38896  !*** ./node_modules/vanillajs-datepicker/js/options/defaultOptions.js ***!
38897  \************************************************************************/
38898/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
38899
38900"use strict";
38901__webpack_require__.r(__webpack_exports__);
38902/* harmony export */ __webpack_require__.d(__webpack_exports__, {
38903/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
38904/* harmony export */ });
38905// config options updatable by setOptions() and their default values
38906/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({
38907  autohide: false,
38908  beforeShowDay: null,
38909  beforeShowDecade: null,
38910  beforeShowMonth: null,
38911  beforeShowYear: null,
38912  clearButton: false,
38913  dateDelimiter: ',',
38914  datesDisabled: [],
38915  daysOfWeekDisabled: [],
38916  daysOfWeekHighlighted: [],
38917  defaultViewDate: undefined, // placeholder, defaults to today() by the program
38918  disableTouchKeyboard: false,
38919  enableOnReadonly: true,
38920  format: 'mm/dd/yyyy',
38921  language: 'en',
38922  maxDate: null,
38923  maxNumberOfDates: 1,
38924  maxView: 3,
38925  minDate: null,
38926  nextArrow: '»',
38927  orientation: 'auto',
38928  pickLevel: 0,
38929  prevArrow: '«',
38930  showDaysOfWeek: true,
38931  showOnClick: true,
38932  showOnFocus: true,
38933  startView: 0,
38934  title: '',
38935  todayButton: false,
38936  todayButtonMode: 0,
38937  todayHighlight: false,
38938  updateOnBlur: true,
38939  weekNumbers: 0,
38940  weekStart: 0,
38941});
38942
38943
38944/***/ }),
38945
vendor: 12,825 bytes, lines 38946-39316
38946/***/ "./node_modules/vanillajs-datepicker/js/options/processOptions.js":
38947/*!************************************************************************!*\
38948  !*** ./node_modules/vanillajs-datepicker/js/options/processOptions.js ***!
38949  \************************************************************************/
38950/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
38951
38952"use strict";
38953__webpack_require__.r(__webpack_exports__);
38954/* harmony export */ __webpack_require__.d(__webpack_exports__, {
38955/* harmony export */   "default": () => (/* binding */ processOptions)
38956/* harmony export */ });
38957/* harmony import */ var _lib_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../lib/utils.js */ "./node_modules/vanillajs-datepicker/js/lib/utils.js");
38958/* harmony import */ var _lib_date_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../lib/date.js */ "./node_modules/vanillajs-datepicker/js/lib/date.js");
38959/* harmony import */ var _lib_date_format_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../lib/date-format.js */ "./node_modules/vanillajs-datepicker/js/lib/date-format.js");
38960/* harmony import */ var _lib_dom_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../lib/dom.js */ "./node_modules/vanillajs-datepicker/js/lib/dom.js");
38961/* harmony import */ var _defaultOptions_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./defaultOptions.js */ "./node_modules/vanillajs-datepicker/js/options/defaultOptions.js");
38962
38963
38964
38965
38966
38967
38968const {
38969  language: defaultLang,
38970  format: defaultFormat,
38971  weekStart: defaultWeekStart,
38972} = _defaultOptions_js__WEBPACK_IMPORTED_MODULE_4__["default"];
38973
38974// Reducer function to filter out invalid day-of-week from the input
38975function sanitizeDOW(dow, day) {
38976  return dow.length < 6 && day >= 0 && day < 7
38977    ? (0,_lib_utils_js__WEBPACK_IMPORTED_MODULE_0__.pushUnique)(dow, day)
38978    : dow;
38979}
38980
38981function determineGetWeekMethod(numberingMode, weekStart) {
38982  const methodId = numberingMode === 4
38983    ? (weekStart === 6 ? 3 : !weekStart + 1)
38984    : numberingMode;
38985  switch (methodId) {
38986    case 1:
38987      return _lib_date_js__WEBPACK_IMPORTED_MODULE_1__.getIsoWeek;
38988    case 2:
38989      return _lib_date_js__WEBPACK_IMPORTED_MODULE_1__.getWesternTradWeek;
38990    case 3:
38991      return _lib_date_js__WEBPACK_IMPORTED_MODULE_1__.getMidEasternWeek;
38992  }
38993}
38994
38995function updateWeekStart(newValue, config, weekNumbers) {
38996  config.weekStart = newValue;
38997  config.weekEnd = (newValue + 6) % 7;
38998  if (weekNumbers === 4) {
38999    config.getWeekNumber = determineGetWeekMethod(4, newValue);
39000  }
39001  return newValue;
39002}
39003
39004// validate input date. if invalid, fallback to the original value
39005function validateDate(value, format, locale, origValue) {
39006  const date = (0,_lib_date_format_js__WEBPACK_IMPORTED_MODULE_2__.parseDate)(value, format, locale);
39007  return date !== undefined ? date : origValue;
39008}
39009
39010// Validate viewId. if invalid, fallback to the original value
39011function validateViewId(value, origValue, max = 3) {
39012  const viewId = parseInt(value, 10);
39013  return viewId >= 0 && viewId <= max ? viewId : origValue;
39014}
39015
39016function replaceOptions(options, from, to, convert = undefined) {
39017  if (from in options) {
39018    if (!(to in options)) {
39019      options[to] = convert ? convert(options[from]) : options[from];
39020    }
39021    delete options[from];
39022  }
39023}
39024
39025// Create Datepicker configuration to set
39026function processOptions(options, datepicker) {
39027  const inOpts = Object.assign({}, options);
39028  const config = {};
39029  const locales = datepicker.constructor.locales;
39030  const rangeEnd = !!datepicker.rangeSideIndex;
39031  let {
39032    datesDisabled,
39033    format,
39034    language,
39035    locale,
39036    maxDate,
39037    maxView,
39038    minDate,
39039    pickLevel,
39040    startView,
39041    weekNumbers,
39042    weekStart,
39043  } = datepicker.config || {};
39044
39045  // for backword compatibility
39046  replaceOptions(inOpts, 'calendarWeeks', 'weekNumbers', val => val ? 1 : 0);
39047  replaceOptions(inOpts, 'clearBtn', 'clearButton');
39048  replaceOptions(inOpts, 'todayBtn', 'todayButton');
39049  replaceOptions(inOpts, 'todayBtnMode', 'todayButtonMode');
39050
39051  if (inOpts.language) {
39052    let lang;
39053    if (inOpts.language !== language) {
39054      if (locales[inOpts.language]) {
39055        lang = inOpts.language;
39056      } else {
39057        // Check if langauge + region tag can fallback to the one without
39058        // region (e.g. fr-CA → fr)
39059        lang = inOpts.language.split('-')[0];
39060        if (!locales[lang]) {
39061          lang = false;
39062        }
39063      }
39064    }
39065    delete inOpts.language;
39066    if (lang) {
39067      language = config.language = lang;
39068
39069      // update locale as well when updating language
39070      const origLocale = locale || locales[defaultLang];
39071      // use default language's properties for the fallback
39072      locale = Object.assign({
39073        format: defaultFormat,
39074        weekStart: defaultWeekStart
39075      }, locales[defaultLang]);
39076      if (language !== defaultLang) {
39077        Object.assign(locale, locales[language]);
39078      }
39079      config.locale = locale;
39080      // if format and/or weekStart are the same as old locale's defaults,
39081      // update them to new locale's defaults
39082      if (format === origLocale.format) {
39083        format = config.format = locale.format;
39084      }
39085      if (weekStart === origLocale.weekStart) {
39086        weekStart = updateWeekStart(locale.weekStart, config, weekNumbers);
39087      }
39088    }
39089  }
39090
39091  if (inOpts.format) {
39092    const hasToDisplay = typeof inOpts.format.toDisplay === 'function';
39093    const hasToValue = typeof inOpts.format.toValue === 'function';
39094    const validFormatString = _lib_date_format_js__WEBPACK_IMPORTED_MODULE_2__.reFormatTokens.test(inOpts.format);
39095    if ((hasToDisplay && hasToValue) || validFormatString) {
39096      format = config.format = inOpts.format;
39097    }
39098    delete inOpts.format;
39099  }
39100
39101  //*** pick level ***//
39102  let newPickLevel = pickLevel;
39103  if ('pickLevel' in inOpts) {
39104    newPickLevel = validateViewId(inOpts.pickLevel, pickLevel, 2);
39105    delete inOpts.pickLevel;
39106  }
39107  if (newPickLevel !== pickLevel) {
39108    if (newPickLevel > pickLevel) {
39109      // complement current minDate/madDate so that the existing range will be
39110      // expanded to fit the new level later
39111      if (!('minDate' in inOpts)) {
39112        inOpts.minDate = minDate;
39113      }
39114      if (!('maxDate' in inOpts)) {
39115        inOpts.maxDate = maxDate;
39116      }
39117    }
39118    // complement datesDisabled so that it will be reset later
39119    if (datesDisabled && !inOpts.datesDisabled) {
39120      inOpts.datesDisabled = [];
39121    }
39122    pickLevel = config.pickLevel = newPickLevel;
39123  }
39124
39125  //*** dates ***//
39126  // while min and maxDate for "no limit" in the options are better to be null
39127  // (especially when updating), the ones in the config have to be undefined
39128  // because null is treated as 0 (= unix epoch) when comparing with time value
39129  let minDt = minDate;
39130  let maxDt = maxDate;
39131  if ('minDate' in inOpts) {
39132    const defaultMinDt = (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_1__.dateValue)(0, 0, 1);
39133    minDt = inOpts.minDate === null
39134      ? defaultMinDt  // set 0000-01-01 to prevent negative values for year
39135      : validateDate(inOpts.minDate, format, locale, minDt);
39136    if (minDt !== defaultMinDt) {
39137      minDt = (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_1__.regularizeDate)(minDt, pickLevel, false);
39138    }
39139    delete inOpts.minDate;
39140  }
39141  if ('maxDate' in inOpts) {
39142    maxDt = inOpts.maxDate === null
39143      ? undefined
39144      : validateDate(inOpts.maxDate, format, locale, maxDt);
39145    if (maxDt !== undefined) {
39146      maxDt = (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_1__.regularizeDate)(maxDt, pickLevel, true);
39147    }
39148    delete inOpts.maxDate;
39149  }
39150  if (maxDt < minDt) {
39151    minDate = config.minDate = maxDt;
39152    maxDate = config.maxDate = minDt;
39153  } else {
39154    if (minDate !== minDt) {
39155      minDate = config.minDate = minDt;
39156    }
39157    if (maxDate !== maxDt) {
39158      maxDate = config.maxDate = maxDt;
39159    }
39160  }
39161
39162  if (inOpts.datesDisabled) {
39163    const dtsDisabled = inOpts.datesDisabled;
39164    if (typeof dtsDisabled === 'function') {
39165      config.datesDisabled = null;
39166      config.checkDisabled = (timeValue, viewId) => dtsDisabled(
39167        new Date(timeValue),
39168        viewId,
39169        rangeEnd
39170      );
39171    } else {
39172      const disabled = config.datesDisabled = dtsDisabled.reduce((dates, dt) => {
39173        const date = (0,_lib_date_format_js__WEBPACK_IMPORTED_MODULE_2__.parseDate)(dt, format, locale);
39174        return date !== undefined
39175          ? (0,_lib_utils_js__WEBPACK_IMPORTED_MODULE_0__.pushUnique)(dates, (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_1__.regularizeDate)(date, pickLevel, rangeEnd))
39176          : dates;
39177      }, []);
39178      config.checkDisabled = timeValue => disabled.includes(timeValue);
39179    }
39180    delete inOpts.datesDisabled;
39181  }
39182  if ('defaultViewDate' in inOpts) {
39183    const viewDate = (0,_lib_date_format_js__WEBPACK_IMPORTED_MODULE_2__.parseDate)(inOpts.defaultViewDate, format, locale);
39184    if (viewDate !== undefined) {
39185      config.defaultViewDate = viewDate;
39186    }
39187    delete inOpts.defaultViewDate;
39188  }
39189
39190  //*** days of week ***//
39191  if ('weekStart' in inOpts) {
39192    const wkStart = Number(inOpts.weekStart) % 7;
39193    if (!isNaN(wkStart)) {
39194      weekStart = updateWeekStart(wkStart, config, weekNumbers);
39195    }
39196    delete inOpts.weekStart;
39197  }
39198  if (inOpts.daysOfWeekDisabled) {
39199    config.daysOfWeekDisabled = inOpts.daysOfWeekDisabled.reduce(sanitizeDOW, []);
39200    delete inOpts.daysOfWeekDisabled;
39201  }
39202  if (inOpts.daysOfWeekHighlighted) {
39203    config.daysOfWeekHighlighted = inOpts.daysOfWeekHighlighted.reduce(sanitizeDOW, []);
39204    delete inOpts.daysOfWeekHighlighted;
39205  }
39206
39207  //*** week numbers ***//
39208  if ('weekNumbers' in inOpts) {
39209    let method = inOpts.weekNumbers;
39210    if (method) {
39211      const getWeekNumber = typeof method === 'function'
39212        ? (timeValue, startOfWeek) => method(new Date(timeValue), startOfWeek)
39213        : determineGetWeekMethod((method = parseInt(method, 10)), weekStart);
39214      if (getWeekNumber) {
39215        weekNumbers = config.weekNumbers = method;
39216        config.getWeekNumber = getWeekNumber;
39217      }
39218    } else {
39219      weekNumbers = config.weekNumbers = 0;
39220      config.getWeekNumber = null;
39221    }
39222    delete inOpts.weekNumbers;
39223  }
39224
39225  //*** multi date ***//
39226  if ('maxNumberOfDates' in inOpts) {
39227    const maxNumberOfDates = parseInt(inOpts.maxNumberOfDates, 10);
39228    if (maxNumberOfDates >= 0) {
39229      config.maxNumberOfDates = maxNumberOfDates;
39230      config.multidate = maxNumberOfDates !== 1;
39231    }
39232    delete inOpts.maxNumberOfDates;
39233  }
39234  if (inOpts.dateDelimiter) {
39235    config.dateDelimiter = String(inOpts.dateDelimiter);
39236    delete inOpts.dateDelimiter;
39237  }
39238
39239  //*** view ***//
39240  let newMaxView = maxView;
39241  if ('maxView' in inOpts) {
39242    newMaxView = validateViewId(inOpts.maxView, maxView);
39243    delete inOpts.maxView;
39244  }
39245  // ensure max view >= pick level
39246  newMaxView = pickLevel > newMaxView ? pickLevel : newMaxView;
39247  if (newMaxView !== maxView) {
39248    maxView = config.maxView = newMaxView;
39249  }
39250
39251  let newStartView = startView;
39252  if ('startView' in inOpts) {
39253    newStartView = validateViewId(inOpts.startView, newStartView);
39254    delete inOpts.startView;
39255  }
39256  // ensure pick level <= start view <= max view
39257  if (newStartView < pickLevel) {
39258    newStartView = pickLevel;
39259  } else if (newStartView > maxView) {
39260    newStartView = maxView;
39261  }
39262  if (newStartView !== startView) {
39263    config.startView = newStartView;
39264  }
39265
39266  //*** template ***//
39267  if (inOpts.prevArrow) {
39268    const prevArrow = (0,_lib_dom_js__WEBPACK_IMPORTED_MODULE_3__.parseHTML)(inOpts.prevArrow);
39269    if (prevArrow.childNodes.length > 0) {
39270      config.prevArrow = prevArrow.childNodes;
39271    }
39272    delete inOpts.prevArrow;
39273  }
39274  if (inOpts.nextArrow) {
39275    const nextArrow = (0,_lib_dom_js__WEBPACK_IMPORTED_MODULE_3__.parseHTML)(inOpts.nextArrow);
39276    if (nextArrow.childNodes.length > 0) {
39277      config.nextArrow = nextArrow.childNodes;
39278    }
39279    delete inOpts.nextArrow;
39280  }
39281
39282  //*** misc ***//
39283  if ('disableTouchKeyboard' in inOpts) {
39284    config.disableTouchKeyboard = 'ontouchstart' in document && !!inOpts.disableTouchKeyboard;
39285    delete inOpts.disableTouchKeyboard;
39286  }
39287  if (inOpts.orientation) {
39288    const orientation = inOpts.orientation.toLowerCase().split(/\s+/g);
39289    config.orientation = {
39290      x: orientation.find(x => (x === 'left' || x === 'right')) || 'auto',
39291      y: orientation.find(y => (y === 'top' || y === 'bottom')) || 'auto',
39292    };
39293    delete inOpts.orientation;
39294  }
39295  if ('todayButtonMode' in inOpts) {
39296    switch(inOpts.todayButtonMode) {
39297      case 0:
39298      case 1:
39299        config.todayButtonMode = inOpts.todayButtonMode;
39300    }
39301    delete inOpts.todayButtonMode;
39302  }
39303
39304  //*** copy the rest ***//
39305  Object.entries(inOpts).forEach(([key, value]) => {
39306    if (value !== undefined && key in _defaultOptions_js__WEBPACK_IMPORTED_MODULE_4__["default"]) {
39307      config[key] = value;
39308    }
39309  });
39310
39311  return config;
39312}
39313
39314
39315/***/ }),
39316
vendor: 1,734 bytes, lines 39317-39365
39317/***/ "./node_modules/vanillajs-datepicker/js/options/shortcutKeys.js":
39318/*!**********************************************************************!*\
39319  !*** ./node_modules/vanillajs-datepicker/js/options/shortcutKeys.js ***!
39320  \**********************************************************************/
39321/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
39322
39323"use strict";
39324__webpack_require__.r(__webpack_exports__);
39325/* harmony export */ __webpack_require__.d(__webpack_exports__, {
39326/* harmony export */   "default": () => (/* binding */ createShortcutKeyConfig)
39327/* harmony export */ });
39328const defaultShortcutKeys = {
39329  show: {key: 'ArrowDown'},
39330  hide: null,
39331  toggle: {key: 'Escape'},
39332  prevButton: {key: 'ArrowLeft', ctrlOrMetaKey: true},
39333  nextButton: {key: 'ArrowRight', ctrlOrMetaKey: true},
39334  viewSwitch: {key: 'ArrowUp', ctrlOrMetaKey: true},
39335  clearButton: {key: 'Backspace', ctrlOrMetaKey: true},
39336  todayButton: {key: '.', ctrlOrMetaKey: true},
39337  exitEditMode: {key: 'ArrowDown', ctrlOrMetaKey: true},
39338};
39339
39340function createShortcutKeyConfig(options) {
39341  return Object.keys(defaultShortcutKeys).reduce((keyDefs, shortcut) => {
39342    const keyDef = options[shortcut] === undefined
39343      ? defaultShortcutKeys[shortcut]
39344      : options[shortcut];
39345    const key = keyDef && keyDef.key;
39346    if (!key || typeof key !== 'string') {
39347      return keyDefs;
39348    }
39349
39350    const normalizedDef = {
39351      key,
39352      ctrlOrMetaKey: !!(keyDef.ctrlOrMetaKey || keyDef.ctrlKey || keyDef.metaKey),
39353    };
39354    if (key.length > 1) {
39355      normalizedDef.altKey = !!keyDef.altKey;
39356      normalizedDef.shiftKey = !!keyDef.shiftKey;
39357    }
39358    keyDefs[shortcut] = normalizedDef;
39359    return keyDefs;
39360  }, {});
39361}
39362
39363
39364/***/ }),
39365
vendor: 16,629 bytes, lines 39366-39797
39366/***/ "./node_modules/vanillajs-datepicker/js/picker/Picker.js":
39367/*!***************************************************************!*\
39368  !*** ./node_modules/vanillajs-datepicker/js/picker/Picker.js ***!
39369  \***************************************************************/
39370/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
39371
39372"use strict";
39373__webpack_require__.r(__webpack_exports__);
39374/* harmony export */ __webpack_require__.d(__webpack_exports__, {
39375/* harmony export */   "default": () => (/* binding */ Picker)
39376/* harmony export */ });
39377/* harmony import */ var _lib_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../lib/utils.js */ "./node_modules/vanillajs-datepicker/js/lib/utils.js");
39378/* harmony import */ var _lib_date_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../lib/date.js */ "./node_modules/vanillajs-datepicker/js/lib/date.js");
39379/* harmony import */ var _lib_dom_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../lib/dom.js */ "./node_modules/vanillajs-datepicker/js/lib/dom.js");
39380/* harmony import */ var _lib_event_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../lib/event.js */ "./node_modules/vanillajs-datepicker/js/lib/event.js");
39381/* harmony import */ var _templates_pickerTemplate_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./templates/pickerTemplate.js */ "./node_modules/vanillajs-datepicker/js/picker/templates/pickerTemplate.js");
39382/* harmony import */ var _views_DaysView_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./views/DaysView.js */ "./node_modules/vanillajs-datepicker/js/picker/views/DaysView.js");
39383/* harmony import */ var _views_MonthsView_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./views/MonthsView.js */ "./node_modules/vanillajs-datepicker/js/picker/views/MonthsView.js");
39384/* harmony import */ var _views_YearsView_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./views/YearsView.js */ "./node_modules/vanillajs-datepicker/js/picker/views/YearsView.js");
39385/* harmony import */ var _events_functions_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../events/functions.js */ "./node_modules/vanillajs-datepicker/js/events/functions.js");
39386/* harmony import */ var _events_pickerListeners_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../events/pickerListeners.js */ "./node_modules/vanillajs-datepicker/js/events/pickerListeners.js");
39387
39388
39389
39390
39391
39392
39393
39394
39395
39396
39397
39398const orientClasses = ['left', 'top', 'right', 'bottom'].reduce((obj, key) => {
39399  obj[key] = `datepicker-orient-${key}`;
39400  return obj;
39401}, {});
39402const toPx = num => num ? `${num}px` : num;
39403
39404function processPickerOptions(picker, options) {
39405  if ('title' in options) {
39406    if (options.title) {
39407      picker.controls.title.textContent = options.title;
39408      (0,_lib_dom_js__WEBPACK_IMPORTED_MODULE_2__.showElement)(picker.controls.title);
39409    } else {
39410      picker.controls.title.textContent = '';
39411      (0,_lib_dom_js__WEBPACK_IMPORTED_MODULE_2__.hideElement)(picker.controls.title);
39412    }
39413  }
39414  if (options.prevArrow) {
39415    const prevButton = picker.controls.prevButton;
39416    (0,_lib_dom_js__WEBPACK_IMPORTED_MODULE_2__.emptyChildNodes)(prevButton);
39417    options.prevArrow.forEach((node) => {
39418      prevButton.appendChild(node.cloneNode(true));
39419    });
39420  }
39421  if (options.nextArrow) {
39422    const nextButton = picker.controls.nextButton;
39423    (0,_lib_dom_js__WEBPACK_IMPORTED_MODULE_2__.emptyChildNodes)(nextButton);
39424    options.nextArrow.forEach((node) => {
39425      nextButton.appendChild(node.cloneNode(true));
39426    });
39427  }
39428  if (options.locale) {
39429    picker.controls.todayButton.textContent = options.locale.today;
39430    picker.controls.clearButton.textContent = options.locale.clear;
39431  }
39432  if ('todayButton' in options) {
39433    if (options.todayButton) {
39434      (0,_lib_dom_js__WEBPACK_IMPORTED_MODULE_2__.showElement)(picker.controls.todayButton);
39435    } else {
39436      (0,_lib_dom_js__WEBPACK_IMPORTED_MODULE_2__.hideElement)(picker.controls.todayButton);
39437    }
39438  }
39439  if ('minDate' in options || 'maxDate' in options) {
39440    const {minDate, maxDate} = picker.datepicker.config;
39441    picker.controls.todayButton.disabled = !(0,_lib_utils_js__WEBPACK_IMPORTED_MODULE_0__.isInRange)((0,_lib_date_js__WEBPACK_IMPORTED_MODULE_1__.today)(), minDate, maxDate);
39442  }
39443  if ('clearButton' in options) {
39444    if (options.clearButton) {
39445      (0,_lib_dom_js__WEBPACK_IMPORTED_MODULE_2__.showElement)(picker.controls.clearButton);
39446    } else {
39447      (0,_lib_dom_js__WEBPACK_IMPORTED_MODULE_2__.hideElement)(picker.controls.clearButton);
39448    }
39449  }
39450}
39451
39452// Compute view date to reset, which will be...
39453// - the last item of the selected dates or defaultViewDate if no selection
39454// - limitted to minDate or maxDate if it exceeds the range
39455function computeResetViewDate(datepicker) {
39456  const {dates, config, rangeSideIndex} = datepicker;
39457  const viewDate = dates.length > 0
39458    ? (0,_lib_utils_js__WEBPACK_IMPORTED_MODULE_0__.lastItemOf)(dates)
39459    : (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_1__.regularizeDate)(config.defaultViewDate, config.pickLevel, rangeSideIndex);
39460  return (0,_lib_utils_js__WEBPACK_IMPORTED_MODULE_0__.limitToRange)(viewDate, config.minDate, config.maxDate);
39461}
39462
39463// Change current view's view date
39464function setViewDate(picker, newDate) {
39465  if (!('_oldViewDate' in picker) && newDate !== picker.viewDate) {
39466    picker._oldViewDate = picker.viewDate;
39467  }
39468  picker.viewDate = newDate;
39469
39470  // return whether the new date is in different period on time from the one
39471  // displayed in the current view
39472  // when true, the view needs to be re-rendered on the next UI refresh.
39473  const {id, year, first, last} = picker.currentView;
39474  const viewYear = new Date(newDate).getFullYear();
39475  switch (id) {
39476    case 0:
39477      return newDate < first || newDate > last;
39478    case 1:
39479      return viewYear !== year;
39480    default:
39481      return viewYear < first || viewYear > last;
39482  }
39483}
39484
39485function getTextDirection(el) {
39486  return window.getComputedStyle(el).direction;
39487}
39488
39489// find the closet scrollable ancestor elemnt under the body
39490function findScrollParents(el) {
39491  const parent = (0,_lib_dom_js__WEBPACK_IMPORTED_MODULE_2__.getParent)(el);
39492  if (parent === document.body || !parent) {
39493    return;
39494  }
39495
39496  // checking overflow only is enough because computed overflow cannot be
39497  // visible or a combination of visible and other when either axis is set
39498  // to other than visible.
39499  // (Setting one axis to other than 'visible' while the other is 'visible'
39500  // results in the other axis turning to 'auto')
39501  return window.getComputedStyle(parent).overflow !== 'visible'
39502    ? parent
39503    : findScrollParents(parent);
39504}
39505
39506// Class representing the picker UI
39507class Picker {
39508  constructor(datepicker) {
39509    const {config, inputField} = this.datepicker = datepicker;
39510
39511    const template = _templates_pickerTemplate_js__WEBPACK_IMPORTED_MODULE_4__["default"].replace(/%buttonClass%/g, config.buttonClass);
39512    const element = this.element = (0,_lib_dom_js__WEBPACK_IMPORTED_MODULE_2__.parseHTML)(template).firstChild;
39513    const [header, main, footer] = element.firstChild.children;
39514    const title = header.firstElementChild;
39515    const [prevButton, viewSwitch, nextButton] = header.lastElementChild.children;
39516    const [todayButton, clearButton] = footer.firstChild.children;
39517    const controls = {
39518      title,
39519      prevButton,
39520      viewSwitch,
39521      nextButton,
39522      todayButton,
39523      clearButton,
39524    };
39525    this.main = main;
39526    this.controls = controls;
39527
39528    const elementClass = inputField ? 'dropdown' : 'inline';
39529    element.classList.add(`datepicker-${elementClass}`);
39530
39531    processPickerOptions(this, config);
39532    this.viewDate = computeResetViewDate(datepicker);
39533
39534    // set up event listeners
39535    (0,_lib_event_js__WEBPACK_IMPORTED_MODULE_3__.registerListeners)(datepicker, [
39536      [element, 'mousedown', _events_pickerListeners_js__WEBPACK_IMPORTED_MODULE_9__.onMousedownPicker],
39537      [main, 'click', _events_pickerListeners_js__WEBPACK_IMPORTED_MODULE_9__.onClickView.bind(null, datepicker)],
39538      [controls.viewSwitch, 'click', _events_pickerListeners_js__WEBPACK_IMPORTED_MODULE_9__.onClickViewSwitch.bind(null, datepicker)],
39539      [controls.prevButton, 'click', _events_pickerListeners_js__WEBPACK_IMPORTED_MODULE_9__.onClickPrevButton.bind(null, datepicker)],
39540      [controls.nextButton, 'click', _events_pickerListeners_js__WEBPACK_IMPORTED_MODULE_9__.onClickNextButton.bind(null, datepicker)],
39541      [controls.todayButton, 'click', _events_functions_js__WEBPACK_IMPORTED_MODULE_8__.goToOrSelectToday.bind(null, datepicker)],
39542      [controls.clearButton, 'click', _events_functions_js__WEBPACK_IMPORTED_MODULE_8__.clearSelection.bind(null, datepicker)],
39543    ]);
39544
39545    // set up views
39546    this.views = [
39547      new _views_DaysView_js__WEBPACK_IMPORTED_MODULE_5__["default"](this),
39548      new _views_MonthsView_js__WEBPACK_IMPORTED_MODULE_6__["default"](this),
39549      new _views_YearsView_js__WEBPACK_IMPORTED_MODULE_7__["default"](this, {id: 2, name: 'years', cellClass: 'year', step: 1}),
39550      new _views_YearsView_js__WEBPACK_IMPORTED_MODULE_7__["default"](this, {id: 3, name: 'decades', cellClass: 'decade', step: 10}),
39551    ];
39552    this.currentView = this.views[config.startView];
39553
39554    this.currentView.render();
39555    this.main.appendChild(this.currentView.element);
39556    if (config.container) {
39557      config.container.appendChild(this.element);
39558    } else {
39559      inputField.after(this.element);
39560    }
39561  }
39562
39563  setOptions(options) {
39564    processPickerOptions(this, options);
39565    this.views.forEach((view) => {
39566      view.init(options, false);
39567    });
39568    this.currentView.render();
39569  }
39570
39571  detach() {
39572    this.element.remove();
39573  }
39574
39575  show() {
39576    if (this.active) {
39577      return;
39578    }
39579
39580    const {datepicker, element} = this;
39581    const inputField = datepicker.inputField;
39582    if (inputField) {
39583      // ensure picker's direction matches input's
39584      const inputDirection = getTextDirection(inputField);
39585      if (inputDirection !== getTextDirection((0,_lib_dom_js__WEBPACK_IMPORTED_MODULE_2__.getParent)(element))) {
39586        element.dir = inputDirection;
39587      } else if (element.dir) {
39588        element.removeAttribute('dir');
39589      }
39590
39591      // Determine the picker's position first to prevent `orientation: 'auto'`
39592      // from being miscalculated to 'bottom' after the picker temporarily
39593      // shown below the input field expands the document height if the field
39594      // is at the bottom edge of the document
39595      this.place();
39596      element.classList.add('active');
39597
39598      if (datepicker.config.disableTouchKeyboard) {
39599        inputField.blur();
39600      }
39601    } else {
39602      element.classList.add('active');
39603    }
39604    this.active = true;
39605    (0,_events_functions_js__WEBPACK_IMPORTED_MODULE_8__.triggerDatepickerEvent)(datepicker, 'show');
39606  }
39607
39608  hide() {
39609    if (!this.active) {
39610      return;
39611    }
39612    this.datepicker.exitEditMode();
39613    this.element.classList.remove('active');
39614    this.active = false;
39615    (0,_events_functions_js__WEBPACK_IMPORTED_MODULE_8__.triggerDatepickerEvent)(this.datepicker, 'hide');
39616  }
39617
39618  place() {
39619    const {classList, style} = this.element;
39620    // temporarily display the picker to get its size and offset parent
39621    style.display = 'block';
39622
39623    const {
39624      width: calendarWidth,
39625      height: calendarHeight,
39626    } = this.element.getBoundingClientRect();
39627    const offsetParent = this.element.offsetParent;
39628    // turn the picker back to hidden so that the position is determined with
39629    // the state before it is shown.
39630    style.display = '';
39631
39632    const {config, inputField} = this.datepicker;
39633    const {
39634      left: inputLeft,
39635      top: inputTop,
39636      right: inputRight,
39637      bottom: inputBottom,
39638      width: inputWidth,
39639      height: inputHeight
39640    } = inputField.getBoundingClientRect();
39641    let {x: orientX, y: orientY} = config.orientation;
39642    let left = inputLeft;
39643    let top = inputTop;
39644
39645    // caliculate offsetLeft/Top of inputField
39646    if (offsetParent === document.body || !offsetParent) {
39647      left += window.scrollX;
39648      top += window.scrollY;
39649    } else {
39650      const offsetParentRect = offsetParent.getBoundingClientRect();
39651      left -= offsetParentRect.left - offsetParent.scrollLeft;
39652      top -= offsetParentRect.top - offsetParent.scrollTop;
39653    }
39654
39655    // caliculate the boundaries of the visible area that contains inputField
39656    const scrollParent = findScrollParents(inputField);
39657    let scrollAreaLeft = 0;
39658    let scrollAreaTop = 0;
39659    let {
39660      clientWidth: scrollAreaRight,
39661      clientHeight: scrollAreaBottom,
39662    } = document.documentElement;
39663
39664    if (scrollParent) {
39665      const scrollParentRect = scrollParent.getBoundingClientRect();
39666      if (scrollParentRect.top > 0) {
39667        scrollAreaTop = scrollParentRect.top;
39668      }
39669      if (scrollParentRect.left > 0) {
39670        scrollAreaLeft = scrollParentRect.left;
39671      }
39672      if (scrollParentRect.right < scrollAreaRight) {
39673        scrollAreaRight = scrollParentRect.right;
39674      }
39675      if (scrollParentRect.bottom < scrollAreaBottom) {
39676        scrollAreaBottom = scrollParentRect.bottom;
39677      }
39678    }
39679
39680    // determine the horizontal orientation and left position
39681    let adjustment = 0;
39682    if (orientX === 'auto') {
39683      if (inputLeft < scrollAreaLeft) {
39684        orientX = 'left';
39685        adjustment = scrollAreaLeft - inputLeft;
39686      } else if (inputLeft + calendarWidth > scrollAreaRight) {
39687        orientX = 'right';
39688        if (scrollAreaRight < inputRight) {
39689          adjustment = scrollAreaRight - inputRight;
39690        }
39691      } else if (getTextDirection(inputField) === 'rtl') {
39692        orientX = inputRight - calendarWidth < scrollAreaLeft ? 'left' : 'right';
39693      } else {
39694        orientX = 'left';
39695      }
39696    }
39697    if (orientX === 'right') {
39698      left += inputWidth - calendarWidth;
39699    }
39700    left += adjustment;
39701
39702    // determine the vertical orientation and top position
39703    if (orientY === 'auto') {
39704      if (inputTop - calendarHeight > scrollAreaTop) {
39705        orientY = inputBottom + calendarHeight > scrollAreaBottom ? 'top' : 'bottom';
39706      } else {
39707        orientY = 'bottom';
39708      }
39709    }
39710    if (orientY === 'top') {
39711      top -= calendarHeight;
39712    } else {
39713      top += inputHeight;
39714    }
39715
39716    classList.remove(...Object.values(orientClasses));
39717    classList.add(orientClasses[orientX], orientClasses[orientY]);
39718
39719    style.left = toPx(left);
39720    style.top = toPx(top);
39721  }
39722
39723  setViewSwitchLabel(labelText) {
39724    this.controls.viewSwitch.textContent = labelText;
39725  }
39726
39727  setPrevButtonDisabled(disabled) {
39728    this.controls.prevButton.disabled = disabled;
39729  }
39730
39731  setNextButtonDisabled(disabled) {
39732    this.controls.nextButton.disabled = disabled;
39733  }
39734
39735  changeView(viewId) {
39736    const currentView = this.currentView;
39737    if (viewId !== currentView.id) {
39738      if (!this._oldView) {
39739        this._oldView = currentView;
39740      }
39741      this.currentView = this.views[viewId];
39742      this._renderMethod = 'render';
39743    }
39744    return this;
39745  }
39746
39747  // Change the focused date (view date)
39748  changeFocus(newViewDate) {
39749    this._renderMethod = setViewDate(this, newViewDate) ? 'render' : 'refreshFocus';
39750    this.views.forEach((view) => {
39751      view.updateFocus();
39752    });
39753    return this;
39754  }
39755
39756  // Apply the change of the selected dates
39757  update(viewDate = undefined) {
39758    const newViewDate = viewDate === undefined
39759      ? computeResetViewDate(this.datepicker)
39760      : viewDate;
39761    this._renderMethod = setViewDate(this, newViewDate) ? 'render' : 'refresh';
39762    this.views.forEach((view) => {
39763      view.updateFocus();
39764      view.updateSelection();
39765    });
39766    return this;
39767  }
39768
39769  // Refresh the picker UI
39770  render(quickRender = true) {
39771    const {currentView, datepicker, _oldView: oldView} = this;
39772    const oldViewDate = new Date(this._oldViewDate);
39773    const renderMethod = (quickRender && this._renderMethod) || 'render';
39774    delete this._oldView;
39775    delete this._oldViewDate;
39776    delete this._renderMethod;
39777
39778    currentView[renderMethod]();
39779    if (oldView) {
39780      this.main.replaceChild(currentView.element, oldView.element);
39781      (0,_events_functions_js__WEBPACK_IMPORTED_MODULE_8__.triggerDatepickerEvent)(datepicker, 'changeView');
39782    }
39783    if (!isNaN(oldViewDate)) {
39784      const newViewDate = new Date(this.viewDate);
39785      if (newViewDate.getFullYear() !== oldViewDate.getFullYear()) {
39786        (0,_events_functions_js__WEBPACK_IMPORTED_MODULE_8__.triggerDatepickerEvent)(datepicker, 'changeYear');
39787      }
39788      if (newViewDate.getMonth() !== oldViewDate.getMonth()) {
39789        (0,_events_functions_js__WEBPACK_IMPORTED_MODULE_8__.triggerDatepickerEvent)(datepicker, 'changeMonth');
39790      }
39791    }
39792  }
39793}
39794
39795
39796/***/ }),
39797
vendor: 1,239 bytes, lines 39798-39819
39798/***/ "./node_modules/vanillajs-datepicker/js/picker/templates/daysTemplate.js":
39799/*!*******************************************************************************!*\
39800  !*** ./node_modules/vanillajs-datepicker/js/picker/templates/daysTemplate.js ***!
39801  \*******************************************************************************/
39802/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
39803
39804"use strict";
39805__webpack_require__.r(__webpack_exports__);
39806/* harmony export */ __webpack_require__.d(__webpack_exports__, {
39807/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
39808/* harmony export */ });
39809/* harmony import */ var _lib_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../lib/utils.js */ "./node_modules/vanillajs-datepicker/js/lib/utils.js");
39810
39811
39812/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_lib_utils_js__WEBPACK_IMPORTED_MODULE_0__.optimizeTemplateHTML)(`<div class="days">
39813  <div class="days-of-week">${(0,_lib_utils_js__WEBPACK_IMPORTED_MODULE_0__.createTagRepeat)('span', 7, {class: 'dow'})}</div>
39814  <div class="datepicker-grid">${(0,_lib_utils_js__WEBPACK_IMPORTED_MODULE_0__.createTagRepeat)('span', 42)}</div>
39815</div>`));
39816
39817
39818/***/ }),
39819
vendor: 1,730 bytes, lines 39820-39864
39820/***/ "./node_modules/vanillajs-datepicker/js/picker/templates/pickerTemplate.js":
39821/*!*********************************************************************************!*\
39822  !*** ./node_modules/vanillajs-datepicker/js/picker/templates/pickerTemplate.js ***!
39823  \*********************************************************************************/
39824/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
39825
39826"use strict";
39827__webpack_require__.r(__webpack_exports__);
39828/* harmony export */ __webpack_require__.d(__webpack_exports__, {
39829/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
39830/* harmony export */ });
39831/* harmony import */ var _lib_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../lib/utils.js */ "./node_modules/vanillajs-datepicker/js/lib/utils.js");
39832
39833
39834const getButtons = buttonList => buttonList
39835  .map(classes => `<button type="button" class="%buttonClass% ${classes}" tabindex="-1"></button>`)
39836  .join('');
39837
39838/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_lib_utils_js__WEBPACK_IMPORTED_MODULE_0__.optimizeTemplateHTML)(`<div class="datepicker">
39839  <div class="datepicker-picker">
39840    <div class="datepicker-header">
39841      <div class="datepicker-title"></div>
39842      <div class="datepicker-controls">
39843        ${getButtons([
39844          'prev-button prev-btn',
39845          'view-switch',
39846          'next-button next-btn',
39847        ])}
39848      </div>
39849    </div>
39850    <div class="datepicker-main"></div>
39851    <div class="datepicker-footer">
39852      <div class="datepicker-controls">
39853        ${getButtons([
39854          'today-button today-btn',
39855          'clear-button clear-btn',
39856        ])}
39857      </div>
39858    </div>
39859  </div>
39860</div>`));
39861
39862
39863/***/ }),
39864
vendor: 1,230 bytes, lines 39865-39887
39865/***/ "./node_modules/vanillajs-datepicker/js/picker/templates/weekNumbersTemplate.js":
39866/*!**************************************************************************************!*\
39867  !*** ./node_modules/vanillajs-datepicker/js/picker/templates/weekNumbersTemplate.js ***!
39868  \**************************************************************************************/
39869/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
39870
39871"use strict";
39872__webpack_require__.r(__webpack_exports__);
39873/* harmony export */ __webpack_require__.d(__webpack_exports__, {
39874/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
39875/* harmony export */ });
39876/* harmony import */ var _lib_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../lib/utils.js */ "./node_modules/vanillajs-datepicker/js/lib/utils.js");
39877
39878
39879/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_lib_utils_js__WEBPACK_IMPORTED_MODULE_0__.optimizeTemplateHTML)(`<div class="week-numbers calendar-weeks">
39880  <div class="days-of-week"><span class="dow"></span></div>
39881  <div class="weeks">${(0,_lib_utils_js__WEBPACK_IMPORTED_MODULE_0__.createTagRepeat)('span', 6, {class: 'week'})}</div>
39882</div>`));
39883
39884
39885
39886/***/ }),
39887
vendor: 8,124 bytes, lines 39888-40101
39888/***/ "./node_modules/vanillajs-datepicker/js/picker/views/DaysView.js":
39889/*!***********************************************************************!*\
39890  !*** ./node_modules/vanillajs-datepicker/js/picker/views/DaysView.js ***!
39891  \***********************************************************************/
39892/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
39893
39894"use strict";
39895__webpack_require__.r(__webpack_exports__);
39896/* harmony export */ __webpack_require__.d(__webpack_exports__, {
39897/* harmony export */   "default": () => (/* binding */ DaysView)
39898/* harmony export */ });
39899/* harmony import */ var _lib_date_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../lib/date.js */ "./node_modules/vanillajs-datepicker/js/lib/date.js");
39900/* harmony import */ var _lib_date_format_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../lib/date-format.js */ "./node_modules/vanillajs-datepicker/js/lib/date-format.js");
39901/* harmony import */ var _lib_dom_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../lib/dom.js */ "./node_modules/vanillajs-datepicker/js/lib/dom.js");
39902/* harmony import */ var _templates_daysTemplate_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../templates/daysTemplate.js */ "./node_modules/vanillajs-datepicker/js/picker/templates/daysTemplate.js");
39903/* harmony import */ var _templates_weekNumbersTemplate_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../templates/weekNumbersTemplate.js */ "./node_modules/vanillajs-datepicker/js/picker/templates/weekNumbersTemplate.js");
39904/* harmony import */ var _View_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./View.js */ "./node_modules/vanillajs-datepicker/js/picker/views/View.js");
39905
39906
39907
39908
39909
39910
39911
39912class DaysView extends _View_js__WEBPACK_IMPORTED_MODULE_5__["default"] {
39913  constructor(picker) {
39914    super(picker, {
39915      id: 0,
39916      name: 'days',
39917      cellClass: 'day',
39918    });
39919  }
39920
39921  init(options, onConstruction = true) {
39922    if (onConstruction) {
39923      const inner = (0,_lib_dom_js__WEBPACK_IMPORTED_MODULE_2__.parseHTML)(_templates_daysTemplate_js__WEBPACK_IMPORTED_MODULE_3__["default"]).firstChild;
39924      this.dow = inner.firstChild;
39925      this.grid = inner.lastChild;
39926      this.element.appendChild(inner);
39927    }
39928    super.init(options);
39929  }
39930
39931  setOptions(options) {
39932    let updateDOW;
39933
39934    if ('minDate' in options) {
39935      this.minDate = options.minDate;
39936    }
39937    if ('maxDate' in options) {
39938      this.maxDate = options.maxDate;
39939    }
39940    if (options.checkDisabled) {
39941      this.checkDisabled = options.checkDisabled;
39942    }
39943    if (options.daysOfWeekDisabled) {
39944      this.daysOfWeekDisabled = options.daysOfWeekDisabled;
39945      updateDOW = true;
39946    }
39947    if (options.daysOfWeekHighlighted) {
39948      this.daysOfWeekHighlighted = options.daysOfWeekHighlighted;
39949    }
39950    if ('todayHighlight' in options) {
39951      this.todayHighlight = options.todayHighlight;
39952    }
39953    if ('weekStart' in options) {
39954      this.weekStart = options.weekStart;
39955      this.weekEnd = options.weekEnd;
39956      updateDOW = true;
39957    }
39958    if (options.locale) {
39959      const locale = this.locale = options.locale;
39960      this.dayNames = locale.daysMin;
39961      this.switchLabelFormat = locale.titleFormat;
39962      updateDOW = true;
39963    }
39964    if ('beforeShowDay' in options) {
39965      this.beforeShow = typeof options.beforeShowDay === 'function'
39966        ? options.beforeShowDay
39967        : undefined;
39968    }
39969
39970    if ('weekNumbers' in options) {
39971      if (options.weekNumbers && !this.weekNumbers) {
39972        const weeksElem = (0,_lib_dom_js__WEBPACK_IMPORTED_MODULE_2__.parseHTML)(_templates_weekNumbersTemplate_js__WEBPACK_IMPORTED_MODULE_4__["default"]).firstChild;
39973        this.weekNumbers = {
39974          element: weeksElem,
39975          dow: weeksElem.firstChild,
39976          weeks: weeksElem.lastChild,
39977        };
39978        this.element.insertBefore(weeksElem, this.element.firstChild);
39979      } else if (this.weekNumbers && !options.weekNumbers) {
39980        this.element.removeChild(this.weekNumbers.element);
39981        this.weekNumbers = null;
39982      }
39983    }
39984
39985    if ('getWeekNumber' in options) {
39986      this.getWeekNumber = options.getWeekNumber;
39987    }
39988
39989    if ('showDaysOfWeek' in options) {
39990      if (options.showDaysOfWeek) {
39991        (0,_lib_dom_js__WEBPACK_IMPORTED_MODULE_2__.showElement)(this.dow);
39992        if (this.weekNumbers) {
39993          (0,_lib_dom_js__WEBPACK_IMPORTED_MODULE_2__.showElement)(this.weekNumbers.dow);
39994        }
39995      } else {
39996        (0,_lib_dom_js__WEBPACK_IMPORTED_MODULE_2__.hideElement)(this.dow);
39997        if (this.weekNumbers) {
39998          (0,_lib_dom_js__WEBPACK_IMPORTED_MODULE_2__.hideElement)(this.weekNumbers.dow);
39999        }
40000      }
40001    }
40002
40003    // update days-of-week when locale, daysOfweekDisabled or weekStart is changed
40004    if (updateDOW) {
40005      Array.from(this.dow.children).forEach((el, index) => {
40006        const dow = (this.weekStart + index) % 7;
40007        el.textContent = this.dayNames[dow];
40008        el.className = this.daysOfWeekDisabled.includes(dow) ? 'dow disabled' : 'dow';
40009      });
40010    }
40011  }
40012
40013  // Apply update on the focused date to view's settings
40014  updateFocus() {
40015    const viewDate = new Date(this.picker.viewDate);
40016    const viewYear = viewDate.getFullYear();
40017    const viewMonth = viewDate.getMonth();
40018    const firstOfMonth = (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_0__.dateValue)(viewYear, viewMonth, 1);
40019    const start = (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_0__.dayOfTheWeekOf)(firstOfMonth, this.weekStart, this.weekStart);
40020
40021    this.first = firstOfMonth;
40022    this.last = (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_0__.dateValue)(viewYear, viewMonth + 1, 0);
40023    this.start = start;
40024    this.focused = this.picker.viewDate;
40025  }
40026
40027  // Apply update on the selected dates to view's settings
40028  updateSelection() {
40029    const {dates, rangepicker} = this.picker.datepicker;
40030    this.selected = dates;
40031    if (rangepicker) {
40032      this.range = rangepicker.dates;
40033    }
40034  }
40035
40036   // Update the entire view UI
40037  render() {
40038    // update today marker on ever render
40039    this.today = this.todayHighlight ? (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_0__.today)() : undefined;
40040
40041    this.prepareForRender(
40042      (0,_lib_date_format_js__WEBPACK_IMPORTED_MODULE_1__.formatDate)(this.focused, this.switchLabelFormat, this.locale),
40043      this.first <= this.minDate,
40044      this.last >= this.maxDate
40045    );
40046
40047    if (this.weekNumbers) {
40048      const weekStart = this.weekStart;
40049      const startOfWeek = (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_0__.dayOfTheWeekOf)(this.first, weekStart, weekStart);
40050      Array.from(this.weekNumbers.weeks.children).forEach((el, index) => {
40051        const dateOfWeekStart = (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_0__.addWeeks)(startOfWeek, index);
40052        el.textContent = this.getWeekNumber(dateOfWeekStart, weekStart);
40053        if (index > 3) {
40054          el.classList[dateOfWeekStart > this.last ? 'add' : 'remove']('next');
40055        }
40056      });
40057    }
40058    Array.from(this.grid.children).forEach((el, index) => {
40059      const current = (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_0__.addDays)(this.start, index);
40060      const dateObj = new Date(current);
40061      const day = dateObj.getDay();
40062      const extraClasses = [];
40063
40064      if (this.today === current) {
40065        extraClasses.push('today');
40066      }
40067      if (this.daysOfWeekHighlighted.includes(day)) {
40068        extraClasses.push('highlighted');
40069      }
40070
40071      this.renderCell(
40072        el,
40073        dateObj.getDate(),
40074        current,
40075        current,
40076        this,
40077        current < this.minDate
40078          || current > this.maxDate
40079          || this.daysOfWeekDisabled.includes(day),
40080        extraClasses
40081      );
40082    });
40083  }
40084
40085  // Update the view UI by applying the changes of selected and focused items
40086  refresh() {
40087    const range = this.range || [];
40088    Array.from(this.grid.children).forEach((el) => {
40089      this.refreshCell(el, Number(el.dataset.date), this.selected, range);
40090    });
40091  }
40092
40093  // Update the view UI by applying the change of focused item
40094  refreshFocus() {
40095    this.changeFocusedCell(Math.round((this.focused - this.start) / 86400000));
40096  }
40097}
40098
40099
40100/***/ }),
40101
vendor: 5,878 bytes, lines 40102-40268
40102/***/ "./node_modules/vanillajs-datepicker/js/picker/views/MonthsView.js":
40103/*!*************************************************************************!*\
40104  !*** ./node_modules/vanillajs-datepicker/js/picker/views/MonthsView.js ***!
40105  \*************************************************************************/
40106/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
40107
40108"use strict";
40109__webpack_require__.r(__webpack_exports__);
40110/* harmony export */ __webpack_require__.d(__webpack_exports__, {
40111/* harmony export */   "default": () => (/* binding */ MonthsView)
40112/* harmony export */ });
40113/* harmony import */ var _lib_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../lib/utils.js */ "./node_modules/vanillajs-datepicker/js/lib/utils.js");
40114/* harmony import */ var _lib_date_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../lib/date.js */ "./node_modules/vanillajs-datepicker/js/lib/date.js");
40115/* harmony import */ var _lib_dom_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../lib/dom.js */ "./node_modules/vanillajs-datepicker/js/lib/dom.js");
40116/* harmony import */ var _View_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./View.js */ "./node_modules/vanillajs-datepicker/js/picker/views/View.js");
40117
40118
40119
40120
40121
40122function computeMonthRange(range, thisYear) {
40123  if (!range || !range[0] || !range[1]) {
40124    return;
40125  }
40126
40127  const [[startY, startM], [endY, endM]] = range;
40128  if (startY > thisYear || endY < thisYear) {
40129    return;
40130  }
40131  return [
40132    startY === thisYear ? startM : -1,
40133    endY === thisYear ? endM : 12,
40134  ];
40135}
40136
40137class MonthsView extends _View_js__WEBPACK_IMPORTED_MODULE_3__["default"] {
40138  constructor(picker) {
40139    super(picker, {
40140      id: 1,
40141      name: 'months',
40142      cellClass: 'month',
40143    });
40144  }
40145
40146  init(options, onConstruction = true) {
40147    if (onConstruction) {
40148      this.grid = this.element;
40149      this.element.classList.add('months', 'datepicker-grid');
40150      this.grid.appendChild((0,_lib_dom_js__WEBPACK_IMPORTED_MODULE_2__.parseHTML)((0,_lib_utils_js__WEBPACK_IMPORTED_MODULE_0__.createTagRepeat)('span', 12, {'data-month': ix => ix})));
40151      this.first = 0;
40152      this.last = 11;
40153    }
40154    super.init(options);
40155  }
40156
40157  setOptions(options) {
40158    if (options.locale) {
40159      this.monthNames = options.locale.monthsShort;
40160    }
40161    if ('minDate' in options) {
40162      if (options.minDate === undefined) {
40163        this.minYear = this.minMonth = this.minDate = undefined;
40164      } else {
40165        const minDateObj = new Date(options.minDate);
40166        this.minYear = minDateObj.getFullYear();
40167        this.minMonth = minDateObj.getMonth();
40168        this.minDate = minDateObj.setDate(1);
40169      }
40170    }
40171    if ('maxDate' in options) {
40172      if (options.maxDate === undefined) {
40173        this.maxYear = this.maxMonth = this.maxDate = undefined;
40174      } else {
40175        const maxDateObj = new Date(options.maxDate);
40176        this.maxYear = maxDateObj.getFullYear();
40177        this.maxMonth = maxDateObj.getMonth();
40178        this.maxDate = (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_1__.dateValue)(this.maxYear, this.maxMonth + 1, 0);
40179      }
40180    }
40181    if (options.checkDisabled) {
40182      this.checkDisabled = this.isMinView || options.datesDisabled === null
40183        ? options.checkDisabled
40184        : () => false;
40185    }
40186    if ('beforeShowMonth' in options) {
40187      this.beforeShow = typeof options.beforeShowMonth === 'function'
40188        ? options.beforeShowMonth
40189        : undefined;
40190    }
40191  }
40192
40193  // Update view's settings to reflect the viewDate set on the picker
40194  updateFocus() {
40195    const viewDate = new Date(this.picker.viewDate);
40196    this.year = viewDate.getFullYear();
40197    this.focused = viewDate.getMonth();
40198  }
40199
40200  // Update view's settings to reflect the selected dates
40201  updateSelection() {
40202    const {dates, rangepicker} = this.picker.datepicker;
40203    this.selected = dates.reduce((selected, timeValue) => {
40204      const date = new Date(timeValue);
40205      const year = date.getFullYear();
40206      const month = date.getMonth();
40207      if (selected[year] === undefined) {
40208        selected[year] = [month];
40209      } else {
40210        (0,_lib_utils_js__WEBPACK_IMPORTED_MODULE_0__.pushUnique)(selected[year], month);
40211      }
40212      return selected;
40213    }, {});
40214    if (rangepicker && rangepicker.dates) {
40215      this.range = rangepicker.dates.map(timeValue => {
40216        const date = new Date(timeValue);
40217        return isNaN(date) ? undefined : [date.getFullYear(), date.getMonth()];
40218      });
40219    }
40220  }
40221
40222  // Update the entire view UI
40223  render() {
40224    this.prepareForRender(
40225      this.year,
40226      this.year <= this.minYear,
40227      this.year >= this.maxYear
40228    );
40229
40230    const selected = this.selected[this.year] || [];
40231    const yrOutOfRange = this.year < this.minYear || this.year > this.maxYear;
40232    const isMinYear = this.year === this.minYear;
40233    const isMaxYear = this.year === this.maxYear;
40234    const range = computeMonthRange(this.range, this.year);
40235
40236    Array.from(this.grid.children).forEach((el, index) => {
40237      const date = (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_1__.regularizeDate)(new Date(this.year, index, 1), 1, this.isRangeEnd);
40238
40239      this.renderCell(
40240        el,
40241        this.monthNames[index],
40242        index,
40243        date,
40244        {selected, range},
40245        yrOutOfRange
40246          || isMinYear && index < this.minMonth
40247          || isMaxYear && index > this.maxMonth
40248      );
40249    });
40250  }
40251
40252  // Update the view UI by applying the changes of selected and focused items
40253  refresh() {
40254    const selected = this.selected[this.year] || [];
40255    const range = computeMonthRange(this.range, this.year) || [];
40256    Array.from(this.grid.children).forEach((el, index) => {
40257      this.refreshCell(el, index, selected, range);
40258    });
40259  }
40260
40261  // Update the view UI by applying the change of focused item
40262  refreshFocus() {
40263    this.changeFocusedCell(this.focused);
40264  }
40265}
40266
40267/***/ }),
40268
vendor: 4,849 bytes, lines 40269-40423
40269/***/ "./node_modules/vanillajs-datepicker/js/picker/views/View.js":
40270/*!*******************************************************************!*\
40271  !*** ./node_modules/vanillajs-datepicker/js/picker/views/View.js ***!
40272  \*******************************************************************/
40273/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
40274
40275"use strict";
40276__webpack_require__.r(__webpack_exports__);
40277/* harmony export */ __webpack_require__.d(__webpack_exports__, {
40278/* harmony export */   "default": () => (/* binding */ View)
40279/* harmony export */ });
40280/* harmony import */ var _lib_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../lib/utils.js */ "./node_modules/vanillajs-datepicker/js/lib/utils.js");
40281/* harmony import */ var _lib_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../lib/dom.js */ "./node_modules/vanillajs-datepicker/js/lib/dom.js");
40282
40283
40284
40285// Base class of the view classes
40286class View {
40287  constructor(picker, config) {
40288    Object.assign(this, config, {
40289      picker,
40290      element: (0,_lib_dom_js__WEBPACK_IMPORTED_MODULE_1__.parseHTML)(`<div class="datepicker-view"></div>`).firstChild,
40291      selected: [],
40292      isRangeEnd: !!picker.datepicker.rangeSideIndex,
40293    });
40294    this.init(this.picker.datepicker.config);
40295  }
40296
40297  init(options) {
40298    if ('pickLevel' in options) {
40299      this.isMinView = this.id === options.pickLevel;
40300    }
40301    this.setOptions(options);
40302    this.updateFocus();
40303    this.updateSelection();
40304  }
40305
40306  prepareForRender(switchLabel, prevButtonDisabled, nextButtonDisabled) {
40307    // refresh disabled years on every render in order to clear the ones added
40308    // by beforeShow hook at previous render
40309    this.disabled = [];
40310
40311    const picker = this.picker;
40312    picker.setViewSwitchLabel(switchLabel);
40313    picker.setPrevButtonDisabled(prevButtonDisabled);
40314    picker.setNextButtonDisabled(nextButtonDisabled);
40315  }
40316
40317  setDisabled(date, classList) {
40318    classList.add('disabled');
40319    (0,_lib_utils_js__WEBPACK_IMPORTED_MODULE_0__.pushUnique)(this.disabled, date);
40320  }
40321
40322  // Execute beforeShow() callback and apply the result to the element
40323  // args:
40324  performBeforeHook(el, timeValue) {
40325    let result = this.beforeShow(new Date(timeValue));
40326    switch (typeof result) {
40327      case 'boolean':
40328        result = {enabled: result};
40329        break;
40330      case 'string':
40331        result = {classes: result};
40332    }
40333
40334    if (result) {
40335      const classList = el.classList;
40336      if (result.enabled === false) {
40337        this.setDisabled(timeValue, classList);
40338      }
40339      if (result.classes) {
40340        const extraClasses = result.classes.split(/\s+/);
40341        classList.add(...extraClasses);
40342        if (extraClasses.includes('disabled')) {
40343          this.setDisabled(timeValue, classList);
40344        }
40345      }
40346      if (result.content) {
40347        (0,_lib_dom_js__WEBPACK_IMPORTED_MODULE_1__.replaceChildNodes)(el, result.content);
40348      }
40349    }
40350  }
40351
40352  renderCell(el, content, cellVal, date, {selected, range}, outOfScope, extraClasses = []) {
40353    el.textContent = content;
40354    if (this.isMinView) {
40355      el.dataset.date = date;
40356    }
40357
40358    const classList = el.classList;
40359    el.className = `datepicker-cell ${this.cellClass}`;
40360    if (cellVal < this.first) {
40361      classList.add('prev');
40362    } else if (cellVal > this.last) {
40363      classList.add('next');
40364    }
40365    classList.add(...extraClasses);
40366    if (outOfScope || this.checkDisabled(date, this.id)) {
40367      this.setDisabled(date, classList);
40368    }
40369    if (range) {
40370      const [rangeStart, rangeEnd] = range;
40371      if (cellVal > rangeStart && cellVal < rangeEnd) {
40372        classList.add('range');
40373      }
40374      if (cellVal === rangeStart) {
40375        classList.add('range-start');
40376      }
40377      if (cellVal === rangeEnd) {
40378        classList.add('range-end');
40379      }
40380    }
40381    if (selected.includes(cellVal)) {
40382      classList.add('selected');
40383    }
40384    if (cellVal === this.focused) {
40385      classList.add('focused');
40386    }
40387
40388    if (this.beforeShow) {
40389      this.performBeforeHook(el, date);
40390    }
40391  }
40392
40393  refreshCell(el, cellVal, selected, [rangeStart, rangeEnd]) {
40394    const classList = el.classList;
40395    classList.remove('range', 'range-start', 'range-end', 'selected', 'focused');
40396    if (cellVal > rangeStart && cellVal < rangeEnd) {
40397      classList.add('range');
40398    }
40399    if (cellVal === rangeStart) {
40400      classList.add('range-start');
40401    }
40402    if (cellVal === rangeEnd) {
40403      classList.add('range-end');
40404    }
40405    if (selected.includes(cellVal)) {
40406      classList.add('selected');
40407    }
40408    if (cellVal === this.focused) {
40409      classList.add('focused');
40410    }
40411  }
40412
40413  changeFocusedCell(cellIndex) {
40414    this.grid.querySelectorAll('.focused').forEach((el) => {
40415      el.classList.remove('focused');
40416    });
40417    this.grid.children[cellIndex].classList.add('focused');
40418  }
40419}
40420
40421
40422/***/ }),
40423
vendor: 5,412 bytes, lines 40424-40559
40424/***/ "./node_modules/vanillajs-datepicker/js/picker/views/YearsView.js":
40425/*!************************************************************************!*\
40426  !*** ./node_modules/vanillajs-datepicker/js/picker/views/YearsView.js ***!
40427  \************************************************************************/
40428/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
40429
40430"use strict";
40431__webpack_require__.r(__webpack_exports__);
40432/* harmony export */ __webpack_require__.d(__webpack_exports__, {
40433/* harmony export */   "default": () => (/* binding */ YearsView)
40434/* harmony export */ });
40435/* harmony import */ var _lib_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../lib/utils.js */ "./node_modules/vanillajs-datepicker/js/lib/utils.js");
40436/* harmony import */ var _lib_date_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../lib/date.js */ "./node_modules/vanillajs-datepicker/js/lib/date.js");
40437/* harmony import */ var _lib_dom_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../lib/dom.js */ "./node_modules/vanillajs-datepicker/js/lib/dom.js");
40438/* harmony import */ var _View_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./View.js */ "./node_modules/vanillajs-datepicker/js/picker/views/View.js");
40439
40440
40441
40442
40443
40444function toTitleCase(word) {
40445  return [...word].reduce((str, ch, ix) => str += ix ? ch : ch.toUpperCase(), '');
40446}
40447
40448// Class representing the years and decades view elements
40449class YearsView extends _View_js__WEBPACK_IMPORTED_MODULE_3__["default"] {
40450  constructor(picker, config) {
40451    super(picker, config);
40452  }
40453
40454  init(options, onConstruction = true) {
40455    if (onConstruction) {
40456      this.navStep = this.step * 10;
40457      this.beforeShowOption = `beforeShow${toTitleCase(this.cellClass)}`;
40458      this.grid = this.element;
40459      this.element.classList.add(this.name, 'datepicker-grid');
40460      this.grid.appendChild((0,_lib_dom_js__WEBPACK_IMPORTED_MODULE_2__.parseHTML)((0,_lib_utils_js__WEBPACK_IMPORTED_MODULE_0__.createTagRepeat)('span', 12)));
40461    }
40462    super.init(options);
40463  }
40464
40465  setOptions(options) {
40466    if ('minDate' in options) {
40467      if (options.minDate === undefined) {
40468        this.minYear = this.minDate = undefined;
40469      } else {
40470        this.minYear = (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_1__.startOfYearPeriod)(options.minDate, this.step);
40471        this.minDate = (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_1__.dateValue)(this.minYear, 0, 1);
40472      }
40473    }
40474    if ('maxDate' in options) {
40475      if (options.maxDate === undefined) {
40476        this.maxYear = this.maxDate = undefined;
40477      } else {
40478        this.maxYear = (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_1__.startOfYearPeriod)(options.maxDate, this.step);
40479        this.maxDate = (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_1__.dateValue)(this.maxYear, 11, 31);
40480      }
40481    }
40482    if (options.checkDisabled) {
40483      this.checkDisabled = this.isMinView || options.datesDisabled === null
40484        ? options.checkDisabled
40485        : () => false;
40486    }
40487    if (this.beforeShowOption in options) {
40488      const beforeShow = options[this.beforeShowOption];
40489      this.beforeShow = typeof beforeShow === 'function' ? beforeShow : undefined;
40490    }
40491  }
40492
40493  // Update view's settings to reflect the viewDate set on the picker
40494  updateFocus() {
40495    const viewDate = new Date(this.picker.viewDate);
40496    const first = (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_1__.startOfYearPeriod)(viewDate, this.navStep);
40497    const last = first + 9 * this.step;
40498
40499    this.first = first;
40500    this.last = last;
40501    this.start = first - this.step;
40502    this.focused = (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_1__.startOfYearPeriod)(viewDate, this.step);
40503  }
40504
40505  // Update view's settings to reflect the selected dates
40506  updateSelection() {
40507    const {dates, rangepicker} = this.picker.datepicker;
40508    this.selected = dates.reduce((years, timeValue) => {
40509      return (0,_lib_utils_js__WEBPACK_IMPORTED_MODULE_0__.pushUnique)(years, (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_1__.startOfYearPeriod)(timeValue, this.step));
40510    }, []);
40511    if (rangepicker && rangepicker.dates) {
40512      this.range = rangepicker.dates.map(timeValue => {
40513        if (timeValue !== undefined) {
40514          return (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_1__.startOfYearPeriod)(timeValue, this.step);
40515        }
40516      });
40517    }
40518  }
40519
40520  // Update the entire view UI
40521  render() {
40522    this.prepareForRender(
40523      `${this.first}-${this.last}`,
40524      this.first <= this.minYear,
40525      this.last >= this.maxYear
40526    );
40527
40528    Array.from(this.grid.children).forEach((el, index) => {
40529      const current = this.start + (index * this.step);
40530      const date = (0,_lib_date_js__WEBPACK_IMPORTED_MODULE_1__.regularizeDate)(new Date(current, 0, 1), 2, this.isRangeEnd);
40531
40532      el.dataset.year = current;
40533      this.renderCell(
40534        el,
40535        current,
40536        current,
40537        date,
40538        this,
40539        current < this.minYear || current > this.maxYear
40540      );
40541    });
40542  }
40543
40544  // Update the view UI by applying the changes of selected and focused items
40545  refresh() {
40546    const range = this.range || [];
40547    Array.from(this.grid.children).forEach((el) => {
40548      this.refreshCell(el, Number(el.textContent), this.selected, range);
40549    });
40550  }
40551
40552  // Update the view UI by applying the change of focused item
40553  refreshFocus() {
40554    this.changeFocusedCell(Math.round((this.focused - this.start) / this.step));
40555  }
40556}
40557
40558
40559/***/ })
vendor: 3,395 bytes, lines 40559-40649
40559
40560
40561/******/ 	});
40562/************************************************************************/
40563/******/ 	// The module cache
40564/******/ 	var __webpack_module_cache__ = {};
40565/******/ 	
40566/******/ 	// The require function
40567/******/ 	function __webpack_require__(moduleId) {
40568/******/ 		// Check if module is in cache
40569/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
40570/******/ 		if (cachedModule !== undefined) {
40571/******/ 			return cachedModule.exports;
40572/******/ 		}
40573/******/ 		// Create a new module (and put it into the cache)
40574/******/ 		var module = __webpack_module_cache__[moduleId] = {
40575/******/ 			id: moduleId,
40576/******/ 			loaded: false,
40577/******/ 			exports: {}
40578/******/ 		};
40579/******/ 	
40580/******/ 		// Execute the module function
40581/******/ 		__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
40582/******/ 	
40583/******/ 		// Flag the module as loaded
40584/******/ 		module.loaded = true;
40585/******/ 	
40586/******/ 		// Return the exports of the module
40587/******/ 		return module.exports;
40588/******/ 	}
40589/******/ 	
40590/************************************************************************/
40591/******/ 	/* webpack/runtime/compat get default export */
40592/******/ 	(() => {
40593/******/ 		// getDefaultExport function for compatibility with non-harmony modules
40594/******/ 		__webpack_require__.n = (module) => {
40595/******/ 			var getter = module && module.__esModule ?
40596/******/ 				() => (module['default']) :
40597/******/ 				() => (module);
40598/******/ 			__webpack_require__.d(getter, { a: getter });
40599/******/ 			return getter;
40600/******/ 		};
40601/******/ 	})();
40602/******/ 	
40603/******/ 	/* webpack/runtime/define property getters */
40604/******/ 	(() => {
40605/******/ 		// define getter functions for harmony exports
40606/******/ 		__webpack_require__.d = (exports, definition) => {
40607/******/ 			for(var key in definition) {
40608/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
40609/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
40610/******/ 				}
40611/******/ 			}
40612/******/ 		};
40613/******/ 	})();
40614/******/ 	
40615/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
40616/******/ 	(() => {
40617/******/ 		__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
40618/******/ 	})();
40619/******/ 	
40620/******/ 	/* webpack/runtime/make namespace object */
40621/******/ 	(() => {
40622/******/ 		// define __esModule on exports
40623/******/ 		__webpack_require__.r = (exports) => {
40624/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
40625/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
40626/******/ 			}
40627/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
40628/******/ 		};
40629/******/ 	})();
40630/******/ 	
40631/******/ 	/* webpack/runtime/node module decorator */
40632/******/ 	(() => {
40633/******/ 		__webpack_require__.nmd = (module) => {
40634/******/ 			module.paths = [];
40635/******/ 			if (!module.children) module.children = [];
40636/******/ 			return module;
40637/******/ 		};
40638/******/ 	})();
40639/******/ 	
40640/************************************************************************/
40641/******/ 	
40642/******/ 	// startup
40643/******/ 	// Load entry module and return exports
40644/******/ 	// This entry module is referenced by other modules so it can't be inlined
40645/******/ 	var __webpack_exports__ = __webpack_require__("./js/formbuilder.js");
40646/******/ 	
40647/******/ })()
40648;
40649//# sourceMappingURL=build.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.