PageSourceSearch

https://gardner-webb.edu/wp-content/themes/gardnerwebb-twenty/js/dist/searchFilter.bundle.js?ver=1790241007

js gardner-webb.edu collected 2026-09-24 09:23:47 UTC 1,840,290 bytes, 51,574 lines download raw bytes

vendor: 3,682 bytes, lines 1-88
1/******/ (function(modules) { // webpackBootstrap
2/******/ 	// The module cache
3/******/ 	var installedModules = {};
4/******/
5/******/ 	// The require function
6/******/ 	function __webpack_require__(moduleId) {
7/******/
8/******/ 		// Check if module is in cache
9/******/ 		if(installedModules[moduleId]) {
10/******/ 			return installedModules[moduleId].exports;
11/******/ 		}
12/******/ 		// Create a new module (and put it into the cache)
13/******/ 		var module = installedModules[moduleId] = {
14/******/ 			i: moduleId,
15/******/ 			l: false,
16/******/ 			exports: {}
17/******/ 		};
18/******/
19/******/ 		// Execute the module function
20/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21/******/
22/******/ 		// Flag the module as loaded
23/******/ 		module.l = true;
24/******/
25/******/ 		// Return the exports of the module
26/******/ 		return module.exports;
27/******/ 	}
28/******/
29/******/
30/******/ 	// expose the modules object (__webpack_modules__)
31/******/ 	__webpack_require__.m = modules;
32/******/
33/******/ 	// expose the module cache
34/******/ 	__webpack_require__.c = installedModules;
35/******/
36/******/ 	// define getter function for harmony exports
37/******/ 	__webpack_require__.d = function(exports, name, getter) {
38/******/ 		if(!__webpack_require__.o(exports, name)) {
39/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
40/******/ 		}
41/******/ 	};
42/******/
43/******/ 	// define __esModule on exports
44/******/ 	__webpack_require__.r = function(exports) {
45/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
46/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
47/******/ 		}
48/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
49/******/ 	};
50/******/
51/******/ 	// create a fake namespace object
52/******/ 	// mode & 1: value is a module id, require it
53/******/ 	// mode & 2: merge all properties of value into the ns
54/******/ 	// mode & 4: return value when already ns object
55/******/ 	// mode & 8|1: behave like require
56/******/ 	__webpack_require__.t = function(value, mode) {
57/******/ 		if(mode & 1) value = __webpack_require__(value);
58/******/ 		if(mode & 8) return value;
59/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
60/******/ 		var ns = Object.create(null);
61/******/ 		__webpack_require__.r(ns);
62/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
63/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
64/******/ 		return ns;
65/******/ 	};
66/******/
67/******/ 	// getDefaultExport function for compatibility with non-harmony modules
68/******/ 	__webpack_require__.n = function(module) {
69/******/ 		var getter = module && module.__esModule ?
70/******/ 			function getDefault() { return module['default']; } :
71/******/ 			function getModuleExports() { return module; };
72/******/ 		__webpack_require__.d(getter, 'a', getter);
73/******/ 		return getter;
74/******/ 	};
75/******/
76/******/ 	// Object.prototype.hasOwnProperty.call
77/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
78/******/
79/******/ 	// __webpack_public_path__
80/******/ 	__webpack_require__.p = "";
81/******/
82/******/
83/******/ 	// Load entry module and return exports
84/******/ 	return __webpack_require__(__webpack_require__.s = 1);
85/******/ })
86/************************************************************************/
87/******/ ({
88
89/***/ "../../../upup-baseline/js/src/utility.js":
90/*!*************************************************************************************************************!*\
91  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/upup-baseline/js/src/utility.js ***!
92  \*************************************************************************************************************/
93/*! exports provided: setPageHeight, setHeaderHeight, closestPolyfill, trackHeaderBottom, debounce, throttle, containScroll, allowScrollWithinContainedScroll, sleep, preventGhosts, preventClickOnDrag, css, getAttributeStyles, merge, getElOffset, manageClipboardLinks, copyToClipboard */
94/***/ (function(module, __webpack_exports__, __webpack_require__) {
95
96"use strict";
97__webpack_require__.r(__webpack_exports__);
98/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setPageHeight", function() { return setPageHeight; });
99/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setHeaderHeight", function() { return setHeaderHeight; });
100/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "closestPolyfill", function() { return closestPolyfill; });
101/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "trackHeaderBottom", function() { return trackHeaderBottom; });
102/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return debounce; });
103/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return throttle; });
104/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "containScroll", function() { return containScroll; });
105/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "allowScrollWithinContainedScroll", function() { return allowScrollWithinContainedScroll; });
106/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sleep", function() { return sleep; });
107/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "preventGhosts", function() { return preventGhosts; });
108/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "preventClickOnDrag", function() { return preventClickOnDrag; });
109/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "css", function() { return css; });
110/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getAttributeStyles", function() { return getAttributeStyles; });
111/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return merge; });
112/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getElOffset", function() { return getElOffset; });
113/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "manageClipboardLinks", function() { return manageClipboardLinks; });
114/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "copyToClipboard", function() { return copyToClipboard; });
115function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
116
117function setPageHeight() {
118  var vh = window.innerHeight * 0.01; // Then we set the value in the --vh custom property to the root of the document
119
120  document.documentElement.style.setProperty('--vh', vh + 'px');
121}
122/**
123 * Set a variable to reflect the height of the header
124 */
125
126function setHeaderHeight() {
127  var header = document.getElementById('site-header'),
128      headerHeight = header.offsetHeight,
129      originalHeight = header.dataset.originalHeight;
130
131  if (originalHeight) {
132    headerHeight = originalHeight;
133  }
134
135  document.documentElement.style.setProperty('--headerHeight', headerHeight + 'px');
136}
137function closestPolyfill() {
138  if (!Element.prototype.matches) {
139    Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;
140  }
141
142  if (!Element.prototype.closest) {
143    Element.prototype.closest = function (s) {
144      var el = this;
145
146      do {
147        if (el.matches(s)) return el;
148        el = el.parentElement || el.parentNode;
149      } while (el !== null && el.nodeType === 1);
150
151      return null;
152    };
153  }
154}
155/**
156 * Track the bottom of the header offset from the window
157 */
158
159function trackHeaderBottom() {
160  var header = document.getElementById('site-header'),
161      headerWrap = header.querySelector('.site-header__wrap'),
162      headerHeight = 0,
163      headerOffset = null,
164      headerBottom;
165
166  if (headerWrap) {
167    headerHeight = headerWrap.offsetHeight;
168    headerOffset = headerWrap.getBoundingClientRect();
169  } else {
170    headerHeight = header.offsetHeight;
171    headerOffset = header.getBoundingClientRect();
172  }
173
174  headerBottom = headerOffset.top + headerHeight;
175  document.documentElement.style.setProperty('--headerBottom', headerBottom + 'px');
176}
177function debounce(callback, threshold, execAsap) {
178  var timeout;
179  return function () {
180    var obj = this,
181        args = arguments;
182
183    function delayed() {
184      if (!execAsap) callback.apply(obj, args);
185      clearTimeout(timeout);
186      timeout = null;
187    }
188
189    if (timeout) clearTimeout(timeout);else if (execAsap) callback.apply(obj, args);
190    timeout = setTimeout(delayed, threshold || 100);
191  };
192}
193function throttle(callback) {
194  var interval = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100;
195  var fire_last = arguments.length > 2 ? arguments[2] : undefined;
196  var last = Date.now(),
197      timeout = null;
198  return function () {
199    var obj = this,
200        args = arguments,
201        now = Date.now();
202
203    function delayed() {
204      callback.apply(obj, args);
205      timeout = null;
206    } //this event is new enough
207
208
209    if (now - last > interval) {
210      callback.apply(obj, args);
211      last = now; //can be set up to call the callback one more time at the end of the throttle
212
213      if (fire_last) {
214        clearTimeout(timeout);
215        timeout = setTimeout(delayed, interval || 100);
216      }
217    }
218  };
219}
220/**
221 * TODO: improve handling for widthGreaterThan logic - really only relevant if a container should not scroll at a given size
222 * Handle scrolling issue on iOS where background can be scrolled while menu is open
223 * @param element
224 * @param screenSize
225 */
226
227function containScroll(element) {
228  var screenSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
229    x: function x(w) {
230      return w > 0;
231    },
232    y: function y(h) {
233      return h > 0;
234    }
235  };
236
237  var initialClientY = null,
238      cancelIfAtBoundary = function cancelIfAtBoundary(deltaY, e) {
239    if (element.scrollHeight - element.scrollTop <= element.clientHeight && deltaY > 0 || element.scrollTop === 0 && deltaY < 0) {
240      e.preventDefault();
241    }
242  },
243
244  /**
245   * Check screen size constraints
246   * @param e
247   */
248  isScreenCorrectSize = function isScreenCorrectSize() {
249    return screenSize.x(window.innerWidth) && screenSize.y(window.innerHeight);
250  },
251      handleTouchStart = function handleTouchStart(e) {
252    if (!isScreenCorrectSize()) {
253      return false;
254    }
255
256    if (e.targetTouches.length === 1) {
257      // detect single touch
258      initialClientY = e.targetTouches[0].clientY;
259    }
260  },
261      handleTouchMove = function handleTouchMove(e) {
262    if (!isScreenCorrectSize()) {
263      return false;
264    }
265
266    var deltaY = e.targetTouches[0].clientY - initialClientY;
267
268    if (e.targetTouches.length !== 1) {
269      return e;
270    } // invert delat Y here for same logic to work
271
272
273    cancelIfAtBoundary(-deltaY, e);
274    e.stopPropagation();
275    e.stopImmediatePropagation();
276  },
277      handleWheel = function handleWheel(e) {
278    var deltaY = e.deltaY;
279
280    if (!isScreenCorrectSize()) {
281      return false;
282    }
283
284    cancelIfAtBoundary(deltaY, e);
285    e.stopPropagation();
286    e.stopImmediatePropagation();
287  };
288
289  element.addEventListener('touchstart', handleTouchStart);
290  element.addEventListener('touchmove', handleTouchMove, {
291    passive: false
292  });
293  element.addEventListener('wheel', handleWheel, {
294    passive: false
295  });
296}
297/**
298 * way that scrolling can be stopped from propagating if not at boundary, but prop
298agate up if hits boundary
299 */
300
301function allowScrollWithinContainedScroll(element) {
302  var initialClientY = null,
303      stopPropagationIfWithinBoundary = function stopPropagationIfWithinBoundary(deltaY, e) {
304    if (element.scrollHeight - element.offsetHeight >= element.scrollTop && !(element.scrollTop === 0 && deltaY < 0 || element.scrollHeight - element.offsetHeight === element.scrollTop && deltaY > 0)) {
305      e.stopPropagation();
306      e.stopImmediatePropagation();
307    }
308  },
309      handleTouchStart = function handleTouchStart(e) {
310    if (e.targetTouches.length === 1) {
311      // detect single touch
312      initialClientY = e.targetTouches[0].clientY;
313    }
314  },
315      handleTouchMove = function handleTouchMove(e) {
316    var deltaY = e.targetTouches[0].clientY - initialClientY;
317
318    if (e.targetTouches.length !== 1) {
319      return e;
320    } // invert delat Y here for same logic to work
321
322
323    stopPropagationIfWithinBoundary(-deltaY, e);
324  },
325      handleWheel = function handleWheel(e) {
326    var deltaY = e.deltaY;
327    stopPropagationIfWithinBoundary(deltaY, e);
328  };
329
330  element.addEventListener('touchstart', handleTouchStart);
331  element.addEventListener('touchmove', handleTouchMove, {
332    passive: false
333  });
334  element.addEventListener('wheel', handleWheel, {
335    passive: false
336  });
337}
338function sleep(ms) {
339  return new Promise(function (resolve) {
340    return setTimeout(resolve, ms);
341  });
342}
343/**
344 * Props: https://gist.github.com/kosich/23188dd86633b6c2efb7
345 * @param element
346 */
347
348function preventGhosts(element) {
349  var POINTER_TYPE = {
350    MOUSE: 0,
351    TOUCH: 1
352  },
353      ANTI_GHOST_DELAY = 2000,
354      latestInteractionType,
355      latestInteractionTime,
356      mouseEvents = ['mousedown', 'mouseup', 'mousemove'],
357      touchEvents = ['touchstart', 'touchend'];
358
359  function handleTap(type, e) {
360    var now = Date.now();
361
362    if (type !== latestInteractionType) {
363      if (now - latestInteractionTime <= ANTI_GHOST_DELAY) {
364        // console.log('!prevented!');
365        e.preventDefault();
366        e.stopPropagation();
367        e.stopImmediatePropagation();
368        return false;
369      }
370
371      latestInteractionType = type;
372    }
373
374    latestInteractionTime = now;
375  }
376
377  function attachEvents(eventList, interactionType) {
378    eventList.forEach(function (eventName) {
379      element.addEventListener(eventName, handleTap.bind(null, interactionType), true);
380    });
381  }
382
383  attachEvents(mouseEvents, POINTER_TYPE.MOUSE);
384  attachEvents(touchEvents, POINTER_TYPE.TOUCH);
385}
386/**
387 * Prevent a click event on drag
388 */
389
390function preventClickOnDrag(element) {
391  var downX = 0,
392      downY = 0;
393
394  function handleDown(e) {
395    downX = e.screenX;
396    downY = e.screenY;
397  }
398
399  function handleUp(e) {
400    var releaseX = e.screenX,
401        releaseY = e.screenY,
402        dist = Math.sqrt(Math.pow(releaseX - downX, 2) + Math.pow(releaseY - downY, 2));
403
404    if (dist > 10) {
405      e.preventDefault();
406      e.stopPropagation();
407    }
408  }
409
410  element.addEventListener('mousedown', handleDown);
411  element.addEventListener('mouseup', handleUp);
412  element.addEventListener('click', handleUp);
413}
414/**
415 * Set the CSS style attribute of an element
416 * @param el - the element to manipulate
417 * @param props_to - the properties and values to set
418 */
419
420function css(el, props_to) {
421  var styles = getAttributeStyles(el),
422      updated = merge(styles, props_to),
423      style_string = '';
424
425  for (var prop in updated) {
426    if (updated[prop] === null || updated[prop] === '') continue;
427    style_string += prop + ':' + updated[prop] + '; ';
428  }
429
430  style_string = style_string.replace(/;\s?$/, '');
431  el.setAttribute('style', style_string);
432}
433function getAttributeStyles(el) {
434  var string = el.getAttribute('style'),
435      pairs = string ? string.split(';') : [],
436      _tmp,
437      styles = {};
438
439  if (pairs.length <= 0) return styles;
440
441  for (var i = 0, il = pairs.length; i < il; i++) {
442    _tmp = pairs[i].trim().split(/:(.+)?/); //split on first occuence
443
444    if (_tmp[0] == '') continue;
445    styles[_tmp[0].trim()] = _tmp[1].trim();
446  }
447
448  return styles;
449}
450function merge(o1, o2, flat) {
451  var o3 = {};
452  flat = flat === true;
453
454  for (var prop in o1) {
455    if (!o1.hasOwnProperty(prop)) continue;
456    o3[prop] = o1[prop];
457  }
458
459  for (prop in o2) {
460    if (!o2.hasOwnProperty(prop)) continue;
461
462    if (_typeof(o2[prop]) == 'object' && _typeof(o3[prop]) == 'object') {
463      if (!flat) {
464        o3[prop] = merge(o3[prop], o2[prop]);
465      } else {
466        o3[prop] = o2[prop];
467      }
468    } else {
469      o3[prop] = o2[prop];
470    }
471  }
472
473  return o3;
474}
475function getElOffset(el) {
476  var rect = el.getBoundingClientRect(),
477      width = el.offsetWidth,
478      height = el.offsetHeight;
479  return {
480    left: rect.left + window.scrollX,
481    top: rect.top + window.pageYOffset,
482    right: window.innerWidth - rect.left - width,
483    bottom: rect.top + window.pageYOffset + height
484  };
485}
486/**
487 * Find and manage links/ buttons that allow text to be copied to the clipboard
488 */
489
490function manageClipboardLinks() {
491  var _this = this;
492
493  var clipboardLinks = document.querySelectorAll('.js-clipboard-copy');
494  clipboardLinks.forEach(function (link) {
495    link.addEventListener('click', copyToClipboard.bind(_this, link));
496  });
497}
498/**
499 * Copy some text to the clipboard
500 * The target needs to carry the specific text as a data attribute
501 */
502
503function copyToClipboard(link, e) {
504  var copyable = link.getAttribute('data-copy');
505  e.preventDefault();
506
507  if (!navigator || !navigator.clipboard) {
508    console.error("Could not copy - navigator object not available");
509    return false;
510  }
511
512  navigator.clipboard.writeText(copyable).then(function () {
513    link.classList.add('copied');
514    setTimeout(function () {
515      link.classList.remove('copied');
516    }, 2000);
517  });
518}
519
520/***/ }),
521
522/***/ "../../node_modules/moment/locale sync recursive ^\\.\\/.*$":
523/*!*****************************************************************************************************************************************!*\
524  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale sync ^\.\/.*$ ***!
525  \*****************************************************************************************************************************************/
526/*! no static exports found */
527/***/ (function(module, exports, __webpack_require__) {
528
529var map = {
530	"./af": "../../node_modules/moment/locale/af.js",
531	"./af.js": "../../node_modules/moment/locale/af.js",
532	"./ar": "../../node_modules/moment/locale/ar.js",
533	"./ar-dz": "../../node_modules/moment/locale/ar-dz.js",
534	"./ar-dz.js": "../../node_modules/moment/locale/ar-dz.js",
535	"./ar-kw": "../../node_modules/moment/locale/ar-kw.js",
536	"./ar-kw.js": "../../node_modules/moment/locale/ar-kw.js",
537	"./ar-ly": "../../node_modules/moment/locale/ar-ly.js",
538	"./ar-ly.js": "../../node_modules/moment/locale/ar-ly.js",
539	"./ar-ma": "../../node_modules/moment/locale/ar-ma.js",
540	"./ar-ma.js": "../../node_modules/moment/locale/ar-ma.js",
541	"./ar-sa": "../../node_modules/moment/locale/ar-sa.js",
542	"./ar-sa.js": "../../node_modules/moment/locale/ar-sa.js",
543	"./ar-tn": "../../node_modules/moment/locale/ar-tn.js",
544	"./ar-tn.js": "../../node_modules/moment/locale/ar-tn.js",
545	"./ar.js": "../../node_modules/moment/locale/ar.js",
546	"./az": "../../node_modules/moment/locale/az.js",
547	"./az.js": "../../node_modules/moment/locale/az.js",
548	"./be": "../../node_modules/moment/locale/be.js",
549	"./be.js": "../../node_modules/moment/locale/be.js",
550	"./bg": "../../node_modules/moment/locale/bg.js",
551	"./bg.js": "../../node_modules/moment/locale/bg.js",
552	"./bm": "../../node_modules/moment/locale/bm.js",
553	"./bm.js": "../../node_modules/moment/locale/bm.js",
554	"./bn": "../../node_modules/moment/locale/bn.js",
555	"./bn.js": "../../node_modules/moment/locale/bn.js",
556	"./bo": "../../node_modules/moment/locale/bo.js",
557	"./bo.js": "../../node_modules/moment/locale/bo.js",
558	"./br": "../../node_modules/moment/locale/br.js",
559	"./br.js": "../../node_modules/moment/locale/br.js",
560	"./bs": "../../node_modules/moment/locale/bs.js",
561	"./bs.js": "../../node_modules/moment/locale/bs.js",
562	"./ca": "../../node_modules/moment/locale/ca.js",
563	"./ca.js": "../../node_modules/moment/locale/ca.js",
564	"./cs": "../../node_modules/moment/locale/cs.js",
565	"./cs.js": "../../node_modules/moment/locale/cs.js",
566	"./cv": "../../node_modules/moment/locale/cv.js",
567	"./cv.js": "../../node_modules/moment/locale/cv.js",
568	"./cy": "../../node_modules/moment/locale/cy.js",
569	"./cy.js": "../../node_modules/moment/locale/cy.js",
570	"./da": "../../node_modules/moment/locale/da.js",
571	"./da.js": "../../node_modules/moment/locale/da.js",
572	"./de": "../../node_modules/moment/locale/de.js",
573	"./de-at": "../../node_modules/moment/locale/de-at.js",
574	"./de-at.js": "../../node_modules/moment/locale/de-at.js",
575	"./de-ch": "../../node_modules/moment/locale/de-ch.js",
576	"./de-ch.js": "../../node_modules/moment/locale/de-ch.js",
577	"./de.js": "../../node_modules/moment/locale/de.js",
578	"./dv": "../../node_modules/moment/locale/dv.js",
579	"./dv.js": "../../node_modules/moment/locale/dv.js",
580	"./el": "../../node_modules/moment/locale/el.js",
581	"./el.js": "../../node_modules/moment/locale/el.js",
582	"./en-au": "../../node_modules/moment/locale/en-au.js",
583	"./en-au.js": "../../node_modules/moment/locale/en-au.js",
584	"./en-ca": "../../node_modules/moment/locale/en-ca.js",
585	"./en-ca.js": "../../node_modules/moment/locale/en-ca.js",
586	"./en-gb": "../../node_modules/moment/locale/en-gb.js",
587	"./en-gb.js": "../../node_modules/moment/locale/en-gb.js",
588	"./en-ie": "../../node_modules/moment/locale/en-ie.js",
589	"./en-ie.js": "../../node_modules/moment/locale/en-ie.js",
590	"./en-il": "../../node_modules/moment/locale/en-il.js",
591	"./en-il.js": "../../node_modules/moment/locale/en-il.js",
592	"./en-in": "../../node_modules/moment/locale/en-in.js",
593	"./en-in.js": "../../node_modules/moment/locale/en-in.js",
594	"./en-nz": "../../node_modules/moment/locale/en-nz.js",
595	"./en-nz.js": "../../node_modules/moment/locale/en-nz.js",
596	"./en-sg": "../../node_modules/moment/locale/en-sg.js",
597	"./en-sg.js": "../../node_modules/moment/locale/en-sg.js",
598	"./eo": "../../node_modules/moment/locale/eo.js",
599	"./eo.js": "../../node_modules/moment/locale/eo.js",
600	"./es": "../../node_modules/moment/locale/es.js",
601	"./es-do": "../../node_modules/moment/locale/es-do.js",
602	"./es-do.js": "../../node_modules/moment/locale/es-do.js",
603	"./es-us": "../../node_modules/moment/locale/es-us.js",
604	"./es-us.js": "../../node_modules/moment/locale/es-us.js",
605	"./es.js": "../../node_modules/moment/locale/es.js",
606	"./et": "../../node_modules/moment/locale/et.js",
607	"./et.js": "../../node_modules/moment/locale/et.js",
608	"./eu": "../../node_modules/moment/locale/eu.js",
609	"./eu.js": "../../node_modules/moment/locale/eu.js",
610	"./fa": "../../node_modules/moment/locale/fa.js",
611	"./fa.js": "../../node_modules/moment/locale/fa.js",
612	"./fi": "../../node_modules/moment/locale/fi.js",
613	"./fi.js": "../../node_modules/moment/locale/fi.js",
614	"./fil": "../../node_modules/moment/locale/fil.js",
615	"./fil.js": "../../node_modules/moment/locale/fil.js",
616	"./fo": "../../node_modules/moment/locale/fo.js",
617	"./fo.js": "../../node_modules/moment/locale/fo.js",
618	"./fr": "../../node_modules/moment/locale/fr.js",
619	"./fr-ca": "../../node_modules/moment/locale/fr-ca.js",
620	"./fr-ca.js": "../../node_modules/moment/locale/fr-ca.js",
621	"./fr-ch": "../../node_modules/moment/locale/fr-ch.js",
622	"./fr-ch.js": "../../node_modules/moment/locale/fr-ch.js",
623	"./fr.js": "../../node_modules/moment/locale/fr.js",
624	"./fy": "../../node_modules/moment/locale/fy.js",
625	"./fy.js": "../../node_modules/moment/locale/fy.js",
626	"./ga": "../../node_modules/moment/locale/ga.js",
627	"./ga.js": "../../node_modules/moment/locale/ga.js",
628	"./gd": "../../node_modules/moment/locale/gd.js",
629	"./gd.js": "../../node_modules/moment/locale/gd.js",
630	"./gl": "../../node_modules/moment/locale/gl.js",
631	"./gl.js": "../../node_modules/moment/locale/gl.js",
632	"./gom-deva": "../../node_modules/moment/locale/gom-deva.js",
633	"./gom-deva.js": "../../node_modules/moment/locale/gom-deva.js",
634	"./gom-latn": "../../node_modules/moment/locale/gom-latn.js",
635	"./gom-latn.js": "../../node_modules/moment/locale/gom-latn.js",
636	"./gu": "../../node_modules/moment/locale/gu.js",
637	"./gu.js": "../../node_modules/moment/locale/gu.js",
638	"./he": "../../node_modules/moment/locale/he.js",
639	"./he.js": "../../node_modules/moment/locale/he.js",
640	"./hi": "../../node_modules/moment/locale/hi.js",
641	"./hi.js": "../../node_modules/moment/locale/hi.js",
642	"./hr": "../../node_modules/moment/locale/hr.js",
643	"./hr.js": "../../node_modules/moment/locale/hr.js",
644	"./hu": "../../node_modules/moment/locale/hu.js",
645	"./hu.js": "../../node_modules/moment/locale/hu.js",
646	"./hy-am": "../../node_modules/moment/locale/hy-am.js",
647	"./hy-am.js": "../../node_modules/moment/locale/hy-am.js",
648	"./id": "../../node_modules/moment/locale/id.js",
649	"./id.js": "../../node_modules/moment/locale/id.js",
650	"./is": "../../node_modules/moment/locale/is.js",
651	"./is.js": "../../node_modules/moment/locale/is.js",
652	"./it": "../../node_modules/moment/locale/it.js",
653	"./it-ch": "../../node_modules/moment/locale/it-ch.js",
654	"./it-ch.js": "../../node_modules/moment/locale/it-ch.js",
655	"./it.js": "../../node_modules/moment/locale/it.js",
656	"./ja": "../../node_modules/moment/locale/ja.js",
657	"./ja.js": "../../node_modules/moment/locale/ja.js",
658	"./jv": "../../node_modules/moment/locale/jv.js",
659	"./jv.js": "../../node_modules/moment/locale/jv.js",
660	"./ka": "../../node_modules/moment/locale/ka.js",
661	"./ka.js": "../../node_modules/moment/locale/ka.js",
662	"./kk": "../../node_modules/moment/locale/kk.js",
663	"./kk.js": "../../node_modules/moment/locale/kk.js",
664	"./km": "../../node_modules/moment/locale/km.js",
665	"./km.js": "../../node_modules/moment/locale/km.js",
666	"./kn": "../../node_modules/moment/locale/kn.js",
667	"./kn.js": "../../node_modules/moment/locale/kn.js",
668	"./ko": "../../node_modules/moment/locale/ko.js",
669	"./ko.js": "../../node_modules/moment/locale/ko.js",
670	"./ku": "../../node_modules/moment/locale/ku.js",
671	"./ku.js": "../../node_modules/moment/locale/ku.js",
672	"./ky": "../../node_modules/moment/locale/ky.js",
673	"./ky.js": "../../node_modules/moment/locale/ky.js",
674	"./lb": "../../node_modules/moment/locale/lb.js",
675	"./lb.js": "../../node_modules/moment/locale/lb.js",
676	"./lo": "../../node_modules/moment/locale/lo.js",
677	"./lo.js": "../../node_modules/moment/locale/lo.js",
678	"./lt": "../../node_modules/moment/locale/lt.js",
679	"./lt.js": "../../node_modules/moment/locale/lt.js",
680	"./lv": "../../node_modules/moment/locale/lv.js",
681	"./lv.js": "../../node_modules/moment/locale/lv.js",
682	"./me": "../../node_modules/moment/locale/me.js",
683	"./me.js": "../../node_modules/moment/locale/me.js",
684	"./mi": "../../node_modules/moment/locale/mi.js",
685	"./mi.js": "../../node_modules/moment/locale/mi.js",
686	"./mk": "../../node_modules/moment/locale/mk.js",
687	"./mk.js": "../../node_modules/moment/locale/mk.js",
688	"./ml": "../../node_modules/moment/locale/ml.js",
689	"./ml.js": "../../node_modules/moment/locale/ml.js",
690	"./mn": "../../node_modules/moment/locale/mn.js",
691	"./mn.js": "../../node_modules/moment/locale/mn.js",
692	"./mr": "../../node_modules/moment/locale/mr.js",
693	"./mr.js": "../../node_modules/moment/locale/mr.js",
694	"./ms": "../../node_modules/moment/locale/ms.js",
695	"./ms-my": "../../node_modules/moment/locale/ms-my.js",
696	"./ms-my.js": "../../node_modules/moment/locale/ms-my.js",
697	"./ms.js": "../../node_modules/moment/locale/ms.js",
698	"./mt": "../../node_modules/moment/locale/mt.js",
699	"./mt.js": "../../node_modules/moment/locale/mt.js",
700	"./my": "../../node_modules/moment/locale/my.js",
701	"./my.js": "../../node_modules/moment/locale/my.js",
702	"./nb": "../../node_modules/moment/locale/nb.js",
703	"./nb.js": "../../node_modules/moment/locale/nb.js",
704	"./ne": "../../node_modules/moment/locale/ne.js",
705	"./ne.js": "../../node_modules/moment/locale/ne.js",
706	"./nl": "../../node_modules/moment/locale/nl.js",
707	"./nl-be": "../../node_modules/moment/locale/nl-be.js",
708	"./nl-be.js": "../../node_modules/moment/locale/nl-be.js",
709	"./nl.js": "../../node_modules/moment/locale/nl.js",
710	"./nn": "../../node_modules/moment/locale/nn.js",
711	"./nn.js": "../../node_modules/moment/locale/nn.js",
712	"./oc-lnc": "../../node_modules/moment/locale/oc-lnc.js",
713	"./oc-lnc.js": "../../node_modules/moment/locale/oc-lnc.js",
714	"./pa-in": "../../node_modules/moment/locale/pa-in.js",
715	"./pa-in.js": "../../node_modules/moment/locale/pa-in.js",
716	"./pl": "../../node_modules/moment/locale/pl.js",
717	"./pl.js": "../../node_modules/moment/locale/pl.js",
718	"./pt": "../../node_modules/moment/locale/pt.js",
719	"./pt-br": "../../node_modules/moment/locale/pt-br.js",
720	"./pt-br.js": "../../node_modules/moment/locale/pt-br.js",
721	"./pt.js": "../../node_modules/moment/locale/pt.js",
722	"./ro": "../../node_modules/moment/locale/ro.js",
723	"./ro.js": "../../node_modules/moment/locale/ro.js",
724	"./ru": "../../node_modules/moment/locale/ru.js",
725	"./ru.js": "../../node_modules/moment/locale/ru.js",
726	"./sd": "../../node_modules/moment/locale/sd.js",
727	"./sd.js": "../../node_modules/moment/locale/sd.js",
728	"./se": "../../node_modules/moment/locale/se.js",
729	"./se.js": "../../node_modules/moment/locale/se.js",
730	"./si": "../../node_modules/moment/locale/si.js",
731	"./si.js": "../../node_modules/moment/locale/si.js",
732	"./sk": "../../node_modules/moment/locale/sk.js",
733	"./sk.js": "../../node_modules/moment/locale/sk.js",
734	"./sl": "../../node_modules/moment/locale/sl.js",
735	"./sl.js": "../../node_modules/moment/locale/sl.js",
736	"./sq": "../../node_modules/moment/locale/sq.js",
737	"./sq.js": "../../node_modules/moment/locale/sq.js",
738	"./sr": "../../node_modules/moment/locale/sr.js",
739	"./sr-cyrl": "../../node_modules/moment/locale/sr-cyrl.js",
740	"./sr-cyrl.js": "../../node_modules/moment/locale/sr-cyrl.js",
741	"./sr.js": "../../node_modules/moment/locale/sr.js",
742	"./ss": "../../node_modules/moment/locale/ss.js",
743	"./ss.js": "../../node_modules/moment/locale/ss.js",
744	"./sv": "../../node_modules/moment/locale/sv.js",
745	"./sv.js": "../../node_modules/moment/locale/sv.js",
746	"./sw": "../../node_modules/moment/locale/sw.js",
747	"./sw.js": "../../node_modules/moment/locale/sw.js",
748	"./ta": "../../node_modules/moment/locale/ta.js",
749	"./ta.js": "../../node_modules/moment/locale/ta.js",
750	"./te": "../../node_modules/moment/locale/te.js",
751	"./te.js": "../../node_modules/moment/locale/te.js",
752	"./tet": "../../node_modules/moment/locale/tet.js",
753	"./tet.js": "../../node_modules/moment/locale/tet.js",
754	"./tg": "../../node_modules/moment/locale/tg.js",
755	"./tg.js": "../../node_modules/moment/locale/tg.js",
756	"./th": "../../node_modules/moment/locale/th.js",
757	"./th.js": "../../node_modules/moment/locale/th.js",
758	"./tk": "../../node_modules/moment/locale/tk.js",
759	"./tk.js": "../../node_modules/moment/locale/tk.js",
760	"./tl-ph": "../../node_modules/moment/locale/tl-ph.js",
761	"./tl-ph.js": "../../node_modules/moment/locale/tl-ph.js",
762	"./tlh": "../../node_modules/moment/locale/tlh.js",
763	"./tlh.js": "../../node_modules/moment/locale/tlh.js",
vendor: 2,438 bytes, lines 764-819
764	"./tr": "../../node_modules/moment/locale/tr.js",
765	"./tr.js": "../../node_modules/moment/locale/tr.js",
766	"./tzl": "../../node_modules/moment/locale/tzl.js",
767	"./tzl.js": "../../node_modules/moment/locale/tzl.js",
768	"./tzm": "../../node_modules/moment/locale/tzm.js",
769	"./tzm-latn": "../../node_modules/moment/locale/tzm-latn.js",
770	"./tzm-latn.js": "../../node_modules/moment/locale/tzm-latn.js",
771	"./tzm.js": "../../node_modules/moment/locale/tzm.js",
772	"./ug-cn": "../../node_modules/moment/locale/ug-cn.js",
773	"./ug-cn.js": "../../node_modules/moment/locale/ug-cn.js",
774	"./uk": "../../node_modules/moment/locale/uk.js",
775	"./uk.js": "../../node_modules/moment/locale/uk.js",
776	"./ur": "../../node_modules/moment/locale/ur.js",
777	"./ur.js": "../../node_modules/moment/locale/ur.js",
778	"./uz": "../../node_modules/moment/locale/uz.js",
779	"./uz-latn": "../../node_modules/moment/locale/uz-latn.js",
780	"./uz-latn.js": "../../node_modules/moment/locale/uz-latn.js",
781	"./uz.js": "../../node_modules/moment/locale/uz.js",
782	"./vi": "../../node_modules/moment/locale/vi.js",
783	"./vi.js": "../../node_modules/moment/locale/vi.js",
784	"./x-pseudo": "../../node_modules/moment/locale/x-pseudo.js",
785	"./x-pseudo.js": "../../node_modules/moment/locale/x-pseudo.js",
786	"./yo": "../../node_modules/moment/locale/yo.js",
787	"./yo.js": "../../node_modules/moment/locale/yo.js",
788	"./zh-cn": "../../node_modules/moment/locale/zh-cn.js",
789	"./zh-cn.js": "../../node_modules/moment/locale/zh-cn.js",
790	"./zh-hk": "../../node_modules/moment/locale/zh-hk.js",
791	"./zh-hk.js": "../../node_modules/moment/locale/zh-hk.js",
792	"./zh-mo": "../../node_modules/moment/locale/zh-mo.js",
793	"./zh-mo.js": "../../node_modules/moment/locale/zh-mo.js",
794	"./zh-tw": "../../node_modules/moment/locale/zh-tw.js",
795	"./zh-tw.js": "../../node_modules/moment/locale/zh-tw.js"
796};
797
798
799function webpackContext(req) {
800	var id = webpackContextResolve(req);
801	return __webpack_require__(id);
802}
803function webpackContextResolve(req) {
804	if(!__webpack_require__.o(map, req)) {
805		var e = new Error("Cannot find module '" + req + "'");
806		e.code = 'MODULE_NOT_FOUND';
807		throw e;
808	}
809	return map[req];
810}
811webpackContext.keys = function webpackContextKeys() {
812	return Object.keys(map);
813};
814webpackContext.resolve = webpackContextResolve;
815module.exports = webpackContext;
816webpackContext.id = "../../node_modules/moment/locale sync recursive ^\\.\\/.*$";
817
818/***/ }),
819
vendor: 3,263 bytes, lines 820-910
820/***/ "../../node_modules/moment/locale/af.js":
821/*!*********************************************************************************************************************************!*\
822  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/af.js ***!
823  \*********************************************************************************************************************************/
824/*! no static exports found */
825/***/ (function(module, exports, __webpack_require__) {
826
827//! moment.js locale configuration
828//! locale : Afrikaans [af]
829//! author : Werner Mollentze : https://github.com/wernerm
830
831;(function (global, factory) {
832    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
833   undefined
834}(this, (function (moment) { 'use strict';
835
836    //! moment.js locale configuration
837
838    var af = moment.defineLocale('af', {
839        months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(
840            '_'
841        ),
842        monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
843        weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(
844            '_'
845        ),
846        weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
847        weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
848        meridiemParse: /vm|nm/i,
849        isPM: function (input) {
850            return /^nm$/i.test(input);
851        },
852        meridiem: function (hours, minutes, isLower) {
853            if (hours < 12) {
854                return isLower ? 'vm' : 'VM';
855            } else {
856                return isLower ? 'nm' : 'NM';
857            }
858        },
859        longDateFormat: {
860            LT: 'HH:mm',
861            LTS: 'HH:mm:ss',
862            L: 'DD/MM/YYYY',
863            LL: 'D MMMM YYYY',
864            LLL: 'D MMMM YYYY HH:mm',
865            LLLL: 'dddd, D MMMM YYYY HH:mm',
866        },
867        calendar: {
868            sameDay: '[Vandag om] LT',
869            nextDay: '[Môre om] LT',
870            nextWeek: 'dddd [om] LT',
871            lastDay: '[Gister om] LT',
872            lastWeek: '[Laas] dddd [om] LT',
873            sameElse: 'L',
874        },
875        relativeTime: {
876            future: 'oor %s',
877            past: '%s gelede',
878            s: "'n paar sekondes",
879            ss: '%d sekondes',
880            m: "'n minuut",
881            mm: '%d minute',
882            h: "'n uur",
883            hh: '%d ure',
884            d: "'n dag",
885            dd: '%d dae',
886            M: "'n maand",
887            MM: '%d maande',
888            y: "'n jaar",
889            yy: '%d jaar',
890        },
891        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
892        ordinal: function (number) {
893            return (
894                number +
895                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
896            ); // Thanks to Joris Röling : https://github.com/jjupiter
897        },
898        week: {
899            dow: 1, // Maandag is die eerste dag van die week.
900            doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
901        },
902    });
903
904    return af;
905
906})));
907
908
909/***/ }),
910
vendor: 5,984 bytes, lines 911-1086
911/***/ "../../node_modules/moment/locale/ar-dz.js":
912/*!************************************************************************************************************************************!*\
913  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ar-dz.js ***!
914  \************************************************************************************************************************************/
915/*! no static exports found */
916/***/ (function(module, exports, __webpack_require__) {
917
918//! moment.js locale configuration
919//! locale : Arabic (Algeria) [ar-dz]
920//! author : Amine Roukh: https://github.com/Amine27
921//! author : Abdel Said: https://github.com/abdelsaid
922//! author : Ahmed Elkhatib
923//! author : forabi https://github.com/forabi
924//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem
925
926;(function (global, factory) {
927    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
928   undefined
929}(this, (function (moment) { 'use strict';
930
931    //! moment.js locale configuration
932
933    var pluralForm = function (n) {
934            return n === 0
935                ? 0
936                : n === 1
937                ? 1
938                : n === 2
939                ? 2
940                : n % 100 >= 3 && n % 100 <= 10
941                ? 3
942                : n % 100 >= 11
943                ? 4
944                : 5;
945        },
946        plurals = {
947            s: [
948                'أقل من ثانية',
949                'ثانية واحدة',
950                ['ثانيتان', 'ثانيتين'],
951                '%d ثوان',
952                '%d ثانية',
953                '%d ثانية',
954            ],
955            m: [
956                'أقل من دقيقة',
957                'دقيقة واحدة',
958                ['دقيقتان', 'دقيقتين'],
959                '%d دقائق',
960                '%d دقيقة',
961                '%d دقيقة',
962            ],
963            h: [
964                'أقل من ساعة',
965                'ساعة واحدة',
966                ['ساعتان', 'ساعتين'],
967                '%d ساعات',
968                '%d ساعة',
969                '%d ساعة',
970            ],
971            d: [
972                'أقل من يوم',
973                'يوم واحد',
974                ['يومان', 'يومين'],
975                '%d أيام',
976                '%d يومًا',
977                '%d يوم',
978            ],
979            M: [
980                'أقل من شهر',
981                'شهر واحد',
982                ['شهران', 'شهرين'],
983                '%d أشهر',
984                '%d شهرا',
985                '%d شهر',
986            ],
987            y: [
988                'أقل من عام',
989                'عام واحد',
990                ['عامان', 'عامين'],
991                '%d أعوام',
992                '%d عامًا',
993                '%d عام',
994            ],
995        },
996        pluralize = function (u) {
997            return function (number, withoutSuffix, string, isFuture) {
998                var f = pluralForm(number),
999                    str = plurals[u][pluralForm(number)];
1000                if (f === 2) {
1001                    str = str[withoutSuffix ? 0 : 1];
1002                }
1003                return str.replace(/%d/i, number);
1004            };
1005        },
1006        months = [
1007            'جانفي',
1008            'فيفري',
1009            'مارس',
1010            'أفريل',
1011            'ماي',
1012            'جوان',
1013            'جويلية',
1014            'أوت',
1015            'سبتمبر',
1016            'أكتوبر',
1017            'نوفمبر',
1018            'ديسمبر',
1019        ];
1020
1021    var arDz = moment.defineLocale('ar-dz', {
1022        months: months,
1023        monthsShort: months,
1024        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
1025        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
1026        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
1027        weekdaysParseExact: true,
1028        longDateFormat: {
1029            LT: 'HH:mm',
1030            LTS: 'HH:mm:ss',
1031            L: 'D/\u200FM/\u200FYYYY',
1032            LL: 'D MMMM YYYY',
1033            LLL: 'D MMMM YYYY HH:mm',
1034            LLLL: 'dddd D MMMM YYYY HH:mm',
1035        },
1036        meridiemParse: /ص|م/,
1037        isPM: function (input) {
1038            return 'م' === input;
1039        },
1040        meridiem: function (hour, minute, isLower) {
1041            if (hour < 12) {
1042                return 'ص';
1043            } else {
1044                return 'م';
1045            }
1046        },
1047        calendar: {
1048            sameDay: '[اليوم عند الساعة] LT',
1049            nextDay: '[غدًا عند الساعة] LT',
1050            nextWeek: 'dddd [عند الساعة] LT',
1051            lastDay: '[أمس عند الساعة] LT',
1052            lastWeek: 'dddd [عند الساعة] LT',
1053            sameElse: 'L',
1054        },
1055        relativeTime: {
1056            future: 'بعد %s',
1057            past: 'منذ %s',
1058            s: pluralize('s'),
1059            ss: pluralize('s'),
1060            m: pluralize('m'),
1061            mm: pluralize('m'),
1062            h: pluralize('h'),
1063            hh: pluralize('h'),
1064            d: pluralize('d'),
1065            dd: pluralize('d'),
1066            M: pluralize('M'),
1067            MM: pluralize('M'),
1068            y: pluralize('y'),
1069            yy: pluralize('y'),
1070        },
1071        postformat: function (string) {
1072            return string.replace(/,/g, '،');
1073        },
1074        week: {
1075            dow: 0, // Sunday is the first day of the week.
1076            doy: 4, // The week that contains Jan 4th is the first week of the year.
1077        },
1078    });
1079
1080    return arDz;
1081
1082})));
1083
1084
1085/***/ }),
1086
vendor: 2,963 bytes, lines 1087-1160
1087/***/ "../../node_modules/moment/locale/ar-kw.js":
1088/*!************************************************************************************************************************************!*\
1089  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ar-kw.js ***!
1090  \************************************************************************************************************************************/
1091/*! no static exports found */
1092/***/ (function(module, exports, __webpack_require__) {
1093
1094//! moment.js locale configuration
1095//! locale : Arabic (Kuwait) [ar-kw]
1096//! author : Nusret Parlak: https://github.com/nusretparlak
1097
1098;(function (global, factory) {
1099    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
1100   undefined
1101}(this, (function (moment) { 'use strict';
1102
1103    //! moment.js locale configuration
1104
1105    var arKw = moment.defineLocale('ar-kw', {
1106        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
1107            '_'
1108        ),
1109        monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
1110            '_'
1111        ),
1112        weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
1113        weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
1114        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
1115        weekdaysParseExact: true,
1116        longDateFormat: {
1117            LT: 'HH:mm',
1118            LTS: 'HH:mm:ss',
1119            L: 'DD/MM/YYYY',
1120            LL: 'D MMMM YYYY',
1121            LLL: 'D MMMM YYYY HH:mm',
1122            LLLL: 'dddd D MMMM YYYY HH:mm',
1123        },
1124        calendar: {
1125            sameDay: '[اليوم على الساعة] LT',
1126            nextDay: '[غدا على الساعة] LT',
1127            nextWeek: 'dddd [على الساعة] LT',
1128            lastDay: '[أمس على الساعة] LT',
1129            lastWeek: 'dddd [على الساعة] LT',
1130            sameElse: 'L',
1131        },
1132        relativeTime: {
1133            future: 'في %s',
1134            past: 'منذ %s',
1135            s: 'ثوان',
1136            ss: '%d ثانية',
1137            m: 'دقيقة',
1138            mm: '%d دقائق',
1139            h: 'ساعة',
1140            hh: '%d ساعات',
1141            d: 'يوم',
1142            dd: '%d أيام',
1143            M: 'شهر',
1144            MM: '%d أشهر',
1145            y: 'سنة',
1146            yy: '%d سنوات',
1147        },
1148        week: {
1149            dow: 0, // Sunday is the first day of the week.
1150            doy: 12, // The week that contains Jan 12th is the first week of the year.
1151        },
1152    });
1153
1154    return arKw;
1155
1156})));
1157
1158
1159/***/ }),
1160
vendor: 6,294 bytes, lines 1161-1351
1161/***/ "../../node_modules/moment/locale/ar-ly.js":
1162/*!************************************************************************************************************************************!*\
1163  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ar-ly.js ***!
1164  \************************************************************************************************************************************/
1165/*! no static exports found */
1166/***/ (function(module, exports, __webpack_require__) {
1167
1168//! moment.js locale configuration
1169//! locale : Arabic (Lybia) [ar-ly]
1170//! author : Ali Hmer: https://github.com/kikoanis
1171
1172;(function (global, factory) {
1173    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
1174   undefined
1175}(this, (function (moment) { 'use strict';
1176
1177    //! moment.js locale configuration
1178
1179    var symbolMap = {
1180            '1': '1',
1181            '2': '2',
1182            '3': '3',
1183            '4': '4',
1184            '5': '5',
1185            '6': '6',
1186            '7': '7',
1187            '8': '8',
1188            '9': '9',
1189            '0': '0',
1190        },
1191        pluralForm = function (n) {
1192            return n === 0
1193                ? 0
1194                : n === 1
1195                ? 1
1196                : n === 2
1197                ? 2
1198                : n % 100 >= 3 && n % 100 <= 10
1199                ? 3
1200                : n % 100 >= 11
1201                ? 4
1202                : 5;
1203        },
1204        plurals = {
1205            s: [
1206                'أقل من ثانية',
1207                'ثانية واحدة',
1208                ['ثانيتان', 'ثانيتين'],
1209                '%d ثوان',
1210                '%d ثانية',
1211                '%d ثانية',
1212            ],
1213            m: [
1214                'أقل من دقيقة',
1215                'دقيقة واحدة',
1216                ['دقيقتان', 'دقيقتين'],
1217                '%d دقائق',
1218                '%d دقيقة',
1219                '%d دقيقة',
1220            ],
1221            h: [
1222                'أقل من ساعة',
1223                'ساعة واحدة',
1224                ['ساعتان', 'ساعتين'],
1225                '%d ساعات',
1226                '%d ساعة',
1227                '%d ساعة',
1228            ],
1229            d: [
1230                'أقل من يوم',
1231                'يوم واحد',
1232                ['يومان', 'يومين'],
1233                '%d أيام',
1234                '%d يومًا',
1235                '%d يوم',
1236            ],
1237            M: [
1238                'أقل من شهر',
1239                'شهر واحد',
1240                ['شهران', 'شهرين'],
1241                '%d أشهر',
1242                '%d شهرا',
1243                '%d شهر',
1244            ],
1245            y: [
1246                'أقل من عام',
1247                'عام واحد',
1248                ['عامان', 'عامين'],
1249                '%d أعوام',
1250                '%d عامًا',
1251                '%d عام',
1252            ],
1253        },
1254        pluralize = function (u) {
1255            return function (number, withoutSuffix, string, isFuture) {
1256                var f = pluralForm(number),
1257                    str = plurals[u][pluralForm(number)];
1258                if (f === 2) {
1259                    str = str[withoutSuffix ? 0 : 1];
1260                }
1261                return str.replace(/%d/i, number);
1262            };
1263        },
1264        months = [
1265            'يناير',
1266            'فبراير',
1267            'مارس',
1268            'أبريل',
1269            'مايو',
1270            'يونيو',
1271            'يوليو',
1272            'أغسطس',
1273            'سبتمبر',
1274            'أكتوبر',
1275            'نوفمبر',
1276            'ديسمبر',
1277        ];
1278
1279    var arLy = moment.defineLocale('ar-ly', {
1280        months: months,
1281        monthsShort: months,
1282        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
1283        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
1284        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
1285        weekdaysParseExact: true,
1286        longDateFormat: {
1287            LT: 'HH:mm',
1288            LTS: 'HH:mm:ss',
1289            L: 'D/\u200FM/\u200FYYYY',
1290            LL: 'D MMMM YYYY',
1291            LLL: 'D MMMM YYYY HH:mm',
1292            LLLL: 'dddd D MMMM YYYY HH:mm',
1293        },
1294        meridiemParse: /ص|م/,
1295        isPM: function (input) {
1296            return 'م' === input;
1297        },
1298        meridiem: function (hour, minute, isLower) {
1299            if (hour < 12) {
1300                return 'ص';
1301            } else {
1302                return 'م';
1303            }
1304        },
1305        calendar: {
1306            sameDay: '[اليوم عند الساعة] LT',
1307            nextDay: '[غدًا عند الساعة] LT',
1308            nextWeek: 'dddd [عند الساعة] LT',
1309            lastDay: '[أمس عند الساعة] LT',
1310            lastWeek: 'dddd [عند الساعة] LT',
1311            sameElse: 'L',
1312        },
1313        relativeTime: {
1314            future: 'بعد %s',
1315            past: 'منذ %s',
1316            s: pluralize('s'),
1317            ss: pluralize('s'),
1318            m: pluralize('m'),
1319            mm: pluralize('m'),
1320            h: pluralize('h'),
1321            hh: pluralize('h'),
1322            d: pluralize('d'),
1323            dd: pluralize('d'),
1324            M: pluralize('M'),
1325            MM: pluralize('M'),
1326            y: pluralize('y'),
1327            yy: pluralize('y'),
1328        },
1329        preparse: function (string) {
1330            return string.replace(/،/g, ',');
1331        },
1332        postformat: function (string) {
1333            return string
1334                .replace(/\d/g, function (match) {
1335                    return symbolMap[match];
1336                })
1337                .replace(/,/g, '،');
1338        },
1339        week: {
1340            dow: 6, // Saturday is the first day of the week.
1341            doy: 12, // The week that contains Jan 12th is the first week of the year.
1342        },
1343    });
1344
1345    return arLy;
1346
1347})));
1348
1349
1350/***/ }),
1351
vendor: 3,023 bytes, lines 1352-1426
1352/***/ "../../node_modules/moment/locale/ar-ma.js":
1353/*!************************************************************************************************************************************!*\
1354  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ar-ma.js ***!
1355  \************************************************************************************************************************************/
1356/*! no static exports found */
1357/***/ (function(module, exports, __webpack_require__) {
1358
1359//! moment.js locale configuration
1360//! locale : Arabic (Morocco) [ar-ma]
1361//! author : ElFadili Yassine : https://github.com/ElFadiliY
1362//! author : Abdel Said : https://github.com/abdelsaid
1363
1364;(function (global, factory) {
1365    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
1366   undefined
1367}(this, (function (moment) { 'use strict';
1368
1369    //! moment.js locale configuration
1370
1371    var arMa = moment.defineLocale('ar-ma', {
1372        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
1373            '_'
1374        ),
1375        monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
1376            '_'
1377        ),
1378        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
1379        weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
1380        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
1381        weekdaysParseExact: true,
1382        longDateFormat: {
1383            LT: 'HH:mm',
1384            LTS: 'HH:mm:ss',
1385            L: 'DD/MM/YYYY',
1386            LL: 'D MMMM YYYY',
1387            LLL: 'D MMMM YYYY HH:mm',
1388            LLLL: 'dddd D MMMM YYYY HH:mm',
1389        },
1390        calendar: {
1391            sameDay: '[اليوم على الساعة] LT',
1392            nextDay: '[غدا على الساعة] LT',
1393            nextWeek: 'dddd [على الساعة] LT',
1394            lastDay: '[أمس على الساعة] LT',
1395            lastWeek: 'dddd [على الساعة] LT',
1396            sameElse: 'L',
1397        },
1398        relativeTime: {
1399            future: 'في %s',
1400            past: 'منذ %s',
1401            s: 'ثوان',
1402            ss: '%d ثانية',
1403            m: 'دقيقة',
1404            mm: '%d دقائق',
1405            h: 'ساعة',
1406            hh: '%d ساعات',
1407            d: 'يوم',
1408            dd: '%d أيام',
1409            M: 'شهر',
1410            MM: '%d أشهر',
1411            y: 'سنة',
1412            yy: '%d سنوات',
1413        },
1414        week: {
1415            dow: 6, // Saturday is the first day of the week.
1416            doy: 12, // The week that contains Jan 12th is the first week of the year.
1417        },
1418    });
1419
1420    return arMa;
1421
1422})));
1423
1424
1425/***/ }),
1426
vendor: 4,337 bytes, lines 1427-1550
1427/***/ "../../node_modules/moment/locale/ar-sa.js":
1428/*!************************************************************************************************************************************!*\
1429  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ar-sa.js ***!
1430  \************************************************************************************************************************************/
1431/*! no static exports found */
1432/***/ (function(module, exports, __webpack_require__) {
1433
1434//! moment.js locale configuration
1435//! locale : Arabic (Saudi Arabia) [ar-sa]
1436//! author : Suhail Alkowaileet : https://github.com/xsoh
1437
1438;(function (global, factory) {
1439    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
1440   undefined
1441}(this, (function (moment) { 'use strict';
1442
1443    //! moment.js locale configuration
1444
1445    var symbolMap = {
1446            '1': 'Ù¡',
1447            '2': 'Ù¢',
1448            '3': 'Ù£',
1449            '4': 'Ù¤',
1450            '5': 'Ù¥',
1451            '6': 'Ù¦',
1452            '7': 'Ù§',
1453            '8': 'Ù¨',
1454            '9': 'Ù©',
1455            '0': 'Ù ',
1456        },
1457        numberMap = {
1458            'Ù¡': '1',
1459            'Ù¢': '2',
1460            'Ù£': '3',
1461            'Ù¤': '4',
1462            'Ù¥': '5',
1463            'Ù¦': '6',
1464            'Ù§': '7',
1465            'Ù¨': '8',
1466            'Ù©': '9',
1467            'Ù ': '0',
1468        };
1469
1470    var arSa = moment.defineLocale('ar-sa', {
1471        months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
1472            '_'
1473        ),
1474        monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
1475            '_'
1476        ),
1477        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
1478        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
1479        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
1480        weekdaysParseExact: true,
1481        longDateFormat: {
1482            LT: 'HH:mm',
1483            LTS: 'HH:mm:ss',
1484            L: 'DD/MM/YYYY',
1485            LL: 'D MMMM YYYY',
1486            LLL: 'D MMMM YYYY HH:mm',
1487            LLLL: 'dddd D MMMM YYYY HH:mm',
1488        },
1489        meridiemParse: /ص|م/,
1490        isPM: function (input) {
1491            return 'م' === input;
1492        },
1493        meridiem: function (hour, minute, isLower) {
1494            if (hour < 12) {
1495                return 'ص';
1496            } else {
1497                return 'م';
1498            }
1499        },
1500        calendar: {
1501            sameDay: '[اليوم على الساعة] LT',
1502            nextDay: '[غدا على الساعة] LT',
1503            nextWeek: 'dddd [على الساعة] LT',
1504            lastDay: '[أمس على الساعة] LT',
1505            lastWeek: 'dddd [على الساعة] LT',
1506            sameElse: 'L',
1507        },
1508        relativeTime: {
1509            future: 'في %s',
1510            past: 'منذ %s',
1511            s: 'ثوان',
1512            ss: '%d ثانية',
1513            m: 'دقيقة',
1514            mm: '%d دقائق',
1515            h: 'ساعة',
1516            hh: '%d ساعات',
1517            d: 'يوم',
1518            dd: '%d أيام',
1519            M: 'شهر',
1520            MM: '%d أشهر',
1521            y: 'سنة',
1522            yy: '%d سنوات',
1523        },
1524        preparse: function (string) {
1525            return string
1526                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
1527                    return numberMap[match];
1528                })
1529                .replace(/،/g, ',');
1530        },
1531        postformat: function (string) {
1532            return string
1533                .replace(/\d/g, function (match) {
1534                    return symbolMap[match];
1535                })
1536                .replace(/,/g, '،');
1537        },
1538        week: {
1539            dow: 0, // Sunday is the first day of the week.
1540            doy: 6, // The week that contains Jan 6th is the first week of the year.
1541        },
1542    });
1543
1544    return arSa;
1545
1546})));
1547
1548
1549/***/ }),
1550
vendor: 2,965 bytes, lines 1551-1624
1551/***/ "../../node_modules/moment/locale/ar-tn.js":
1552/*!************************************************************************************************************************************!*\
1553  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ar-tn.js ***!
1554  \************************************************************************************************************************************/
1555/*! no static exports found */
1556/***/ (function(module, exports, __webpack_require__) {
1557
1558//! moment.js locale configuration
1559//! locale  :  Arabic (Tunisia) [ar-tn]
1560//! author : Nader Toukabri : https://github.com/naderio
1561
1562;(function (global, factory) {
1563    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
1564   undefined
1565}(this, (function (moment) { 'use strict';
1566
1567    //! moment.js locale configuration
1568
1569    var arTn = moment.defineLocale('ar-tn', {
1570        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
1571            '_'
1572        ),
1573        monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
1574            '_'
1575        ),
1576        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
1577        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
1578        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
1579        weekdaysParseExact: true,
1580        longDateFormat: {
1581            LT: 'HH:mm',
1582            LTS: 'HH:mm:ss',
1583            L: 'DD/MM/YYYY',
1584            LL: 'D MMMM YYYY',
1585            LLL: 'D MMMM YYYY HH:mm',
1586            LLLL: 'dddd D MMMM YYYY HH:mm',
1587        },
1588        calendar: {
1589            sameDay: '[اليوم على الساعة] LT',
1590            nextDay: '[غدا على الساعة] LT',
1591            nextWeek: 'dddd [على الساعة] LT',
1592            lastDay: '[أمس على الساعة] LT',
1593            lastWeek: 'dddd [على الساعة] LT',
1594            sameElse: 'L',
1595        },
1596        relativeTime: {
1597            future: 'في %s',
1598            past: 'منذ %s',
1599            s: 'ثوان',
1600            ss: '%d ثانية',
1601            m: 'دقيقة',
1602            mm: '%d دقائق',
1603            h: 'ساعة',
1604            hh: '%d ساعات',
1605            d: 'يوم',
1606            dd: '%d أيام',
1607            M: 'شهر',
1608            MM: '%d أشهر',
1609            y: 'سنة',
1610            yy: '%d سنوات',
1611        },
1612        week: {
1613            dow: 1, // Monday is the first day of the week.
1614            doy: 4, // The week that contains Jan 4th is the first week of the year.
1615        },
1616    });
1617
1618    return arTn;
1619
1620})));
1621
1622
1623/***/ }),
1624
vendor: 6,784 bytes, lines 1625-1833
1625/***/ "../../node_modules/moment/locale/ar.js":
1626/*!*********************************************************************************************************************************!*\
1627  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ar.js ***!
1628  \*********************************************************************************************************************************/
1629/*! no static exports found */
1630/***/ (function(module, exports, __webpack_require__) {
1631
1632//! moment.js locale configuration
1633//! locale : Arabic [ar]
1634//! author : Abdel Said: https://github.com/abdelsaid
1635//! author : Ahmed Elkhatib
1636//! author : forabi https://github.com/forabi
1637
1638;(function (global, factory) {
1639    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
1640   undefined
1641}(this, (function (moment) { 'use strict';
1642
1643    //! moment.js locale configuration
1644
1645    var symbolMap = {
1646            '1': 'Ù¡',
1647            '2': 'Ù¢',
1648            '3': 'Ù£',
1649            '4': 'Ù¤',
1650            '5': 'Ù¥',
1651            '6': 'Ù¦',
1652            '7': 'Ù§',
1653            '8': 'Ù¨',
1654            '9': 'Ù©',
1655            '0': 'Ù ',
1656        },
1657        numberMap = {
1658            'Ù¡': '1',
1659            'Ù¢': '2',
1660            'Ù£': '3',
1661            'Ù¤': '4',
1662            'Ù¥': '5',
1663            'Ù¦': '6',
1664            'Ù§': '7',
1665            'Ù¨': '8',
1666            'Ù©': '9',
1667            'Ù ': '0',
1668        },
1669        pluralForm = function (n) {
1670            return n === 0
1671                ? 0
1672                : n === 1
1673                ? 1
1674                : n === 2
1675                ? 2
1676                : n % 100 >= 3 && n % 100 <= 10
1677                ? 3
1678                : n % 100 >= 11
1679                ? 4
1680                : 5;
1681        },
1682        plurals = {
1683            s: [
1684                'أقل من ثانية',
1685                'ثانية واحدة',
1686                ['ثانيتان', 'ثانيتين'],
1687                '%d ثوان',
1688                '%d ثانية',
1689                '%d ثانية',
1690            ],
1691            m: [
1692                'أقل من دقيقة',
1693                'دقيقة واحدة',
1694                ['دقيقتان', 'دقيقتين'],
1695                '%d دقائق',
1696                '%d دقيقة',
1697                '%d دقيقة',
1698            ],
1699            h: [
1700                'أقل من ساعة',
1701                'ساعة واحدة',
1702                ['ساعتان', 'ساعتين'],
1703                '%d ساعات',
1704                '%d ساعة',
1705                '%d ساعة',
1706            ],
1707            d: [
1708                'أقل من يوم',
1709                'يوم واحد',
1710                ['يومان', 'يومين'],
1711                '%d أيام',
1712                '%d يومًا',
1713                '%d يوم',
1714            ],
1715            M: [
1716                'أقل من شهر',
1717                'شهر واحد',
1718                ['شهران', 'شهرين'],
1719                '%d أشهر',
1720                '%d شهرا',
1721                '%d شهر',
1722            ],
1723            y: [
1724                'أقل من عام',
1725                'عام واحد',
1726                ['عامان', 'عامين'],
1727                '%d أعوام',
1728                '%d عامًا',
1729                '%d عام',
1730            ],
1731        },
1732        pluralize = function (u) {
1733            return function (number, withoutSuffix, string, isFuture) {
1734                var f = pluralForm(number),
1735                    str = plurals[u][pluralForm(number)];
1736                if (f === 2) {
1737                    str = str[withoutSuffix ? 0 : 1];
1738                }
1739                return str.replace(/%d/i, number);
1740            };
1741        },
1742        months = [
1743            'يناير',
1744            'فبراير',
1745            'مارس',
1746            'أبريل',
1747            'مايو',
1748            'يونيو',
1749            'يوليو',
1750            'أغسطس',
1751            'سبتمبر',
1752            'أكتوبر',
1753            'نوفمبر',
1754            'ديسمبر',
1755        ];
1756
1757    var ar = moment.defineLocale('ar', {
1758        months: months,
1759        monthsShort: months,
1760        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
1761        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
1762        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
1763        weekdaysParseExact: true,
1764        longDateFormat: {
1765            LT: 'HH:mm',
1766            LTS: 'HH:mm:ss',
1767            L: 'D/\u200FM/\u200FYYYY',
1768            LL: 'D MMMM YYYY',
1769            LLL: 'D MMMM YYYY HH:mm',
1770            LLLL: 'dddd D MMMM YYYY HH:mm',
1771        },
1772        meridiemParse: /ص|م/,
1773        isPM: function (input) {
1774            return 'م' === input;
1775        },
1776        meridiem: function (hour, minute, isLower) {
1777            if (hour < 12) {
1778                return 'ص';
1779            } else {
1780                return 'م';
1781            }
1782        },
1783        calendar: {
1784            sameDay: '[اليوم عند الساعة] LT',
1785            nextDay: '[غدًا عند الساعة] LT',
1786            nextWeek: 'dddd [عند الساعة] LT',
1787            lastDay: '[أمس عند الساعة] LT',
1788            lastWeek: 'dddd [عند الساعة] LT',
1789            sameElse: 'L',
1790        },
1791        relativeTime: {
1792            future: 'بعد %s',
1793            past: 'منذ %s',
1794            s: pluralize('s'),
1795            ss: pluralize('s'),
1796            m: pluralize('m'),
1797            mm: pluralize('m'),
1798            h: pluralize('h'),
1799            hh: pluralize('h'),
1800            d: pluralize('d'),
1801            dd: pluralize('d'),
1802            M: pluralize('M'),
1803            MM: pluralize('M'),
1804            y: pluralize('y'),
1805            yy: pluralize('y'),
1806        },
1807        preparse: function (string) {
1808            return string
1809                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
1810                    return numberMap[match];
1811                })
1812                .replace(/،/g, ',');
1813        },
1814        postformat: function (string) {
1815            return string
1816                .replace(/\d/g, function (match) {
1817                    return symbolMap[match];
1818                })
1819                .replace(/,/g, '،');
1820        },
1821        week: {
1822            dow: 6, // Saturday is the first day of the week.
1823            doy: 12, // The week that contains Jan 12th is the first week of the year.
1824        },
1825    });
1826
1827    return ar;
1828
1829})));
1830
1831
1832/***/ }),
1833
vendor: 4,089 bytes, lines 1834-1954
1834/***/ "../../node_modules/moment/locale/az.js":
1835/*!*********************************************************************************************************************************!*\
1836  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/az.js ***!
1837  \*********************************************************************************************************************************/
1838/*! no static exports found */
1839/***/ (function(module, exports, __webpack_require__) {
1840
1841//! moment.js locale configuration
1842//! locale : Azerbaijani [az]
1843//! author : topchiyev : https://github.com/topchiyev
1844
1845;(function (global, factory) {
1846    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
1847   undefined
1848}(this, (function (moment) { 'use strict';
1849
1850    //! moment.js locale configuration
1851
1852    var suffixes = {
1853        1: '-inci',
1854        5: '-inci',
1855        8: '-inci',
1856        70: '-inci',
1857        80: '-inci',
1858        2: '-nci',
1859        7: '-nci',
1860        20: '-nci',
1861        50: '-nci',
1862        3: '-üncü',
1863        4: '-üncü',
1864        100: '-üncü',
1865        6: '-ncı',
1866        9: '-uncu',
1867        10: '-uncu',
1868        30: '-uncu',
1869        60: '-ıncı',
1870        90: '-ıncı',
1871    };
1872
1873    var az = moment.defineLocale('az', {
1874        months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(
1875            '_'
1876        ),
1877        monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
1878        weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(
1879            '_'
1880        ),
1881        weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
1882        weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
1883        weekdaysParseExact: true,
1884        longDateFormat: {
1885            LT: 'HH:mm',
1886            LTS: 'HH:mm:ss',
1887            L: 'DD.MM.YYYY',
1888            LL: 'D MMMM YYYY',
1889            LLL: 'D MMMM YYYY HH:mm',
1890            LLLL: 'dddd, D MMMM YYYY HH:mm',
1891        },
1892        calendar: {
1893            sameDay: '[bugün saat] LT',
1894            nextDay: '[sabah saat] LT',
1895            nextWeek: '[gələn həftə] dddd [saat] LT',
1896            lastDay: '[dünən] LT',
1897            lastWeek: '[keçən həftə] dddd [saat] LT',
1898            sameElse: 'L',
1899        },
1900        relativeTime: {
1901            future: '%s sonra',
1902            past: '%s əvvəl',
1903            s: 'birneçə saniyə',
1904            ss: '%d saniyə',
1905            m: 'bir dəqiqə',
1906            mm: '%d dəqiqə',
1907            h: 'bir saat',
1908            hh: '%d saat',
1909            d: 'bir gün',
1910            dd: '%d gün',
1911            M: 'bir ay',
1912            MM: '%d ay',
1913            y: 'bir il',
1914            yy: '%d il',
1915        },
1916        meridiemParse: /gecə|səhər|gündüz|axşam/,
1917        isPM: function (input) {
1918            return /^(gündüz|axşam)$/.test(input);
1919        },
1920        meridiem: function (hour, minute, isLower) {
1921            if (hour < 4) {
1922                return 'gecə';
1923            } else if (hour < 12) {
1924                return 'səhər';
1925            } else if (hour < 17) {
1926                return 'gündüz';
1927            } else {
1928                return 'axşam';
1929            }
1930        },
1931        dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
1932        ordinal: function (number) {
1933            if (number === 0) {
1934                // special case for zero
1935                return number + '-ıncı';
1936            }
1937            var a = number % 10,
1938                b = (number % 100) - a,
1939                c = number >= 100 ? 100 : null;
1940            return number + (suffixes[a] || suffixes[b] || suffixes[c]);
1941        },
1942        week: {
1943            dow: 1, // Monday is the first day of the week.
1944            doy: 7, // The week that contains Jan 7th is the first week of the year.
1945        },
1946    });
1947
1948    return az;
1949
1950})));
1951
1952
1953/***/ }),
1954
vendor: 6,572 bytes, lines 1955-2115
1955/***/ "../../node_modules/moment/locale/be.js":
1956/*!*********************************************************************************************************************************!*\
1957  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/be.js ***!
1958  \*********************************************************************************************************************************/
1959/*! no static exports found */
1960/***/ (function(module, exports, __webpack_require__) {
1961
1962//! moment.js locale configuration
1963//! locale : Belarusian [be]
1964//! author : Dmitry Demidov : https://github.com/demidov91
1965//! author: Praleska: http://praleska.pro/
1966//! Author : Menelion Elensúle : https://github.com/Oire
1967
1968;(function (global, factory) {
1969    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
1970   undefined
1971}(this, (function (moment) { 'use strict';
1972
1973    //! moment.js locale configuration
1974
1975    function plural(word, num) {
1976        var forms = word.split('_');
1977        return num % 10 === 1 && num % 100 !== 11
1978            ? forms[0]
1979            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
1980            ? forms[1]
1981            : forms[2];
1982    }
1983    function relativeTimeWithPlural(number, withoutSuffix, key) {
1984        var format = {
1985            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
1986            mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
1987            hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
1988            dd: 'дзень_дні_дзён',
1989            MM: 'месяц_месяцы_месяцаў',
1990            yy: 'год_гады_гадоў',
1991        };
1992        if (key === 'm') {
1993            return withoutSuffix ? 'хвіліна' : 'хвіліну';
1994        } else if (key === 'h') {
1995            return withoutSuffix ? 'гадзіна' : 'гадзіну';
1996        } else {
1997            return number + ' ' + plural(format[key], +number);
1998        }
1999    }
2000
2001    var be = moment.defineLocale('be', {
2002        months: {
2003            format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(
2004                '_'
2005            ),
2006            standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(
2007                '_'
2008            ),
2009        },
2010        monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split(
2011            '_'
2012        ),
2013        weekdays: {
2014            format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(
2015                '_'
2016            ),
2017            standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(
2018                '_'
2019            ),
2020            isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/,
2021        },
2022        weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
2023        weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
2024        longDateFormat: {
2025            LT: 'HH:mm',
2026            LTS: 'HH:mm:ss',
2027            L: 'DD.MM.YYYY',
2028            LL: 'D MMMM YYYY г.',
2029            LLL: 'D MMMM YYYY г., HH:mm',
2030            LLLL: 'dddd, D MMMM YYYY г., HH:mm',
2031        },
2032        calendar: {
2033            sameDay: '[Сёння ў] LT',
2034            nextDay: '[Заўтра ў] LT',
2035            lastDay: '[Учора ў] LT',
2036            nextWeek: function () {
2037                return '[У] dddd [ў] LT';
2038            },
2039            lastWeek: function () {
2040                switch (this.day()) {
2041                    case 0:
2042                    case 3:
2043                    case 5:
2044                    case 6:
2045                        return '[У мінулую] dddd [ў] LT';
2046                    case 1:
2047                    case 2:
2048                    case 4:
2049                        return '[У мінулы] dddd [ў] LT';
2050                }
2051            },
2052            sameElse: 'L',
2053        },
2054        relativeTime: {
2055            future: 'праз %s',
2056            past: '%s таму',
2057            s: 'некалькі секунд',
2058            m: relativeTimeWithPlural,
2059            mm: relativeTimeWithPlural,
2060            h: relativeTimeWithPlural,
2061            hh: relativeTimeWithPlural,
2062            d: 'дзень',
2063            dd: relativeTimeWithPlural,
2064            M: 'месяц',
2065            MM: relativeTimeWithPlural,
2066            y: 'год',
2067            yy: relativeTimeWithPlural,
2068        },
2069        meridiemParse: /ночы|раніцы|дня|вечара/,
2070        isPM: function (input) {
2071            return /^(дня|вечара)$/.test(input);
2072        },
2073        meridiem: function (hour, minute, isLower) {
2074            if (hour < 4) {
2075                return 'ночы';
2076            } else if (hour < 12) {
2077                return 'раніцы';
2078            } else if (hour < 17) {
2079                return 'дня';
2080            } else {
2081                return 'вечара';
2082            }
2083        },
2084        dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/,
2085        ordinal: function (number, period) {
2086            switch (period) {
2087                case 'M':
2088                case 'd':
2089                case 'DDD':
2090                case 'w':
2091                case 'W':
2092                    return (number % 10 === 2 || number % 10 === 3) &&
2093                        number % 100 !== 12 &&
2094                        number % 100 !== 13
2095                        ? number + '-і'
2096                        : number + '-ы';
2097                case 'D':
2098                    return number + '-га';
2099                default:
2100                    return number;
2101            }
2102        },
2103        week: {
2104            dow: 1, // Monday is the first day of the week.
2105            doy: 7, // The week that contains Jan 7th is the first week of the year.
2106        },
2107    });
2108
2109    return be;
2110
2111})));
2112
2113
2114/***/ }),
2115
vendor: 4,077 bytes, lines 2116-2220
2116/***/ "../../node_modules/moment/locale/bg.js":
2117/*!*********************************************************************************************************************************!*\
2118  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/bg.js ***!
2119  \*********************************************************************************************************************************/
2120/*! no static exports found */
2121/***/ (function(module, exports, __webpack_require__) {
2122
2123//! moment.js locale configuration
2124//! locale : Bulgarian [bg]
2125//! author : Krasen Borisov : https://github.com/kraz
2126
2127;(function (global, factory) {
2128    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
2129   undefined
2130}(this, (function (moment) { 'use strict';
2131
2132    //! moment.js locale configuration
2133
2134    var bg = moment.defineLocale('bg', {
2135        months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(
2136            '_'
2137        ),
2138        monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
2139        weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(
2140            '_'
2141        ),
2142        weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
2143        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
2144        longDateFormat: {
2145            LT: 'H:mm',
2146            LTS: 'H:mm:ss',
2147            L: 'D.MM.YYYY',
2148            LL: 'D MMMM YYYY',
2149            LLL: 'D MMMM YYYY H:mm',
2150            LLLL: 'dddd, D MMMM YYYY H:mm',
2151        },
2152        calendar: {
2153            sameDay: '[Днес в] LT',
2154            nextDay: '[Утре в] LT',
2155            nextWeek: 'dddd [в] LT',
2156            lastDay: '[Вчера в] LT',
2157            lastWeek: function () {
2158                switch (this.day()) {
2159                    case 0:
2160                    case 3:
2161                    case 6:
2162                        return '[Миналата] dddd [в] LT';
2163                    case 1:
2164                    case 2:
2165                    case 4:
2166                    case 5:
2167                        return '[Миналия] dddd [в] LT';
2168                }
2169            },
2170            sameElse: 'L',
2171        },
2172        relativeTime: {
2173            future: 'след %s',
2174            past: 'преди %s',
2175            s: 'няколко секунди',
2176            ss: '%d секунди',
2177            m: 'минута',
2178            mm: '%d минути',
2179            h: 'час',
2180            hh: '%d часа',
2181            d: 'ден',
2182            dd: '%d дена',
2183            M: 'месец',
2184            MM: '%d месеца',
2185            y: 'година',
2186            yy: '%d години',
2187        },
2188        dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
2189        ordinal: function (number) {
2190            var lastDigit = number % 10,
2191                last2Digits = number % 100;
2192            if (number === 0) {
2193                return number + '-ев';
2194            } else if (last2Digits === 0) {
2195                return number + '-ен';
2196            } else if (last2Digits > 10 && last2Digits < 20) {
2197                return number + '-ти';
2198            } else if (lastDigit === 1) {
2199                return number + '-ви';
2200            } else if (lastDigit === 2) {
2201                return number + '-ри';
2202            } else if (lastDigit === 7 || lastDigit === 8) {
2203                return number + '-ми';
2204            } else {
2205                return number + '-ти';
2206            }
2207        },
2208        week: {
2209            dow: 1, // Monday is the first day of the week.
2210            doy: 7, // The week that contains Jan 7th is the first week of the year.
2211        },
2212    });
2213
2214    return bg;
2215
2216})));
2217
2218
2219/***/ }),
2220
vendor: 2,723 bytes, lines 2221-2291
2221/***/ "../../node_modules/moment/locale/bm.js":
2222/*!*********************************************************************************************************************************!*\
2223  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/bm.js ***!
2224  \*********************************************************************************************************************************/
2225/*! no static exports found */
2226/***/ (function(module, exports, __webpack_require__) {
2227
2228//! moment.js locale configuration
2229//! locale : Bambara [bm]
2230//! author : Estelle Comment : https://github.com/estellecomment
2231
2232;(function (global, factory) {
2233    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
2234   undefined
2235}(this, (function (moment) { 'use strict';
2236
2237    //! moment.js locale configuration
2238
2239    var bm = moment.defineLocale('bm', {
2240        months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(
2241            '_'
2242        ),
2243        monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),
2244        weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),
2245        weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),
2246        weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),
2247        longDateFormat: {
2248            LT: 'HH:mm',
2249            LTS: 'HH:mm:ss',
2250            L: 'DD/MM/YYYY',
2251            LL: 'MMMM [tile] D [san] YYYY',
2252            LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
2253            LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
2254        },
2255        calendar: {
2256            sameDay: '[Bi lɛrɛ] LT',
2257            nextDay: '[Sini lɛrɛ] LT',
2258            nextWeek: 'dddd [don lɛrɛ] LT',
2259            lastDay: '[Kunu lɛrɛ] LT',
2260            lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',
2261            sameElse: 'L',
2262        },
2263        relativeTime: {
2264            future: '%s kɔnɔ',
2265            past: 'a bɛ %s bɔ',
2266            s: 'sanga dama dama',
2267            ss: 'sekondi %d',
2268            m: 'miniti kelen',
2269            mm: 'miniti %d',
2270            h: 'lɛrɛ kelen',
2271            hh: 'lɛrɛ %d',
2272            d: 'tile kelen',
2273            dd: 'tile %d',
2274            M: 'kalo kelen',
2275            MM: 'kalo %d',
2276            y: 'san kelen',
2277            yy: 'san %d',
2278        },
2279        week: {
2280            dow: 1, // Monday is the first day of the week.
2281            doy: 4, // The week that contains Jan 4th is the first week of the year.
2282        },
2283    });
2284
2285    return bm;
2286
2287})));
2288
2289
2290/***/ }),
2291
vendor: 5,247 bytes, lines 2292-2429
2292/***/ "../../node_modules/moment/locale/bn.js":
2293/*!*********************************************************************************************************************************!*\
2294  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/bn.js ***!
2295  \*********************************************************************************************************************************/
2296/*! no static exports found */
2297/***/ (function(module, exports, __webpack_require__) {
2298
2299//! moment.js locale configuration
2300//! locale : Bengali [bn]
2301//! author : Kaushik Gandhi : https://github.com/kaushikgandhi
2302
2303;(function (global, factory) {
2304    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
2305   undefined
2306}(this, (function (moment) { 'use strict';
2307
2308    //! moment.js locale configuration
2309
2310    var symbolMap = {
2311            '1': 'à§§',
2312            '2': '২',
2313            '3': 'à§©',
2314            '4': '৪',
2315            '5': 'à§«',
2316            '6': '৬',
2317            '7': 'à§­',
2318            '8': 'à§®',
2319            '9': '৯',
2320            '0': '০',
2321        },
2322        numberMap = {
2323            'à§§': '1',
2324            '২': '2',
2325            'à§©': '3',
2326            '৪': '4',
2327            'à§«': '5',
2328            '৬': '6',
2329            'à§­': '7',
2330            'à§®': '8',
2331            '৯': '9',
2332            '০': '0',
2333        };
2334
2335    var bn = moment.defineLocale('bn', {
2336        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(
2337            '_'
2338        ),
2339        monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(
2340            '_'
2341        ),
2342        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(
2343            '_'
2344        ),
2345        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
2346        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
2347        longDateFormat: {
2348            LT: 'A h:mm সময়',
2349            LTS: 'A h:mm:ss সময়',
2350            L: 'DD/MM/YYYY',
2351            LL: 'D MMMM YYYY',
2352            LLL: 'D MMMM YYYY, A h:mm সময়',
2353            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',
2354        },
2355        calendar: {
2356            sameDay: '[আজ] LT',
2357            nextDay: '[আগামীকাল] LT',
2358            nextWeek: 'dddd, LT',
2359            lastDay: '[গতকাল] LT',
2360            lastWeek: '[গত] dddd, LT',
2361            sameElse: 'L',
2362        },
2363        relativeTime: {
2364            future: '%s পরে',
2365            past: '%s আগে',
2366            s: 'কয়েক সেকেন্ড',
2367            ss: '%d সেকেন্ড',
2368            m: 'এক মিনিট',
2369            mm: '%d মিনিট',
2370            h: 'এক ঘন্টা',
2371            hh: '%d ঘন্টা',
2372            d: 'এক দিন',
2373            dd: '%d দিন',
2374            M: 'এক মাস',
2375            MM: '%d মাস',
2376            y: 'এক বছর',
2377            yy: '%d বছর',
2378        },
2379        preparse: function (string) {
2380            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
2381                return numberMap[match];
2382            });
2383        },
2384        postformat: function (string) {
2385            return string.replace(/\d/g, function (match) {
2386                return symbolMap[match];
2387            });
2388        },
2389        meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,
2390        meridiemHour: function (hour, meridiem) {
2391            if (hour === 12) {
2392                hour = 0;
2393            }
2394            if (
2395                (meridiem === 'রাত' && hour >= 4) ||
2396                (meridiem === 'দুপুর' && hour < 5) ||
2397                meridiem === 'বিকাল'
2398            ) {
2399                return hour + 12;
2400            } else {
2401                return hour;
2402            }
2403        },
2404        meridiem: function (hour, minute, isLower) {
2405            if (hour < 4) {
2406                return 'রাত';
2407            } else if (hour < 10) {
2408                return 'সকাল';
2409            } else if (hour < 17) {
2410                return 'দুপুর';
2411            } else if (hour < 20) {
2412                return 'বিকাল';
2413            } else {
2414                return 'রাত';
2415            }
2416        },
2417        week: {
2418            dow: 0, // Sunday is the first day of the week.
2419            doy: 6, // The week that contains Jan 6th is the first week of the year.
2420        },
2421    });
2422
2423    return bn;
2424
2425})));
2426
2427
2428/***/ }),
2429
vendor: 5,752 bytes, lines 2430-2571
2430/***/ "../../node_modules/moment/locale/bo.js":
2431/*!*********************************************************************************************************************************!*\
2432  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/bo.js ***!
2433  \*********************************************************************************************************************************/
2434/*! no static exports found */
2435/***/ (function(module, exports, __webpack_require__) {
2436
2437//! moment.js locale configuration
2438//! locale : Tibetan [bo]
2439//! author : Thupten N. Chakrishar : https://github.com/vajradog
2440
2441;(function (global, factory) {
2442    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
2443   undefined
2444}(this, (function (moment) { 'use strict';
2445
2446    //! moment.js locale configuration
2447
2448    var symbolMap = {
2449            '1': '༡',
2450            '2': '༢',
2451            '3': '༣',
2452            '4': '༤',
2453            '5': '༥',
2454            '6': '༦',
2455            '7': '༧',
2456            '8': '༨',
2457            '9': '༩',
2458            '0': '༠',
2459        },
2460        numberMap = {
2461            '༡': '1',
2462            '༢': '2',
2463            '༣': '3',
2464            '༤': '4',
2465            '༥': '5',
2466            '༦': '6',
2467            '༧': '7',
2468            '༨': '8',
2469            '༩': '9',
2470            '༠': '0',
2471        };
2472
2473    var bo = moment.defineLocale('bo', {
2474        months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(
2475            '_'
2476        ),
2477        monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(
2478            '_'
2479        ),
2480        monthsShortRegex: /^(ཟླ་\d{1,2})/,
2481        monthsParseExact: true,
2482        weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(
2483            '_'
2484        ),
2485        weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(
2486            '_'
2487        ),
2488        weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),
2489        longDateFormat: {
2490            LT: 'A h:mm',
2491            LTS: 'A h:mm:ss',
2492            L: 'DD/MM/YYYY',
2493            LL: 'D MMMM YYYY',
2494            LLL: 'D MMMM YYYY, A h:mm',
2495            LLLL: 'dddd, D MMMM YYYY, A h:mm',
2496        },
2497        calendar: {
2498            sameDay: '[དི་རིང] LT',
2499            nextDay: '[སང་ཉིན] LT',
2500            nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',
2501            lastDay: '[ཁ་སང] LT',
2502            lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
2503            sameElse: 'L',
2504        },
2505        relativeTime: {
2506            future: '%s ལ་',
2507            past: '%s སྔན་ལ',
2508            s: 'ལམ་སང',
2509            ss: '%d སྐར་ཆ།',
2510            m: 'སྐར་མ་གཅིག',
2511            mm: '%d སྐར་མ',
2512            h: 'ཆུ་ཚོད་གཅིག',
2513            hh: '%d ཆུ་ཚོད',
2514            d: 'ཉིན་གཅིག',
2515            dd: '%d ཉིན་',
2516            M: 'ཟླ་བ་གཅིག',
2517            MM: '%d ཟླ་བ',
2518            y: 'ལོ་གཅིག',
2519            yy: '%d ལོ',
2520        },
2521        preparse: function (string) {
2522            return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
2523                return numberMap[match];
2524            });
2525        },
2526        postformat: function (string) {
2527            return string.replace(/\d/g, function (match) {
2528                return symbolMap[match];
2529            });
2530        },
2531        meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
2532        meridiemHour: function (hour, meridiem) {
2533            if (hour === 12) {
2534                hour = 0;
2535            }
2536            if (
2537                (meridiem === 'མཚན་མོ' && hour >= 4) ||
2538                (meridiem === 'ཉིན་གུང' && hour < 5) ||
2539                meridiem === 'དགོང་དག'
2540            ) {
2541                return hour + 12;
2542            } else {
2543                return hour;
2544            }
2545        },
2546        meridiem: function (hour, minute, isLower) {
2547            if (hour < 4) {
2548                return 'མཚན་མོ';
2549            } else if (hour < 10) {
2550                return 'ཞོགས་ཀས';
2551            } else if (hour < 17) {
2552                return 'ཉིན་གུང';
2553            } else if (hour < 20) {
2554                return 'དགོང་དག';
2555            } else {
2556                return 'མཚན་མོ';
2557            }
2558        },
2559        week: {
2560            dow: 0, // Sunday is the first day of the week.
2561            doy: 6, // The week that contains Jan 6th is the first week of the year.
2562        },
2563    });
2564
2565    return bo;
2566
2567})));
2568
2569
2570/***/ }),
2571
vendor: 6,088 bytes, lines 2572-2756
2572/***/ "../../node_modules/moment/locale/br.js":
2573/*!*********************************************************************************************************************************!*\
2574  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/br.js ***!
2575  \*********************************************************************************************************************************/
2576/*! no static exports found */
2577/***/ (function(module, exports, __webpack_require__) {
2578
2579//! moment.js locale configuration
2580//! locale : Breton [br]
2581//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
2582
2583;(function (global, factory) {
2584    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
2585   undefined
2586}(this, (function (moment) { 'use strict';
2587
2588    //! moment.js locale configuration
2589
2590    function relativeTimeWithMutation(number, withoutSuffix, key) {
2591        var format = {
2592            mm: 'munutenn',
2593            MM: 'miz',
2594            dd: 'devezh',
2595        };
2596        return number + ' ' + mutation(format[key], number);
2597    }
2598    function specialMutationForYears(number) {
2599        switch (lastNumber(number)) {
2600            case 1:
2601            case 3:
2602            case 4:
2603            case 5:
2604            case 9:
2605                return number + ' bloaz';
2606            default:
2607                return number + ' vloaz';
2608        }
2609    }
2610    function lastNumber(number) {
2611        if (number > 9) {
2612            return lastNumber(number % 10);
2613        }
2614        return number;
2615    }
2616    function mutation(text, number) {
2617        if (number === 2) {
2618            return softMutation(text);
2619        }
2620        return text;
2621    }
2622    function softMutation(text) {
2623        var mutationTable = {
2624            m: 'v',
2625            b: 'v',
2626            d: 'z',
2627        };
2628        if (mutationTable[text.charAt(0)] === undefined) {
2629            return text;
2630        }
2631        return mutationTable[text.charAt(0)] + text.substring(1);
2632    }
2633
2634    var monthsParse = [
2635            /^gen/i,
2636            /^c[ʼ\']hwe/i,
2637            /^meu/i,
2638            /^ebr/i,
2639            /^mae/i,
2640            /^(mez|eve)/i,
2641            /^gou/i,
2642            /^eos/i,
2643            /^gwe/i,
2644            /^her/i,
2645            /^du/i,
2646            /^ker/i,
2647        ],
2648        monthsRegex = /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
2649        monthsStrictRegex = /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,
2650        monthsShortStrictRegex = /^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
2651        fullWeekdaysParse = [
2652            /^sul/i,
2653            /^lun/i,
2654            /^meurzh/i,
2655            /^merc[ʼ\']her/i,
2656            /^yaou/i,
2657            /^gwener/i,
2658            /^sadorn/i,
2659        ],
2660        shortWeekdaysParse = [
2661            /^Sul/i,
2662            /^Lun/i,
2663            /^Meu/i,
2664            /^Mer/i,
2665            /^Yao/i,
2666            /^Gwe/i,
2667            /^Sad/i,
2668        ],
2669        minWeekdaysParse = [
2670            /^Su/i,
2671            /^Lu/i,
2672            /^Me([^r]|$)/i,
2673            /^Mer/i,
2674            /^Ya/i,
2675            /^Gw/i,
2676            /^Sa/i,
2677        ];
2678
2679    var br = moment.defineLocale('br', {
2680        months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(
2681            '_'
2682        ),
2683        monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
2684        weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),
2685        weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
2686        weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
2687        weekdaysParse: minWeekdaysParse,
2688        fullWeekdaysParse: fullWeekdaysParse,
2689        shortWeekdaysParse: shortWeekdaysParse,
2690        minWeekdaysParse: minWeekdaysParse,
2691
2692        monthsRegex: monthsRegex,
2693        monthsShortRegex: monthsRegex,
2694        monthsStrictRegex: monthsStrictRegex,
2695        monthsShortStrictRegex: monthsShortStrictRegex,
2696        monthsParse: monthsParse,
2697        longMonthsParse: monthsParse,
2698        shortMonthsParse: monthsParse,
2699
2700        longDateFormat: {
2701            LT: 'HH:mm',
2702            LTS: 'HH:mm:ss',
2703            L: 'DD/MM/YYYY',
2704            LL: 'D [a viz] MMMM YYYY',
2705            LLL: 'D [a viz] MMMM YYYY HH:mm',
2706            LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',
2707        },
2708        calendar: {
2709            sameDay: '[Hiziv da] LT',
2710            nextDay: '[Warcʼhoazh da] LT',
2711            nextWeek: 'dddd [da] LT',
2712            lastDay: '[Decʼh da] LT',
2713            lastWeek: 'dddd [paset da] LT',
2714            sameElse: 'L',
2715        },
2716        relativeTime: {
2717            future: 'a-benn %s',
2718            past: '%s ʼzo',
2719            s: 'un nebeud segondennoù',
2720            ss: '%d eilenn',
2721            m: 'ur vunutenn',
2722            mm: relativeTimeWithMutation,
2723            h: 'un eur',
2724            hh: '%d eur',
2725            d: 'un devezh',
2726            dd: relativeTimeWithMutation,
2727            M: 'ur miz',
2728            MM: relativeTimeWithMutation,
2729            y: 'ur bloaz',
2730            yy: specialMutationForYears,
2731        },
2732        dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/,
2733        ordinal: function (number) {
2734            var output = number === 1 ? 'añ' : 'vet';
2735            return number + output;
2736        },
2737        week: {
2738            dow: 1, // Monday is the first day of the week.
2739            doy: 4, // The week that contains Jan 4th is the first week of the year.
2740        },
2741        meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn
2742        isPM: function (token) {
2743            return token === 'g.m.';
2744        },
2745        meridiem: function (hour, minute, isLower) {
2746            return hour < 12 ? 'a.m.' : 'g.m.';
2747        },
2748    });
2749
2750    return br;
2751
2752})));
2753
2754
2755/***/ }),
2756
vendor: 5,955 bytes, lines 2757-2925
2757/***/ "../../node_modules/moment/locale/bs.js":
2758/*!*********************************************************************************************************************************!*\
2759  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/bs.js ***!
2760  \*********************************************************************************************************************************/
2761/*! no static exports found */
2762/***/ (function(module, exports, __webpack_require__) {
2763
2764//! moment.js locale configuration
2765//! locale : Bosnian [bs]
2766//! author : Nedim Cholich : https://github.com/frontyard
2767//! based on (hr) translation by Bojan Marković
2768
2769;(function (global, factory) {
2770    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
2771   undefined
2772}(this, (function (moment) { 'use strict';
2773
2774    //! moment.js locale configuration
2775
2776    function translate(number, withoutSuffix, key) {
2777        var result = number + ' ';
2778        switch (key) {
2779            case 'ss':
2780                if (number === 1) {
2781                    result += 'sekunda';
2782                } else if (number === 2 || number === 3 || number === 4) {
2783                    result += 'sekunde';
2784                } else {
2785                    result += 'sekundi';
2786                }
2787                return result;
2788            case 'm':
2789                return withoutSuffix ? 'jedna minuta' : 'jedne minute';
2790            case 'mm':
2791                if (number === 1) {
2792                    result += 'minuta';
2793                } else if (number === 2 || number === 3 || number === 4) {
2794                    result += 'minute';
2795                } else {
2796                    result += 'minuta';
2797                }
2798                return result;
2799            case 'h':
2800                return withoutSuffix ? 'jedan sat' : 'jednog sata';
2801            case 'hh':
2802                if (number === 1) {
2803                    result += 'sat';
2804                } else if (number === 2 || number === 3 || number === 4) {
2805                    result += 'sata';
2806                } else {
2807                    result += 'sati';
2808                }
2809                return result;
2810            case 'dd':
2811                if (number === 1) {
2812                    result += 'dan';
2813                } else {
2814                    result += 'dana';
2815                }
2816                return result;
2817            case 'MM':
2818                if (number === 1) {
2819                    result += 'mjesec';
2820                } else if (number === 2 || number === 3 || number === 4) {
2821                    result += 'mjeseca';
2822                } else {
2823                    result += 'mjeseci';
2824                }
2825                return result;
2826            case 'yy':
2827                if (number === 1) {
2828                    result += 'godina';
2829                } else if (number === 2 || number === 3 || number === 4) {
2830                    result += 'godine';
2831                } else {
2832                    result += 'godina';
2833                }
2834                return result;
2835        }
2836    }
2837
2838    var bs = moment.defineLocale('bs', {
2839        months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(
2840            '_'
2841        ),
2842        monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(
2843            '_'
2844        ),
2845        monthsParseExact: true,
2846        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
2847            '_'
2848        ),
2849        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
2850        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
2851        weekdaysParseExact: true,
2852        longDateFormat: {
2853            LT: 'H:mm',
2854            LTS: 'H:mm:ss',
2855            L: 'DD.MM.YYYY',
2856            LL: 'D. MMMM YYYY',
2857            LLL: 'D. MMMM YYYY H:mm',
2858            LLLL: 'dddd, D. MMMM YYYY H:mm',
2859        },
2860        calendar: {
2861            sameDay: '[danas u] LT',
2862            nextDay: '[sutra u] LT',
2863            nextWeek: function () {
2864                switch (this.day()) {
2865                    case 0:
2866                        return '[u] [nedjelju] [u] LT';
2867                    case 3:
2868                        return '[u] [srijedu] [u] LT';
2869                    case 6:
2870                        return '[u] [subotu] [u] LT';
2871                    case 1:
2872                    case 2:
2873                    case 4:
2874                    case 5:
2875                        return '[u] dddd [u] LT';
2876                }
2877            },
2878            lastDay: '[jučer u] LT',
2879            lastWeek: function () {
2880                switch (this.day()) {
2881                    case 0:
2882                    case 3:
2883                        return '[prošlu] dddd [u] LT';
2884                    case 6:
2885                        return '[prošle] [subote] [u] LT';
2886                    case 1:
2887                    case 2:
2888                    case 4:
2889                    case 5:
2890                        return '[prošli] dddd [u] LT';
2891                }
2892            },
2893            sameElse: 'L',
2894        },
2895        relativeTime: {
2896            future: 'za %s',
2897            past: 'prije %s',
2898            s: 'par sekundi',
2899            ss: translate,
2900            m: translate,
2901            mm: translate,
2902            h: translate,
2903            hh: translate,
2904            d: 'dan',
2905            dd: translate,
2906            M: 'mjesec',
2907            MM: translate,
2908            y: 'godinu',
2909            yy: translate,
2910        },
2911        dayOfMonthOrdinalParse: /\d{1,2}\./,
2912        ordinal: '%d.',
2913        week: {
2914            dow: 1, // Monday is the first day of the week.
2915            doy: 7, // The week that contains Jan 7th is the first week of the year.
2916        },
2917    });
2918
2919    return bs;
2920
2921})));
2922
2923
2924/***/ }),
2925
vendor: 4,223 bytes, lines 2926-3042
2926/***/ "../../node_modules/moment/locale/ca.js":
2927/*!*********************************************************************************************************************************!*\
2928  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ca.js ***!
2929  \*********************************************************************************************************************************/
2930/*! no static exports found */
2931/***/ (function(module, exports, __webpack_require__) {
2932
2933//! moment.js locale configuration
2934//! locale : Catalan [ca]
2935//! author : Juan G. Hurtado : https://github.com/juanghurtado
2936
2937;(function (global, factory) {
2938    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
2939   undefined
2940}(this, (function (moment) { 'use strict';
2941
2942    //! moment.js locale configuration
2943
2944    var ca = moment.defineLocale('ca', {
2945        months: {
2946            standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(
2947                '_'
2948            ),
2949            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(
2950                '_'
2951            ),
2952            isFormat: /D[oD]?(\s)+MMMM/,
2953        },
2954        monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(
2955            '_'
2956        ),
2957        monthsParseExact: true,
2958        weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(
2959            '_'
2960        ),
2961        weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
2962        weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),
2963        weekdaysParseExact: true,
2964        longDateFormat: {
2965            LT: 'H:mm',
2966            LTS: 'H:mm:ss',
2967            L: 'DD/MM/YYYY',
2968            LL: 'D MMMM [de] YYYY',
2969            ll: 'D MMM YYYY',
2970            LLL: 'D MMMM [de] YYYY [a les] H:mm',
2971            lll: 'D MMM YYYY, H:mm',
2972            LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',
2973            llll: 'ddd D MMM YYYY, H:mm',
2974        },
2975        calendar: {
2976            sameDay: function () {
2977                return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
2978            },
2979            nextDay: function () {
2980                return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
2981            },
2982            nextWeek: function () {
2983                return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
2984            },
2985            lastDay: function () {
2986                return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
2987            },
2988            lastWeek: function () {
2989                return (
2990                    '[el] dddd [passat a ' +
2991                    (this.hours() !== 1 ? 'les' : 'la') +
2992                    '] LT'
2993                );
2994            },
2995            sameElse: 'L',
2996        },
2997        relativeTime: {
2998            future: "d'aquí %s",
2999            past: 'fa %s',
3000            s: 'uns segons',
3001            ss: '%d segons',
3002            m: 'un minut',
3003            mm: '%d minuts',
3004            h: 'una hora',
3005            hh: '%d hores',
3006            d: 'un dia',
3007            dd: '%d dies',
3008            M: 'un mes',
3009            MM: '%d mesos',
3010            y: 'un any',
3011            yy: '%d anys',
3012        },
3013        dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
3014        ordinal: function (number, period) {
3015            var output =
3016                number === 1
3017                    ? 'r'
3018                    : number === 2
3019                    ? 'n'
3020                    : number === 3
3021                    ? 'r'
3022                    : number === 4
3023                    ? 't'
3024                    : 'è';
3025            if (period === 'w' || period === 'W') {
3026                output = 'a';
3027            }
3028            return number + output;
3029        },
3030        week: {
3031            dow: 1, // Monday is the first day of the week.
3032            doy: 4, // The week that contains Jan 4th is the first week of the year.
3033        },
3034    });
3035
3036    return ca;
3037
3038})));
3039
3040
3041/***/ }),
3042
vendor: 8,097 bytes, lines 3043-3233
3043/***/ "../../node_modules/moment/locale/cs.js":
3044/*!*********************************************************************************************************************************!*\
3045  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/cs.js ***!
3046  \*********************************************************************************************************************************/
3047/*! no static exports found */
3048/***/ (function(module, exports, __webpack_require__) {
3049
3050//! moment.js locale configuration
3051//! locale : Czech [cs]
3052//! author : petrbela : https://github.com/petrbela
3053
3054;(function (global, factory) {
3055    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
3056   undefined
3057}(this, (function (moment) { 'use strict';
3058
3059    //! moment.js locale configuration
3060
3061    var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(
3062            '_'
3063        ),
3064        monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),
3065        monthsParse = [
3066            /^led/i,
3067            /^úno/i,
3068            /^bře/i,
3069            /^dub/i,
3070            /^kvě/i,
3071            /^(čvn|červen$|června)/i,
3072            /^(čvc|červenec|července)/i,
3073            /^srp/i,
3074            /^zář/i,
3075            /^říj/i,
3076            /^lis/i,
3077            /^pro/i,
3078        ],
3079        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
3080        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
3081        monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;
3082
3083    function plural(n) {
3084        return n > 1 && n < 5 && ~~(n / 10) !== 1;
3085    }
3086    function translate(number, withoutSuffix, key, isFuture) {
3087        var result = number + ' ';
3088        switch (key) {
3089            case 's': // a few seconds / in a few seconds / a few seconds ago
3090                return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';
3091            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
3092                if (withoutSuffix || isFuture) {
3093                    return result + (plural(number) ? 'sekundy' : 'sekund');
3094                } else {
3095                    return result + 'sekundami';
3096                }
3097            case 'm': // a minute / in a minute / a minute ago
3098                return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';
3099            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
3100                if (withoutSuffix || isFuture) {
3101                    return result + (plural(number) ? 'minuty' : 'minut');
3102                } else {
3103                    return result + 'minutami';
3104                }
3105            case 'h': // an hour / in an hour / an hour ago
3106                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
3107            case 'hh': // 9 hours / in 9 hours / 9 hours ago
3108                if (withoutSuffix || isFuture) {
3109                    return result + (plural(number) ? 'hodiny' : 'hodin');
3110                } else {
3111                    return result + 'hodinami';
3112                }
3113            case 'd': // a day / in a day / a day ago
3114                return withoutSuffix || isFuture ? 'den' : 'dnem';
3115            case 'dd': // 9 days / in 9 days / 9 days ago
3116                if (withoutSuffix || isFuture) {
3117                    return result + (plural(number) ? 'dny' : 'dní');
3118                } else {
3119                    return result + 'dny';
3120                }
3121            case 'M': // a month / in a month / a month ago
3122                return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';
3123            case 'MM': // 9 months / in 9 months / 9 months ago
3124                if (withoutSuffix || isFuture) {
3125                    return result + (plural(number) ? 'měsíce' : 'měsíců');
3126                } else {
3127                    return result + 'měsíci';
3128                }
3129            case 'y': // a year / in a year / a year ago
3130                return withoutSuffix || isFuture ? 'rok' : 'rokem';
3131            case 'yy': // 9 years / in 9 years / 9 years ago
3132                if (withoutSuffix || isFuture) {
3133                    return result + (plural(number) ? 'roky' : 'let');
3134                } else {
3135                    return result + 'lety';
3136                }
3137        }
3138    }
3139
3140    var cs = moment.defineLocale('cs', {
3141        months: months,
3142        monthsShort: monthsShort,
3143        monthsRegex: monthsRegex,
3144        monthsShortRegex: monthsRegex,
3145        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
3146        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
3147        monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,
3148        monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,
3149        monthsParse: monthsParse,
3150        longMonthsParse: monthsParse,
3151        shortMonthsParse: monthsParse,
3152        weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
3153        weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),
3154        weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),
3155        longDateFormat: {
3156            LT: 'H:mm',
3157            LTS: 'H:mm:ss',
3158            L: 'DD.MM.YYYY',
3159            LL: 'D. MMMM YYYY',
3160            LLL: 'D. MMMM YYYY H:mm',
3161            LLLL: 'dddd D. MMMM YYYY H:mm',
3162            l: 'D. M. YYYY',
3163        },
3164        calendar: {
3165            sameDay: '[dnes v] LT',
3166            nextDay: '[zítra v] LT',
3167            nextWeek: function () {
3168                switch (this.day()) {
3169                    case 0:
3170                        return '[v neděli v] LT';
3171                    case 1:
3172                    case 2:
3173                        return '[v] dddd [v] LT';
3174                    case 3:
3175                        return '[ve středu v] LT';
3176                    case 4:
3177                        return '[ve čtvrtek v] LT';
3178                    case 5:
3179                        return '[v pátek v] LT';
3180                    case 6:
3181                        return '[v sobotu v] LT';
3182                }
3183            },
3184            lastDay: '[včera v] LT',
3185            lastWeek: function () {
3186                switch (this.day()) {
3187                    case 0:
3188                        return '[minulou neděli v] LT';
3189                    case 1:
3190                    case 2:
3191                        return '[minulé] dddd [v] LT';
3192                    case 3:
3193                        return '[minulou středu v] LT';
3194                    case 4:
3195                    case 5:
3196                        return '[minulý] dddd [v] LT';
3197                    case 6:
3198                        return '[minulou sobotu v] LT';
3199                }
3200            },
3201            sameElse: 'L',
3202        },
3203        relativeTime: {
3204            future: 'za %s',
3205            past: 'před %s',
3206            s: translate,
3207            ss: translate,
3208            m: translate,
3209            mm: translate,
3210            h: translate,
3211            hh: translate,
3212            d: translate,
3213            dd: translate,
3214            M: translate,
3215            MM: translate,
3216            y: translate,
3217            yy: translate,
3218        },
3219        dayOfMonthOrdinalParse: /\d{1,2}\./,
3220        ordinal: '%d.',
3221        week: {
3222            dow: 1, // Monday is the first day of the week.
3223            doy: 4, // The week that contains Jan 4th is the first week of the year.
3224        },
3225    });
3226
3227    return cs;
3228
3229})));
3230
3231
3232/***/ }),
3233
vendor: 3,394 bytes, lines 3234-3315
3234/***/ "../../node_modules/moment/locale/cv.js":
3235/*!*********************************************************************************************************************************!*\
3236  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/cv.js ***!
3237  \*********************************************************************************************************************************/
3238/*! no static exports found */
3239/***/ (function(module, exports, __webpack_require__) {
3240
3241//! moment.js locale configuration
3242//! locale : Chuvash [cv]
3243//! author : Anatoly Mironov : https://github.com/mirontoli
3244
3245;(function (global, factory) {
3246    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
3247   undefined
3248}(this, (function (moment) { 'use strict';
3249
3250    //! moment.js locale configuration
3251
3252    var cv = moment.defineLocale('cv', {
3253        months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(
3254            '_'
3255        ),
3256        monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
3257        weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(
3258            '_'
3259        ),
3260        weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
3261        weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
3262        longDateFormat: {
3263            LT: 'HH:mm',
3264            LTS: 'HH:mm:ss',
3265            L: 'DD-MM-YYYY',
3266            LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
3267            LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
3268            LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
3269        },
3270        calendar: {
3271            sameDay: '[Паян] LT [сехетре]',
3272            nextDay: '[Ыран] LT [сехетре]',
3273            lastDay: '[Ӗнер] LT [сехетре]',
3274            nextWeek: '[Ҫитес] dddd LT [сехетре]',
3275            lastWeek: '[Иртнӗ] dddd LT [сехетре]',
3276            sameElse: 'L',
3277        },
3278        relativeTime: {
3279            future: function (output) {
3280                var affix = /сехет$/i.exec(output)
3281                    ? 'рен'
3282                    : /ҫул$/i.exec(output)
3283                    ? 'тан'
3284                    : 'ран';
3285                return output + affix;
3286            },
3287            past: '%s каялла',
3288            s: 'пӗр-ик ҫеккунт',
3289            ss: '%d ҫеккунт',
3290            m: 'пӗр минут',
3291            mm: '%d минут',
3292            h: 'пӗр сехет',
3293            hh: '%d сехет',
3294            d: 'пӗр кун',
3295            dd: '%d кун',
3296            M: 'пӗр уйӑх',
3297            MM: '%d уйӑх',
3298            y: 'пӗр ҫул',
3299            yy: '%d ҫул',
3300        },
3301        dayOfMonthOrdinalParse: /\d{1,2}-мӗш/,
3302        ordinal: '%d-мӗш',
3303        week: {
3304            dow: 1, // Monday is the first day of the week.
3305            doy: 7, // The week that contains Jan 7th is the first week of the year.
3306        },
3307    });
3308
3309    return cv;
3310
3311})));
3312
3313
3314/***/ }),
3315
vendor: 4,058 bytes, lines 3316-3432
3316/***/ "../../node_modules/moment/locale/cy.js":
3317/*!*********************************************************************************************************************************!*\
3318  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/cy.js ***!
3319  \*********************************************************************************************************************************/
3320/*! no static exports found */
3321/***/ (function(module, exports, __webpack_require__) {
3322
3323//! moment.js locale configuration
3324//! locale : Welsh [cy]
3325//! author : Robert Allen : https://github.com/robgallen
3326//! author : https://github.com/ryangreaves
3327
3328;(function (global, factory) {
3329    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
3330   undefined
3331}(this, (function (moment) { 'use strict';
3332
3333    //! moment.js locale configuration
3334
3335    var cy = moment.defineLocale('cy', {
3336        months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(
3337            '_'
3338        ),
3339        monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(
3340            '_'
3341        ),
3342        weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(
3343            '_'
3344        ),
3345        weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
3346        weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
3347        weekdaysParseExact: true,
3348        // time formats are the same as en-gb
3349        longDateFormat: {
3350            LT: 'HH:mm',
3351            LTS: 'HH:mm:ss',
3352            L: 'DD/MM/YYYY',
3353            LL: 'D MMMM YYYY',
3354            LLL: 'D MMMM YYYY HH:mm',
3355            LLLL: 'dddd, D MMMM YYYY HH:mm',
3356        },
3357        calendar: {
3358            sameDay: '[Heddiw am] LT',
3359            nextDay: '[Yfory am] LT',
3360            nextWeek: 'dddd [am] LT',
3361            lastDay: '[Ddoe am] LT',
3362            lastWeek: 'dddd [diwethaf am] LT',
3363            sameElse: 'L',
3364        },
3365        relativeTime: {
3366            future: 'mewn %s',
3367            past: '%s yn ôl',
3368            s: 'ychydig eiliadau',
3369            ss: '%d eiliad',
3370            m: 'munud',
3371            mm: '%d munud',
3372            h: 'awr',
3373            hh: '%d awr',
3374            d: 'diwrnod',
3375            dd: '%d diwrnod',
3376            M: 'mis',
3377            MM: '%d mis',
3378            y: 'blwyddyn',
3379            yy: '%d flynedd',
3380        },
3381        dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
3382        // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
3383        ordinal: function (number) {
3384            var b = number,
3385                output = '',
3386                lookup = [
3387                    '',
3388                    'af',
3389                    'il',
3390                    'ydd',
3391                    'ydd',
3392                    'ed',
3393                    'ed',
3394                    'ed',
3395                    'fed',
3396                    'fed',
3397                    'fed', // 1af to 10fed
3398                    'eg',
3399                    'fed',
3400                    'eg',
3401                    'eg',
3402                    'fed',
3403                    'eg',
3404                    'eg',
3405                    'fed',
3406                    'eg',
3407                    'fed', // 11eg to 20fed
3408                ];
3409            if (b > 20) {
3410                if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
3411                    output = 'fed'; // not 30ain, 70ain or 90ain
3412                } else {
3413                    output = 'ain';
3414                }
3415            } else if (b > 0) {
3416                output = lookup[b];
3417            }
3418            return number + output;
3419        },
3420        week: {
3421            dow: 1, // Monday is the first day of the week.
3422            doy: 4, // The week that contains Jan 4th is the first week of the year.
3423        },
3424    });
3425
3426    return cy;
3427
3428})));
3429
3430
3431/***/ }),
3432
vendor: 2,653 bytes, lines 3433-3505
3433/***/ "../../node_modules/moment/locale/da.js":
3434/*!*********************************************************************************************************************************!*\
3435  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/da.js ***!
3436  \*********************************************************************************************************************************/
3437/*! no static exports found */
3438/***/ (function(module, exports, __webpack_require__) {
3439
3440//! moment.js locale configuration
3441//! locale : Danish [da]
3442//! author : Ulrik Nielsen : https://github.com/mrbase
3443
3444;(function (global, factory) {
3445    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
3446   undefined
3447}(this, (function (moment) { 'use strict';
3448
3449    //! moment.js locale configuration
3450
3451    var da = moment.defineLocale('da', {
3452        months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(
3453            '_'
3454        ),
3455        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
3456        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
3457        weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),
3458        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
3459        longDateFormat: {
3460            LT: 'HH:mm',
3461            LTS: 'HH:mm:ss',
3462            L: 'DD.MM.YYYY',
3463            LL: 'D. MMMM YYYY',
3464            LLL: 'D. MMMM YYYY HH:mm',
3465            LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',
3466        },
3467        calendar: {
3468            sameDay: '[i dag kl.] LT',
3469            nextDay: '[i morgen kl.] LT',
3470            nextWeek: 'på dddd [kl.] LT',
3471            lastDay: '[i går kl.] LT',
3472            lastWeek: '[i] dddd[s kl.] LT',
3473            sameElse: 'L',
3474        },
3475        relativeTime: {
3476            future: 'om %s',
3477            past: '%s siden',
3478            s: 'få sekunder',
3479            ss: '%d sekunder',
3480            m: 'et minut',
3481            mm: '%d minutter',
3482            h: 'en time',
3483            hh: '%d timer',
3484            d: 'en dag',
3485            dd: '%d dage',
3486            M: 'en måned',
3487            MM: '%d måneder',
3488            y: 'et år',
3489            yy: '%d år',
3490        },
3491        dayOfMonthOrdinalParse: /\d{1,2}\./,
3492        ordinal: '%d.',
3493        week: {
3494            dow: 1, // Monday is the first day of the week.
3495            doy: 4, // The week that contains Jan 4th is the first week of the year.
3496        },
3497    });
3498
3499    return da;
3500
3501})));
3502
3503
3504/***/ }),
3505
vendor: 3,779 bytes, lines 3506-3604
3506/***/ "../../node_modules/moment/locale/de-at.js":
3507/*!************************************************************************************************************************************!*\
3508  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/de-at.js ***!
3509  \************************************************************************************************************************************/
3510/*! no static exports found */
3511/***/ (function(module, exports, __webpack_require__) {
3512
3513//! moment.js locale configuration
3514//! locale : German (Austria) [de-at]
3515//! author : lluchs : https://github.com/lluchs
3516//! author: Menelion Elensúle: https://github.com/Oire
3517//! author : Martin Groller : https://github.com/MadMG
3518//! author : Mikolaj Dadela : https://github.com/mik01aj
3519
3520;(function (global, factory) {
3521    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
3522   undefined
3523}(this, (function (moment) { 'use strict';
3524
3525    //! moment.js locale configuration
3526
3527    function processRelativeTime(number, withoutSuffix, key, isFuture) {
3528        var format = {
3529            m: ['eine Minute', 'einer Minute'],
3530            h: ['eine Stunde', 'einer Stunde'],
3531            d: ['ein Tag', 'einem Tag'],
3532            dd: [number + ' Tage', number + ' Tagen'],
3533            w: ['eine Woche', 'einer Woche'],
3534            M: ['ein Monat', 'einem Monat'],
3535            MM: [number + ' Monate', number + ' Monaten'],
3536            y: ['ein Jahr', 'einem Jahr'],
3537            yy: [number + ' Jahre', number + ' Jahren'],
3538        };
3539        return withoutSuffix ? format[key][0] : format[key][1];
3540    }
3541
3542    var deAt = moment.defineLocale('de-at', {
3543        months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
3544            '_'
3545        ),
3546        monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(
3547            '_'
3548        ),
3549        monthsParseExact: true,
3550        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
3551            '_'
3552        ),
3553        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
3554        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
3555        weekdaysParseExact: true,
3556        longDateFormat: {
3557            LT: 'HH:mm',
3558            LTS: 'HH:mm:ss',
3559            L: 'DD.MM.YYYY',
3560            LL: 'D. MMMM YYYY',
3561            LLL: 'D. MMMM YYYY HH:mm',
3562            LLLL: 'dddd, D. MMMM YYYY HH:mm',
3563        },
3564        calendar: {
3565            sameDay: '[heute um] LT [Uhr]',
3566            sameElse: 'L',
3567            nextDay: '[morgen um] LT [Uhr]',
3568            nextWeek: 'dddd [um] LT [Uhr]',
3569            lastDay: '[gestern um] LT [Uhr]',
3570            lastWeek: '[letzten] dddd [um] LT [Uhr]',
3571        },
3572        relativeTime: {
3573            future: 'in %s',
3574            past: 'vor %s',
3575            s: 'ein paar Sekunden',
3576            ss: '%d Sekunden',
3577            m: processRelativeTime,
3578            mm: '%d Minuten',
3579            h: processRelativeTime,
3580            hh: '%d Stunden',
3581            d: processRelativeTime,
3582            dd: processRelativeTime,
3583            w: processRelativeTime,
3584            ww: '%d Wochen',
3585            M: processRelativeTime,
3586            MM: processRelativeTime,
3587            y: processRelativeTime,
3588            yy: processRelativeTime,
3589        },
3590        dayOfMonthOrdinalParse: /\d{1,2}\./,
3591        ordinal: '%d.',
3592        week: {
3593            dow: 1, // Monday is the first day of the week.
3594            doy: 4, // The week that contains Jan 4th is the first week of the year.
3595        },
3596    });
3597
3598    return deAt;
3599
3600})));
3601
3602
3603/***/ }),
3604
vendor: 3,611 bytes, lines 3605-3700
3605/***/ "../../node_modules/moment/locale/de-ch.js":
3606/*!************************************************************************************************************************************!*\
3607  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/de-ch.js ***!
3608  \************************************************************************************************************************************/
3609/*! no static exports found */
3610/***/ (function(module, exports, __webpack_require__) {
3611
3612//! moment.js locale configuration
3613//! locale : German (Switzerland) [de-ch]
3614//! author : sschueller : https://github.com/sschueller
3615
3616;(function (global, factory) {
3617    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
3618   undefined
3619}(this, (function (moment) { 'use strict';
3620
3621    //! moment.js locale configuration
3622
3623    function processRelativeTime(number, withoutSuffix, key, isFuture) {
3624        var format = {
3625            m: ['eine Minute', 'einer Minute'],
3626            h: ['eine Stunde', 'einer Stunde'],
3627            d: ['ein Tag', 'einem Tag'],
3628            dd: [number + ' Tage', number + ' Tagen'],
3629            w: ['eine Woche', 'einer Woche'],
3630            M: ['ein Monat', 'einem Monat'],
3631            MM: [number + ' Monate', number + ' Monaten'],
3632            y: ['ein Jahr', 'einem Jahr'],
3633            yy: [number + ' Jahre', number + ' Jahren'],
3634        };
3635        return withoutSuffix ? format[key][0] : format[key][1];
3636    }
3637
3638    var deCh = moment.defineLocale('de-ch', {
3639        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
3640            '_'
3641        ),
3642        monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(
3643            '_'
3644        ),
3645        monthsParseExact: true,
3646        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
3647            '_'
3648        ),
3649        weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
3650        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
3651        weekdaysParseExact: true,
3652        longDateFormat: {
3653            LT: 'HH:mm',
3654            LTS: 'HH:mm:ss',
3655            L: 'DD.MM.YYYY',
3656            LL: 'D. MMMM YYYY',
3657            LLL: 'D. MMMM YYYY HH:mm',
3658            LLLL: 'dddd, D. MMMM YYYY HH:mm',
3659        },
3660        calendar: {
3661            sameDay: '[heute um] LT [Uhr]',
3662            sameElse: 'L',
3663            nextDay: '[morgen um] LT [Uhr]',
3664            nextWeek: 'dddd [um] LT [Uhr]',
3665            lastDay: '[gestern um] LT [Uhr]',
3666            lastWeek: '[letzten] dddd [um] LT [Uhr]',
3667        },
3668        relativeTime: {
3669            future: 'in %s',
3670            past: 'vor %s',
3671            s: 'ein paar Sekunden',
3672            ss: '%d Sekunden',
3673            m: processRelativeTime,
3674            mm: '%d Minuten',
3675            h: processRelativeTime,
3676            hh: '%d Stunden',
3677            d: processRelativeTime,
3678            dd: processRelativeTime,
3679            w: processRelativeTime,
3680            ww: '%d Wochen',
3681            M: processRelativeTime,
3682            MM: processRelativeTime,
3683            y: processRelativeTime,
3684            yy: processRelativeTime,
3685        },
3686        dayOfMonthOrdinalParse: /\d{1,2}\./,
3687        ordinal: '%d.',
3688        week: {
3689            dow: 1, // Monday is the first day of the week.
3690            doy: 4, // The week that contains Jan 4th is the first week of the year.
3691        },
3692    });
3693
3694    return deCh;
3695
3696})));
3697
3698
3699/***/ }),
3700
vendor: 3,689 bytes, lines 3701-3798
3701/***/ "../../node_modules/moment/locale/de.js":
3702/*!*********************************************************************************************************************************!*\
3703  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/de.js ***!
3704  \*********************************************************************************************************************************/
3705/*! no static exports found */
3706/***/ (function(module, exports, __webpack_require__) {
3707
3708//! moment.js locale configuration
3709//! locale : German [de]
3710//! author : lluchs : https://github.com/lluchs
3711//! author: Menelion Elensúle: https://github.com/Oire
3712//! author : Mikolaj Dadela : https://github.com/mik01aj
3713
3714;(function (global, factory) {
3715    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
3716   undefined
3717}(this, (function (moment) { 'use strict';
3718
3719    //! moment.js locale configuration
3720
3721    function processRelativeTime(number, withoutSuffix, key, isFuture) {
3722        var format = {
3723            m: ['eine Minute', 'einer Minute'],
3724            h: ['eine Stunde', 'einer Stunde'],
3725            d: ['ein Tag', 'einem Tag'],
3726            dd: [number + ' Tage', number + ' Tagen'],
3727            w: ['eine Woche', 'einer Woche'],
3728            M: ['ein Monat', 'einem Monat'],
3729            MM: [number + ' Monate', number + ' Monaten'],
3730            y: ['ein Jahr', 'einem Jahr'],
3731            yy: [number + ' Jahre', number + ' Jahren'],
3732        };
3733        return withoutSuffix ? format[key][0] : format[key][1];
3734    }
3735
3736    var de = moment.defineLocale('de', {
3737        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
3738            '_'
3739        ),
3740        monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(
3741            '_'
3742        ),
3743        monthsParseExact: true,
3744        weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
3745            '_'
3746        ),
3747        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
3748        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
3749        weekdaysParseExact: true,
3750        longDateFormat: {
3751            LT: 'HH:mm',
3752            LTS: 'HH:mm:ss',
3753            L: 'DD.MM.YYYY',
3754            LL: 'D. MMMM YYYY',
3755            LLL: 'D. MMMM YYYY HH:mm',
3756            LLLL: 'dddd, D. MMMM YYYY HH:mm',
3757        },
3758        calendar: {
3759            sameDay: '[heute um] LT [Uhr]',
3760            sameElse: 'L',
3761            nextDay: '[morgen um] LT [Uhr]',
3762            nextWeek: 'dddd [um] LT [Uhr]',
3763            lastDay: '[gestern um] LT [Uhr]',
3764            lastWeek: '[letzten] dddd [um] LT [Uhr]',
3765        },
3766        relativeTime: {
3767            future: 'in %s',
3768            past: 'vor %s',
3769            s: 'ein paar Sekunden',
3770            ss: '%d Sekunden',
3771            m: processRelativeTime,
3772            mm: '%d Minuten',
3773            h: processRelativeTime,
3774            hh: '%d Stunden',
3775            d: processRelativeTime,
3776            dd: processRelativeTime,
3777            w: processRelativeTime,
3778            ww: '%d Wochen',
3779            M: processRelativeTime,
3780            MM: processRelativeTime,
3781            y: processRelativeTime,
3782            yy: processRelativeTime,
3783        },
3784        dayOfMonthOrdinalParse: /\d{1,2}\./,
3785        ordinal: '%d.',
3786        week: {
3787            dow: 1, // Monday is the first day of the week.
3788            doy: 4, // The week that contains Jan 4th is the first week of the year.
3789        },
3790    });
3791
3792    return de;
3793
3794})));
3795
3796
3797/***/ }),
3798
vendor: 3,669 bytes, lines 3799-3908
3799/***/ "../../node_modules/moment/locale/dv.js":
3800/*!*********************************************************************************************************************************!*\
3801  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/dv.js ***!
3802  \*********************************************************************************************************************************/
3803/*! no static exports found */
3804/***/ (function(module, exports, __webpack_require__) {
3805
3806//! moment.js locale configuration
3807//! locale : Maldivian [dv]
3808//! author : Jawish Hameed : https://github.com/jawish
3809
3810;(function (global, factory) {
3811    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
3812   undefined
3813}(this, (function (moment) { 'use strict';
3814
3815    //! moment.js locale configuration
3816
3817    var months = [
3818            'ޖެނުއަރީ',
3819            'ފެބްރުއަރީ',
3820            'މާރިޗު',
3821            'އޭޕްރީލު',
3822            'މޭ',
3823            'ޖޫން',
3824            'ޖުލައި',
3825            'އޯގަސްޓު',
3826            'ސެޕްޓެމްބަރު',
3827            'އޮކްޓޯބަރު',
3828            'ނޮވެމްބަރު',
3829            'ޑިސެމްބަރު',
3830        ],
3831        weekdays = [
3832            'އާދިއްތަ',
3833            'ހޯމަ',
3834            'އަންގާރަ',
3835            'ބުދަ',
3836            'ބުރާސްފަތި',
3837            'ހުކުރު',
3838            'ހޮނިހިރު',
3839        ];
3840
3841    var dv = moment.defineLocale('dv', {
3842        months: months,
3843        monthsShort: months,
3844        weekdays: weekdays,
3845        weekdaysShort: weekdays,
3846        weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
3847        longDateFormat: {
3848            LT: 'HH:mm',
3849            LTS: 'HH:mm:ss',
3850            L: 'D/M/YYYY',
3851            LL: 'D MMMM YYYY',
3852            LLL: 'D MMMM YYYY HH:mm',
3853            LLLL: 'dddd D MMMM YYYY HH:mm',
3854        },
3855        meridiemParse: /މކ|މފ/,
3856        isPM: function (input) {
3857            return 'މފ' === input;
3858        },
3859        meridiem: function (hour, minute, isLower) {
3860            if (hour < 12) {
3861                return 'މކ';
3862            } else {
3863                return 'މފ';
3864            }
3865        },
3866        calendar: {
3867            sameDay: '[މިއަދު] LT',
3868            nextDay: '[މާދަމާ] LT',
3869            nextWeek: 'dddd LT',
3870            lastDay: '[އިއްޔެ] LT',
3871            lastWeek: '[ފާއިތުވި] dddd LT',
3872            sameElse: 'L',
3873        },
3874        relativeTime: {
3875            future: 'ތެރޭގައި %s',
3876            past: 'ކުރިން %s',
3877            s: 'ސިކުންތުކޮޅެއް',
3878            ss: 'd% ސިކުންތު',
3879            m: 'މިނިޓެއް',
3880            mm: 'މިނިޓު %d',
3881            h: 'ގަޑިއިރެއް',
3882            hh: 'ގަޑިއިރު %d',
3883            d: 'ދުވަހެއް',
3884            dd: 'ދުވަސް %d',
3885            M: 'މަހެއް',
3886            MM: 'މަސް %d',
3887            y: 'އަހަރެއް',
3888            yy: 'އަހަރު %d',
3889        },
3890        preparse: function (string) {
3891            return string.replace(/،/g, ',');
3892        },
3893        postformat: function (string) {
3894            return string.replace(/,/g, '،');
3895        },
3896        week: {
3897            dow: 7, // Sunday is the first day of the week.
3898            doy: 12, // The week that contains Jan 12th is the first week of the year.
3899        },
3900    });
3901
3902    return dv;
3903
3904})));
3905
3906
3907/***/ }),
3908
vendor: 5,120 bytes, lines 3909-4032
3909/***/ "../../node_modules/moment/locale/el.js":
3910/*!*********************************************************************************************************************************!*\
3911  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/el.js ***!
3912  \*********************************************************************************************************************************/
3913/*! no static exports found */
3914/***/ (function(module, exports, __webpack_require__) {
3915
3916//! moment.js locale configuration
3917//! locale : Greek [el]
3918//! author : Aggelos Karalias : https://github.com/mehiel
3919
3920;(function (global, factory) {
3921    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
3922   undefined
3923}(this, (function (moment) { 'use strict';
3924
3925    //! moment.js locale configuration
3926
3927    function isFunction(input) {
3928        return (
3929            (typeof Function !== 'undefined' && input instanceof Function) ||
3930            Object.prototype.toString.call(input) === '[object Function]'
3931        );
3932    }
3933
3934    var el = moment.defineLocale('el', {
3935        monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(
3936            '_'
3937        ),
3938        monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(
3939            '_'
3940        ),
3941        months: function (momentToFormat, format) {
3942            if (!momentToFormat) {
3943                return this._monthsNominativeEl;
3944            } else if (
3945                typeof format === 'string' &&
3946                /D/.test(format.substring(0, format.indexOf('MMMM')))
3947            ) {
3948                // if there is a day number before 'MMMM'
3949                return this._monthsGenitiveEl[momentToFormat.month()];
3950            } else {
3951                return this._monthsNominativeEl[momentToFormat.month()];
3952            }
3953        },
3954        monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),
3955        weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(
3956            '_'
3957        ),
3958        weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
3959        weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
3960        meridiem: function (hours, minutes, isLower) {
3961            if (hours > 11) {
3962                return isLower ? 'μμ' : 'ΜΜ';
3963            } else {
3964                return isLower ? 'πμ' : 'ΠΜ';
3965            }
3966        },
3967        isPM: function (input) {
3968            return (input + '').toLowerCase()[0] === 'μ';
3969        },
3970        meridiemParse: /[ΠΜ]\.?Μ?\.?/i,
3971        longDateFormat: {
3972            LT: 'h:mm A',
3973            LTS: 'h:mm:ss A',
3974            L: 'DD/MM/YYYY',
3975            LL: 'D MMMM YYYY',
3976            LLL: 'D MMMM YYYY h:mm A',
3977            LLLL: 'dddd, D MMMM YYYY h:mm A',
3978        },
3979        calendarEl: {
3980            sameDay: '[Σήμερα {}] LT',
3981            nextDay: '[Αύριο {}] LT',
3982            nextWeek: 'dddd [{}] LT',
3983            lastDay: '[Χθες {}] LT',
3984            lastWeek: function () {
3985                switch (this.day()) {
3986                    case 6:
3987                        return '[το προηγούμενο] dddd [{}] LT';
3988                    default:
3989                        return '[την προηγούμενη] dddd [{}] LT';
3990                }
3991            },
3992            sameElse: 'L',
3993        },
3994        calendar: function (key, mom) {
3995            var output = this._calendarEl[key],
3996                hours = mom && mom.hours();
3997            if (isFunction(output)) {
3998                output = output.apply(mom);
3999            }
4000            return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');
4001        },
4002        relativeTime: {
4003            future: 'σε %s',
4004            past: '%s πριν',
4005            s: 'λίγα δευτερόλεπτα',
4006            ss: '%d δευτερόλεπτα',
4007            m: 'ένα λεπτό',
4008            mm: '%d λεπτά',
4009            h: 'μία ώρα',
4010            hh: '%d ώρες',
4011            d: 'μία μέρα',
4012            dd: '%d μέρες',
4013            M: 'ένας μήνας',
4014            MM: '%d μήνες',
4015            y: 'ένας χρόνος',
4016            yy: '%d χρόνια',
4017        },
4018        dayOfMonthOrdinalParse: /\d{1,2}η/,
4019        ordinal: '%dη',
4020        week: {
4021            dow: 1, // Monday is the first day of the week.
4022            doy: 4, // The week that contains Jan 4st is the first week of the year.
4023        },
4024    });
4025
4026    return el;
4027
4028})));
4029
4030
4031/***/ }),
4032
vendor: 3,144 bytes, lines 4033-4120
4033/***/ "../../node_modules/moment/locale/en-au.js":
4034/*!************************************************************************************************************************************!*\
4035  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/en-au.js ***!
4036  \************************************************************************************************************************************/
4037/*! no static exports found */
4038/***/ (function(module, exports, __webpack_require__) {
4039
4040//! moment.js locale configuration
4041//! locale : English (Australia) [en-au]
4042//! author : Jared Morse : https://github.com/jarcoal
4043
4044;(function (global, factory) {
4045    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
4046   undefined
4047}(this, (function (moment) { 'use strict';
4048
4049    //! moment.js locale configuration
4050
4051    var enAu = moment.defineLocale('en-au', {
4052        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
4053            '_'
4054        ),
4055        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
4056        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
4057            '_'
4058        ),
4059        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
4060        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
4061        longDateFormat: {
4062            LT: 'h:mm A',
4063            LTS: 'h:mm:ss A',
4064            L: 'DD/MM/YYYY',
4065            LL: 'D MMMM YYYY',
4066            LLL: 'D MMMM YYYY h:mm A',
4067            LLLL: 'dddd, D MMMM YYYY h:mm A',
4068        },
4069        calendar: {
4070            sameDay: '[Today at] LT',
4071            nextDay: '[Tomorrow at] LT',
4072            nextWeek: 'dddd [at] LT',
4073            lastDay: '[Yesterday at] LT',
4074            lastWeek: '[Last] dddd [at] LT',
4075            sameElse: 'L',
4076        },
4077        relativeTime: {
4078            future: 'in %s',
4079            past: '%s ago',
4080            s: 'a few seconds',
4081            ss: '%d seconds',
4082            m: 'a minute',
4083            mm: '%d minutes',
4084            h: 'an hour',
4085            hh: '%d hours',
4086            d: 'a day',
4087            dd: '%d days',
4088            M: 'a month',
4089            MM: '%d months',
4090            y: 'a year',
4091            yy: '%d years',
4092        },
4093        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
4094        ordinal: function (number) {
4095            var b = number % 10,
4096                output =
4097                    ~~((number % 100) / 10) === 1
4098                        ? 'th'
4099                        : b === 1
4100                        ? 'st'
4101                        : b === 2
4102                        ? 'nd'
4103                        : b === 3
4104                        ? 'rd'
4105                        : 'th';
4106            return number + output;
4107        },
4108        week: {
4109            dow: 0, // Sunday is the first day of the week.
4110            doy: 4, // The week that contains Jan 4th is the first week of the year.
4111        },
4112    });
4113
4114    return enAu;
4115
4116})));
4117
4118
4119/***/ }),
4120
vendor: 2,973 bytes, lines 4121-4204
4121/***/ "../../node_modules/moment/locale/en-ca.js":
4122/*!************************************************************************************************************************************!*\
4123  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/en-ca.js ***!
4124  \************************************************************************************************************************************/
4125/*! no static exports found */
4126/***/ (function(module, exports, __webpack_require__) {
4127
4128//! moment.js locale configuration
4129//! locale : English (Canada) [en-ca]
4130//! author : Jonathan Abourbih : https://github.com/jonbca
4131
4132;(function (global, factory) {
4133    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
4134   undefined
4135}(this, (function (moment) { 'use strict';
4136
4137    //! moment.js locale configuration
4138
4139    var enCa = moment.defineLocale('en-ca', {
4140        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
4141            '_'
4142        ),
4143        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
4144        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
4145            '_'
4146        ),
4147        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
4148        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
4149        longDateFormat: {
4150            LT: 'h:mm A',
4151            LTS: 'h:mm:ss A',
4152            L: 'YYYY-MM-DD',
4153            LL: 'MMMM D, YYYY',
4154            LLL: 'MMMM D, YYYY h:mm A',
4155            LLLL: 'dddd, MMMM D, YYYY h:mm A',
4156        },
4157        calendar: {
4158            sameDay: '[Today at] LT',
4159            nextDay: '[Tomorrow at] LT',
4160            nextWeek: 'dddd [at] LT',
4161            lastDay: '[Yesterday at] LT',
4162            lastWeek: '[Last] dddd [at] LT',
4163            sameElse: 'L',
4164        },
4165        relativeTime: {
4166            future: 'in %s',
4167            past: '%s ago',
4168            s: 'a few seconds',
4169            ss: '%d seconds',
4170            m: 'a minute',
4171            mm: '%d minutes',
4172            h: 'an hour',
4173            hh: '%d hours',
4174            d: 'a day',
4175            dd: '%d days',
4176            M: 'a month',
4177            MM: '%d months',
4178            y: 'a year',
4179            yy: '%d years',
4180        },
4181        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
4182        ordinal: function (number) {
4183            var b = number % 10,
4184                output =
4185                    ~~((number % 100) / 10) === 1
4186                        ? 'th'
4187                        : b === 1
4188                        ? 'st'
4189                        : b === 2
4190                        ? 'nd'
4191                        : b === 3
4192                        ? 'rd'
4193                        : 'th';
4194            return number + output;
4195        },
4196    });
4197
4198    return enCa;
4199
4200})));
4201
4202
4203/***/ }),
4204
vendor: 3,150 bytes, lines 4205-4292
4205/***/ "../../node_modules/moment/locale/en-gb.js":
4206/*!************************************************************************************************************************************!*\
4207  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/en-gb.js ***!
4208  \************************************************************************************************************************************/
4209/*! no static exports found */
4210/***/ (function(module, exports, __webpack_require__) {
4211
4212//! moment.js locale configuration
4213//! locale : English (United Kingdom) [en-gb]
4214//! author : Chris Gedrim : https://github.com/chrisgedrim
4215
4216;(function (global, factory) {
4217    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
4218   undefined
4219}(this, (function (moment) { 'use strict';
4220
4221    //! moment.js locale configuration
4222
4223    var enGb = moment.defineLocale('en-gb', {
4224        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
4225            '_'
4226        ),
4227        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
4228        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
4229            '_'
4230        ),
4231        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
4232        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
4233        longDateFormat: {
4234            LT: 'HH:mm',
4235            LTS: 'HH:mm:ss',
4236            L: 'DD/MM/YYYY',
4237            LL: 'D MMMM YYYY',
4238            LLL: 'D MMMM YYYY HH:mm',
4239            LLLL: 'dddd, D MMMM YYYY HH:mm',
4240        },
4241        calendar: {
4242            sameDay: '[Today at] LT',
4243            nextDay: '[Tomorrow at] LT',
4244            nextWeek: 'dddd [at] LT',
4245            lastDay: '[Yesterday at] LT',
4246            lastWeek: '[Last] dddd [at] LT',
4247            sameElse: 'L',
4248        },
4249        relativeTime: {
4250            future: 'in %s',
4251            past: '%s ago',
4252            s: 'a few seconds',
4253            ss: '%d seconds',
4254            m: 'a minute',
4255            mm: '%d minutes',
4256            h: 'an hour',
4257            hh: '%d hours',
4258            d: 'a day',
4259            dd: '%d days',
4260            M: 'a month',
4261            MM: '%d months',
4262            y: 'a year',
4263            yy: '%d years',
4264        },
4265        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
4266        ordinal: function (number) {
4267            var b = number % 10,
4268                output =
4269                    ~~((number % 100) / 10) === 1
4270                        ? 'th'
4271                        : b === 1
4272                        ? 'st'
4273                        : b === 2
4274                        ? 'nd'
4275                        : b === 3
4276                        ? 'rd'
4277                        : 'th';
4278            return number + output;
4279        },
4280        week: {
4281            dow: 1, // Monday is the first day of the week.
4282            doy: 4, // The week that contains Jan 4th is the first week of the year.
4283        },
4284    });
4285
4286    return enGb;
4287
4288})));
4289
4290
4291/***/ }),
4292
vendor: 3,148 bytes, lines 4293-4380
4293/***/ "../../node_modules/moment/locale/en-ie.js":
4294/*!************************************************************************************************************************************!*\
4295  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/en-ie.js ***!
4296  \************************************************************************************************************************************/
4297/*! no static exports found */
4298/***/ (function(module, exports, __webpack_require__) {
4299
4300//! moment.js locale configuration
4301//! locale : English (Ireland) [en-ie]
4302//! author : Chris Cartlidge : https://github.com/chriscartlidge
4303
4304;(function (global, factory) {
4305    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
4306   undefined
4307}(this, (function (moment) { 'use strict';
4308
4309    //! moment.js locale configuration
4310
4311    var enIe = moment.defineLocale('en-ie', {
4312        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
4313            '_'
4314        ),
4315        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
4316        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
4317            '_'
4318        ),
4319        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
4320        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
4321        longDateFormat: {
4322            LT: 'HH:mm',
4323            LTS: 'HH:mm:ss',
4324            L: 'DD/MM/YYYY',
4325            LL: 'D MMMM YYYY',
4326            LLL: 'D MMMM YYYY HH:mm',
4327            LLLL: 'dddd D MMMM YYYY HH:mm',
4328        },
4329        calendar: {
4330            sameDay: '[Today at] LT',
4331            nextDay: '[Tomorrow at] LT',
4332            nextWeek: 'dddd [at] LT',
4333            lastDay: '[Yesterday at] LT',
4334            lastWeek: '[Last] dddd [at] LT',
4335            sameElse: 'L',
4336        },
4337        relativeTime: {
4338            future: 'in %s',
4339            past: '%s ago',
4340            s: 'a few seconds',
4341            ss: '%d seconds',
4342            m: 'a minute',
4343            mm: '%d minutes',
4344            h: 'an hour',
4345            hh: '%d hours',
4346            d: 'a day',
4347            dd: '%d days',
4348            M: 'a month',
4349            MM: '%d months',
4350            y: 'a year',
4351            yy: '%d years',
4352        },
4353        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
4354        ordinal: function (number) {
4355            var b = number % 10,
4356                output =
4357                    ~~((number % 100) / 10) === 1
4358                        ? 'th'
4359                        : b === 1
4360                        ? 'st'
4361                        : b === 2
4362                        ? 'nd'
4363                        : b === 3
4364                        ? 'rd'
4365                        : 'th';
4366            return number + output;
4367        },
4368        week: {
4369            dow: 1, // Monday is the first day of the week.
4370            doy: 4, // The week that contains Jan 4th is the first week of the year.
4371        },
4372    });
4373
4374    return enIe;
4375
4376})));
4377
4378
4379/***/ }),
4380
vendor: 2,966 bytes, lines 4381-4464
4381/***/ "../../node_modules/moment/locale/en-il.js":
4382/*!************************************************************************************************************************************!*\
4383  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/en-il.js ***!
4384  \************************************************************************************************************************************/
4385/*! no static exports found */
4386/***/ (function(module, exports, __webpack_require__) {
4387
4388//! moment.js locale configuration
4389//! locale : English (Israel) [en-il]
4390//! author : Chris Gedrim : https://github.com/chrisgedrim
4391
4392;(function (global, factory) {
4393    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
4394   undefined
4395}(this, (function (moment) { 'use strict';
4396
4397    //! moment.js locale configuration
4398
4399    var enIl = moment.defineLocale('en-il', {
4400        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
4401            '_'
4402        ),
4403        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
4404        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
4405            '_'
4406        ),
4407        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
4408        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
4409        longDateFormat: {
4410            LT: 'HH:mm',
4411            LTS: 'HH:mm:ss',
4412            L: 'DD/MM/YYYY',
4413            LL: 'D MMMM YYYY',
4414            LLL: 'D MMMM YYYY HH:mm',
4415            LLLL: 'dddd, D MMMM YYYY HH:mm',
4416        },
4417        calendar: {
4418            sameDay: '[Today at] LT',
4419            nextDay: '[Tomorrow at] LT',
4420            nextWeek: 'dddd [at] LT',
4421            lastDay: '[Yesterday at] LT',
4422            lastWeek: '[Last] dddd [at] LT',
4423            sameElse: 'L',
4424        },
4425        relativeTime: {
4426            future: 'in %s',
4427            past: '%s ago',
4428            s: 'a few seconds',
4429            ss: '%d seconds',
4430            m: 'a minute',
4431            mm: '%d minutes',
4432            h: 'an hour',
4433            hh: '%d hours',
4434            d: 'a day',
4435            dd: '%d days',
4436            M: 'a month',
4437            MM: '%d months',
4438            y: 'a year',
4439            yy: '%d years',
4440        },
4441        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
4442        ordinal: function (number) {
4443            var b = number % 10,
4444                output =
4445                    ~~((number % 100) / 10) === 1
4446                        ? 'th'
4447                        : b === 1
4448                        ? 'st'
4449                        : b === 2
4450                        ? 'nd'
4451                        : b === 3
4452                        ? 'rd'
4453                        : 'th';
4454            return number + output;
4455        },
4456    });
4457
4458    return enIl;
4459
4460})));
4461
4462
4463/***/ }),
4464
vendor: 3,144 bytes, lines 4465-4552
4465/***/ "../../node_modules/moment/locale/en-in.js":
4466/*!************************************************************************************************************************************!*\
4467  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/en-in.js ***!
4468  \************************************************************************************************************************************/
4469/*! no static exports found */
4470/***/ (function(module, exports, __webpack_require__) {
4471
4472//! moment.js locale configuration
4473//! locale : English (India) [en-in]
4474//! author : Jatin Agrawal : https://github.com/jatinag22
4475
4476;(function (global, factory) {
4477    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
4478   undefined
4479}(this, (function (moment) { 'use strict';
4480
4481    //! moment.js locale configuration
4482
4483    var enIn = moment.defineLocale('en-in', {
4484        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
4485            '_'
4486        ),
4487        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
4488        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
4489            '_'
4490        ),
4491        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
4492        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
4493        longDateFormat: {
4494            LT: 'h:mm A',
4495            LTS: 'h:mm:ss A',
4496            L: 'DD/MM/YYYY',
4497            LL: 'D MMMM YYYY',
4498            LLL: 'D MMMM YYYY h:mm A',
4499            LLLL: 'dddd, D MMMM YYYY h:mm A',
4500        },
4501        calendar: {
4502            sameDay: '[Today at] LT',
4503            nextDay: '[Tomorrow at] LT',
4504            nextWeek: 'dddd [at] LT',
4505            lastDay: '[Yesterday at] LT',
4506            lastWeek: '[Last] dddd [at] LT',
4507            sameElse: 'L',
4508        },
4509        relativeTime: {
4510            future: 'in %s',
4511            past: '%s ago',
4512            s: 'a few seconds',
4513            ss: '%d seconds',
4514            m: 'a minute',
4515            mm: '%d minutes',
4516            h: 'an hour',
4517            hh: '%d hours',
4518            d: 'a day',
4519            dd: '%d days',
4520            M: 'a month',
4521            MM: '%d months',
4522            y: 'a year',
4523            yy: '%d years',
4524        },
4525        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
4526        ordinal: function (number) {
4527            var b = number % 10,
4528                output =
4529                    ~~((number % 100) / 10) === 1
4530                        ? 'th'
4531                        : b === 1
4532                        ? 'st'
4533                        : b === 2
4534                        ? 'nd'
4535                        : b === 3
4536                        ? 'rd'
4537                        : 'th';
4538            return number + output;
4539        },
4540        week: {
4541            dow: 0, // Sunday is the first day of the week.
4542            doy: 6, // The week that contains Jan 1st is the first week of the year.
4543        },
4544    });
4545
4546    return enIn;
4547
4548})));
4549
4550
4551/***/ }),
4552
vendor: 3,153 bytes, lines 4553-4640
4553/***/ "../../node_modules/moment/locale/en-nz.js":
4554/*!************************************************************************************************************************************!*\
4555  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/en-nz.js ***!
4556  \************************************************************************************************************************************/
4557/*! no static exports found */
4558/***/ (function(module, exports, __webpack_require__) {
4559
4560//! moment.js locale configuration
4561//! locale : English (New Zealand) [en-nz]
4562//! author : Luke McGregor : https://github.com/lukemcgregor
4563
4564;(function (global, factory) {
4565    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
4566   undefined
4567}(this, (function (moment) { 'use strict';
4568
4569    //! moment.js locale configuration
4570
4571    var enNz = moment.defineLocale('en-nz', {
4572        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
4573            '_'
4574        ),
4575        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
4576        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
4577            '_'
4578        ),
4579        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
4580        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
4581        longDateFormat: {
4582            LT: 'h:mm A',
4583            LTS: 'h:mm:ss A',
4584            L: 'DD/MM/YYYY',
4585            LL: 'D MMMM YYYY',
4586            LLL: 'D MMMM YYYY h:mm A',
4587            LLLL: 'dddd, D MMMM YYYY h:mm A',
4588        },
4589        calendar: {
4590            sameDay: '[Today at] LT',
4591            nextDay: '[Tomorrow at] LT',
4592            nextWeek: 'dddd [at] LT',
4593            lastDay: '[Yesterday at] LT',
4594            lastWeek: '[Last] dddd [at] LT',
4595            sameElse: 'L',
4596        },
4597        relativeTime: {
4598            future: 'in %s',
4599            past: '%s ago',
4600            s: 'a few seconds',
4601            ss: '%d seconds',
4602            m: 'a minute',
4603            mm: '%d minutes',
4604            h: 'an hour',
4605            hh: '%d hours',
4606            d: 'a day',
4607            dd: '%d days',
4608            M: 'a month',
4609            MM: '%d months',
4610            y: 'a year',
4611            yy: '%d years',
4612        },
4613        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
4614        ordinal: function (number) {
4615            var b = number % 10,
4616                output =
4617                    ~~((number % 100) / 10) === 1
4618                        ? 'th'
4619                        : b === 1
4620                        ? 'st'
4621                        : b === 2
4622                        ? 'nd'
4623                        : b === 3
4624                        ? 'rd'
4625                        : 'th';
4626            return number + output;
4627        },
4628        week: {
4629            dow: 1, // Monday is the first day of the week.
4630            doy: 4, // The week that contains Jan 4th is the first week of the year.
4631        },
4632    });
4633
4634    return enNz;
4635
4636})));
4637
4638
4639/***/ }),
4640
vendor: 3,162 bytes, lines 4641-4728
4641/***/ "../../node_modules/moment/locale/en-sg.js":
4642/*!************************************************************************************************************************************!*\
4643  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/en-sg.js ***!
4644  \************************************************************************************************************************************/
4645/*! no static exports found */
4646/***/ (function(module, exports, __webpack_require__) {
4647
4648//! moment.js locale configuration
4649//! locale : English (Singapore) [en-sg]
4650//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension
4651
4652;(function (global, factory) {
4653    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
4654   undefined
4655}(this, (function (moment) { 'use strict';
4656
4657    //! moment.js locale configuration
4658
4659    var enSg = moment.defineLocale('en-sg', {
4660        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
4661            '_'
4662        ),
4663        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
4664        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
4665            '_'
4666        ),
4667        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
4668        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
4669        longDateFormat: {
4670            LT: 'HH:mm',
4671            LTS: 'HH:mm:ss',
4672            L: 'DD/MM/YYYY',
4673            LL: 'D MMMM YYYY',
4674            LLL: 'D MMMM YYYY HH:mm',
4675            LLLL: 'dddd, D MMMM YYYY HH:mm',
4676        },
4677        calendar: {
4678            sameDay: '[Today at] LT',
4679            nextDay: '[Tomorrow at] LT',
4680            nextWeek: 'dddd [at] LT',
4681            lastDay: '[Yesterday at] LT',
4682            lastWeek: '[Last] dddd [at] LT',
4683            sameElse: 'L',
4684        },
4685        relativeTime: {
4686            future: 'in %s',
4687            past: '%s ago',
4688            s: 'a few seconds',
4689            ss: '%d seconds',
4690            m: 'a minute',
4691            mm: '%d minutes',
4692            h: 'an hour',
4693            hh: '%d hours',
4694            d: 'a day',
4695            dd: '%d days',
4696            M: 'a month',
4697            MM: '%d months',
4698            y: 'a year',
4699            yy: '%d years',
4700        },
4701        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
4702        ordinal: function (number) {
4703            var b = number % 10,
4704                output =
4705                    ~~((number % 100) / 10) === 1
4706                        ? 'th'
4707                        : b === 1
4708                        ? 'st'
4709                        : b === 2
4710                        ? 'nd'
4711                        : b === 3
4712                        ? 'rd'
4713                        : 'th';
4714            return number + output;
4715        },
4716        week: {
4717            dow: 1, // Monday is the first day of the week.
4718            doy: 4, // The week that contains Jan 4th is the first week of the year.
4719        },
4720    });
4721
4722    return enSg;
4723
4724})));
4725
4726
4727/***/ }),
4728
vendor: 3,425 bytes, lines 4729-4816
4729/***/ "../../node_modules/moment/locale/eo.js":
4730/*!*********************************************************************************************************************************!*\
4731  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/eo.js ***!
4732  \*********************************************************************************************************************************/
4733/*! no static exports found */
4734/***/ (function(module, exports, __webpack_require__) {
4735
4736//! moment.js locale configuration
4737//! locale : Esperanto [eo]
4738//! author : Colin Dean : https://github.com/colindean
4739//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia
4740//! comment : miestasmia corrected the translation by colindean
4741//! comment : Vivakvo corrected the translation by colindean and miestasmia
4742
4743;(function (global, factory) {
4744    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
4745   undefined
4746}(this, (function (moment) { 'use strict';
4747
4748    //! moment.js locale configuration
4749
4750    var eo = moment.defineLocale('eo', {
4751        months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aÅ­gusto_septembro_oktobro_novembro_decembro'.split(
4752            '_'
4753        ),
4754        monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aÅ­g_sept_okt_nov_dec'.split('_'),
4755        weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),
4756        weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),
4757        weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),
4758        longDateFormat: {
4759            LT: 'HH:mm',
4760            LTS: 'HH:mm:ss',
4761            L: 'YYYY-MM-DD',
4762            LL: '[la] D[-an de] MMMM, YYYY',
4763            LLL: '[la] D[-an de] MMMM, YYYY HH:mm',
4764            LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',
4765            llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',
4766        },
4767        meridiemParse: /[ap]\.t\.m/i,
4768        isPM: function (input) {
4769            return input.charAt(0).toLowerCase() === 'p';
4770        },
4771        meridiem: function (hours, minutes, isLower) {
4772            if (hours > 11) {
4773                return isLower ? 'p.t.m.' : 'P.T.M.';
4774            } else {
4775                return isLower ? 'a.t.m.' : 'A.T.M.';
4776            }
4777        },
4778        calendar: {
4779            sameDay: '[HodiaÅ­ je] LT',
4780            nextDay: '[MorgaÅ­ je] LT',
4781            nextWeek: 'dddd[n je] LT',
4782            lastDay: '[HieraÅ­ je] LT',
4783            lastWeek: '[pasintan] dddd[n je] LT',
4784            sameElse: 'L',
4785        },
4786        relativeTime: {
4787            future: 'post %s',
4788            past: 'antaÅ­ %s',
4789            s: 'kelkaj sekundoj',
4790            ss: '%d sekundoj',
4791            m: 'unu minuto',
4792            mm: '%d minutoj',
4793            h: 'unu horo',
4794            hh: '%d horoj',
4795            d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo
4796            dd: '%d tagoj',
4797            M: 'unu monato',
4798            MM: '%d monatoj',
4799            y: 'unu jaro',
4800            yy: '%d jaroj',
4801        },
4802        dayOfMonthOrdinalParse: /\d{1,2}a/,
4803        ordinal: '%da',
4804        week: {
4805            dow: 1, // Monday is the first day of the week.
4806            doy: 7, // The week that contains Jan 7th is the first week of the year.
4807        },
4808    });
4809
4810    return eo;
4811
4812})));
4813
4814
4815/***/ }),
4816
vendor: 4,635 bytes, lines 4817-4938
4817/***/ "../../node_modules/moment/locale/es-do.js":
4818/*!************************************************************************************************************************************!*\
4819  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/es-do.js ***!
4820  \************************************************************************************************************************************/
4821/*! no static exports found */
4822/***/ (function(module, exports, __webpack_require__) {
4823
4824//! moment.js locale configuration
4825//! locale : Spanish (Dominican Republic) [es-do]
4826
4827;(function (global, factory) {
4828    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
4829   undefined
4830}(this, (function (moment) { 'use strict';
4831
4832    //! moment.js locale configuration
4833
4834    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
4835            '_'
4836        ),
4837        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
4838        monthsParse = [
4839            /^ene/i,
4840            /^feb/i,
4841            /^mar/i,
4842            /^abr/i,
4843            /^may/i,
4844            /^jun/i,
4845            /^jul/i,
4846            /^ago/i,
4847            /^sep/i,
4848            /^oct/i,
4849            /^nov/i,
4850            /^dic/i,
4851        ],
4852        monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
4853
4854    var esDo = moment.defineLocale('es-do', {
4855        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
4856            '_'
4857        ),
4858        monthsShort: function (m, format) {
4859            if (!m) {
4860                return monthsShortDot;
4861            } else if (/-MMM-/.test(format)) {
4862                return monthsShort[m.month()];
4863            } else {
4864                return monthsShortDot[m.month()];
4865            }
4866        },
4867        monthsRegex: monthsRegex,
4868        monthsShortRegex: monthsRegex,
4869        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
4870        monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
4871        monthsParse: monthsParse,
4872        longMonthsParse: monthsParse,
4873        shortMonthsParse: monthsParse,
4874        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
4875        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
4876        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
4877        weekdaysParseExact: true,
4878        longDateFormat: {
4879            LT: 'h:mm A',
4880            LTS: 'h:mm:ss A',
4881            L: 'DD/MM/YYYY',
4882            LL: 'D [de] MMMM [de] YYYY',
4883            LLL: 'D [de] MMMM [de] YYYY h:mm A',
4884            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
4885        },
4886        calendar: {
4887            sameDay: function () {
4888                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
4889            },
4890            nextDay: function () {
4891                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
4892            },
4893            nextWeek: function () {
4894                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
4895            },
4896            lastDay: function () {
4897                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
4898            },
4899            lastWeek: function () {
4900                return (
4901                    '[el] dddd [pasado a la' +
4902                    (this.hours() !== 1 ? 's' : '') +
4903                    '] LT'
4904                );
4905            },
4906            sameElse: 'L',
4907        },
4908        relativeTime: {
4909            future: 'en %s',
4910            past: 'hace %s',
4911            s: 'unos segundos',
4912            ss: '%d segundos',
4913            m: 'un minuto',
4914            mm: '%d minutos',
4915            h: 'una hora',
4916            hh: '%d horas',
4917            d: 'un día',
4918            dd: '%d días',
4919            M: 'un mes',
4920            MM: '%d meses',
4921            y: 'un año',
4922            yy: '%d años',
4923        },
4924        dayOfMonthOrdinalParse: /\d{1,2}º/,
4925        ordinal: '%dº',
4926        week: {
4927            dow: 1, // Monday is the first day of the week.
4928            doy: 4, // The week that contains Jan 4th is the first week of the year.
4929        },
4930    });
4931
4932    return esDo;
4933
4934})));
4935
4936
4937/***/ }),
4938
vendor: 4,734 bytes, lines 4939-5062
4939/***/ "../../node_modules/moment/locale/es-us.js":
4940/*!************************************************************************************************************************************!*\
4941  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/es-us.js ***!
4942  \************************************************************************************************************************************/
4943/*! no static exports found */
4944/***/ (function(module, exports, __webpack_require__) {
4945
4946//! moment.js locale configuration
4947//! locale : Spanish (United States) [es-us]
4948//! author : bustta : https://github.com/bustta
4949//! author : chrisrodz : https://github.com/chrisrodz
4950
4951;(function (global, factory) {
4952    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
4953   undefined
4954}(this, (function (moment) { 'use strict';
4955
4956    //! moment.js locale configuration
4957
4958    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
4959            '_'
4960        ),
4961        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
4962        monthsParse = [
4963            /^ene/i,
4964            /^feb/i,
4965            /^mar/i,
4966            /^abr/i,
4967            /^may/i,
4968            /^jun/i,
4969            /^jul/i,
4970            /^ago/i,
4971            /^sep/i,
4972            /^oct/i,
4973            /^nov/i,
4974            /^dic/i,
4975        ],
4976        monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
4977
4978    var esUs = moment.defineLocale('es-us', {
4979        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
4980            '_'
4981        ),
4982        monthsShort: function (m, format) {
4983            if (!m) {
4984                return monthsShortDot;
4985            } else if (/-MMM-/.test(format)) {
4986                return monthsShort[m.month()];
4987            } else {
4988                return monthsShortDot[m.month()];
4989            }
4990        },
4991        monthsRegex: monthsRegex,
4992        monthsShortRegex: monthsRegex,
4993        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
4994        monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
4995        monthsParse: monthsParse,
4996        longMonthsParse: monthsParse,
4997        shortMonthsParse: monthsParse,
4998        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
4999        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
5000        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
5001        weekdaysParseExact: true,
5002        longDateFormat: {
5003            LT: 'h:mm A',
5004            LTS: 'h:mm:ss A',
5005            L: 'MM/DD/YYYY',
5006            LL: 'D [de] MMMM [de] YYYY',
5007            LLL: 'D [de] MMMM [de] YYYY h:mm A',
5008            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
5009        },
5010        calendar: {
5011            sameDay: function () {
5012                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
5013            },
5014            nextDay: function () {
5015                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
5016            },
5017            nextWeek: function () {
5018                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
5019            },
5020            lastDay: function () {
5021                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
5022            },
5023            lastWeek: function () {
5024                return (
5025                    '[el] dddd [pasado a la' +
5026                    (this.hours() !== 1 ? 's' : '') +
5027                    '] LT'
5028                );
5029            },
5030            sameElse: 'L',
5031        },
5032        relativeTime: {
5033            future: 'en %s',
5034            past: 'hace %s',
5035            s: 'unos segundos',
5036            ss: '%d segundos',
5037            m: 'un minuto',
5038            mm: '%d minutos',
5039            h: 'una hora',
5040            hh: '%d horas',
5041            d: 'un día',
5042            dd: '%d días',
5043            M: 'un mes',
5044            MM: '%d meses',
5045            y: 'un año',
5046            yy: '%d años',
5047        },
5048        dayOfMonthOrdinalParse: /\d{1,2}º/,
5049        ordinal: '%dº',
5050        week: {
5051            dow: 0, // Sunday is the first day of the week.
5052            doy: 6, // The week that contains Jan 6th is the first week of the year.
5053        },
5054    });
5055
5056    return esUs;
5057
5058})));
5059
5060
5061/***/ }),
5062
vendor: 4,681 bytes, lines 5063-5186
5063/***/ "../../node_modules/moment/locale/es.js":
5064/*!*********************************************************************************************************************************!*\
5065  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/es.js ***!
5066  \*********************************************************************************************************************************/
5067/*! no static exports found */
5068/***/ (function(module, exports, __webpack_require__) {
5069
5070//! moment.js locale configuration
5071//! locale : Spanish [es]
5072//! author : Julio Napurí : https://github.com/julionc
5073
5074;(function (global, factory) {
5075    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
5076   undefined
5077}(this, (function (moment) { 'use strict';
5078
5079    //! moment.js locale configuration
5080
5081    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
5082            '_'
5083        ),
5084        monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
5085        monthsParse = [
5086            /^ene/i,
5087            /^feb/i,
5088            /^mar/i,
5089            /^abr/i,
5090            /^may/i,
5091            /^jun/i,
5092            /^jul/i,
5093            /^ago/i,
5094            /^sep/i,
5095            /^oct/i,
5096            /^nov/i,
5097            /^dic/i,
5098        ],
5099        monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
5100
5101    var es = moment.defineLocale('es', {
5102        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
5103            '_'
5104        ),
5105        monthsShort: function (m, format) {
5106            if (!m) {
5107                return monthsShortDot;
5108            } else if (/-MMM-/.test(format)) {
5109                return monthsShort[m.month()];
5110            } else {
5111                return monthsShortDot[m.month()];
5112            }
5113        },
5114        monthsRegex: monthsRegex,
5115        monthsShortRegex: monthsRegex,
5116        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
5117        monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
5118        monthsParse: monthsParse,
5119        longMonthsParse: monthsParse,
5120        shortMonthsParse: monthsParse,
5121        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
5122        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
5123        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
5124        weekdaysParseExact: true,
5125        longDateFormat: {
5126            LT: 'H:mm',
5127            LTS: 'H:mm:ss',
5128            L: 'DD/MM/YYYY',
5129            LL: 'D [de] MMMM [de] YYYY',
5130            LLL: 'D [de] MMMM [de] YYYY H:mm',
5131            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
5132        },
5133        calendar: {
5134            sameDay: function () {
5135                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
5136            },
5137            nextDay: function () {
5138                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
5139            },
5140            nextWeek: function () {
5141                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
5142            },
5143            lastDay: function () {
5144                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
5145            },
5146            lastWeek: function () {
5147                return (
5148                    '[el] dddd [pasado a la' +
5149                    (this.hours() !== 1 ? 's' : '') +
5150                    '] LT'
5151                );
5152            },
5153            sameElse: 'L',
5154        },
5155        relativeTime: {
5156            future: 'en %s',
5157            past: 'hace %s',
5158            s: 'unos segundos',
5159            ss: '%d segundos',
5160            m: 'un minuto',
5161            mm: '%d minutos',
5162            h: 'una hora',
5163            hh: '%d horas',
5164            d: 'un día',
5165            dd: '%d días',
5166            M: 'un mes',
5167            MM: '%d meses',
5168            y: 'un año',
5169            yy: '%d años',
5170        },
5171        dayOfMonthOrdinalParse: /\d{1,2}º/,
5172        ordinal: '%dº',
5173        week: {
5174            dow: 1, // Monday is the first day of the week.
5175            doy: 4, // The week that contains Jan 4th is the first week of the year.
5176        },
5177        invalidDate: 'Fecha invalida',
5178    });
5179
5180    return es;
5181
5182})));
5183
5184
5185/***/ }),
5186
vendor: 3,762 bytes, lines 5187-5284
5187/***/ "../../node_modules/moment/locale/et.js":
5188/*!*********************************************************************************************************************************!*\
5189  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/et.js ***!
5190  \*********************************************************************************************************************************/
5191/*! no static exports found */
5192/***/ (function(module, exports, __webpack_require__) {
5193
5194//! moment.js locale configuration
5195//! locale : Estonian [et]
5196//! author : Henry Kehlmann : https://github.com/madhenry
5197//! improvements : Illimar Tambek : https://github.com/ragulka
5198
5199;(function (global, factory) {
5200    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
5201   undefined
5202}(this, (function (moment) { 'use strict';
5203
5204    //! moment.js locale configuration
5205
5206    function processRelativeTime(number, withoutSuffix, key, isFuture) {
5207        var format = {
5208            s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
5209            ss: [number + 'sekundi', number + 'sekundit'],
5210            m: ['ühe minuti', 'üks minut'],
5211            mm: [number + ' minuti', number + ' minutit'],
5212            h: ['ühe tunni', 'tund aega', 'üks tund'],
5213            hh: [number + ' tunni', number + ' tundi'],
5214            d: ['ühe päeva', 'üks päev'],
5215            M: ['kuu aja', 'kuu aega', 'üks kuu'],
5216            MM: [number + ' kuu', number + ' kuud'],
5217            y: ['ühe aasta', 'aasta', 'üks aasta'],
5218            yy: [number + ' aasta', number + ' aastat'],
5219        };
5220        if (withoutSuffix) {
5221            return format[key][2] ? format[key][2] : format[key][1];
5222        }
5223        return isFuture ? format[key][0] : format[key][1];
5224    }
5225
5226    var et = moment.defineLocale('et', {
5227        months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(
5228            '_'
5229        ),
5230        monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split(
5231            '_'
5232        ),
5233        weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(
5234            '_'
5235        ),
5236        weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),
5237        weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),
5238        longDateFormat: {
5239            LT: 'H:mm',
5240            LTS: 'H:mm:ss',
5241            L: 'DD.MM.YYYY',
5242            LL: 'D. MMMM YYYY',
5243            LLL: 'D. MMMM YYYY H:mm',
5244            LLLL: 'dddd, D. MMMM YYYY H:mm',
5245        },
5246        calendar: {
5247            sameDay: '[Täna,] LT',
5248            nextDay: '[Homme,] LT',
5249            nextWeek: '[Järgmine] dddd LT',
5250            lastDay: '[Eile,] LT',
5251            lastWeek: '[Eelmine] dddd LT',
5252            sameElse: 'L',
5253        },
5254        relativeTime: {
5255            future: '%s pärast',
5256            past: '%s tagasi',
5257            s: processRelativeTime,
5258            ss: processRelativeTime,
5259            m: processRelativeTime,
5260            mm: processRelativeTime,
5261            h: processRelativeTime,
5262            hh: processRelativeTime,
5263            d: processRelativeTime,
5264            dd: '%d päeva',
5265            M: processRelativeTime,
5266            MM: processRelativeTime,
5267            y: processRelativeTime,
5268            yy: processRelativeTime,
5269        },
5270        dayOfMonthOrdinalParse: /\d{1,2}\./,
5271        ordinal: '%d.',
5272        week: {
5273            dow: 1, // Monday is the first day of the week.
5274            doy: 4, // The week that contains Jan 4th is the first week of the year.
5275        },
5276    });
5277
5278    return et;
5279
5280})));
5281
5282
5283/***/ }),
5284
vendor: 3,006 bytes, lines 5285-5367
5285/***/ "../../node_modules/moment/locale/eu.js":
5286/*!*********************************************************************************************************************************!*\
5287  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/eu.js ***!
5288  \*********************************************************************************************************************************/
5289/*! no static exports found */
5290/***/ (function(module, exports, __webpack_require__) {
5291
5292//! moment.js locale configuration
5293//! locale : Basque [eu]
5294//! author : Eneko Illarramendi : https://github.com/eillarra
5295
5296;(function (global, factory) {
5297    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
5298   undefined
5299}(this, (function (moment) { 'use strict';
5300
5301    //! moment.js locale configuration
5302
5303    var eu = moment.defineLocale('eu', {
5304        months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(
5305            '_'
5306        ),
5307        monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(
5308            '_'
5309        ),
5310        monthsParseExact: true,
5311        weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(
5312            '_'
5313        ),
5314        weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),
5315        weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),
5316        weekdaysParseExact: true,
5317        longDateFormat: {
5318            LT: 'HH:mm',
5319            LTS: 'HH:mm:ss',
5320            L: 'YYYY-MM-DD',
5321            LL: 'YYYY[ko] MMMM[ren] D[a]',
5322            LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',
5323            LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
5324            l: 'YYYY-M-D',
5325            ll: 'YYYY[ko] MMM D[a]',
5326            lll: 'YYYY[ko] MMM D[a] HH:mm',
5327            llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',
5328        },
5329        calendar: {
5330            sameDay: '[gaur] LT[etan]',
5331            nextDay: '[bihar] LT[etan]',
5332            nextWeek: 'dddd LT[etan]',
5333            lastDay: '[atzo] LT[etan]',
5334            lastWeek: '[aurreko] dddd LT[etan]',
5335            sameElse: 'L',
5336        },
5337        relativeTime: {
5338            future: '%s barru',
5339            past: 'duela %s',
5340            s: 'segundo batzuk',
5341            ss: '%d segundo',
5342            m: 'minutu bat',
5343            mm: '%d minutu',
5344            h: 'ordu bat',
5345            hh: '%d ordu',
5346            d: 'egun bat',
5347            dd: '%d egun',
5348            M: 'hilabete bat',
5349            MM: '%d hilabete',
5350            y: 'urte bat',
5351            yy: '%d urte',
5352        },
5353        dayOfMonthOrdinalParse: /\d{1,2}\./,
5354        ordinal: '%d.',
5355        week: {
5356            dow: 1, // Monday is the first day of the week.
5357            doy: 7, // The week that contains Jan 7th is the first week of the year.
5358        },
5359    });
5360
5361    return eu;
5362
5363})));
5364
5365
5366/***/ }),
5367
vendor: 4,507 bytes, lines 5368-5497
5368/***/ "../../node_modules/moment/locale/fa.js":
5369/*!*********************************************************************************************************************************!*\
5370  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/fa.js ***!
5371  \*********************************************************************************************************************************/
5372/*! no static exports found */
5373/***/ (function(module, exports, __webpack_require__) {
5374
5375//! moment.js locale configuration
5376//! locale : Persian [fa]
5377//! author : Ebrahim Byagowi : https://github.com/ebraminio
5378
5379;(function (global, factory) {
5380    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
5381   undefined
5382}(this, (function (moment) { 'use strict';
5383
5384    //! moment.js locale configuration
5385
5386    var symbolMap = {
5387            '1': 'Û±',
5388            '2': 'Û²',
5389            '3': 'Û³',
5390            '4': 'Û´',
5391            '5': 'Ûµ',
5392            '6': 'Û¶',
5393            '7': 'Û·',
5394            '8': 'Û¸',
5395            '9': 'Û¹',
5396            '0': 'Û°',
5397        },
5398        numberMap = {
5399            'Û±': '1',
5400            'Û²': '2',
5401            'Û³': '3',
5402            'Û´': '4',
5403            'Ûµ': '5',
5404            'Û¶': '6',
5405            'Û·': '7',
5406            'Û¸': '8',
5407            'Û¹': '9',
5408            'Û°': '0',
5409        };
5410
5411    var fa = moment.defineLocale('fa', {
5412        months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
5413            '_'
5414        ),
5415        monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
5416            '_'
5417        ),
5418        weekdays: 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
5419            '_'
5420        ),
5421        weekdaysShort: 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
5422            '_'
5423        ),
5424        weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),
5425        weekdaysParseExact: true,
5426        longDateFormat: {
5427            LT: 'HH:mm',
5428            LTS: 'HH:mm:ss',
5429            L: 'DD/MM/YYYY',
5430            LL: 'D MMMM YYYY',
5431            LLL: 'D MMMM YYYY HH:mm',
5432            LLLL: 'dddd, D MMMM YYYY HH:mm',
5433        },
5434        meridiemParse: /قبل از ظهر|بعد از ظهر/,
5435        isPM: function (input) {
5436            return /بعد از ظهر/.test(input);
5437        },
5438        meridiem: function (hour, minute, isLower) {
5439            if (hour < 12) {
5440                return 'قبل از ظهر';
5441            } else {
5442                return 'بعد از ظهر';
5443            }
5444        },
5445        calendar: {
5446            sameDay: '[امروز ساعت] LT',
5447            nextDay: '[فردا ساعت] LT',
5448            nextWeek: 'dddd [ساعت] LT',
5449            lastDay: '[دیروز ساعت] LT',
5450            lastWeek: 'dddd [پیش] [ساعت] LT',
5451            sameElse: 'L',
5452        },
5453        relativeTime: {
5454            future: 'در %s',
5455            past: '%s پیش',
5456            s: 'چند ثانیه',
5457            ss: '%d ثانیه',
5458            m: 'یک دقیقه',
5459            mm: '%d دقیقه',
5460            h: 'یک ساعت',
5461            hh: '%d ساعت',
5462            d: 'یک روز',
5463            dd: '%d روز',
5464            M: 'یک ماه',
5465            MM: '%d ماه',
5466            y: 'یک سال',
5467            yy: '%d سال',
5468        },
5469        preparse: function (string) {
5470            return string
5471                .replace(/[Û°-Û¹]/g, function (match) {
5472                    return numberMap[match];
5473                })
5474                .replace(/،/g, ',');
5475        },
5476        postformat: function (string) {
5477            return string
5478                .replace(/\d/g, function (match) {
5479                    return symbolMap[match];
5480                })
5481                .replace(/,/g, '،');
5482        },
5483        dayOfMonthOrdinalParse: /\d{1,2}م/,
5484        ordinal: '%dم',
5485        week: {
5486            dow: 6, // Saturday is the first day of the week.
5487            doy: 12, // The week that contains Jan 12th is the first week of the year.
5488        },
5489    });
5490
5491    return fa;
5492
5493})));
5494
5495
5496/***/ }),
5497
vendor: 4,944 bytes, lines 5498-5638
5498/***/ "../../node_modules/moment/locale/fi.js":
5499/*!*********************************************************************************************************************************!*\
5500  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/fi.js ***!
5501  \*********************************************************************************************************************************/
5502/*! no static exports found */
5503/***/ (function(module, exports, __webpack_require__) {
5504
5505//! moment.js locale configuration
5506//! locale : Finnish [fi]
5507//! author : Tarmo Aidantausta : https://github.com/bleadof
5508
5509;(function (global, factory) {
5510    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
5511   undefined
5512}(this, (function (moment) { 'use strict';
5513
5514    //! moment.js locale configuration
5515
5516    var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(
5517            ' '
5518        ),
5519        numbersFuture = [
5520            'nolla',
5521            'yhden',
5522            'kahden',
5523            'kolmen',
5524            'neljän',
5525            'viiden',
5526            'kuuden',
5527            numbersPast[7],
5528            numbersPast[8],
5529            numbersPast[9],
5530        ];
5531    function translate(number, withoutSuffix, key, isFuture) {
5532        var result = '';
5533        switch (key) {
5534            case 's':
5535                return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
5536            case 'ss':
5537                result = isFuture ? 'sekunnin' : 'sekuntia';
5538                break;
5539            case 'm':
5540                return isFuture ? 'minuutin' : 'minuutti';
5541            case 'mm':
5542                result = isFuture ? 'minuutin' : 'minuuttia';
5543                break;
5544            case 'h':
5545                return isFuture ? 'tunnin' : 'tunti';
5546            case 'hh':
5547                result = isFuture ? 'tunnin' : 'tuntia';
5548                break;
5549            case 'd':
5550                return isFuture ? 'päivän' : 'päivä';
5551            case 'dd':
5552                result = isFuture ? 'päivän' : 'päivää';
5553                break;
5554            case 'M':
5555                return isFuture ? 'kuukauden' : 'kuukausi';
5556            case 'MM':
5557                result = isFuture ? 'kuukauden' : 'kuukautta';
5558                break;
5559            case 'y':
5560                return isFuture ? 'vuoden' : 'vuosi';
5561            case 'yy':
5562                result = isFuture ? 'vuoden' : 'vuotta';
5563                break;
5564        }
5565        result = verbalNumber(number, isFuture) + ' ' + result;
5566        return result;
5567    }
5568    function verbalNumber(number, isFuture) {
5569        return number < 10
5570            ? isFuture
5571                ? numbersFuture[number]
5572                : numbersPast[number]
5573            : number;
5574    }
5575
5576    var fi = moment.defineLocale('fi', {
5577        months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(
5578            '_'
5579        ),
5580        monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(
5581            '_'
5582        ),
5583        weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(
5584            '_'
5585        ),
5586        weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),
5587        weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),
5588        longDateFormat: {
5589            LT: 'HH.mm',
5590            LTS: 'HH.mm.ss',
5591            L: 'DD.MM.YYYY',
5592            LL: 'Do MMMM[ta] YYYY',
5593            LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',
5594            LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
5595            l: 'D.M.YYYY',
5596            ll: 'Do MMM YYYY',
5597            lll: 'Do MMM YYYY, [klo] HH.mm',
5598            llll: 'ddd, Do MMM YYYY, [klo] HH.mm',
5599        },
5600        calendar: {
5601            sameDay: '[tänään] [klo] LT',
5602            nextDay: '[huomenna] [klo] LT',
5603            nextWeek: 'dddd [klo] LT',
5604            lastDay: '[eilen] [klo] LT',
5605            lastWeek: '[viime] dddd[na] [klo] LT',
5606            sameElse: 'L',
5607        },
5608        relativeTime: {
5609            future: '%s päästä',
5610            past: '%s sitten',
5611            s: translate,
5612            ss: translate,
5613            m: translate,
5614            mm: translate,
5615            h: translate,
5616            hh: translate,
5617            d: translate,
5618            dd: translate,
5619            M: translate,
5620            MM: translate,
5621            y: translate,
5622            yy: translate,
5623        },
5624        dayOfMonthOrdinalParse: /\d{1,2}\./,
5625        ordinal: '%d.',
5626        week: {
5627            dow: 1, // Monday is the first day of the week.
5628            doy: 4, // The week that contains Jan 4th is the first week of the year.
5629        },
5630    });
5631
5632    return fi;
5633
5634})));
5635
5636
5637/***/ }),
5638
vendor: 2,827 bytes, lines 5639-5716
5639/***/ "../../node_modules/moment/locale/fil.js":
5640/*!**********************************************************************************************************************************!*\
5641  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/fil.js ***!
5642  \**********************************************************************************************************************************/
5643/*! no static exports found */
5644/***/ (function(module, exports, __webpack_require__) {
5645
5646//! moment.js locale configuration
5647//! locale : Filipino [fil]
5648//! author : Dan Hagman : https://github.com/hagmandan
5649//! author : Matthew Co : https://github.com/matthewdeeco
5650
5651;(function (global, factory) {
5652    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
5653   undefined
5654}(this, (function (moment) { 'use strict';
5655
5656    //! moment.js locale configuration
5657
5658    var fil = moment.defineLocale('fil', {
5659        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
5660            '_'
5661        ),
5662        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
5663        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
5664            '_'
5665        ),
5666        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
5667        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
5668        longDateFormat: {
5669            LT: 'HH:mm',
5670            LTS: 'HH:mm:ss',
5671            L: 'MM/D/YYYY',
5672            LL: 'MMMM D, YYYY',
5673            LLL: 'MMMM D, YYYY HH:mm',
5674            LLLL: 'dddd, MMMM DD, YYYY HH:mm',
5675        },
5676        calendar: {
5677            sameDay: 'LT [ngayong araw]',
5678            nextDay: '[Bukas ng] LT',
5679            nextWeek: 'LT [sa susunod na] dddd',
5680            lastDay: 'LT [kahapon]',
5681            lastWeek: 'LT [noong nakaraang] dddd',
5682            sameElse: 'L',
5683        },
5684        relativeTime: {
5685            future: 'sa loob ng %s',
5686            past: '%s ang nakalipas',
5687            s: 'ilang segundo',
5688            ss: '%d segundo',
5689            m: 'isang minuto',
5690            mm: '%d minuto',
5691            h: 'isang oras',
5692            hh: '%d oras',
5693            d: 'isang araw',
5694            dd: '%d araw',
5695            M: 'isang buwan',
5696            MM: '%d buwan',
5697            y: 'isang taon',
5698            yy: '%d taon',
5699        },
5700        dayOfMonthOrdinalParse: /\d{1,2}/,
5701        ordinal: function (number) {
5702            return number;
5703        },
5704        week: {
5705            dow: 1, // Monday is the first day of the week.
5706            doy: 4, // The week that contains Jan 4th is the first week of the year.
5707        },
5708    });
5709
5710    return fil;
5711
5712})));
5713
5714
5715/***/ }),
5716
vendor: 2,791 bytes, lines 5717-5792
5717/***/ "../../node_modules/moment/locale/fo.js":
5718/*!*********************************************************************************************************************************!*\
5719  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/fo.js ***!
5720  \*********************************************************************************************************************************/
5721/*! no static exports found */
5722/***/ (function(module, exports, __webpack_require__) {
5723
5724//! moment.js locale configuration
5725//! locale : Faroese [fo]
5726//! author : Ragnar Johannesen : https://github.com/ragnar123
5727//! author : Kristian Sakarisson : https://github.com/sakarisson
5728
5729;(function (global, factory) {
5730    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
5731   undefined
5732}(this, (function (moment) { 'use strict';
5733
5734    //! moment.js locale configuration
5735
5736    var fo = moment.defineLocale('fo', {
5737        months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(
5738            '_'
5739        ),
5740        monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
5741        weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(
5742            '_'
5743        ),
5744        weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
5745        weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),
5746        longDateFormat: {
5747            LT: 'HH:mm',
5748            LTS: 'HH:mm:ss',
5749            L: 'DD/MM/YYYY',
5750            LL: 'D MMMM YYYY',
5751            LLL: 'D MMMM YYYY HH:mm',
5752            LLLL: 'dddd D. MMMM, YYYY HH:mm',
5753        },
5754        calendar: {
5755            sameDay: '[Í dag kl.] LT',
5756            nextDay: '[Í morgin kl.] LT',
5757            nextWeek: 'dddd [kl.] LT',
5758            lastDay: '[Í gjár kl.] LT',
5759            lastWeek: '[síðstu] dddd [kl] LT',
5760            sameElse: 'L',
5761        },
5762        relativeTime: {
5763            future: 'um %s',
5764            past: '%s síðani',
5765            s: 'fá sekund',
5766            ss: '%d sekundir',
5767            m: 'ein minuttur',
5768            mm: '%d minuttir',
5769            h: 'ein tími',
5770            hh: '%d tímar',
5771            d: 'ein dagur',
5772            dd: '%d dagar',
5773            M: 'ein mánaður',
5774            MM: '%d mánaðir',
5775            y: 'eitt ár',
5776            yy: '%d ár',
5777        },
5778        dayOfMonthOrdinalParse: /\d{1,2}\./,
5779        ordinal: '%d.',
5780        week: {
5781            dow: 1, // Monday is the first day of the week.
5782            doy: 4, // The week that contains Jan 4th is the first week of the year.
5783        },
5784    });
5785
5786    return fo;
5787
5788})));
5789
5790
5791/***/ }),
5792
vendor: 3,204 bytes, lines 5793-5881
5793/***/ "../../node_modules/moment/locale/fr-ca.js":
5794/*!************************************************************************************************************************************!*\
5795  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/fr-ca.js ***!
5796  \************************************************************************************************************************************/
5797/*! no static exports found */
5798/***/ (function(module, exports, __webpack_require__) {
5799
5800//! moment.js locale configuration
5801//! locale : French (Canada) [fr-ca]
5802//! author : Jonathan Abourbih : https://github.com/jonbca
5803
5804;(function (global, factory) {
5805    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
5806   undefined
5807}(this, (function (moment) { 'use strict';
5808
5809    //! moment.js locale configuration
5810
5811    var frCa = moment.defineLocale('fr-ca', {
5812        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
5813            '_'
5814        ),
5815        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
5816            '_'
5817        ),
5818        monthsParseExact: true,
5819        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
5820        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
5821        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
5822        weekdaysParseExact: true,
5823        longDateFormat: {
5824            LT: 'HH:mm',
5825            LTS: 'HH:mm:ss',
5826            L: 'YYYY-MM-DD',
5827            LL: 'D MMMM YYYY',
5828            LLL: 'D MMMM YYYY HH:mm',
5829            LLLL: 'dddd D MMMM YYYY HH:mm',
5830        },
5831        calendar: {
5832            sameDay: '[Aujourd’hui à] LT',
5833            nextDay: '[Demain à] LT',
5834            nextWeek: 'dddd [à] LT',
5835            lastDay: '[Hier à] LT',
5836            lastWeek: 'dddd [dernier à] LT',
5837            sameElse: 'L',
5838        },
5839        relativeTime: {
5840            future: 'dans %s',
5841            past: 'il y a %s',
5842            s: 'quelques secondes',
5843            ss: '%d secondes',
5844            m: 'une minute',
5845            mm: '%d minutes',
5846            h: 'une heure',
5847            hh: '%d heures',
5848            d: 'un jour',
5849            dd: '%d jours',
5850            M: 'un mois',
5851            MM: '%d mois',
5852            y: 'un an',
5853            yy: '%d ans',
5854        },
5855        dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
5856        ordinal: function (number, period) {
5857            switch (period) {
5858                // Words with masculine grammatical gender: mois, trimestre, jour
5859                default:
5860                case 'M':
5861                case 'Q':
5862                case 'D':
5863                case 'DDD':
5864                case 'd':
5865                    return number + (number === 1 ? 'er' : 'e');
5866
5867                // Words with feminine grammatical gender: semaine
5868                case 'w':
5869                case 'W':
5870                    return number + (number === 1 ? 're' : 'e');
5871            }
5872        },
5873    });
5874
5875    return frCa;
5876
5877})));
5878
5879
5880/***/ }),
5881
vendor: 3,383 bytes, lines 5882-5974
5882/***/ "../../node_modules/moment/locale/fr-ch.js":
5883/*!************************************************************************************************************************************!*\
5884  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/fr-ch.js ***!
5885  \************************************************************************************************************************************/
5886/*! no static exports found */
5887/***/ (function(module, exports, __webpack_require__) {
5888
5889//! moment.js locale configuration
5890//! locale : French (Switzerland) [fr-ch]
5891//! author : Gaspard Bucher : https://github.com/gaspard
5892
5893;(function (global, factory) {
5894    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
5895   undefined
5896}(this, (function (moment) { 'use strict';
5897
5898    //! moment.js locale configuration
5899
5900    var frCh = moment.defineLocale('fr-ch', {
5901        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
5902            '_'
5903        ),
5904        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
5905            '_'
5906        ),
5907        monthsParseExact: true,
5908        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
5909        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
5910        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
5911        weekdaysParseExact: true,
5912        longDateFormat: {
5913            LT: 'HH:mm',
5914            LTS: 'HH:mm:ss',
5915            L: 'DD.MM.YYYY',
5916            LL: 'D MMMM YYYY',
5917            LLL: 'D MMMM YYYY HH:mm',
5918            LLLL: 'dddd D MMMM YYYY HH:mm',
5919        },
5920        calendar: {
5921            sameDay: '[Aujourd’hui à] LT',
5922            nextDay: '[Demain à] LT',
5923            nextWeek: 'dddd [à] LT',
5924            lastDay: '[Hier à] LT',
5925            lastWeek: 'dddd [dernier à] LT',
5926            sameElse: 'L',
5927        },
5928        relativeTime: {
5929            future: 'dans %s',
5930            past: 'il y a %s',
5931            s: 'quelques secondes',
5932            ss: '%d secondes',
5933            m: 'une minute',
5934            mm: '%d minutes',
5935            h: 'une heure',
5936            hh: '%d heures',
5937            d: 'un jour',
5938            dd: '%d jours',
5939            M: 'un mois',
5940            MM: '%d mois',
5941            y: 'un an',
5942            yy: '%d ans',
5943        },
5944        dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
5945        ordinal: function (number, period) {
5946            switch (period) {
5947                // Words with masculine grammatical gender: mois, trimestre, jour
5948                default:
5949                case 'M':
5950                case 'Q':
5951                case 'D':
5952                case 'DDD':
5953                case 'd':
5954                    return number + (number === 1 ? 'er' : 'e');
5955
5956                // Words with feminine grammatical gender: semaine
5957                case 'w':
5958                case 'W':
5959                    return number + (number === 1 ? 're' : 'e');
5960            }
5961        },
5962        week: {
5963            dow: 1, // Monday is the first day of the week.
5964            doy: 4, // The week that contains Jan 4th is the first week of the year.
5965        },
5966    });
5967
5968    return frCh;
5969
5970})));
5971
5972
5973/***/ }),
5974
vendor: 4,635 bytes, lines 5975-6096
5975/***/ "../../node_modules/moment/locale/fr.js":
5976/*!*********************************************************************************************************************************!*\
5977  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/fr.js ***!
5978  \*********************************************************************************************************************************/
5979/*! no static exports found */
5980/***/ (function(module, exports, __webpack_require__) {
5981
5982//! moment.js locale configuration
5983//! locale : French [fr]
5984//! author : John Fischer : https://github.com/jfroffice
5985
5986;(function (global, factory) {
5987    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
5988   undefined
5989}(this, (function (moment) { 'use strict';
5990
5991    //! moment.js locale configuration
5992
5993    var monthsStrictRegex = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
5994        monthsShortStrictRegex = /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,
5995        monthsRegex = /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
5996        monthsParse = [
5997            /^janv/i,
5998            /^févr/i,
5999            /^mars/i,
6000            /^avr/i,
6001            /^mai/i,
6002            /^juin/i,
6003            /^juil/i,
6004            /^août/i,
6005            /^sept/i,
6006            /^oct/i,
6007            /^nov/i,
6008            /^déc/i,
6009        ];
6010
6011    var fr = moment.defineLocale('fr', {
6012        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
6013            '_'
6014        ),
6015        monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
6016            '_'
6017        ),
6018        monthsRegex: monthsRegex,
6019        monthsShortRegex: monthsRegex,
6020        monthsStrictRegex: monthsStrictRegex,
6021        monthsShortStrictRegex: monthsShortStrictRegex,
6022        monthsParse: monthsParse,
6023        longMonthsParse: monthsParse,
6024        shortMonthsParse: monthsParse,
6025        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
6026        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
6027        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
6028        weekdaysParseExact: true,
6029        longDateFormat: {
6030            LT: 'HH:mm',
6031            LTS: 'HH:mm:ss',
6032            L: 'DD/MM/YYYY',
6033            LL: 'D MMMM YYYY',
6034            LLL: 'D MMMM YYYY HH:mm',
6035            LLLL: 'dddd D MMMM YYYY HH:mm',
6036        },
6037        calendar: {
6038            sameDay: '[Aujourd’hui à] LT',
6039            nextDay: '[Demain à] LT',
6040            nextWeek: 'dddd [à] LT',
6041            lastDay: '[Hier à] LT',
6042            lastWeek: 'dddd [dernier à] LT',
6043            sameElse: 'L',
6044        },
6045        relativeTime: {
6046            future: 'dans %s',
6047            past: 'il y a %s',
6048            s: 'quelques secondes',
6049            ss: '%d secondes',
6050            m: 'une minute',
6051            mm: '%d minutes',
6052            h: 'une heure',
6053            hh: '%d heures',
6054            d: 'un jour',
6055            dd: '%d jours',
6056            M: 'un mois',
6057            MM: '%d mois',
6058            y: 'un an',
6059            yy: '%d ans',
6060        },
6061        dayOfMonthOrdinalParse: /\d{1,2}(er|)/,
6062        ordinal: function (number, period) {
6063            switch (period) {
6064                // TODO: Return 'e' when day of month > 1. Move this case inside
6065                // block for masculine words below.
6066                // See https://github.com/moment/moment/issues/3375
6067                case 'D':
6068                    return number + (number === 1 ? 'er' : '');
6069
6070                // Words with masculine grammatical gender: mois, trimestre, jour
6071                default:
6072                case 'M':
6073                case 'Q':
6074                case 'DDD':
6075                case 'd':
6076                    return number + (number === 1 ? 'er' : 'e');
6077
6078                // Words with feminine grammatical gender: semaine
6079                case 'w':
6080                case 'W':
6081                    return number + (number === 1 ? 're' : 'e');
6082            }
6083        },
6084        week: {
6085            dow: 1, // Monday is the first day of the week.
6086            doy: 4, // The week that contains Jan 4th is the first week of the year.
6087        },
6088    });
6089
6090    return fr;
6091
6092})));
6093
6094
6095/***/ }),
6096
vendor: 3,427 bytes, lines 6097-6193
6097/***/ "../../node_modules/moment/locale/fy.js":
6098/*!*********************************************************************************************************************************!*\
6099  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/fy.js ***!
6100  \*********************************************************************************************************************************/
6101/*! no static exports found */
6102/***/ (function(module, exports, __webpack_require__) {
6103
6104//! moment.js locale configuration
6105//! locale : Frisian [fy]
6106//! author : Robin van der Vliet : https://github.com/robin0van0der0v
6107
6108;(function (global, factory) {
6109    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
6110   undefined
6111}(this, (function (moment) { 'use strict';
6112
6113    //! moment.js locale configuration
6114
6115    var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split(
6116            '_'
6117        ),
6118        monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split(
6119            '_'
6120        );
6121
6122    var fy = moment.defineLocale('fy', {
6123        months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(
6124            '_'
6125        ),
6126        monthsShort: function (m, format) {
6127            if (!m) {
6128                return monthsShortWithDots;
6129            } else if (/-MMM-/.test(format)) {
6130                return monthsShortWithoutDots[m.month()];
6131            } else {
6132                return monthsShortWithDots[m.month()];
6133            }
6134        },
6135        monthsParseExact: true,
6136        weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(
6137            '_'
6138        ),
6139        weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),
6140        weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
6141        weekdaysParseExact: true,
6142        longDateFormat: {
6143            LT: 'HH:mm',
6144            LTS: 'HH:mm:ss',
6145            L: 'DD-MM-YYYY',
6146            LL: 'D MMMM YYYY',
6147            LLL: 'D MMMM YYYY HH:mm',
6148            LLLL: 'dddd D MMMM YYYY HH:mm',
6149        },
6150        calendar: {
6151            sameDay: '[hjoed om] LT',
6152            nextDay: '[moarn om] LT',
6153            nextWeek: 'dddd [om] LT',
6154            lastDay: '[juster om] LT',
6155            lastWeek: '[ôfrûne] dddd [om] LT',
6156            sameElse: 'L',
6157        },
6158        relativeTime: {
6159            future: 'oer %s',
6160            past: '%s lyn',
6161            s: 'in pear sekonden',
6162            ss: '%d sekonden',
6163            m: 'ien minút',
6164            mm: '%d minuten',
6165            h: 'ien oere',
6166            hh: '%d oeren',
6167            d: 'ien dei',
6168            dd: '%d dagen',
6169            M: 'ien moanne',
6170            MM: '%d moannen',
6171            y: 'ien jier',
6172            yy: '%d jierren',
6173        },
6174        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
6175        ordinal: function (number) {
6176            return (
6177                number +
6178                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
6179            );
6180        },
6181        week: {
6182            dow: 1, // Monday is the first day of the week.
6183            doy: 4, // The week that contains Jan 4th is the first week of the year.
6184        },
6185    });
6186
6187    return fy;
6188
6189})));
6190
6191
6192/***/ }),
6193
vendor: 3,590 bytes, lines 6194-6308
6194/***/ "../../node_modules/moment/locale/ga.js":
6195/*!*********************************************************************************************************************************!*\
6196  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ga.js ***!
6197  \*********************************************************************************************************************************/
6198/*! no static exports found */
6199/***/ (function(module, exports, __webpack_require__) {
6200
6201//! moment.js locale configuration
6202//! locale : Irish or Irish Gaelic [ga]
6203//! author : André Silva : https://github.com/askpt
6204
6205;(function (global, factory) {
6206    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
6207   undefined
6208}(this, (function (moment) { 'use strict';
6209
6210    //! moment.js locale configuration
6211
6212    var months = [
6213            'Eanáir',
6214            'Feabhra',
6215            'Márta',
6216            'Aibreán',
6217            'Bealtaine',
6218            'Meitheamh',
6219            'Iúil',
6220            'Lúnasa',
6221            'Meán Fómhair',
6222            'Deireadh Fómhair',
6223            'Samhain',
6224            'Nollaig',
6225        ],
6226        monthsShort = [
6227            'Ean',
6228            'Feabh',
6229            'Márt',
6230            'Aib',
6231            'Beal',
6232            'Meith',
6233            'Iúil',
6234            'Lún',
6235            'M.F.',
6236            'D.F.',
6237            'Samh',
6238            'Noll',
6239        ],
6240        weekdays = [
6241            'Dé Domhnaigh',
6242            'Dé Luain',
6243            'Dé Máirt',
6244            'Dé Céadaoin',
6245            'Déardaoin',
6246            'Dé hAoine',
6247            'Dé Sathairn',
6248        ],
6249        weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],
6250        weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];
6251
6252    var ga = moment.defineLocale('ga', {
6253        months: months,
6254        monthsShort: monthsShort,
6255        monthsParseExact: true,
6256        weekdays: weekdays,
6257        weekdaysShort: weekdaysShort,
6258        weekdaysMin: weekdaysMin,
6259        longDateFormat: {
6260            LT: 'HH:mm',
6261            LTS: 'HH:mm:ss',
6262            L: 'DD/MM/YYYY',
6263            LL: 'D MMMM YYYY',
6264            LLL: 'D MMMM YYYY HH:mm',
6265            LLLL: 'dddd, D MMMM YYYY HH:mm',
6266        },
6267        calendar: {
6268            sameDay: '[Inniu ag] LT',
6269            nextDay: '[Amárach ag] LT',
6270            nextWeek: 'dddd [ag] LT',
6271            lastDay: '[Inné ag] LT',
6272            lastWeek: 'dddd [seo caite] [ag] LT',
6273            sameElse: 'L',
6274        },
6275        relativeTime: {
6276            future: 'i %s',
6277            past: '%s ó shin',
6278            s: 'cúpla soicind',
6279            ss: '%d soicind',
6280            m: 'nóiméad',
6281            mm: '%d nóiméad',
6282            h: 'uair an chloig',
6283            hh: '%d uair an chloig',
6284            d: 'lá',
6285            dd: '%d lá',
6286            M: 'mí',
6287            MM: '%d míonna',
6288            y: 'bliain',
6289            yy: '%d bliain',
6290        },
6291        dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
6292        ordinal: function (number) {
6293            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
6294            return number + output;
6295        },
6296        week: {
6297            dow: 1, // Monday is the first day of the week.
6298            doy: 4, // The week that contains Jan 4th is the first week of the year.
6299        },
6300    });
6301
6302    return ga;
6303
6304})));
6305
6306
6307/***/ }),
6308
vendor: 3,610 bytes, lines 6309-6423
6309/***/ "../../node_modules/moment/locale/gd.js":
6310/*!*********************************************************************************************************************************!*\
6311  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/gd.js ***!
6312  \*********************************************************************************************************************************/
6313/*! no static exports found */
6314/***/ (function(module, exports, __webpack_require__) {
6315
6316//! moment.js locale configuration
6317//! locale : Scottish Gaelic [gd]
6318//! author : Jon Ashdown : https://github.com/jonashdown
6319
6320;(function (global, factory) {
6321    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
6322   undefined
6323}(this, (function (moment) { 'use strict';
6324
6325    //! moment.js locale configuration
6326
6327    var months = [
6328            'Am Faoilleach',
6329            'An Gearran',
6330            'Am Màrt',
6331            'An Giblean',
6332            'An Cèitean',
6333            'An t-Ògmhios',
6334            'An t-Iuchar',
6335            'An Lùnastal',
6336            'An t-Sultain',
6337            'An Dàmhair',
6338            'An t-Samhain',
6339            'An Dùbhlachd',
6340        ],
6341        monthsShort = [
6342            'Faoi',
6343            'Gear',
6344            'Màrt',
6345            'Gibl',
6346            'Cèit',
6347            'Ògmh',
6348            'Iuch',
6349            'Lùn',
6350            'Sult',
6351            'Dàmh',
6352            'Samh',
6353            'Dùbh',
6354        ],
6355        weekdays = [
6356            'Didòmhnaich',
6357            'Diluain',
6358            'Dimàirt',
6359            'Diciadain',
6360            'Diardaoin',
6361            'Dihaoine',
6362            'Disathairne',
6363        ],
6364        weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],
6365        weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];
6366
6367    var gd = moment.defineLocale('gd', {
6368        months: months,
6369        monthsShort: monthsShort,
6370        monthsParseExact: true,
6371        weekdays: weekdays,
6372        weekdaysShort: weekdaysShort,
6373        weekdaysMin: weekdaysMin,
6374        longDateFormat: {
6375            LT: 'HH:mm',
6376            LTS: 'HH:mm:ss',
6377            L: 'DD/MM/YYYY',
6378            LL: 'D MMMM YYYY',
6379            LLL: 'D MMMM YYYY HH:mm',
6380            LLLL: 'dddd, D MMMM YYYY HH:mm',
6381        },
6382        calendar: {
6383            sameDay: '[An-diugh aig] LT',
6384            nextDay: '[A-màireach aig] LT',
6385            nextWeek: 'dddd [aig] LT',
6386            lastDay: '[An-dè aig] LT',
6387            lastWeek: 'dddd [seo chaidh] [aig] LT',
6388            sameElse: 'L',
6389        },
6390        relativeTime: {
6391            future: 'ann an %s',
6392            past: 'bho chionn %s',
6393            s: 'beagan diogan',
6394            ss: '%d diogan',
6395            m: 'mionaid',
6396            mm: '%d mionaidean',
6397            h: 'uair',
6398            hh: '%d uairean',
6399            d: 'latha',
6400            dd: '%d latha',
6401            M: 'mìos',
6402            MM: '%d mìosan',
6403            y: 'bliadhna',
6404            yy: '%d bliadhna',
6405        },
6406        dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
6407        ordinal: function (number) {
6408            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
6409            return number + output;
6410        },
6411        week: {
6412            dow: 1, // Monday is the first day of the week.
6413            doy: 4, // The week that contains Jan 4th is the first week of the year.
6414        },
6415    });
6416
6417    return gd;
6418
6419})));
6420
6421
6422/***/ }),
6423
vendor: 3,460 bytes, lines 6424-6517
6424/***/ "../../node_modules/moment/locale/gl.js":
6425/*!*********************************************************************************************************************************!*\
6426  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/gl.js ***!
6427  \*********************************************************************************************************************************/
6428/*! no static exports found */
6429/***/ (function(module, exports, __webpack_require__) {
6430
6431//! moment.js locale configuration
6432//! locale : Galician [gl]
6433//! author : Juan G. Hurtado : https://github.com/juanghurtado
6434
6435;(function (global, factory) {
6436    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
6437   undefined
6438}(this, (function (moment) { 'use strict';
6439
6440    //! moment.js locale configuration
6441
6442    var gl = moment.defineLocale('gl', {
6443        months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(
6444            '_'
6445        ),
6446        monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(
6447            '_'
6448        ),
6449        monthsParseExact: true,
6450        weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),
6451        weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),
6452        weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),
6453        weekdaysParseExact: true,
6454        longDateFormat: {
6455            LT: 'H:mm',
6456            LTS: 'H:mm:ss',
6457            L: 'DD/MM/YYYY',
6458            LL: 'D [de] MMMM [de] YYYY',
6459            LLL: 'D [de] MMMM [de] YYYY H:mm',
6460            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
6461        },
6462        calendar: {
6463            sameDay: function () {
6464                return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
6465            },
6466            nextDay: function () {
6467                return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
6468            },
6469            nextWeek: function () {
6470                return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';
6471            },
6472            lastDay: function () {
6473                return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';
6474            },
6475            lastWeek: function () {
6476                return (
6477                    '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'
6478                );
6479            },
6480            sameElse: 'L',
6481        },
6482        relativeTime: {
6483            future: function (str) {
6484                if (str.indexOf('un') === 0) {
6485                    return 'n' + str;
6486                }
6487                return 'en ' + str;
6488            },
6489            past: 'hai %s',
6490            s: 'uns segundos',
6491            ss: '%d segundos',
6492            m: 'un minuto',
6493            mm: '%d minutos',
6494            h: 'unha hora',
6495            hh: '%d horas',
6496            d: 'un día',
6497            dd: '%d días',
6498            M: 'un mes',
6499            MM: '%d meses',
6500            y: 'un ano',
6501            yy: '%d anos',
6502        },
6503        dayOfMonthOrdinalParse: /\d{1,2}º/,
6504        ordinal: '%dº',
6505        week: {
6506            dow: 1, // Monday is the first day of the week.
6507            doy: 4, // The week that contains Jan 4th is the first week of the year.
6508        },
6509    });
6510
6511    return gl;
6512
6513})));
6514
6515
6516/***/ }),
6517
vendor: 6,869 bytes, lines 6518-6661
6518/***/ "../../node_modules/moment/locale/gom-deva.js":
6519/*!***************************************************************************************************************************************!*\
6520  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/gom-deva.js ***!
6521  \***************************************************************************************************************************************/
6522/*! no static exports found */
6523/***/ (function(module, exports, __webpack_require__) {
6524
6525//! moment.js locale configuration
6526//! locale : Konkani Devanagari script [gom-deva]
6527//! author : The Discoverer : https://github.com/WikiDiscoverer
6528
6529;(function (global, factory) {
6530    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
6531   undefined
6532}(this, (function (moment) { 'use strict';
6533
6534    //! moment.js locale configuration
6535
6536    function processRelativeTime(number, withoutSuffix, key, isFuture) {
6537        var format = {
6538            s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],
6539            ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],
6540            m: ['एका मिणटान', 'एक मिनूट'],
6541            mm: [number + ' मिणटांनी', number + ' मिणटां'],
6542            h: ['एका वरान', 'एक वर'],
6543            hh: [number + ' वरांनी', number + ' वरां'],
6544            d: ['एका दिसान', 'एक दीस'],
6545            dd: [number + ' दिसांनी', number + ' दीस'],
6546            M: ['एका म्हयन्यान', 'एक म्हयनो'],
6547            MM: [number + ' म्हयन्यानी', number + ' म्हयने'],
6548            y: ['एका वर्सान', 'एक वर्स'],
6549            yy: [number + ' वर्सांनी', number + ' वर्सां'],
6550        };
6551        return isFuture ? format[key][0] : format[key][1];
6552    }
6553
6554    var gomDeva = moment.defineLocale('gom-deva', {
6555        months: {
6556            standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
6557                '_'
6558            ),
6559            format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(
6560                '_'
6561            ),
6562            isFormat: /MMMM(\s)+D[oD]?/,
6563        },
6564        monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
6565            '_'
6566        ),
6567        monthsParseExact: true,
6568        weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),
6569        weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),
6570        weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),
6571        weekdaysParseExact: true,
6572        longDateFormat: {
6573            LT: 'A h:mm [वाजतां]',
6574            LTS: 'A h:mm:ss [वाजतां]',
6575            L: 'DD-MM-YYYY',
6576            LL: 'D MMMM YYYY',
6577            LLL: 'D MMMM YYYY A h:mm [वाजतां]',
6578            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',
6579            llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',
6580        },
6581        calendar: {
6582            sameDay: '[आयज] LT',
6583            nextDay: '[फाल्यां] LT',
6584            nextWeek: '[फुडलो] dddd[,] LT',
6585            lastDay: '[काल] LT',
6586            lastWeek: '[फाटलो] dddd[,] LT',
6587            sameElse: 'L',
6588        },
6589        relativeTime: {
6590            future: '%s',
6591            past: '%s आदीं',
6592            s: processRelativeTime,
6593            ss: processRelativeTime,
6594            m: processRelativeTime,
6595            mm: processRelativeTime,
6596            h: processRelativeTime,
6597            hh: processRelativeTime,
6598            d: processRelativeTime,
6599            dd: processRelativeTime,
6600            M: processRelativeTime,
6601            MM: processRelativeTime,
6602            y: processRelativeTime,
6603            yy: processRelativeTime,
6604        },
6605        dayOfMonthOrdinalParse: /\d{1,2}(वेर)/,
6606        ordinal: function (number, period) {
6607            switch (period) {
6608                // the ordinal 'वेर' only applies to day of the month
6609                case 'D':
6610                    return number + 'वेर';
6611                default:
6612                case 'M':
6613                case 'Q':
6614                case 'DDD':
6615                case 'd':
6616                case 'w':
6617                case 'W':
6618                    return number;
6619            }
6620        },
6621        week: {
6622            dow: 1, // Monday is the first day of the week.
6623            doy: 4, // The week that contains Jan 4th is the first week of the year.
6624        },
6625        meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,
6626        meridiemHour: function (hour, meridiem) {
6627            if (hour === 12) {
6628                hour = 0;
6629            }
6630            if (meridiem === 'राती') {
6631                return hour < 4 ? hour : hour + 12;
6632            } else if (meridiem === 'सकाळीं') {
6633                return hour;
6634            } else if (meridiem === 'दनपारां') {
6635                return hour > 12 ? hour : hour + 12;
6636            } else if (meridiem === 'सांजे') {
6637                return hour + 12;
6638            }
6639        },
6640        meridiem: function (hour, minute, isLower) {
6641            if (hour < 4) {
6642                return 'राती';
6643            } else if (hour < 12) {
6644                return 'सकाळीं';
6645            } else if (hour < 16) {
6646                return 'दनपारां';
6647            } else if (hour < 20) {
6648                return 'सांजे';
6649            } else {
6650                return 'राती';
6651            }
6652        },
6653    });
6654
6655    return gomDeva;
6656
6657})));
6658
6659
6660/***/ }),
6661
vendor: 5,515 bytes, lines 6662-6805
6662/***/ "../../node_modules/moment/locale/gom-latn.js":
6663/*!***************************************************************************************************************************************!*\
6664  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/gom-latn.js ***!
6665  \***************************************************************************************************************************************/
6666/*! no static exports found */
6667/***/ (function(module, exports, __webpack_require__) {
6668
6669//! moment.js locale configuration
6670//! locale : Konkani Latin script [gom-latn]
6671//! author : The Discoverer : https://github.com/WikiDiscoverer
6672
6673;(function (global, factory) {
6674    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
6675   undefined
6676}(this, (function (moment) { 'use strict';
6677
6678    //! moment.js locale configuration
6679
6680    function processRelativeTime(number, withoutSuffix, key, isFuture) {
6681        var format = {
6682            s: ['thoddea sekondamni', 'thodde sekond'],
6683            ss: [number + ' sekondamni', number + ' sekond'],
6684            m: ['eka mintan', 'ek minut'],
6685            mm: [number + ' mintamni', number + ' mintam'],
6686            h: ['eka voran', 'ek vor'],
6687            hh: [number + ' voramni', number + ' voram'],
6688            d: ['eka disan', 'ek dis'],
6689            dd: [number + ' disamni', number + ' dis'],
6690            M: ['eka mhoinean', 'ek mhoino'],
6691            MM: [number + ' mhoineamni', number + ' mhoine'],
6692            y: ['eka vorsan', 'ek voros'],
6693            yy: [number + ' vorsamni', number + ' vorsam'],
6694        };
6695        return isFuture ? format[key][0] : format[key][1];
6696    }
6697
6698    var gomLatn = moment.defineLocale('gom-latn', {
6699        months: {
6700            standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(
6701                '_'
6702            ),
6703            format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(
6704                '_'
6705            ),
6706            isFormat: /MMMM(\s)+D[oD]?/,
6707        },
6708        monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split(
6709            '_'
6710        ),
6711        monthsParseExact: true,
6712        weekdays: "Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split('_'),
6713        weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),
6714        weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),
6715        weekdaysParseExact: true,
6716        longDateFormat: {
6717            LT: 'A h:mm [vazta]',
6718            LTS: 'A h:mm:ss [vazta]',
6719            L: 'DD-MM-YYYY',
6720            LL: 'D MMMM YYYY',
6721            LLL: 'D MMMM YYYY A h:mm [vazta]',
6722            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',
6723            llll: 'ddd, D MMM YYYY, A h:mm [vazta]',
6724        },
6725        calendar: {
6726            sameDay: '[Aiz] LT',
6727            nextDay: '[Faleam] LT',
6728            nextWeek: '[Fuddlo] dddd[,] LT',
6729            lastDay: '[Kal] LT',
6730            lastWeek: '[Fattlo] dddd[,] LT',
6731            sameElse: 'L',
6732        },
6733        relativeTime: {
6734            future: '%s',
6735            past: '%s adim',
6736            s: processRelativeTime,
6737            ss: processRelativeTime,
6738            m: processRelativeTime,
6739            mm: processRelativeTime,
6740            h: processRelativeTime,
6741            hh: processRelativeTime,
6742            d: processRelativeTime,
6743            dd: processRelativeTime,
6744            M: processRelativeTime,
6745            MM: processRelativeTime,
6746            y: processRelativeTime,
6747            yy: processRelativeTime,
6748        },
6749        dayOfMonthOrdinalParse: /\d{1,2}(er)/,
6750        ordinal: function (number, period) {
6751            switch (period) {
6752                // the ordinal 'er' only applies to day of the month
6753                case 'D':
6754                    return number + 'er';
6755                default:
6756                case 'M':
6757                case 'Q':
6758                case 'DDD':
6759                case 'd':
6760                case 'w':
6761                case 'W':
6762                    return number;
6763            }
6764        },
6765        week: {
6766            dow: 1, // Monday is the first day of the week.
6767            doy: 4, // The week that contains Jan 4th is the first week of the year.
6768        },
6769        meridiemParse: /rati|sokallim|donparam|sanje/,
6770        meridiemHour: function (hour, meridiem) {
6771            if (hour === 12) {
6772                hour = 0;
6773            }
6774            if (meridiem === 'rati') {
6775                return hour < 4 ? hour : hour + 12;
6776            } else if (meridiem === 'sokallim') {
6777                return hour;
6778            } else if (meridiem === 'donparam') {
6779                return hour > 12 ? hour : hour + 12;
6780            } else if (meridiem === 'sanje') {
6781                return hour + 12;
6782            }
6783        },
6784        meridiem: function (hour, minute, isLower) {
6785            if (hour < 4) {
6786                return 'rati';
6787            } else if (hour < 12) {
6788                return 'sokallim';
6789            } else if (hour < 16) {
6790                return 'donparam';
6791            } else if (hour < 20) {
6792                return 'sanje';
6793            } else {
6794                return 'rati';
6795            }
6796        },
6797    });
6798
6799    return gomLatn;
6800
6801})));
6802
6803
6804/***/ }),
6805
vendor: 5,496 bytes, lines 6806-6946
6806/***/ "../../node_modules/moment/locale/gu.js":
6807/*!*********************************************************************************************************************************!*\
6808  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/gu.js ***!
6809  \*********************************************************************************************************************************/
6810/*! no static exports found */
6811/***/ (function(module, exports, __webpack_require__) {
6812
6813//! moment.js locale configuration
6814//! locale : Gujarati [gu]
6815//! author : Kaushik Thanki : https://github.com/Kaushik1987
6816
6817;(function (global, factory) {
6818    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
6819   undefined
6820}(this, (function (moment) { 'use strict';
6821
6822    //! moment.js locale configuration
6823
6824    var symbolMap = {
6825            '1': 'à«§',
6826            '2': '૨',
6827            '3': 'à«©',
6828            '4': '૪',
6829            '5': 'à««',
6830            '6': '૬',
6831            '7': 'à«­',
6832            '8': 'à«®',
6833            '9': '૯',
6834            '0': '૦',
6835        },
6836        numberMap = {
6837            'à«§': '1',
6838            '૨': '2',
6839            'à«©': '3',
6840            '૪': '4',
6841            'à««': '5',
6842            '૬': '6',
6843            'à«­': '7',
6844            'à«®': '8',
6845            '૯': '9',
6846            '૦': '0',
6847        };
6848
6849    var gu = moment.defineLocale('gu', {
6850        months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(
6851            '_'
6852        ),
6853        monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(
6854            '_'
6855        ),
6856        monthsParseExact: true,
6857        weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(
6858            '_'
6859        ),
6860        weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),
6861        weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),
6862        longDateFormat: {
6863            LT: 'A h:mm વાગ્યે',
6864            LTS: 'A h:mm:ss વાગ્યે',
6865            L: 'DD/MM/YYYY',
6866            LL: 'D MMMM YYYY',
6867            LLL: 'D MMMM YYYY, A h:mm વાગ્યે',
6868            LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',
6869        },
6870        calendar: {
6871            sameDay: '[આજ] LT',
6872            nextDay: '[કાલે] LT',
6873            nextWeek: 'dddd, LT',
6874            lastDay: '[ગઇકાલે] LT',
6875            lastWeek: '[પાછલા] dddd, LT',
6876            sameElse: 'L',
6877        },
6878        relativeTime: {
6879            future: '%s મા',
6880            past: '%s પહેલા',
6881            s: 'અમુક પળો',
6882            ss: '%d સેકંડ',
6883            m: 'એક મિનિટ',
6884            mm: '%d મિનિટ',
6885            h: 'એક કલાક',
6886            hh: '%d કલાક',
6887            d: 'એક દિવસ',
6888            dd: '%d દિવસ',
6889            M: 'એક મહિનો',
6890            MM: '%d મહિનો',
6891            y: 'એક વર્ષ',
6892            yy: '%d વર્ષ',
6893        },
6894        preparse: function (string) {
6895            return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {
6896                return numberMap[match];
6897            });
6898        },
6899        postformat: function (string) {
6900            return string.replace(/\d/g, function (match) {
6901                return symbolMap[match];
6902            });
6903        },
6904        // Gujarati notation for meridiems are quite fuzzy in practice. While there exists
6905        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.
6906        meridiemParse: /રાત|બપોર|સવાર|સાંજ/,
6907        meridiemHour: function (hour, meridiem) {
6908            if (hour === 12) {
6909                hour = 0;
6910            }
6911            if (meridiem === 'રાત') {
6912                return hour < 4 ? hour : hour + 12;
6913            } else if (meridiem === 'સવાર') {
6914                return hour;
6915            } else if (meridiem === 'બપોર') {
6916                return hour >= 10 ? hour : hour + 12;
6917            } else if (meridiem === 'સાંજ') {
6918                return hour + 12;
6919            }
6920        },
6921        meridiem: function (hour, minute, isLower) {
6922            if (hour < 4) {
6923                return 'રાત';
6924            } else if (hour < 10) {
6925                return 'સવાર';
6926            } else if (hour < 17) {
6927                return 'બપોર';
6928            } else if (hour < 20) {
6929                return 'સાંજ';
6930            } else {
6931                return 'રાત';
6932            }
6933        },
6934        week: {
6935            dow: 0, // Sunday is the first day of the week.
6936            doy: 6, // The week that contains Jan 6th is the first week of the year.
6937        },
6938    });
6939
6940    return gu;
6941
6942})));
6943
6944
6945/***/ }),
6946
vendor: 4,430 bytes, lines 6947-7060
6947/***/ "../../node_modules/moment/locale/he.js":
6948/*!*********************************************************************************************************************************!*\
6949  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/he.js ***!
6950  \*********************************************************************************************************************************/
6951/*! no static exports found */
6952/***/ (function(module, exports, __webpack_require__) {
6953
6954//! moment.js locale configuration
6955//! locale : Hebrew [he]
6956//! author : Tomer Cohen : https://github.com/tomer
6957//! author : Moshe Simantov : https://github.com/DevelopmentIL
6958//! author : Tal Ater : https://github.com/TalAter
6959
6960;(function (global, factory) {
6961    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
6962   undefined
6963}(this, (function (moment) { 'use strict';
6964
6965    //! moment.js locale configuration
6966
6967    var he = moment.defineLocale('he', {
6968        months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(
6969            '_'
6970        ),
6971        monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split(
6972            '_'
6973        ),
6974        weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
6975        weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
6976        weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),
6977        longDateFormat: {
6978            LT: 'HH:mm',
6979            LTS: 'HH:mm:ss',
6980            L: 'DD/MM/YYYY',
6981            LL: 'D [ב]MMMM YYYY',
6982            LLL: 'D [ב]MMMM YYYY HH:mm',
6983            LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',
6984            l: 'D/M/YYYY',
6985            ll: 'D MMM YYYY',
6986            lll: 'D MMM YYYY HH:mm',
6987            llll: 'ddd, D MMM YYYY HH:mm',
6988        },
6989        calendar: {
6990            sameDay: '[היום ב־]LT',
6991            nextDay: '[מחר ב־]LT',
6992            nextWeek: 'dddd [בשעה] LT',
6993            lastDay: '[אתמול ב־]LT',
6994            lastWeek: '[ביום] dddd [האחרון בשעה] LT',
6995            sameElse: 'L',
6996        },
6997        relativeTime: {
6998            future: 'בעוד %s',
6999            past: 'לפני %s',
7000            s: 'מספר שניות',
7001            ss: '%d שניות',
7002            m: 'דקה',
7003            mm: '%d דקות',
7004            h: 'שעה',
7005            hh: function (number) {
7006                if (number === 2) {
7007                    return 'שעתיים';
7008                }
7009                return number + ' שעות';
7010            },
7011            d: 'יום',
7012            dd: function (number) {
7013                if (number === 2) {
7014                    return 'יומיים';
7015                }
7016                return number + ' ימים';
7017            },
7018            M: 'חודש',
7019            MM: function (number) {
7020                if (number === 2) {
7021                    return 'חודשיים';
7022                }
7023                return number + ' חודשים';
7024            },
7025            y: 'שנה',
7026            yy: function (number) {
7027                if (number === 2) {
7028                    return 'שנתיים';
7029                } else if (number % 10 === 0 && number !== 10) {
7030                    return number + ' שנה';
7031                }
7032                return number + ' שנים';
7033            },
7034        },
7035        meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,
7036        isPM: function (input) {
7037            return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input);
7038        },
7039        meridiem: function (hour, minute, isLower) {
7040            if (hour < 5) {
7041                return 'לפנות בוקר';
7042            } else if (hour < 10) {
7043                return 'בבוקר';
7044            } else if (hour < 12) {
7045                return isLower ? 'לפנה"צ' : 'לפני הצהריים';
7046            } else if (hour < 18) {
7047                return isLower ? 'אחה"צ' : 'אחרי הצהריים';
7048            } else {
7049                return 'בערב';
7050            }
7051        },
7052    });
7053
7054    return he;
7055
7056})));
7057
7058
7059/***/ }),
7060
vendor: 5,331 bytes, lines 7061-7199
7061/***/ "../../node_modules/moment/locale/hi.js":
7062/*!*********************************************************************************************************************************!*\
7063  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/hi.js ***!
7064  \*********************************************************************************************************************************/
7065/*! no static exports found */
7066/***/ (function(module, exports, __webpack_require__) {
7067
7068//! moment.js locale configuration
7069//! locale : Hindi [hi]
7070//! author : Mayank Singhal : https://github.com/mayanksinghal
7071
7072;(function (global, factory) {
7073    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
7074   undefined
7075}(this, (function (moment) { 'use strict';
7076
7077    //! moment.js locale configuration
7078
7079    var symbolMap = {
7080            '1': '१',
7081            '2': '२',
7082            '3': '३',
7083            '4': '४',
7084            '5': '५',
7085            '6': '६',
7086            '7': '७',
7087            '8': '८',
7088            '9': '९',
7089            '0': '०',
7090        },
7091        numberMap = {
7092            '१': '1',
7093            '२': '2',
7094            '३': '3',
7095            '४': '4',
7096            '५': '5',
7097            '६': '6',
7098            '७': '7',
7099            '८': '8',
7100            '९': '9',
7101            '०': '0',
7102        };
7103
7104    var hi = moment.defineLocale('hi', {
7105        months: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(
7106            '_'
7107        ),
7108        monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split(
7109            '_'
7110        ),
7111        monthsParseExact: true,
7112        weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
7113        weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
7114        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
7115        longDateFormat: {
7116            LT: 'A h:mm बजे',
7117            LTS: 'A h:mm:ss बजे',
7118            L: 'DD/MM/YYYY',
7119            LL: 'D MMMM YYYY',
7120            LLL: 'D MMMM YYYY, A h:mm बजे',
7121            LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',
7122        },
7123        calendar: {
7124            sameDay: '[आज] LT',
7125            nextDay: '[कल] LT',
7126            nextWeek: 'dddd, LT',
7127            lastDay: '[कल] LT',
7128            lastWeek: '[पिछले] dddd, LT',
7129            sameElse: 'L',
7130        },
7131        relativeTime: {
7132            future: '%s में',
7133            past: '%s पहले',
7134            s: 'कुछ ही क्षण',
7135            ss: '%d सेकंड',
7136            m: 'एक मिनट',
7137            mm: '%d मिनट',
7138            h: 'एक घंटा',
7139            hh: '%d घंटे',
7140            d: 'एक दिन',
7141            dd: '%d दिन',
7142            M: 'एक महीने',
7143            MM: '%d महीने',
7144            y: 'एक वर्ष',
7145            yy: '%d वर्ष',
7146        },
7147        preparse: function (string) {
7148            return string.replace(/[१२३४५६७८९०]/g, function (match) {
7149                return numberMap[match];
7150            });
7151        },
7152        postformat: function (string) {
7153            return string.replace(/\d/g, function (match) {
7154                return symbolMap[match];
7155            });
7156        },
7157        // Hindi notation for meridiems are quite fuzzy in practice. While there exists
7158        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
7159        meridiemParse: /रात|सुबह|दोपहर|शाम/,
7160        meridiemHour: function (hour, meridiem) {
7161            if (hour === 12) {
7162                hour = 0;
7163            }
7164            if (meridiem === 'रात') {
7165                return hour < 4 ? hour : hour + 12;
7166            } else if (meridiem === 'सुबह') {
7167                return hour;
7168            } else if (meridiem === 'दोपहर') {
7169                return hour >= 10 ? hour : hour + 12;
7170            } else if (meridiem === 'शाम') {
7171                return hour + 12;
7172            }
7173        },
7174        meridiem: function (hour, minute, isLower) {
7175            if (hour < 4) {
7176                return 'रात';
7177            } else if (hour < 10) {
7178                return 'सुबह';
7179            } else if (hour < 17) {
7180                return 'दोपहर';
7181            } else if (hour < 20) {
7182                return 'शाम';
7183            } else {
7184                return 'रात';
7185            }
7186        },
7187        week: {
7188            dow: 0, // Sunday is the first day of the week.
7189            doy: 6, // The week that contains Jan 6th is the first week of the year.
7190        },
7191    });
7192
7193    return hi;
7194
7195})));
7196
7197
7198/***/ }),
7199
vendor: 6,207 bytes, lines 7200-7373
7200/***/ "../../node_modules/moment/locale/hr.js":
7201/*!*********************************************************************************************************************************!*\
7202  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/hr.js ***!
7203  \*********************************************************************************************************************************/
7204/*! no static exports found */
7205/***/ (function(module, exports, __webpack_require__) {
7206
7207//! moment.js locale configuration
7208//! locale : Croatian [hr]
7209//! author : Bojan Marković : https://github.com/bmarkovic
7210
7211;(function (global, factory) {
7212    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
7213   undefined
7214}(this, (function (moment) { 'use strict';
7215
7216    //! moment.js locale configuration
7217
7218    function translate(number, withoutSuffix, key) {
7219        var result = number + ' ';
7220        switch (key) {
7221            case 'ss':
7222                if (number === 1) {
7223                    result += 'sekunda';
7224                } else if (number === 2 || number === 3 || number === 4) {
7225                    result += 'sekunde';
7226                } else {
7227                    result += 'sekundi';
7228                }
7229                return result;
7230            case 'm':
7231                return withoutSuffix ? 'jedna minuta' : 'jedne minute';
7232            case 'mm':
7233                if (number === 1) {
7234                    result += 'minuta';
7235                } else if (number === 2 || number === 3 || number === 4) {
7236                    result += 'minute';
7237                } else {
7238                    result += 'minuta';
7239                }
7240                return result;
7241            case 'h':
7242                return withoutSuffix ? 'jedan sat' : 'jednog sata';
7243            case 'hh':
7244                if (number === 1) {
7245                    result += 'sat';
7246                } else if (number === 2 || number === 3 || number === 4) {
7247                    result += 'sata';
7248                } else {
7249                    result += 'sati';
7250                }
7251                return result;
7252            case 'dd':
7253                if (number === 1) {
7254                    result += 'dan';
7255                } else {
7256                    result += 'dana';
7257                }
7258                return result;
7259            case 'MM':
7260                if (number === 1) {
7261                    result += 'mjesec';
7262                } else if (number === 2 || number === 3 || number === 4) {
7263                    result += 'mjeseca';
7264                } else {
7265                    result += 'mjeseci';
7266                }
7267                return result;
7268            case 'yy':
7269                if (number === 1) {
7270                    result += 'godina';
7271                } else if (number === 2 || number === 3 || number === 4) {
7272                    result += 'godine';
7273                } else {
7274                    result += 'godina';
7275                }
7276                return result;
7277        }
7278    }
7279
7280    var hr = moment.defineLocale('hr', {
7281        months: {
7282            format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(
7283                '_'
7284            ),
7285            standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(
7286                '_'
7287            ),
7288        },
7289        monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(
7290            '_'
7291        ),
7292        monthsParseExact: true,
7293        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
7294            '_'
7295        ),
7296        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
7297        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
7298        weekdaysParseExact: true,
7299        longDateFormat: {
7300            LT: 'H:mm',
7301            LTS: 'H:mm:ss',
7302            L: 'DD.MM.YYYY',
7303            LL: 'Do MMMM YYYY',
7304            LLL: 'Do MMMM YYYY H:mm',
7305            LLLL: 'dddd, Do MMMM YYYY H:mm',
7306        },
7307        calendar: {
7308            sameDay: '[danas u] LT',
7309            nextDay: '[sutra u] LT',
7310            nextWeek: function () {
7311                switch (this.day()) {
7312                    case 0:
7313                        return '[u] [nedjelju] [u] LT';
7314                    case 3:
7315                        return '[u] [srijedu] [u] LT';
7316                    case 6:
7317                        return '[u] [subotu] [u] LT';
7318                    case 1:
7319                    case 2:
7320                    case 4:
7321                    case 5:
7322                        return '[u] dddd [u] LT';
7323                }
7324            },
7325            lastDay: '[jučer u] LT',
7326            lastWeek: function () {
7327                switch (this.day()) {
7328                    case 0:
7329                        return '[prošlu] [nedjelju] [u] LT';
7330                    case 3:
7331                        return '[prošlu] [srijedu] [u] LT';
7332                    case 6:
7333                        return '[prošle] [subote] [u] LT';
7334                    case 1:
7335                    case 2:
7336                    case 4:
7337                    case 5:
7338                        return '[prošli] dddd [u] LT';
7339                }
7340            },
7341            sameElse: 'L',
7342        },
7343        relativeTime: {
7344            future: 'za %s',
7345            past: 'prije %s',
7346            s: 'par sekundi',
7347            ss: translate,
7348            m: translate,
7349            mm: translate,
7350            h: translate,
7351            hh: translate,
7352            d: 'dan',
7353            dd: translate,
7354            M: 'mjesec',
7355            MM: translate,
7356            y: 'godinu',
7357            yy: translate,
7358        },
7359        dayOfMonthOrdinalParse: /\d{1,2}\./,
7360        ordinal: '%d.',
7361        week: {
7362            dow: 1, // Monday is the first day of the week.
7363            doy: 7, // The week that contains Jan 7th is the first week of the year.
7364        },
7365    });
7366
7367    return hr;
7368
7369})));
7370
7371
7372/***/ }),
7373
vendor: 5,040 bytes, lines 7374-7509
7374/***/ "../../node_modules/moment/locale/hu.js":
7375/*!*********************************************************************************************************************************!*\
7376  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/hu.js ***!
7377  \*********************************************************************************************************************************/
7378/*! no static exports found */
7379/***/ (function(module, exports, __webpack_require__) {
7380
7381//! moment.js locale configuration
7382//! locale : Hungarian [hu]
7383//! author : Adam Brunner : https://github.com/adambrunner
7384
7385;(function (global, factory) {
7386    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
7387   undefined
7388}(this, (function (moment) { 'use strict';
7389
7390    //! moment.js locale configuration
7391
7392    var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(
7393        ' '
7394    );
7395    function translate(number, withoutSuffix, key, isFuture) {
7396        var num = number;
7397        switch (key) {
7398            case 's':
7399                return isFuture || withoutSuffix
7400                    ? 'néhány másodperc'
7401                    : 'néhány másodperce';
7402            case 'ss':
7403                return num + (isFuture || withoutSuffix)
7404                    ? ' másodperc'
7405                    : ' másodperce';
7406            case 'm':
7407                return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
7408            case 'mm':
7409                return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
7410            case 'h':
7411                return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
7412            case 'hh':
7413                return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
7414            case 'd':
7415                return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
7416            case 'dd':
7417                return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
7418            case 'M':
7419                return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
7420            case 'MM':
7421                return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
7422            case 'y':
7423                return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
7424            case 'yy':
7425                return num + (isFuture || withoutSuffix ? ' év' : ' éve');
7426        }
7427        return '';
7428    }
7429    function week(isFuture) {
7430        return (
7431            (isFuture ? '' : '[múlt] ') +
7432            '[' +
7433            weekEndings[this.day()] +
7434            '] LT[-kor]'
7435        );
7436    }
7437
7438    var hu = moment.defineLocale('hu', {
7439        months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(
7440            '_'
7441        ),
7442        monthsShort: 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split(
7443            '_'
7444        ),
7445        weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
7446        weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
7447        weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),
7448        longDateFormat: {
7449            LT: 'H:mm',
7450            LTS: 'H:mm:ss',
7451            L: 'YYYY.MM.DD.',
7452            LL: 'YYYY. MMMM D.',
7453            LLL: 'YYYY. MMMM D. H:mm',
7454            LLLL: 'YYYY. MMMM D., dddd H:mm',
7455        },
7456        meridiemParse: /de|du/i,
7457        isPM: function (input) {
7458            return input.charAt(1).toLowerCase() === 'u';
7459        },
7460        meridiem: function (hours, minutes, isLower) {
7461            if (hours < 12) {
7462                return isLower === true ? 'de' : 'DE';
7463            } else {
7464                return isLower === true ? 'du' : 'DU';
7465            }
7466        },
7467        calendar: {
7468            sameDay: '[ma] LT[-kor]',
7469            nextDay: '[holnap] LT[-kor]',
7470            nextWeek: function () {
7471                return week.call(this, true);
7472            },
7473            lastDay: '[tegnap] LT[-kor]',
7474            lastWeek: function () {
7475                return week.call(this, false);
7476            },
7477            sameElse: 'L',
7478        },
7479        relativeTime: {
7480            future: '%s múlva',
7481            past: '%s',
7482            s: translate,
7483            ss: translate,
7484            m: translate,
7485            mm: translate,
7486            h: translate,
7487            hh: translate,
7488            d: translate,
7489            dd: translate,
7490            M: translate,
7491            MM: translate,
7492            y: translate,
7493            yy: translate,
7494        },
7495        dayOfMonthOrdinalParse: /\d{1,2}\./,
7496        ordinal: '%d.',
7497        week: {
7498            dow: 1, // Monday is the first day of the week.
7499            doy: 4, // The week that contains Jan 4th is the first week of the year.
7500        },
7501    });
7502
7503    return hu;
7504
7505})));
7506
7507
7508/***/ }),
7509
vendor: 4,435 bytes, lines 7510-7621
7510/***/ "../../node_modules/moment/locale/hy-am.js":
7511/*!************************************************************************************************************************************!*\
7512  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/hy-am.js ***!
7513  \************************************************************************************************************************************/
7514/*! no static exports found */
7515/***/ (function(module, exports, __webpack_require__) {
7516
7517//! moment.js locale configuration
7518//! locale : Armenian [hy-am]
7519//! author : Armendarabyan : https://github.com/armendarabyan
7520
7521;(function (global, factory) {
7522    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
7523   undefined
7524}(this, (function (moment) { 'use strict';
7525
7526    //! moment.js locale configuration
7527
7528    var hyAm = moment.defineLocale('hy-am', {
7529        months: {
7530            format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(
7531                '_'
7532            ),
7533            standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(
7534                '_'
7535            ),
7536        },
7537        monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
7538        weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(
7539            '_'
7540        ),
7541        weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
7542        weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
7543        longDateFormat: {
7544            LT: 'HH:mm',
7545            LTS: 'HH:mm:ss',
7546            L: 'DD.MM.YYYY',
7547            LL: 'D MMMM YYYY Õ©.',
7548            LLL: 'D MMMM YYYY Õ©., HH:mm',
7549            LLLL: 'dddd, D MMMM YYYY Õ©., HH:mm',
7550        },
7551        calendar: {
7552            sameDay: '[այսօր] LT',
7553            nextDay: '[Õ¾Õ¡Õ²Õ¨] LT',
7554            lastDay: '[երեկ] LT',
7555            nextWeek: function () {
7556                return 'dddd [օրը ժամը] LT';
7557            },
7558            lastWeek: function () {
7559                return '[անցած] dddd [օրը ժամը] LT';
7560            },
7561            sameElse: 'L',
7562        },
7563        relativeTime: {
7564            future: '%s Õ°Õ¥Õ¿Õ¸',
7565            past: '%s Õ¡Õ¼Õ¡Õ»',
7566            s: 'մի քանի վայրկյան',
7567            ss: '%d վայրկյան',
7568            m: 'րոպե',
7569            mm: '%d րոպե',
7570            h: 'ÕªÕ¡Õ´',
7571            hh: '%d ÕªÕ¡Õ´',
7572            d: 'օր',
7573            dd: '%d օր',
7574            M: 'Õ¡Õ´Õ«Õ½',
7575            MM: '%d Õ¡Õ´Õ«Õ½',
7576            y: 'տարի',
7577            yy: '%d տարի',
7578        },
7579        meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
7580        isPM: function (input) {
7581            return /^(ցերեկվա|երեկոյան)$/.test(input);
7582        },
7583        meridiem: function (hour) {
7584            if (hour < 4) {
7585                return 'գիշերվա';
7586            } else if (hour < 12) {
7587                return 'Õ¡Õ¼Õ¡Õ¾Õ¸Õ¿Õ¾Õ¡';
7588            } else if (hour < 17) {
7589                return 'ցերեկվա';
7590            } else {
7591                return 'երեկոյան';
7592            }
7593        },
7594        dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/,
7595        ordinal: function (number, period) {
7596            switch (period) {
7597                case 'DDD':
7598                case 'w':
7599                case 'W':
7600                case 'DDDo':
7601                    if (number === 1) {
7602                        return number + '-Õ«Õ¶';
7603                    }
7604                    return number + '-րդ';
7605                default:
7606                    return number;
7607            }
7608        },
7609        week: {
7610            dow: 1, // Monday is the first day of the week.
7611            doy: 7, // The week that contains Jan 7th is the first week of the year.
7612        },
7613    });
7614
7615    return hyAm;
7616
7617})));
7618
7619
7620/***/ }),
7621
vendor: 3,510 bytes, lines 7622-7717
7622/***/ "../../node_modules/moment/locale/id.js":
7623/*!*********************************************************************************************************************************!*\
7624  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/id.js ***!
7625  \*********************************************************************************************************************************/
7626/*! no static exports found */
7627/***/ (function(module, exports, __webpack_require__) {
7628
7629//! moment.js locale configuration
7630//! locale : Indonesian [id]
7631//! author : Mohammad Satrio Utomo : https://github.com/tyok
7632//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan
7633
7634;(function (global, factory) {
7635    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
7636   undefined
7637}(this, (function (moment) { 'use strict';
7638
7639    //! moment.js locale configuration
7640
7641    var id = moment.defineLocale('id', {
7642        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(
7643            '_'
7644        ),
7645        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),
7646        weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
7647        weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
7648        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
7649        longDateFormat: {
7650            LT: 'HH.mm',
7651            LTS: 'HH.mm.ss',
7652            L: 'DD/MM/YYYY',
7653            LL: 'D MMMM YYYY',
7654            LLL: 'D MMMM YYYY [pukul] HH.mm',
7655            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
7656        },
7657        meridiemParse: /pagi|siang|sore|malam/,
7658        meridiemHour: function (hour, meridiem) {
7659            if (hour === 12) {
7660                hour = 0;
7661            }
7662            if (meridiem === 'pagi') {
7663                return hour;
7664            } else if (meridiem === 'siang') {
7665                return hour >= 11 ? hour : hour + 12;
7666            } else if (meridiem === 'sore' || meridiem === 'malam') {
7667                return hour + 12;
7668            }
7669        },
7670        meridiem: function (hours, minutes, isLower) {
7671            if (hours < 11) {
7672                return 'pagi';
7673            } else if (hours < 15) {
7674                return 'siang';
7675            } else if (hours < 19) {
7676                return 'sore';
7677            } else {
7678                return 'malam';
7679            }
7680        },
7681        calendar: {
7682            sameDay: '[Hari ini pukul] LT',
7683            nextDay: '[Besok pukul] LT',
7684            nextWeek: 'dddd [pukul] LT',
7685            lastDay: '[Kemarin pukul] LT',
7686            lastWeek: 'dddd [lalu pukul] LT',
7687            sameElse: 'L',
7688        },
7689        relativeTime: {
7690            future: 'dalam %s',
7691            past: '%s yang lalu',
7692            s: 'beberapa detik',
7693            ss: '%d detik',
7694            m: 'semenit',
7695            mm: '%d menit',
7696            h: 'sejam',
7697            hh: '%d jam',
7698            d: 'sehari',
7699            dd: '%d hari',
7700            M: 'sebulan',
7701            MM: '%d bulan',
7702            y: 'setahun',
7703            yy: '%d tahun',
7704        },
7705        week: {
7706            dow: 0, // Sunday is the first day of the week.
7707            doy: 6, // The week that contains Jan 6th is the first week of the year.
7708        },
7709    });
7710
7711    return id;
7712
7713})));
7714
7715
7716/***/ }),
7717
vendor: 5,892 bytes, lines 7718-7876
7718/***/ "../../node_modules/moment/locale/is.js":
7719/*!*********************************************************************************************************************************!*\
7720  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/is.js ***!
7721  \*********************************************************************************************************************************/
7722/*! no static exports found */
7723/***/ (function(module, exports, __webpack_require__) {
7724
7725//! moment.js locale configuration
7726//! locale : Icelandic [is]
7727//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik
7728
7729;(function (global, factory) {
7730    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
7731   undefined
7732}(this, (function (moment) { 'use strict';
7733
7734    //! moment.js locale configuration
7735
7736    function plural(n) {
7737        if (n % 100 === 11) {
7738            return true;
7739        } else if (n % 10 === 1) {
7740            return false;
7741        }
7742        return true;
7743    }
7744    function translate(number, withoutSuffix, key, isFuture) {
7745        var result = number + ' ';
7746        switch (key) {
7747            case 's':
7748                return withoutSuffix || isFuture
7749                    ? 'nokkrar sekúndur'
7750                    : 'nokkrum sekúndum';
7751            case 'ss':
7752                if (plural(number)) {
7753                    return (
7754                        result +
7755                        (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')
7756                    );
7757                }
7758                return result + 'sekúnda';
7759            case 'm':
7760                return withoutSuffix ? 'mínúta' : 'mínútu';
7761            case 'mm':
7762                if (plural(number)) {
7763                    return (
7764                        result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')
7765                    );
7766                } else if (withoutSuffix) {
7767                    return result + 'mínúta';
7768                }
7769                return result + 'mínútu';
7770            case 'hh':
7771                if (plural(number)) {
7772                    return (
7773                        result +
7774                        (withoutSuffix || isFuture
7775                            ? 'klukkustundir'
7776                            : 'klukkustundum')
7777                    );
7778                }
7779                return result + 'klukkustund';
7780            case 'd':
7781                if (withoutSuffix) {
7782                    return 'dagur';
7783                }
7784                return isFuture ? 'dag' : 'degi';
7785            case 'dd':
7786                if (plural(number)) {
7787                    if (withoutSuffix) {
7788                        return result + 'dagar';
7789                    }
7790                    return result + (isFuture ? 'daga' : 'dögum');
7791                } else if (withoutSuffix) {
7792                    return result + 'dagur';
7793                }
7794                return result + (isFuture ? 'dag' : 'degi');
7795            case 'M':
7796                if (withoutSuffix) {
7797                    return 'mánuður';
7798                }
7799                return isFuture ? 'mánuð' : 'mánuði';
7800            case 'MM':
7801                if (plural(number)) {
7802                    if (withoutSuffix) {
7803                        return result + 'mánuðir';
7804                    }
7805                    return result + (isFuture ? 'mánuði' : 'mánuðum');
7806                } else if (withoutSuffix) {
7807                    return result + 'mánuður';
7808                }
7809                return result + (isFuture ? 'mánuð' : 'mánuði');
7810            case 'y':
7811                return withoutSuffix || isFuture ? 'ár' : 'ári';
7812            case 'yy':
7813                if (plural(number)) {
7814                    return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
7815                }
7816                return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
7817        }
7818    }
7819
7820    var is = moment.defineLocale('is', {
7821        months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(
7822            '_'
7823        ),
7824        monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
7825        weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(
7826            '_'
7827        ),
7828        weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
7829        weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
7830        longDateFormat: {
7831            LT: 'H:mm',
7832            LTS: 'H:mm:ss',
7833            L: 'DD.MM.YYYY',
7834            LL: 'D. MMMM YYYY',
7835            LLL: 'D. MMMM YYYY [kl.] H:mm',
7836            LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',
7837        },
7838        calendar: {
7839            sameDay: '[í dag kl.] LT',
7840            nextDay: '[á morgun kl.] LT',
7841            nextWeek: 'dddd [kl.] LT',
7842            lastDay: '[í gær kl.] LT',
7843            lastWeek: '[síðasta] dddd [kl.] LT',
7844            sameElse: 'L',
7845        },
7846        relativeTime: {
7847            future: 'eftir %s',
7848            past: 'fyrir %s síðan',
7849            s: translate,
7850            ss: translate,
7851            m: translate,
7852            mm: translate,
7853            h: 'klukkustund',
7854            hh: translate,
7855            d: translate,
7856            dd: translate,
7857            M: translate,
7858            MM: translate,
7859            y: translate,
7860            yy: translate,
7861        },
7862        dayOfMonthOrdinalParse: /\d{1,2}\./,
7863        ordinal: '%d.',
7864        week: {
7865            dow: 1, // Monday is the first day of the week.
7866            doy: 4, // The week that contains Jan 4th is the first week of the year.
7867        },
7868    });
7869
7870    return is;
7871
7872})));
7873
7874
7875/***/ }),
7876
vendor: 3,036 bytes, lines 7877-7960
7877/***/ "../../node_modules/moment/locale/it-ch.js":
7878/*!************************************************************************************************************************************!*\
7879  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/it-ch.js ***!
7880  \************************************************************************************************************************************/
7881/*! no static exports found */
7882/***/ (function(module, exports, __webpack_require__) {
7883
7884//! moment.js locale configuration
7885//! locale : Italian (Switzerland) [it-ch]
7886//! author : xfh : https://github.com/xfh
7887
7888;(function (global, factory) {
7889    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
7890   undefined
7891}(this, (function (moment) { 'use strict';
7892
7893    //! moment.js locale configuration
7894
7895    var itCh = moment.defineLocale('it-ch', {
7896        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
7897            '_'
7898        ),
7899        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
7900        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
7901            '_'
7902        ),
7903        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
7904        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
7905        longDateFormat: {
7906            LT: 'HH:mm',
7907            LTS: 'HH:mm:ss',
7908            L: 'DD.MM.YYYY',
7909            LL: 'D MMMM YYYY',
7910            LLL: 'D MMMM YYYY HH:mm',
7911            LLLL: 'dddd D MMMM YYYY HH:mm',
7912        },
7913        calendar: {
7914            sameDay: '[Oggi alle] LT',
7915            nextDay: '[Domani alle] LT',
7916            nextWeek: 'dddd [alle] LT',
7917            lastDay: '[Ieri alle] LT',
7918            lastWeek: function () {
7919                switch (this.day()) {
7920                    case 0:
7921                        return '[la scorsa] dddd [alle] LT';
7922                    default:
7923                        return '[lo scorso] dddd [alle] LT';
7924                }
7925            },
7926            sameElse: 'L',
7927        },
7928        relativeTime: {
7929            future: function (s) {
7930                return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;
7931            },
7932            past: '%s fa',
7933            s: 'alcuni secondi',
7934            ss: '%d secondi',
7935            m: 'un minuto',
7936            mm: '%d minuti',
7937            h: "un'ora",
7938            hh: '%d ore',
7939            d: 'un giorno',
7940            dd: '%d giorni',
7941            M: 'un mese',
7942            MM: '%d mesi',
7943            y: 'un anno',
7944            yy: '%d anni',
7945        },
7946        dayOfMonthOrdinalParse: /\d{1,2}º/,
7947        ordinal: '%dº',
7948        week: {
7949            dow: 1, // Monday is the first day of the week.
7950            doy: 4, // The week that contains Jan 4th is the first week of the year.
7951        },
7952    });
7953
7954    return itCh;
7955
7956})));
7957
7958
7959/***/ }),
7960
vendor: 4,466 bytes, lines 7961-8084
7961/***/ "../../node_modules/moment/locale/it.js":
7962/*!*********************************************************************************************************************************!*\
7963  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/it.js ***!
7964  \*********************************************************************************************************************************/
7965/*! no static exports found */
7966/***/ (function(module, exports, __webpack_require__) {
7967
7968//! moment.js locale configuration
7969//! locale : Italian [it]
7970//! author : Lorenzo : https://github.com/aliem
7971//! author: Mattia Larentis: https://github.com/nostalgiaz
7972//! author: Marco : https://github.com/Manfre98
7973
7974;(function (global, factory) {
7975    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
7976   undefined
7977}(this, (function (moment) { 'use strict';
7978
7979    //! moment.js locale configuration
7980
7981    var it = moment.defineLocale('it', {
7982        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
7983            '_'
7984        ),
7985        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
7986        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
7987            '_'
7988        ),
7989        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
7990        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
7991        longDateFormat: {
7992            LT: 'HH:mm',
7993            LTS: 'HH:mm:ss',
7994            L: 'DD/MM/YYYY',
7995            LL: 'D MMMM YYYY',
7996            LLL: 'D MMMM YYYY HH:mm',
7997            LLLL: 'dddd D MMMM YYYY HH:mm',
7998        },
7999        calendar: {
8000            sameDay: function () {
8001                return (
8002                    '[Oggi a' +
8003                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
8004                    ']LT'
8005                );
8006            },
8007            nextDay: function () {
8008                return (
8009                    '[Domani a' +
8010                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
8011                    ']LT'
8012                );
8013            },
8014            nextWeek: function () {
8015                return (
8016                    'dddd [a' +
8017                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
8018                    ']LT'
8019                );
8020            },
8021            lastDay: function () {
8022                return (
8023                    '[Ieri a' +
8024                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
8025                    ']LT'
8026                );
8027            },
8028            lastWeek: function () {
8029                switch (this.day()) {
8030                    case 0:
8031                        return (
8032                            '[La scorsa] dddd [a' +
8033                            (this.hours() > 1
8034                                ? 'lle '
8035                                : this.hours() === 0
8036                                ? ' '
8037                                : "ll'") +
8038                            ']LT'
8039                        );
8040                    default:
8041                        return (
8042                            '[Lo scorso] dddd [a' +
8043                            (this.hours() > 1
8044                                ? 'lle '
8045                                : this.hours() === 0
8046                                ? ' '
8047                                : "ll'") +
8048                            ']LT'
8049                        );
8050                }
8051            },
8052            sameElse: 'L',
8053        },
8054        relativeTime: {
8055            future: 'tra %s',
8056            past: '%s fa',
8057            s: 'alcuni secondi',
8058            ss: '%d secondi',
8059            m: 'un minuto',
8060            mm: '%d minuti',
8061            h: "un'ora",
8062            hh: '%d ore',
8063            d: 'un giorno',
8064            dd: '%d giorni',
8065            M: 'un mese',
8066            MM: '%d mesi',
8067            y: 'un anno',
8068            yy: '%d anni',
8069        },
8070        dayOfMonthOrdinalParse: /\d{1,2}º/,
8071        ordinal: '%dº',
8072        week: {
8073            dow: 1, // Monday is the first day of the week.
8074            doy: 4, // The week that contains Jan 4th is the first week of the year.
8075        },
8076    });
8077
8078    return it;
8079
8080})));
8081
8082
8083/***/ }),
8084
vendor: 5,454 bytes, lines 8085-8252
8085/***/ "../../node_modules/moment/locale/ja.js":
8086/*!*********************************************************************************************************************************!*\
8087  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ja.js ***!
8088  \*********************************************************************************************************************************/
8089/*! no static exports found */
8090/***/ (function(module, exports, __webpack_require__) {
8091
8092//! moment.js locale configuration
8093//! locale : Japanese [ja]
8094//! author : LI Long : https://github.com/baryon
8095
8096;(function (global, factory) {
8097    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
8098   undefined
8099}(this, (function (moment) { 'use strict';
8100
8101    //! moment.js locale configuration
8102
8103    var ja = moment.defineLocale('ja', {
8104        eras: [
8105            {
8106                since: '2019-05-01',
8107                offset: 1,
8108                name: '令和',
8109                narrow: '㋿',
8110                abbr: 'R',
8111            },
8112            {
8113                since: '1989-01-08',
8114                until: '2019-04-30',
8115                offset: 1,
8116                name: '平成',
8117                narrow: '㍻',
8118                abbr: 'H',
8119            },
8120            {
8121                since: '1926-12-25',
8122                until: '1989-01-07',
8123                offset: 1,
8124                name: '昭和',
8125                narrow: '㍼',
8126                abbr: 'S',
8127            },
8128            {
8129                since: '1912-07-30',
8130                until: '1926-12-24',
8131                offset: 1,
8132                name: '大正',
8133                narrow: '㍽',
8134                abbr: 'T',
8135            },
8136            {
8137                since: '1873-01-01',
8138                until: '1912-07-29',
8139                offset: 6,
8140                name: '明治',
8141                narrow: '㍾',
8142                abbr: 'M',
8143            },
8144            {
8145                since: '0001-01-01',
8146                until: '1873-12-31',
8147                offset: 1,
8148                name: '西暦',
8149                narrow: 'AD',
8150                abbr: 'AD',
8151            },
8152            {
8153                since: '0000-12-31',
8154                until: -Infinity,
8155                offset: 1,
8156                name: '紀元前',
8157                narrow: 'BC',
8158                abbr: 'BC',
8159            },
8160        ],
8161        eraYearOrdinalRegex: /(元|\d+)年/,
8162        eraYearOrdinalParse: function (input, match) {
8163            return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);
8164        },
8165        months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
8166        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
8167            '_'
8168        ),
8169        weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
8170        weekdaysShort: '日_月_火_水_木_金_土'.split('_'),
8171        weekdaysMin: '日_月_火_水_木_金_土'.split('_'),
8172        longDateFormat: {
8173            LT: 'HH:mm',
8174            LTS: 'HH:mm:ss',
8175            L: 'YYYY/MM/DD',
8176            LL: 'YYYY年M月D日',
8177            LLL: 'YYYY年M月D日 HH:mm',
8178            LLLL: 'YYYY年M月D日 dddd HH:mm',
8179            l: 'YYYY/MM/DD',
8180            ll: 'YYYY年M月D日',
8181            lll: 'YYYY年M月D日 HH:mm',
8182            llll: 'YYYY年M月D日(ddd) HH:mm',
8183        },
8184        meridiemParse: /午前|午後/i,
8185        isPM: function (input) {
8186            return input === '午後';
8187        },
8188        meridiem: function (hour, minute, isLower) {
8189            if (hour < 12) {
8190                return '午前';
8191            } else {
8192                return '午後';
8193            }
8194        },
8195        calendar: {
8196            sameDay: '[今日] LT',
8197            nextDay: '[明日] LT',
8198            nextWeek: function (now) {
8199                if (now.week() !== this.week()) {
8200                    return '[来週]dddd LT';
8201                } else {
8202                    return 'dddd LT';
8203                }
8204            },
8205            lastDay: '[昨日] LT',
8206            lastWeek: function (now) {
8207                if (this.week() !== now.week()) {
8208                    return '[先週]dddd LT';
8209                } else {
8210                    return 'dddd LT';
8211                }
8212            },
8213            sameElse: 'L',
8214        },
8215        dayOfMonthOrdinalParse: /\d{1,2}日/,
8216        ordinal: function (number, period) {
8217            switch (period) {
8218                case 'y':
8219                    return number === 1 ? '元年' : number + '年';
8220                case 'd':
8221                case 'D':
8222                case 'DDD':
8223                    return number + '日';
8224                default:
8225                    return number;
8226            }
8227        },
8228        relativeTime: {
8229            future: '%s後',
8230            past: '%s前',
8231            s: '数秒',
8232            ss: '%d秒',
8233            m: '1分',
8234            mm: '%d分',
8235            h: '1時間',
8236            hh: '%d時間',
8237            d: '1日',
8238            dd: '%d日',
8239            M: '1ヶ月',
8240            MM: '%dヶ月',
8241            y: '1å¹´',
8242            yy: '%då¹´',
8243        },
8244    });
8245
8246    return ja;
8247
8248})));
8249
8250
8251/***/ }),
8252
vendor: 3,519 bytes, lines 8253-8348
8253/***/ "../../node_modules/moment/locale/jv.js":
8254/*!*********************************************************************************************************************************!*\
8255  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/jv.js ***!
8256  \*********************************************************************************************************************************/
8257/*! no static exports found */
8258/***/ (function(module, exports, __webpack_require__) {
8259
8260//! moment.js locale configuration
8261//! locale : Javanese [jv]
8262//! author : Rony Lantip : https://github.com/lantip
8263//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa
8264
8265;(function (global, factory) {
8266    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
8267   undefined
8268}(this, (function (moment) { 'use strict';
8269
8270    //! moment.js locale configuration
8271
8272    var jv = moment.defineLocale('jv', {
8273        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(
8274            '_'
8275        ),
8276        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
8277        weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
8278        weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
8279        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
8280        longDateFormat: {
8281            LT: 'HH.mm',
8282            LTS: 'HH.mm.ss',
8283            L: 'DD/MM/YYYY',
8284            LL: 'D MMMM YYYY',
8285            LLL: 'D MMMM YYYY [pukul] HH.mm',
8286            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
8287        },
8288        meridiemParse: /enjing|siyang|sonten|ndalu/,
8289        meridiemHour: function (hour, meridiem) {
8290            if (hour === 12) {
8291                hour = 0;
8292            }
8293            if (meridiem === 'enjing') {
8294                return hour;
8295            } else if (meridiem === 'siyang') {
8296                return hour >= 11 ? hour : hour + 12;
8297            } else if (meridiem === 'sonten' || meridiem === 'ndalu') {
8298                return hour + 12;
8299            }
8300        },
8301        meridiem: function (hours, minutes, isLower) {
8302            if (hours < 11) {
8303                return 'enjing';
8304            } else if (hours < 15) {
8305                return 'siyang';
8306            } else if (hours < 19) {
8307                return 'sonten';
8308            } else {
8309                return 'ndalu';
8310            }
8311        },
8312        calendar: {
8313            sameDay: '[Dinten puniko pukul] LT',
8314            nextDay: '[Mbenjang pukul] LT',
8315            nextWeek: 'dddd [pukul] LT',
8316            lastDay: '[Kala wingi pukul] LT',
8317            lastWeek: 'dddd [kepengker pukul] LT',
8318            sameElse: 'L',
8319        },
8320        relativeTime: {
8321            future: 'wonten ing %s',
8322            past: '%s ingkang kepengker',
8323            s: 'sawetawis detik',
8324            ss: '%d detik',
8325            m: 'setunggal menit',
8326            mm: '%d menit',
8327            h: 'setunggal jam',
8328            hh: '%d jam',
8329            d: 'sedinten',
8330            dd: '%d dinten',
8331            M: 'sewulan',
8332            MM: '%d wulan',
8333            y: 'setaun',
8334            yy: '%d taun',
8335        },
8336        week: {
8337            dow: 1, // Monday is the first day of the week.
8338            doy: 7, // The week that contains Jan 7th is the first week of the year.
8339        },
8340    });
8341
8342    return jv;
8343
8344})));
8345
8346
8347/***/ }),
8348
vendor: 4,711 bytes, lines 8349-8460
8349/***/ "../../node_modules/moment/locale/ka.js":
8350/*!*********************************************************************************************************************************!*\
8351  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ka.js ***!
8352  \*********************************************************************************************************************************/
8353/*! no static exports found */
8354/***/ (function(module, exports, __webpack_require__) {
8355
8356//! moment.js locale configuration
8357//! locale : Georgian [ka]
8358//! author : Irakli Janiashvili : https://github.com/IrakliJani
8359
8360;(function (global, factory) {
8361    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
8362   undefined
8363}(this, (function (moment) { 'use strict';
8364
8365    //! moment.js locale configuration
8366
8367    var ka = moment.defineLocale('ka', {
8368        months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(
8369            '_'
8370        ),
8371        monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
8372        weekdays: {
8373            standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(
8374                '_'
8375            ),
8376            format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(
8377                '_'
8378            ),
8379            isFormat: /(წინა|შემდეგ)/,
8380        },
8381        weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
8382        weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
8383        longDateFormat: {
8384            LT: 'HH:mm',
8385            LTS: 'HH:mm:ss',
8386            L: 'DD/MM/YYYY',
8387            LL: 'D MMMM YYYY',
8388            LLL: 'D MMMM YYYY HH:mm',
8389            LLLL: 'dddd, D MMMM YYYY HH:mm',
8390        },
8391        calendar: {
8392            sameDay: '[დღეს] LT[-ზე]',
8393            nextDay: '[ხვალ] LT[-ზე]',
8394            lastDay: '[გუშინ] LT[-ზე]',
8395            nextWeek: '[შემდეგ] dddd LT[-ზე]',
8396            lastWeek: '[წინა] dddd LT-ზე',
8397            sameElse: 'L',
8398        },
8399        relativeTime: {
8400            future: function (s) {
8401                return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function (
8402                    $0,
8403                    $1,
8404                    $2
8405                ) {
8406                    return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';
8407                });
8408            },
8409            past: function (s) {
8410                if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {
8411                    return s.replace(/(ი|ე)$/, 'ის წინ');
8412                }
8413                if (/წელი/.test(s)) {
8414                    return s.replace(/წელი$/, 'წლის წინ');
8415                }
8416                return s;
8417            },
8418            s: 'რამდენიმე წამი',
8419            ss: '%d წამი',
8420            m: 'წუთი',
8421            mm: '%d წუთი',
8422            h: 'საათი',
8423            hh: '%d საათი',
8424            d: 'დღე',
8425            dd: '%d დღე',
8426            M: 'თვე',
8427            MM: '%d თვე',
8428            y: 'წელი',
8429            yy: '%d წელი',
8430        },
8431        dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
8432        ordinal: function (number) {
8433            if (number === 0) {
8434                return number;
8435            }
8436            if (number === 1) {
8437                return number + '-ლი';
8438            }
8439            if (
8440                number < 20 ||
8441                (number <= 100 && number % 20 === 0) ||
8442                number % 100 === 0
8443            ) {
8444                return 'მე-' + number;
8445            }
8446            return number + '-ე';
8447        },
8448        week: {
8449            dow: 1,
8450            doy: 7,
8451        },
8452    });
8453
8454    return ka;
8455
8456})));
8457
8458
8459/***/ }),
8460
vendor: 3,660 bytes, lines 8461-8562
8461/***/ "../../node_modules/moment/locale/kk.js":
8462/*!*********************************************************************************************************************************!*\
8463  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/kk.js ***!
8464  \*********************************************************************************************************************************/
8465/*! no static exports found */
8466/***/ (function(module, exports, __webpack_require__) {
8467
8468//! moment.js locale configuration
8469//! locale : Kazakh [kk]
8470//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan
8471
8472;(function (global, factory) {
8473    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
8474   undefined
8475}(this, (function (moment) { 'use strict';
8476
8477    //! moment.js locale configuration
8478
8479    var suffixes = {
8480        0: '-ші',
8481        1: '-ші',
8482        2: '-ші',
8483        3: '-ші',
8484        4: '-ші',
8485        5: '-ші',
8486        6: '-шы',
8487        7: '-ші',
8488        8: '-ші',
8489        9: '-шы',
8490        10: '-шы',
8491        20: '-шы',
8492        30: '-шы',
8493        40: '-шы',
8494        50: '-ші',
8495        60: '-шы',
8496        70: '-ші',
8497        80: '-ші',
8498        90: '-шы',
8499        100: '-ші',
8500    };
8501
8502    var kk = moment.defineLocale('kk', {
8503        months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(
8504            '_'
8505        ),
8506        monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),
8507        weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(
8508            '_'
8509        ),
8510        weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),
8511        weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),
8512        longDateFormat: {
8513            LT: 'HH:mm',
8514            LTS: 'HH:mm:ss',
8515            L: 'DD.MM.YYYY',
8516            LL: 'D MMMM YYYY',
8517            LLL: 'D MMMM YYYY HH:mm',
8518            LLLL: 'dddd, D MMMM YYYY HH:mm',
8519        },
8520        calendar: {
8521            sameDay: '[Бүгін сағат] LT',
8522            nextDay: '[Ертең сағат] LT',
8523            nextWeek: 'dddd [сағат] LT',
8524            lastDay: '[Кеше сағат] LT',
8525            lastWeek: '[Өткен аптаның] dddd [сағат] LT',
8526            sameElse: 'L',
8527        },
8528        relativeTime: {
8529            future: '%s ішінде',
8530            past: '%s бұрын',
8531            s: 'бірнеше секунд',
8532            ss: '%d секунд',
8533            m: 'бір минут',
8534            mm: '%d минут',
8535            h: 'бір сағат',
8536            hh: '%d сағат',
8537            d: 'бір күн',
8538            dd: '%d күн',
8539            M: 'бір ай',
8540            MM: '%d ай',
8541            y: 'бір жыл',
8542            yy: '%d жыл',
8543        },
8544        dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/,
8545        ordinal: function (number) {
8546            var a = number % 10,
8547                b = number >= 100 ? 100 : null;
8548            return number + (suffixes[number] || suffixes[a] || suffixes[b]);
8549        },
8550        week: {
8551            dow: 1, // Monday is the first day of the week.
8552            doy: 7, // The week that contains Jan 7th is the first week of the year.
8553        },
8554    });
8555
8556    return kk;
8557
8558})));
8559
8560
8561/***/ }),
8562
vendor: 4,631 bytes, lines 8563-8684
8563/***/ "../../node_modules/moment/locale/km.js":
8564/*!*********************************************************************************************************************************!*\
8565  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/km.js ***!
8566  \*********************************************************************************************************************************/
8567/*! no static exports found */
8568/***/ (function(module, exports, __webpack_require__) {
8569
8570//! moment.js locale configuration
8571//! locale : Cambodian [km]
8572//! author : Kruy Vanna : https://github.com/kruyvanna
8573
8574;(function (global, factory) {
8575    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
8576   undefined
8577}(this, (function (moment) { 'use strict';
8578
8579    //! moment.js locale configuration
8580
8581    var symbolMap = {
8582            '1': '១',
8583            '2': '២',
8584            '3': '៣',
8585            '4': '៤',
8586            '5': '៥',
8587            '6': '៦',
8588            '7': '៧',
8589            '8': '៨',
8590            '9': '៩',
8591            '0': '០',
8592        },
8593        numberMap = {
8594            '១': '1',
8595            '២': '2',
8596            '៣': '3',
8597            '៤': '4',
8598            '៥': '5',
8599            '៦': '6',
8600            '៧': '7',
8601            '៨': '8',
8602            '៩': '9',
8603            '០': '0',
8604        };
8605
8606    var km = moment.defineLocale('km', {
8607        months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
8608            '_'
8609        ),
8610        monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
8611            '_'
8612        ),
8613        weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
8614        weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
8615        weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
8616        weekdaysParseExact: true,
8617        longDateFormat: {
8618            LT: 'HH:mm',
8619            LTS: 'HH:mm:ss',
8620            L: 'DD/MM/YYYY',
8621            LL: 'D MMMM YYYY',
8622            LLL: 'D MMMM YYYY HH:mm',
8623            LLLL: 'dddd, D MMMM YYYY HH:mm',
8624        },
8625        meridiemParse: /ព្រឹក|ល្ងាច/,
8626        isPM: function (input) {
8627            return input === 'ល្ងាច';
8628        },
8629        meridiem: function (hour, minute, isLower) {
8630            if (hour < 12) {
8631                return 'ព្រឹក';
8632            } else {
8633                return 'ល្ងាច';
8634            }
8635        },
8636        calendar: {
8637            sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',
8638            nextDay: '[ស្អែក ម៉ោង] LT',
8639            nextWeek: 'dddd [ម៉ោង] LT',
8640            lastDay: '[ម្សិលមិញ ម៉ោង] LT',
8641            lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',
8642            sameElse: 'L',
8643        },
8644        relativeTime: {
8645            future: '%sទៀត',
8646            past: '%sមុន',
8647            s: 'ប៉ុន្មានវិនាទី',
8648            ss: '%d វិនាទី',
8649            m: 'មួយនាទី',
8650            mm: '%d នាទី',
8651            h: 'មួយម៉ោង',
8652            hh: '%d ម៉ោង',
8653            d: 'មួយថ្ងៃ',
8654            dd: '%d ថ្ងៃ',
8655            M: 'មួយខែ',
8656            MM: '%d ខែ',
8657            y: 'មួយឆ្នាំ',
8658            yy: '%d ឆ្នាំ',
8659        },
8660        dayOfMonthOrdinalParse: /ទី\d{1,2}/,
8661        ordinal: 'ទី%d',
8662        preparse: function (string) {
8663            return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {
8664                return numberMap[match];
8665            });
8666        },
8667        postformat: function (string) {
8668            return string.replace(/\d/g, function (match) {
8669                return symbolMap[match];
8670            });
8671        },
8672        week: {
8673            dow: 1, // Monday is the first day of the week.
8674            doy: 4, // The week that contains Jan 4th is the first week of the year.
8675        },
8676    });
8677
8678    return km;
8679
8680})));
8681
8682
8683/***/ }),
8684
vendor: 5,626 bytes, lines 8685-8827
8685/***/ "../../node_modules/moment/locale/kn.js":
8686/*!*********************************************************************************************************************************!*\
8687  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/kn.js ***!
8688  \*********************************************************************************************************************************/
8689/*! no static exports found */
8690/***/ (function(module, exports, __webpack_require__) {
8691
8692//! moment.js locale configuration
8693//! locale : Kannada [kn]
8694//! author : Rajeev Naik : https://github.com/rajeevnaikte
8695
8696;(function (global, factory) {
8697    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
8698   undefined
8699}(this, (function (moment) { 'use strict';
8700
8701    //! moment.js locale configuration
8702
8703    var symbolMap = {
8704            '1': 'à³§',
8705            '2': '೨',
8706            '3': '೩',
8707            '4': '೪',
8708            '5': '೫',
8709            '6': '೬',
8710            '7': 'à³­',
8711            '8': 'à³®',
8712            '9': '೯',
8713            '0': '೦',
8714        },
8715        numberMap = {
8716            'à³§': '1',
8717            '೨': '2',
8718            '೩': '3',
8719            '೪': '4',
8720            '೫': '5',
8721            '೬': '6',
8722            'à³­': '7',
8723            'à³®': '8',
8724            '೯': '9',
8725            '೦': '0',
8726        };
8727
8728    var kn = moment.defineLocale('kn', {
8729        months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(
8730            '_'
8731        ),
8732        monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(
8733            '_'
8734        ),
8735        monthsParseExact: true,
8736        weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(
8737            '_'
8738        ),
8739        weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),
8740        weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),
8741        longDateFormat: {
8742            LT: 'A h:mm',
8743            LTS: 'A h:mm:ss',
8744            L: 'DD/MM/YYYY',
8745            LL: 'D MMMM YYYY',
8746            LLL: 'D MMMM YYYY, A h:mm',
8747            LLLL: 'dddd, D MMMM YYYY, A h:mm',
8748        },
8749        calendar: {
8750            sameDay: '[ಇಂದು] LT',
8751            nextDay: '[ನಾಳೆ] LT',
8752            nextWeek: 'dddd, LT',
8753            lastDay: '[ನಿನ್ನೆ] LT',
8754            lastWeek: '[ಕೊನೆಯ] dddd, LT',
8755            sameElse: 'L',
8756        },
8757        relativeTime: {
8758            future: '%s ನಂತರ',
8759            past: '%s ಹಿಂದೆ',
8760            s: 'ಕೆಲವು ಕ್ಷಣಗಳು',
8761            ss: '%d ಸೆಕೆಂಡುಗಳು',
8762            m: 'ಒಂದು ನಿಮಿಷ',
8763            mm: '%d ನಿಮಿಷ',
8764            h: 'ಒಂದು ಗಂಟೆ',
8765            hh: '%d ಗಂಟೆ',
8766            d: 'ಒಂದು ದಿನ',
8767            dd: '%d ದಿನ',
8768            M: 'ಒಂದು ತಿಂಗಳು',
8769            MM: '%d ತಿಂಗಳು',
8770            y: 'ಒಂದು ವರ್ಷ',
8771            yy: '%d ವರ್ಷ',
8772        },
8773        preparse: function (string) {
8774            return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {
8775                return numberMap[match];
8776            });
8777        },
8778        postformat: function (string) {
8779            return string.replace(/\d/g, function (match) {
8780                return symbolMap[match];
8781            });
8782        },
8783        meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,
8784        meridiemHour: function (hour, meridiem) {
8785            if (hour === 12) {
8786                hour = 0;
8787            }
8788            if (meridiem === 'ರಾತ್ರಿ') {
8789                return hour < 4 ? hour : hour + 12;
8790            } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {
8791                return hour;
8792            } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {
8793                return hour >= 10 ? hour : hour + 12;
8794            } else if (meridiem === 'ಸಂಜೆ') {
8795                return hour + 12;
8796            }
8797        },
8798        meridiem: function (hour, minute, isLower) {
8799            if (hour < 4) {
8800                return 'ರಾತ್ರಿ';
8801            } else if (hour < 10) {
8802                return 'ಬೆಳಿಗ್ಗೆ';
8803            } else if (hour < 17) {
8804                return 'ಮಧ್ಯಾಹ್ನ';
8805            } else if (hour < 20) {
8806                return 'ಸಂಜೆ';
8807            } else {
8808                return 'ರಾತ್ರಿ';
8809            }
8810        },
8811        dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/,
8812        ordinal: function (number) {
8813            return number + 'ನೇ';
8814        },
8815        week: {
8816            dow: 0, // Sunday is the first day of the week.
8817            doy: 6, // The week that contains Jan 6th is the first week of the year.
8818        },
8819    });
8820
8821    return kn;
8822
8823})));
8824
8825
8826/***/ }),
8827
vendor: 3,353 bytes, lines 8828-8922
8828/***/ "../../node_modules/moment/locale/ko.js":
8829/*!*********************************************************************************************************************************!*\
8830  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ko.js ***!
8831  \*********************************************************************************************************************************/
8832/*! no static exports found */
8833/***/ (function(module, exports, __webpack_require__) {
8834
8835//! moment.js locale configuration
8836//! locale : Korean [ko]
8837//! author : Kyungwook, Park : https://github.com/kyungw00k
8838//! author : Jeeeyul Lee <[email protected]>
8839
8840;(function (global, factory) {
8841    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
8842   undefined
8843}(this, (function (moment) { 'use strict';
8844
8845    //! moment.js locale configuration
8846
8847    var ko = moment.defineLocale('ko', {
8848        months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
8849        monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(
8850            '_'
8851        ),
8852        weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
8853        weekdaysShort: '일_월_화_수_목_금_토'.split('_'),
8854        weekdaysMin: '일_월_화_수_목_금_토'.split('_'),
8855        longDateFormat: {
8856            LT: 'A h:mm',
8857            LTS: 'A h:mm:ss',
8858            L: 'YYYY.MM.DD.',
8859            LL: 'YYYY년 MMMM D일',
8860            LLL: 'YYYY년 MMMM D일 A h:mm',
8861            LLLL: 'YYYY년 MMMM D일 dddd A h:mm',
8862            l: 'YYYY.MM.DD.',
8863            ll: 'YYYY년 MMMM D일',
8864            lll: 'YYYY년 MMMM D일 A h:mm',
8865            llll: 'YYYY년 MMMM D일 dddd A h:mm',
8866        },
8867        calendar: {
8868            sameDay: '오늘 LT',
8869            nextDay: '내일 LT',
8870            nextWeek: 'dddd LT',
8871            lastDay: '어제 LT',
8872            lastWeek: '지난주 dddd LT',
8873            sameElse: 'L',
8874        },
8875        relativeTime: {
8876            future: '%s 후',
8877            past: '%s 전',
8878            s: '몇 초',
8879            ss: '%d초',
8880            m: '1분',
8881            mm: '%d분',
8882            h: '한 시간',
8883            hh: '%d시간',
8884            d: '하루',
8885            dd: '%d일',
8886            M: '한 달',
8887            MM: '%d달',
8888            y: '일 년',
8889            yy: '%d년',
8890        },
8891        dayOfMonthOrdinalParse: /\d{1,2}(일|월|주)/,
8892        ordinal: function (number, period) {
8893            switch (period) {
8894                case 'd':
8895                case 'D':
8896                case 'DDD':
8897                    return number + '일';
8898                case 'M':
8899                    return number + '월';
8900                case 'w':
8901                case 'W':
8902                    return number + '주';
8903                default:
8904                    return number;
8905            }
8906        },
8907        meridiemParse: /오전|오후/,
8908        isPM: function (token) {
8909            return token === '오후';
8910        },
8911        meridiem: function (hour, minute, isUpper) {
8912            return hour < 12 ? '오전' : '오후';
8913        },
8914    });
8915
8916    return ko;
8917
8918})));
8919
8920
8921/***/ }),
8922
vendor: 4,685 bytes, lines 8923-9060
8923/***/ "../../node_modules/moment/locale/ku.js":
8924/*!*********************************************************************************************************************************!*\
8925  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ku.js ***!
8926  \*********************************************************************************************************************************/
8927/*! no static exports found */
8928/***/ (function(module, exports, __webpack_require__) {
8929
8930//! moment.js locale configuration
8931//! locale : Kurdish [ku]
8932//! author : Shahram Mebashar : https://github.com/ShahramMebashar
8933
8934;(function (global, factory) {
8935    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
8936   undefined
8937}(this, (function (moment) { 'use strict';
8938
8939    //! moment.js locale configuration
8940
8941    var symbolMap = {
8942            '1': 'Ù¡',
8943            '2': 'Ù¢',
8944            '3': 'Ù£',
8945            '4': 'Ù¤',
8946            '5': 'Ù¥',
8947            '6': 'Ù¦',
8948            '7': 'Ù§',
8949            '8': 'Ù¨',
8950            '9': 'Ù©',
8951            '0': 'Ù ',
8952        },
8953        numberMap = {
8954            'Ù¡': '1',
8955            'Ù¢': '2',
8956            'Ù£': '3',
8957            'Ù¤': '4',
8958            'Ù¥': '5',
8959            'Ù¦': '6',
8960            'Ù§': '7',
8961            'Ù¨': '8',
8962            'Ù©': '9',
8963            'Ù ': '0',
8964        },
8965        months = [
8966            'کانونی دووەم',
8967            'شوبات',
8968            'ئازار',
8969            'نیسان',
8970            'ئایار',
8971            'حوزەیران',
8972            'تەمموز',
8973            'ئاب',
8974            'ئەیلوول',
8975            'تشرینی یەكەم',
8976            'تشرینی دووەم',
8977            'كانونی یەکەم',
8978        ];
8979
8980    var ku = moment.defineLocale('ku', {
8981        months: months,
8982        monthsShort: months,
8983        weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(
8984            '_'
8985        ),
8986        weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split(
8987            '_'
8988        ),
8989        weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),
8990        weekdaysParseExact: true,
8991        longDateFormat: {
8992            LT: 'HH:mm',
8993            LTS: 'HH:mm:ss',
8994            L: 'DD/MM/YYYY',
8995            LL: 'D MMMM YYYY',
8996            LLL: 'D MMMM YYYY HH:mm',
8997            LLLL: 'dddd, D MMMM YYYY HH:mm',
8998        },
8999        meridiemParse: /ئێواره‌|به‌یانی/,
9000        isPM: function (input) {
9001            return /ئێواره‌/.test(input);
9002        },
9003        meridiem: function (hour, minute, isLower) {
9004            if (hour < 12) {
9005                return 'به‌یانی';
9006            } else {
9007                return 'ئێواره‌';
9008            }
9009        },
9010        calendar: {
9011            sameDay: '[ئه‌مرۆ كاتژمێر] LT',
9012            nextDay: '[به‌یانی كاتژمێر] LT',
9013            nextWeek: 'dddd [كاتژمێر] LT',
9014            lastDay: '[دوێنێ كاتژمێر] LT',
9015            lastWeek: 'dddd [كاتژمێر] LT',
9016            sameElse: 'L',
9017        },
9018        relativeTime: {
9019            future: 'له‌ %s',
9020            past: '%s',
9021            s: 'چه‌ند چركه‌یه‌ك',
9022            ss: 'چركه‌ %d',
9023            m: 'یه‌ك خوله‌ك',
9024            mm: '%d خوله‌ك',
9025            h: 'یه‌ك كاتژمێر',
9026            hh: '%d كاتژمێر',
9027            d: 'یه‌ك ڕۆژ',
9028            dd: '%d ڕۆژ',
9029            M: 'یه‌ك مانگ',
9030            MM: '%d مانگ',
9031            y: 'یه‌ك ساڵ',
9032            yy: '%d ساڵ',
9033        },
9034        preparse: function (string) {
9035            return string
9036                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
9037                    return numberMap[match];
9038                })
9039                .replace(/،/g, ',');
9040        },
9041        postformat: function (string) {
9042            return string
9043                .replace(/\d/g, function (match) {
9044                    return symbolMap[match];
9045                })
9046                .replace(/,/g, '،');
9047        },
9048        week: {
9049            dow: 6, // Saturday is the first day of the week.
9050            doy: 12, // The week that contains Jan 12th is the first week of the year.
9051        },
9052    });
9053
9054    return ku;
9055
9056})));
9057
9058
9059/***/ }),
9060
vendor: 3,696 bytes, lines 9061-9164
9061/***/ "../../node_modules/moment/locale/ky.js":
9062/*!*********************************************************************************************************************************!*\
9063  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ky.js ***!
9064  \*********************************************************************************************************************************/
9065/*! no static exports found */
9066/***/ (function(module, exports, __webpack_require__) {
9067
9068//! moment.js locale configuration
9069//! locale : Kyrgyz [ky]
9070//! author : Chyngyz Arystan uulu : https://github.com/chyngyz
9071
9072;(function (global, factory) {
9073    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
9074   undefined
9075}(this, (function (moment) { 'use strict';
9076
9077    //! moment.js locale configuration
9078
9079    var suffixes = {
9080        0: '-чү',
9081        1: '-чи',
9082        2: '-чи',
9083        3: '-чү',
9084        4: '-чү',
9085        5: '-чи',
9086        6: '-чы',
9087        7: '-чи',
9088        8: '-чи',
9089        9: '-чу',
9090        10: '-чу',
9091        20: '-чы',
9092        30: '-чу',
9093        40: '-чы',
9094        50: '-чү',
9095        60: '-чы',
9096        70: '-чи',
9097        80: '-чи',
9098        90: '-чу',
9099        100: '-чү',
9100    };
9101
9102    var ky = moment.defineLocale('ky', {
9103        months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
9104            '_'
9105        ),
9106        monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(
9107            '_'
9108        ),
9109        weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(
9110            '_'
9111        ),
9112        weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),
9113        weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),
9114        longDateFormat: {
9115            LT: 'HH:mm',
9116            LTS: 'HH:mm:ss',
9117            L: 'DD.MM.YYYY',
9118            LL: 'D MMMM YYYY',
9119            LLL: 'D MMMM YYYY HH:mm',
9120            LLLL: 'dddd, D MMMM YYYY HH:mm',
9121        },
9122        calendar: {
9123            sameDay: '[Бүгүн саат] LT',
9124            nextDay: '[Эртең саат] LT',
9125            nextWeek: 'dddd [саат] LT',
9126            lastDay: '[Кечээ саат] LT',
9127            lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',
9128            sameElse: 'L',
9129        },
9130        relativeTime: {
9131            future: '%s ичинде',
9132            past: '%s мурун',
9133            s: 'бирнече секунд',
9134            ss: '%d секунд',
9135            m: 'бир мүнөт',
9136            mm: '%d мүнөт',
9137            h: 'бир саат',
9138            hh: '%d саат',
9139            d: 'бир күн',
9140            dd: '%d күн',
9141            M: 'бир ай',
9142            MM: '%d ай',
9143            y: 'бир жыл',
9144            yy: '%d жыл',
9145        },
9146        dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/,
9147        ordinal: function (number) {
9148            var a = number % 10,
9149                b = number >= 100 ? 100 : null;
9150            return number + (suffixes[number] || suffixes[a] || suffixes[b]);
9151        },
9152        week: {
9153            dow: 1, // Monday is the first day of the week.
9154            doy: 7, // The week that contains Jan 7th is the first week of the year.
9155        },
9156    });
9157
9158    return ky;
9159
9160})));
9161
9162
9163/***/ }),
9164
vendor: 5,663 bytes, lines 9165-9319
9165/***/ "../../node_modules/moment/locale/lb.js":
9166/*!*********************************************************************************************************************************!*\
9167  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/lb.js ***!
9168  \*********************************************************************************************************************************/
9169/*! no static exports found */
9170/***/ (function(module, exports, __webpack_require__) {
9171
9172//! moment.js locale configuration
9173//! locale : Luxembourgish [lb]
9174//! author : mweimerskirch : https://github.com/mweimerskirch
9175//! author : David Raison : https://github.com/kwisatz
9176
9177;(function (global, factory) {
9178    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
9179   undefined
9180}(this, (function (moment) { 'use strict';
9181
9182    //! moment.js locale configuration
9183
9184    function processRelativeTime(number, withoutSuffix, key, isFuture) {
9185        var format = {
9186            m: ['eng Minutt', 'enger Minutt'],
9187            h: ['eng Stonn', 'enger Stonn'],
9188            d: ['een Dag', 'engem Dag'],
9189            M: ['ee Mount', 'engem Mount'],
9190            y: ['ee Joer', 'engem Joer'],
9191        };
9192        return withoutSuffix ? format[key][0] : format[key][1];
9193    }
9194    function processFutureTime(string) {
9195        var number = string.substr(0, string.indexOf(' '));
9196        if (eifelerRegelAppliesToNumber(number)) {
9197            return 'a ' + string;
9198        }
9199        return 'an ' + string;
9200    }
9201    function processPastTime(string) {
9202        var number = string.substr(0, string.indexOf(' '));
9203        if (eifelerRegelAppliesToNumber(number)) {
9204            return 'viru ' + string;
9205        }
9206        return 'virun ' + string;
9207    }
9208    /**
9209     * Returns true if the word before the given number loses the '-n' ending.
9210     * e.g. 'an 10 Deeg' but 'a 5 Deeg'
9211     *
9212     * @param number {integer}
9213     * @returns {boolean}
9214     */
9215    function eifelerRegelAppliesToNumber(number) {
9216        number = parseInt(number, 10);
9217        if (isNaN(number)) {
9218            return false;
9219        }
9220        if (number < 0) {
9221            // Negative Number --> always true
9222            return true;
9223        } else if (number < 10) {
9224            // Only 1 digit
9225            if (4 <= number && number <= 7) {
9226                return true;
9227            }
9228            return false;
9229        } else if (number < 100) {
9230            // 2 digits
9231            var lastDigit = number % 10,
9232                firstDigit = number / 10;
9233            if (lastDigit === 0) {
9234                return eifelerRegelAppliesToNumber(firstDigit);
9235            }
9236            return eifelerRegelAppliesToNumber(lastDigit);
9237        } else if (number < 10000) {
9238            // 3 or 4 digits --> recursively check first digit
9239            while (number >= 10) {
9240                number = number / 10;
9241            }
9242            return eifelerRegelAppliesToNumber(number);
9243        } else {
9244            // Anything larger than 4 digits: recursively check first n-3 digits
9245            number = number / 1000;
9246            return eifelerRegelAppliesToNumber(number);
9247        }
9248    }
9249
9250    var lb = moment.defineLocale('lb', {
9251        months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(
9252            '_'
9253        ),
9254        monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(
9255            '_'
9256        ),
9257        monthsParseExact: true,
9258        weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(
9259            '_'
9260        ),
9261        weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
9262        weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
9263        weekdaysParseExact: true,
9264        longDateFormat: {
9265            LT: 'H:mm [Auer]',
9266            LTS: 'H:mm:ss [Auer]',
9267            L: 'DD.MM.YYYY',
9268            LL: 'D. MMMM YYYY',
9269            LLL: 'D. MMMM YYYY H:mm [Auer]',
9270            LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',
9271        },
9272        calendar: {
9273            sameDay: '[Haut um] LT',
9274            sameElse: 'L',
9275            nextDay: '[Muer um] LT',
9276            nextWeek: 'dddd [um] LT',
9277            lastDay: '[Gëschter um] LT',
9278            lastWeek: function () {
9279                // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
9280                switch (this.day()) {
9281                    case 2:
9282                    case 4:
9283                        return '[Leschten] dddd [um] LT';
9284                    default:
9285                        return '[Leschte] dddd [um] LT';
9286                }
9287            },
9288        },
9289        relativeTime: {
9290            future: processFutureTime,
9291            past: processPastTime,
9292            s: 'e puer Sekonnen',
9293            ss: '%d Sekonnen',
9294            m: processRelativeTime,
9295            mm: '%d Minutten',
9296            h: processRelativeTime,
9297            hh: '%d Stonnen',
9298            d: processRelativeTime,
9299            dd: '%d Deeg',
9300            M: processRelativeTime,
9301            MM: '%d Méint',
9302            y: processRelativeTime,
9303            yy: '%d Joer',
9304        },
9305        dayOfMonthOrdinalParse: /\d{1,2}\./,
9306        ordinal: '%d.',
9307        week: {
9308            dow: 1, // Monday is the first day of the week.
9309            doy: 4, // The week that contains Jan 4th is the first week of the year.
9310        },
9311    });
9312
9313    return lb;
9314
9315})));
9316
9317
9318/***/ }),
9319
vendor: 3,653 bytes, lines 9320-9404
9320/***/ "../../node_modules/moment/locale/lo.js":
9321/*!*********************************************************************************************************************************!*\
9322  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/lo.js ***!
9323  \*********************************************************************************************************************************/
9324/*! no static exports found */
9325/***/ (function(module, exports, __webpack_require__) {
9326
9327//! moment.js locale configuration
9328//! locale : Lao [lo]
9329//! author : Ryan Hart : https://github.com/ryanhart2
9330
9331;(function (global, factory) {
9332    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
9333   undefined
9334}(this, (function (moment) { 'use strict';
9335
9336    //! moment.js locale configuration
9337
9338    var lo = moment.defineLocale('lo', {
9339        months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
9340            '_'
9341        ),
9342        monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
9343            '_'
9344        ),
9345        weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
9346        weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
9347        weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
9348        weekdaysParseExact: true,
9349        longDateFormat: {
9350            LT: 'HH:mm',
9351            LTS: 'HH:mm:ss',
9352            L: 'DD/MM/YYYY',
9353            LL: 'D MMMM YYYY',
9354            LLL: 'D MMMM YYYY HH:mm',
9355            LLLL: 'ວັນdddd D MMMM YYYY HH:mm',
9356        },
9357        meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,
9358        isPM: function (input) {
9359            return input === 'ຕອນແລງ';
9360        },
9361        meridiem: function (hour, minute, isLower) {
9362            if (hour < 12) {
9363                return 'ຕອນເຊົ້າ';
9364            } else {
9365                return 'ຕອນແລງ';
9366            }
9367        },
9368        calendar: {
9369            sameDay: '[ມື້ນີ້ເວລາ] LT',
9370            nextDay: '[ມື້ອື່ນເວລາ] LT',
9371            nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',
9372            lastDay: '[ມື້ວານນີ້ເວລາ] LT',
9373            lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
9374            sameElse: 'L',
9375        },
9376        relativeTime: {
9377            future: 'ອີກ %s',
9378            past: '%sຜ່ານມາ',
9379            s: 'ບໍ່ເທົ່າໃດວິນາທີ',
9380            ss: '%d ວິນາທີ',
9381            m: '1 ນາທີ',
9382            mm: '%d ນາທີ',
9383            h: '1 ຊົ່ວໂມງ',
9384            hh: '%d ຊົ່ວໂມງ',
9385            d: '1 ມື້',
9386            dd: '%d ມື້',
9387            M: '1 ເດືອນ',
9388            MM: '%d ເດືອນ',
9389            y: '1 ປີ',
9390            yy: '%d ປີ',
9391        },
9392        dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/,
9393        ordinal: function (number) {
9394            return 'ທີ່' + number;
9395        },
9396    });
9397
9398    return lo;
9399
9400})));
9401
9402
9403/***/ }),
9404
vendor: 5,339 bytes, lines 9405-9547
9405/***/ "../../node_modules/moment/locale/lt.js":
9406/*!*********************************************************************************************************************************!*\
9407  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/lt.js ***!
9408  \*********************************************************************************************************************************/
9409/*! no static exports found */
9410/***/ (function(module, exports, __webpack_require__) {
9411
9412//! moment.js locale configuration
9413//! locale : Lithuanian [lt]
9414//! author : Mindaugas Mozūras : https://github.com/mmozuras
9415
9416;(function (global, factory) {
9417    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
9418   undefined
9419}(this, (function (moment) { 'use strict';
9420
9421    //! moment.js locale configuration
9422
9423    var units = {
9424        ss: 'sekundė_sekundžių_sekundes',
9425        m: 'minutė_minutės_minutę',
9426        mm: 'minutės_minučių_minutes',
9427        h: 'valanda_valandos_valandą',
9428        hh: 'valandos_valandų_valandas',
9429        d: 'diena_dienos_dieną',
9430        dd: 'dienos_dienų_dienas',
9431        M: 'mėnuo_mėnesio_mėnesį',
9432        MM: 'mėnesiai_mėnesių_mėnesius',
9433        y: 'metai_metų_metus',
9434        yy: 'metai_metų_metus',
9435    };
9436    function translateSeconds(number, withoutSuffix, key, isFuture) {
9437        if (withoutSuffix) {
9438            return 'kelios sekundės';
9439        } else {
9440            return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
9441        }
9442    }
9443    function translateSingular(number, withoutSuffix, key, isFuture) {
9444        return withoutSuffix
9445            ? forms(key)[0]
9446            : isFuture
9447            ? forms(key)[1]
9448            : forms(key)[2];
9449    }
9450    function special(number) {
9451        return number % 10 === 0 || (number > 10 && number < 20);
9452    }
9453    function forms(key) {
9454        return units[key].split('_');
9455    }
9456    function translate(number, withoutSuffix, key, isFuture) {
9457        var result = number + ' ';
9458        if (number === 1) {
9459            return (
9460                result + translateSingular(number, withoutSuffix, key[0], isFuture)
9461            );
9462        } else if (withoutSuffix) {
9463            return result + (special(number) ? forms(key)[1] : forms(key)[0]);
9464        } else {
9465            if (isFuture) {
9466                return result + forms(key)[1];
9467            } else {
9468                return result + (special(number) ? forms(key)[1] : forms(key)[2]);
9469            }
9470        }
9471    }
9472    var lt = moment.defineLocale('lt', {
9473        months: {
9474            format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(
9475                '_'
9476            ),
9477            standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(
9478                '_'
9479            ),
9480            isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/,
9481        },
9482        monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
9483        weekdays: {
9484            format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(
9485                '_'
9486            ),
9487            standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(
9488                '_'
9489            ),
9490            isFormat: /dddd HH:mm/,
9491        },
9492        weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),
9493        weekdaysMin: 'S_P_A_T_K_Pn_Å '.split('_'),
9494        weekdaysParseExact: true,
9495        longDateFormat: {
9496            LT: 'HH:mm',
9497            LTS: 'HH:mm:ss',
9498            L: 'YYYY-MM-DD',
9499            LL: 'YYYY [m.] MMMM D [d.]',
9500            LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
9501            LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
9502            l: 'YYYY-MM-DD',
9503            ll: 'YYYY [m.] MMMM D [d.]',
9504            lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
9505            llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',
9506        },
9507        calendar: {
9508            sameDay: '[Å iandien] LT',
9509            nextDay: '[Rytoj] LT',
9510            nextWeek: 'dddd LT',
9511            lastDay: '[Vakar] LT',
9512            lastWeek: '[Praėjusį] dddd LT',
9513            sameElse: 'L',
9514        },
9515        relativeTime: {
9516            future: 'po %s',
9517            past: 'prieš %s',
9518            s: translateSeconds,
9519            ss: translate,
9520            m: translateSingular,
9521            mm: translate,
9522            h: translateSingular,
9523            hh: translate,
9524            d: translateSingular,
9525            dd: translate,
9526            M: translateSingular,
9527            MM: translate,
9528            y: translateSingular,
9529            yy: translate,
9530        },
9531        dayOfMonthOrdinalParse: /\d{1,2}-oji/,
9532        ordinal: function (number) {
9533            return number + '-oji';
9534        },
9535        week: {
9536            dow: 1, // Monday is the first day of the week.
9537            doy: 4, // The week that contains Jan 4th is the first week of the year.
9538        },
9539    });
9540
9541    return lt;
9542
9543})));
9544
9545
9546/***/ }),
9547
vendor: 4,649 bytes, lines 9548-9660
9548/***/ "../../node_modules/moment/locale/lv.js":
9549/*!*********************************************************************************************************************************!*\
9550  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/lv.js ***!
9551  \*********************************************************************************************************************************/
9552/*! no static exports found */
9553/***/ (function(module, exports, __webpack_require__) {
9554
9555//! moment.js locale configuration
9556//! locale : Latvian [lv]
9557//! author : Kristaps Karlsons : https://github.com/skakri
9558//! author : Jānis Elmeris : https://github.com/JanisE
9559
9560;(function (global, factory) {
9561    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
9562   undefined
9563}(this, (function (moment) { 'use strict';
9564
9565    //! moment.js locale configuration
9566
9567    var units = {
9568        ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),
9569        m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
9570        mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
9571        h: 'stundas_stundām_stunda_stundas'.split('_'),
9572        hh: 'stundas_stundām_stunda_stundas'.split('_'),
9573        d: 'dienas_dienām_diena_dienas'.split('_'),
9574        dd: 'dienas_dienām_diena_dienas'.split('_'),
9575        M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
9576        MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
9577        y: 'gada_gadiem_gads_gadi'.split('_'),
9578        yy: 'gada_gadiem_gads_gadi'.split('_'),
9579    };
9580    /**
9581     * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
9582     */
9583    function format(forms, number, withoutSuffix) {
9584        if (withoutSuffix) {
9585            // E.g. "21 minūte", "3 minūtes".
9586            return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];
9587        } else {
9588            // E.g. "21 minūtes" as in "pēc 21 minūtes".
9589            // E.g. "3 minūtēm" as in "pēc 3 minūtēm".
9590            return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];
9591        }
9592    }
9593    function relativeTimeWithPlural(number, withoutSuffix, key) {
9594        return number + ' ' + format(units[key], number, withoutSuffix);
9595    }
9596    function relativeTimeWithSingular(number, withoutSuffix, key) {
9597        return format(units[key], number, withoutSuffix);
9598    }
9599    function relativeSeconds(number, withoutSuffix) {
9600        return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';
9601    }
9602
9603    var lv = moment.defineLocale('lv', {
9604        months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(
9605            '_'
9606        ),
9607        monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
9608        weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(
9609            '_'
9610        ),
9611        weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),
9612        weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),
9613        weekdaysParseExact: true,
9614        longDateFormat: {
9615            LT: 'HH:mm',
9616            LTS: 'HH:mm:ss',
9617            L: 'DD.MM.YYYY.',
9618            LL: 'YYYY. [gada] D. MMMM',
9619            LLL: 'YYYY. [gada] D. MMMM, HH:mm',
9620            LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',
9621        },
9622        calendar: {
9623            sameDay: '[Å odien pulksten] LT',
9624            nextDay: '[Rīt pulksten] LT',
9625            nextWeek: 'dddd [pulksten] LT',
9626            lastDay: '[Vakar pulksten] LT',
9627            lastWeek: '[Pagājušā] dddd [pulksten] LT',
9628            sameElse: 'L',
9629        },
9630        relativeTime: {
9631            future: 'pēc %s',
9632            past: 'pirms %s',
9633            s: relativeSeconds,
9634            ss: relativeTimeWithPlural,
9635            m: relativeTimeWithSingular,
9636            mm: relativeTimeWithPlural,
9637            h: relativeTimeWithSingular,
9638            hh: relativeTimeWithPlural,
9639            d: relativeTimeWithSingular,
9640            dd: relativeTimeWithPlural,
9641            M: relativeTimeWithSingular,
9642            MM: relativeTimeWithPlural,
9643            y: relativeTimeWithSingular,
9644            yy: relativeTimeWithPlural,
9645        },
9646        dayOfMonthOrdinalParse: /\d{1,2}\./,
9647        ordinal: '%d.',
9648        week: {
9649            dow: 1, // Monday is the first day of the week.
9650            doy: 4, // The week that contains Jan 4th is the first week of the year.
9651        },
9652    });
9653
9654    return lv;
9655
9656})));
9657
9658
9659/***/ }),
9660
vendor: 5,008 bytes, lines 9661-9798
9661/***/ "../../node_modules/moment/locale/me.js":
9662/*!*********************************************************************************************************************************!*\
9663  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/me.js ***!
9664  \*********************************************************************************************************************************/
9665/*! no static exports found */
9666/***/ (function(module, exports, __webpack_require__) {
9667
9668//! moment.js locale configuration
9669//! locale : Montenegrin [me]
9670//! author : Miodrag Nikač <[email protected]> : https://github.com/miodragnikac
9671
9672;(function (global, factory) {
9673    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
9674   undefined
9675}(this, (function (moment) { 'use strict';
9676
9677    //! moment.js locale configuration
9678
9679    var translator = {
9680        words: {
9681            //Different grammatical cases
9682            ss: ['sekund', 'sekunda', 'sekundi'],
9683            m: ['jedan minut', 'jednog minuta'],
9684            mm: ['minut', 'minuta', 'minuta'],
9685            h: ['jedan sat', 'jednog sata'],
9686            hh: ['sat', 'sata', 'sati'],
9687            dd: ['dan', 'dana', 'dana'],
9688            MM: ['mjesec', 'mjeseca', 'mjeseci'],
9689            yy: ['godina', 'godine', 'godina'],
9690        },
9691        correctGrammaticalCase: function (number, wordKey) {
9692            return number === 1
9693                ? wordKey[0]
9694                : number >= 2 && number <= 4
9695                ? wordKey[1]
9696                : wordKey[2];
9697        },
9698        translate: function (number, withoutSuffix, key) {
9699            var wordKey = translator.words[key];
9700            if (key.length === 1) {
9701                return withoutSuffix ? wordKey[0] : wordKey[1];
9702            } else {
9703                return (
9704                    number +
9705                    ' ' +
9706                    translator.correctGrammaticalCase(number, wordKey)
9707                );
9708            }
9709        },
9710    };
9711
9712    var me = moment.defineLocale('me', {
9713        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
9714            '_'
9715        ),
9716        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(
9717            '_'
9718        ),
9719        monthsParseExact: true,
9720        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
9721            '_'
9722        ),
9723        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
9724        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
9725        weekdaysParseExact: true,
9726        longDateFormat: {
9727            LT: 'H:mm',
9728            LTS: 'H:mm:ss',
9729            L: 'DD.MM.YYYY',
9730            LL: 'D. MMMM YYYY',
9731            LLL: 'D. MMMM YYYY H:mm',
9732            LLLL: 'dddd, D. MMMM YYYY H:mm',
9733        },
9734        calendar: {
9735            sameDay: '[danas u] LT',
9736            nextDay: '[sjutra u] LT',
9737
9738            nextWeek: function () {
9739                switch (this.day()) {
9740                    case 0:
9741                        return '[u] [nedjelju] [u] LT';
9742                    case 3:
9743                        return '[u] [srijedu] [u] LT';
9744                    case 6:
9745                        return '[u] [subotu] [u] LT';
9746                    case 1:
9747                    case 2:
9748                    case 4:
9749                    case 5:
9750                        return '[u] dddd [u] LT';
9751                }
9752            },
9753            lastDay: '[juče u] LT',
9754            lastWeek: function () {
9755                var lastWeekDays = [
9756                    '[prošle] [nedjelje] [u] LT',
9757                    '[prošlog] [ponedjeljka] [u] LT',
9758                    '[prošlog] [utorka] [u] LT',
9759                    '[prošle] [srijede] [u] LT',
9760                    '[prošlog] [četvrtka] [u] LT',
9761                    '[prošlog] [petka] [u] LT',
9762                    '[prošle] [subote] [u] LT',
9763                ];
9764                return lastWeekDays[this.day()];
9765            },
9766            sameElse: 'L',
9767        },
9768        relativeTime: {
9769            future: 'za %s',
9770            past: 'prije %s',
9771            s: 'nekoliko sekundi',
9772            ss: translator.translate,
9773            m: translator.translate,
9774            mm: translator.translate,
9775            h: translator.translate,
9776            hh: translator.translate,
9777            d: 'dan',
9778            dd: translator.translate,
9779            M: 'mjesec',
9780            MM: translator.translate,
9781            y: 'godinu',
9782            yy: translator.translate,
9783        },
9784        dayOfMonthOrdinalParse: /\d{1,2}\./,
9785        ordinal: '%d.',
9786        week: {
9787            dow: 1, // Monday is the first day of the week.
9788            doy: 7, // The week that contains Jan 7th is the first week of the year.
9789        },
9790    });
9791
9792    return me;
9793
9794})));
9795
9796
9797/***/ }),
9798
vendor: 3,061 bytes, lines 9799-9877
9799/***/ "../../node_modules/moment/locale/mi.js":
9800/*!*********************************************************************************************************************************!*\
9801  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/mi.js ***!
9802  \*********************************************************************************************************************************/
9803/*! no static exports found */
9804/***/ (function(module, exports, __webpack_require__) {
9805
9806//! moment.js locale configuration
9807//! locale : Maori [mi]
9808//! author : John Corrigan <[email protected]> : https://github.com/johnideal
9809
9810;(function (global, factory) {
9811    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
9812   undefined
9813}(this, (function (moment) { 'use strict';
9814
9815    //! moment.js locale configuration
9816
9817    var mi = moment.defineLocale('mi', {
9818        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(
9819            '_'
9820        ),
9821        monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(
9822            '_'
9823        ),
9824        monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
9825        monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
9826        monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
9827        monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,
9828        weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),
9829        weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
9830        weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
9831        longDateFormat: {
9832            LT: 'HH:mm',
9833            LTS: 'HH:mm:ss',
9834            L: 'DD/MM/YYYY',
9835            LL: 'D MMMM YYYY',
9836            LLL: 'D MMMM YYYY [i] HH:mm',
9837            LLLL: 'dddd, D MMMM YYYY [i] HH:mm',
9838        },
9839        calendar: {
9840            sameDay: '[i teie mahana, i] LT',
9841            nextDay: '[apopo i] LT',
9842            nextWeek: 'dddd [i] LT',
9843            lastDay: '[inanahi i] LT',
9844            lastWeek: 'dddd [whakamutunga i] LT',
9845            sameElse: 'L',
9846        },
9847        relativeTime: {
9848            future: 'i roto i %s',
9849            past: '%s i mua',
9850            s: 'te hēkona ruarua',
9851            ss: '%d hēkona',
9852            m: 'he meneti',
9853            mm: '%d meneti',
9854            h: 'te haora',
9855            hh: '%d haora',
9856            d: 'he ra',
9857            dd: '%d ra',
9858            M: 'he marama',
9859            MM: '%d marama',
9860            y: 'he tau',
9861            yy: '%d tau',
9862        },
9863        dayOfMonthOrdinalParse: /\d{1,2}º/,
9864        ordinal: '%dº',
9865        week: {
9866            dow: 1, // Monday is the first day of the week.
9867            doy: 4, // The week that contains Jan 4th is the first week of the year.
9868        },
9869    });
9870
9871    return mi;
9872
9873})));
9874
9875
9876/***/ }),
9877
vendor: 4,207 bytes, lines 9878-9983
9878/***/ "../../node_modules/moment/locale/mk.js":
9879/*!*********************************************************************************************************************************!*\
9880  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/mk.js ***!
9881  \*********************************************************************************************************************************/
9882/*! no static exports found */
9883/***/ (function(module, exports, __webpack_require__) {
9884
9885//! moment.js locale configuration
9886//! locale : Macedonian [mk]
9887//! author : Borislav Mickov : https://github.com/B0k0
9888//! author : Sashko Todorov : https://github.com/bkyceh
9889
9890;(function (global, factory) {
9891    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
9892   undefined
9893}(this, (function (moment) { 'use strict';
9894
9895    //! moment.js locale configuration
9896
9897    var mk = moment.defineLocale('mk', {
9898        months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(
9899            '_'
9900        ),
9901        monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
9902        weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(
9903            '_'
9904        ),
9905        weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
9906        weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),
9907        longDateFormat: {
9908            LT: 'H:mm',
9909            LTS: 'H:mm:ss',
9910            L: 'D.MM.YYYY',
9911            LL: 'D MMMM YYYY',
9912            LLL: 'D MMMM YYYY H:mm',
9913            LLLL: 'dddd, D MMMM YYYY H:mm',
9914        },
9915        calendar: {
9916            sameDay: '[Денес во] LT',
9917            nextDay: '[Утре во] LT',
9918            nextWeek: '[Во] dddd [во] LT',
9919            lastDay: '[Вчера во] LT',
9920            lastWeek: function () {
9921                switch (this.day()) {
9922                    case 0:
9923                    case 3:
9924                    case 6:
9925                        return '[Изминатата] dddd [во] LT';
9926                    case 1:
9927                    case 2:
9928                    case 4:
9929                    case 5:
9930                        return '[Изминатиот] dddd [во] LT';
9931                }
9932            },
9933            sameElse: 'L',
9934        },
9935        relativeTime: {
9936            future: 'за %s',
9937            past: 'пред %s',
9938            s: 'неколку секунди',
9939            ss: '%d секунди',
9940            m: 'една минута',
9941            mm: '%d минути',
9942            h: 'еден час',
9943            hh: '%d часа',
9944            d: 'еден ден',
9945            dd: '%d дена',
9946            M: 'еден месец',
9947            MM: '%d месеци',
9948            y: 'една година',
9949            yy: '%d години',
9950        },
9951        dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
9952        ordinal: function (number) {
9953            var lastDigit = number % 10,
9954                last2Digits = number % 100;
9955            if (number === 0) {
9956                return number + '-ев';
9957            } else if (last2Digits === 0) {
9958                return number + '-ен';
9959            } else if (last2Digits > 10 && last2Digits < 20) {
9960                return number + '-ти';
9961            } else if (lastDigit === 1) {
9962                return number + '-ви';
9963            } else if (lastDigit === 2) {
9964                return number + '-ри';
9965            } else if (lastDigit === 7 || lastDigit === 8) {
9966                return number + '-ми';
9967            } else {
9968                return number + '-ти';
9969            }
9970        },
9971        week: {
9972            dow: 1, // Monday is the first day of the week.
9973            doy: 7, // The week that contains Jan 7th is the first week of the year.
9974        },
9975    });
9976
9977    return mk;
9978
9979})));
9980
9981
9982/***/ }),
9983
vendor: 4,414 bytes, lines 9984-10083
9984/***/ "../../node_modules/moment/locale/ml.js":
9985/*!*********************************************************************************************************************************!*\
9986  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ml.js ***!
9987  \*********************************************************************************************************************************/
9988/*! no static exports found */
9989/***/ (function(module, exports, __webpack_require__) {
9990
9991//! moment.js locale configuration
9992//! locale : Malayalam [ml]
9993//! author : Floyd Pink : https://github.com/floydpink
9994
9995;(function (global, factory) {
9996    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
9997   undefined
9998}(this, (function (moment) { 'use strict';
9999
10000    //! moment.js locale configuration
10001
10002    var ml = moment.defineLocale('ml', {
10003        months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(
10004            '_'
10005        ),
10006        monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(
10007            '_'
10008        ),
10009        monthsParseExact: true,
10010        weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(
10011            '_'
10012        ),
10013        weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
10014        weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
10015        longDateFormat: {
10016            LT: 'A h:mm -നു',
10017            LTS: 'A h:mm:ss -നു',
10018            L: 'DD/MM/YYYY',
10019            LL: 'D MMMM YYYY',
10020            LLL: 'D MMMM YYYY, A h:mm -നു',
10021            LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',
10022        },
10023        calendar: {
10024            sameDay: '[ഇന്ന്] LT',
10025            nextDay: '[നാളെ] LT',
10026            nextWeek: 'dddd, LT',
10027            lastDay: '[ഇന്നലെ] LT',
10028            lastWeek: '[കഴിഞ്ഞ] dddd, LT',
10029            sameElse: 'L',
10030        },
10031        relativeTime: {
10032            future: '%s കഴിഞ്ഞ്',
10033            past: '%s മുൻപ്',
10034            s: 'അൽപ നിമിഷങ്ങൾ',
10035            ss: '%d സെക്കൻഡ്',
10036            m: 'ഒരു മിനിറ്റ്',
10037            mm: '%d മിനിറ്റ്',
10038            h: 'ഒരു മണിക്കൂർ',
10039            hh: '%d മണിക്കൂർ',
10040            d: 'ഒരു ദിവസം',
10041            dd: '%d ദിവസം',
10042            M: 'ഒരു മാസം',
10043            MM: '%d മാസം',
10044            y: 'ഒരു വർഷം',
10045            yy: '%d വർഷം',
10046        },
10047        meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
10048        meridiemHour: function (hour, meridiem) {
10049            if (hour === 12) {
10050                hour = 0;
10051            }
10052            if (
10053                (meridiem === 'രാത്രി' && hour >= 4) ||
10054                meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||
10055                meridiem === 'വൈകുന്നേരം'
10056            ) {
10057                return hour + 12;
10058            } else {
10059                return hour;
10060            }
10061        },
10062        meridiem: function (hour, minute, isLower) {
10063            if (hour < 4) {
10064                return 'രാത്രി';
10065            } else if (hour < 12) {
10066                return 'രാവിലെ';
10067            } else if (hour < 17) {
10068                return 'ഉച്ച കഴിഞ്ഞ്';
10069            } else if (hour < 20) {
10070                return 'വൈകുന്നേരം';
10071            } else {
10072                return 'രാത്രി';
10073            }
10074        },
10075    });
10076
10077    return ml;
10078
10079})));
10080
10081
10082/***/ }),
10083
vendor: 4,648 bytes, lines 10084-10202
10084/***/ "../../node_modules/moment/locale/mn.js":
10085/*!*********************************************************************************************************************************!*\
10086  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/mn.js ***!
10087  \*********************************************************************************************************************************/
10088/*! no static exports found */
10089/***/ (function(module, exports, __webpack_require__) {
10090
10091//! moment.js locale configuration
10092//! locale : Mongolian [mn]
10093//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7
10094
10095;(function (global, factory) {
10096    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
10097   undefined
10098}(this, (function (moment) { 'use strict';
10099
10100    //! moment.js locale configuration
10101
10102    function translate(number, withoutSuffix, key, isFuture) {
10103        switch (key) {
10104            case 's':
10105                return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';
10106            case 'ss':
10107                return number + (withoutSuffix ? ' секунд' : ' секундын');
10108            case 'm':
10109            case 'mm':
10110                return number + (withoutSuffix ? ' минут' : ' минутын');
10111            case 'h':
10112            case 'hh':
10113                return number + (withoutSuffix ? ' цаг' : ' цагийн');
10114            case 'd':
10115            case 'dd':
10116                return number + (withoutSuffix ? ' өдөр' : ' өдрийн');
10117            case 'M':
10118            case 'MM':
10119                return number + (withoutSuffix ? ' сар' : ' сарын');
10120            case 'y':
10121            case 'yy':
10122                return number + (withoutSuffix ? ' жил' : ' жилийн');
10123            default:
10124                return number;
10125        }
10126    }
10127
10128    var mn = moment.defineLocale('mn', {
10129        months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(
10130            '_'
10131        ),
10132        monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(
10133            '_'
10134        ),
10135        monthsParseExact: true,
10136        weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),
10137        weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),
10138        weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),
10139        weekdaysParseExact: true,
10140        longDateFormat: {
10141            LT: 'HH:mm',
10142            LTS: 'HH:mm:ss',
10143            L: 'YYYY-MM-DD',
10144            LL: 'YYYY оны MMMMын D',
10145            LLL: 'YYYY оны MMMMын D HH:mm',
10146            LLLL: 'dddd, YYYY оны MMMMын D HH:mm',
10147        },
10148        meridiemParse: /ҮӨ|ҮХ/i,
10149        isPM: function (input) {
10150            return input === 'ҮХ';
10151        },
10152        meridiem: function (hour, minute, isLower) {
10153            if (hour < 12) {
10154                return 'Ò®Ó¨';
10155            } else {
10156                return 'ҮХ';
10157            }
10158        },
10159        calendar: {
10160            sameDay: '[Өнөөдөр] LT',
10161            nextDay: '[Маргааш] LT',
10162            nextWeek: '[Ирэх] dddd LT',
10163            lastDay: '[Өчигдөр] LT',
10164            lastWeek: '[Өнгөрсөн] dddd LT',
10165            sameElse: 'L',
10166        },
10167        relativeTime: {
10168            future: '%s дараа',
10169            past: '%s өмнө',
10170            s: translate,
10171            ss: translate,
10172            m: translate,
10173            mm: translate,
10174            h: translate,
10175            hh: translate,
10176            d: translate,
10177            dd: translate,
10178            M: translate,
10179            MM: translate,
10180            y: translate,
10181            yy: translate,
10182        },
10183        dayOfMonthOrdinalParse: /\d{1,2} өдөр/,
10184        ordinal: function (number, period) {
10185            switch (period) {
10186                case 'd':
10187                case 'D':
10188                case 'DDD':
10189                    return number + ' өдөр';
10190                default:
10191                    return number;
10192            }
10193        },
10194    });
10195
10196    return mn;
10197
10198})));
10199
10200
10201/***/ }),
10202
vendor: 8,335 bytes, lines 10203-10424
10203/***/ "../../node_modules/moment/locale/mr.js":
10204/*!*********************************************************************************************************************************!*\
10205  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/mr.js ***!
10206  \*********************************************************************************************************************************/
10207/*! no static exports found */
10208/***/ (function(module, exports, __webpack_require__) {
10209
10210//! moment.js locale configuration
10211//! locale : Marathi [mr]
10212//! author : Harshad Kale : https://github.com/kalehv
10213//! author : Vivek Athalye : https://github.com/vnathalye
10214
10215;(function (global, factory) {
10216    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
10217   undefined
10218}(this, (function (moment) { 'use strict';
10219
10220    //! moment.js locale configuration
10221
10222    var symbolMap = {
10223            '1': '१',
10224            '2': '२',
10225            '3': '३',
10226            '4': '४',
10227            '5': '५',
10228            '6': '६',
10229            '7': '७',
10230            '8': '८',
10231            '9': '९',
10232            '0': '०',
10233        },
10234        numberMap = {
10235            '१': '1',
10236            '२': '2',
10237            '३': '3',
10238            '४': '4',
10239            '५': '5',
10240            '६': '6',
10241            '७': '7',
10242            '८': '8',
10243            '९': '9',
10244            '०': '0',
10245        };
10246
10247    function relativeTimeMr(number, withoutSuffix, string, isFuture) {
10248        var output = '';
10249        if (withoutSuffix) {
10250            switch (string) {
10251                case 's':
10252                    output = 'काही सेकंद';
10253                    break;
10254                case 'ss':
10255                    output = '%d सेकंद';
10256                    break;
10257                case 'm':
10258                    output = 'एक मिनिट';
10259                    break;
10260                case 'mm':
10261                    output = '%d मिनिटे';
10262                    break;
10263                case 'h':
10264                    output = 'एक तास';
10265                    break;
10266                case 'hh':
10267                    output = '%d तास';
10268                    break;
10269                case 'd':
10270                    output = 'एक दिवस';
10271                    break;
10272                case 'dd':
10273                    output = '%d दिवस';
10274                    break;
10275                case 'M':
10276                    output = 'एक महिना';
10277                    break;
10278                case 'MM':
10279                    output = '%d महिने';
10280                    break;
10281                case 'y':
10282                    output = 'एक वर्ष';
10283                    break;
10284                case 'yy':
10285                    output = '%d वर्षे';
10286                    break;
10287            }
10288        } else {
10289            switch (string) {
10290                case 's':
10291                    output = 'काही सेकंदां';
10292                    break;
10293                case 'ss':
10294                    output = '%d सेकंदां';
10295                    break;
10296                case 'm':
10297                    output = 'एका मिनिटा';
10298                    break;
10299                case 'mm':
10300                    output = '%d मिनिटां';
10301                    break;
10302                case 'h':
10303                    output = 'एका तासा';
10304                    break;
10305                case 'hh':
10306                    output = '%d तासां';
10307                    break;
10308                case 'd':
10309                    output = 'एका दिवसा';
10310                    break;
10311                case 'dd':
10312                    output = '%d दिवसां';
10313                    break;
10314                case 'M':
10315                    output = 'एका महिन्या';
10316                    break;
10317                case 'MM':
10318                    output = '%d महिन्यां';
10319                    break;
10320                case 'y':
10321                    output = 'एका वर्षा';
10322                    break;
10323                case 'yy':
10324                    output = '%d वर्षां';
10325                    break;
10326            }
10327        }
10328        return output.replace(/%d/i, number);
10329    }
10330
10331    var mr = moment.defineLocale('mr', {
10332        months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
10333            '_'
10334        ),
10335        monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
10336            '_'
10337        ),
10338        monthsParseExact: true,
10339        weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
10340        weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
10341        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
10342        longDateFormat: {
10343            LT: 'A h:mm वाजता',
10344            LTS: 'A h:mm:ss वाजता',
10345            L: 'DD/MM/YYYY',
10346            LL: 'D MMMM YYYY',
10347            LLL: 'D MMMM YYYY, A h:mm वाजता',
10348            LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',
10349        },
10350        calendar: {
10351            sameDay: '[आज] LT',
10352            nextDay: '[उद्या] LT',
10353            nextWeek: 'dddd, LT',
10354            lastDay: '[काल] LT',
10355            lastWeek: '[मागील] dddd, LT',
10356            sameElse: 'L',
10357        },
10358        relativeTime: {
10359            future: '%sमध्ये',
10360            past: '%sपूर्वी',
10361            s: relativeTimeMr,
10362            ss: relativeTimeMr,
10363            m: relativeTimeMr,
10364            mm: relativeTimeMr,
10365            h: relativeTimeMr,
10366            hh: relativeTimeMr,
10367            d: relativeTimeMr,
10368            dd: relativeTimeMr,
10369            M: relativeTimeMr,
10370            MM: relativeTimeMr,
10371            y: relativeTimeMr,
10372            yy: relativeTimeMr,
10373        },
10374        preparse: function (string) {
10375            return string.replace(/[१२३४५६७८९०]/g, function (match) {
10376                return numberMap[match];
10377            });
10378        },
10379        postformat: function (string) {
10380            return string.replace(/\d/g, function (match) {
10381                return symbolMap[match];
10382            });
10383        },
10384        meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,
10385        meridiemHour: function (hour, meridiem) {
10386            if (hour === 12) {
10387                hour = 0;
10388            }
10389            if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {
10390                return hour;
10391            } else if (
10392                meridiem === 'दुपारी' ||
10393                meridiem === 'सायंकाळी' ||
10394                meridiem === 'रात्री'
10395            ) {
10396                return hour >= 12 ? hour : hour + 12;
10397            }
10398        },
10399        meridiem: function (hour, minute, isLower) {
10400            if (hour >= 0 && hour < 6) {
10401                return 'पहाटे';
10402            } else if (hour < 12) {
10403                return 'सकाळी';
10404            } else if (hour < 17) {
10405                return 'दुपारी';
10406            } else if (hour < 20) {
10407                return 'सायंकाळी';
10408            } else {
10409                return 'रात्री';
10410            }
10411        },
10412        week: {
10413            dow: 0, // Sunday is the first day of the week.
10414            doy: 6, // The week that contains Jan 6th is the first week of the year.
10415        },
10416    });
10417
10418    return mr;
10419
10420})));
10421
10422
10423/***/ }),
10424
vendor: 3,481 bytes, lines 10425-10520
10425/***/ "../../node_modules/moment/locale/ms-my.js":
10426/*!************************************************************************************************************************************!*\
10427  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ms-my.js ***!
10428  \************************************************************************************************************************************/
10429/*! no static exports found */
10430/***/ (function(module, exports, __webpack_require__) {
10431
10432//! moment.js locale configuration
10433//! locale : Malay [ms-my]
10434//! note : DEPRECATED, the correct one is [ms]
10435//! author : Weldan Jamili : https://github.com/weldan
10436
10437;(function (global, factory) {
10438    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
10439   undefined
10440}(this, (function (moment) { 'use strict';
10441
10442    //! moment.js locale configuration
10443
10444    var msMy = moment.defineLocale('ms-my', {
10445        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
10446            '_'
10447        ),
10448        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
10449        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
10450        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
10451        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
10452        longDateFormat: {
10453            LT: 'HH.mm',
10454            LTS: 'HH.mm.ss',
10455            L: 'DD/MM/YYYY',
10456            LL: 'D MMMM YYYY',
10457            LLL: 'D MMMM YYYY [pukul] HH.mm',
10458            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
10459        },
10460        meridiemParse: /pagi|tengahari|petang|malam/,
10461        meridiemHour: function (hour, meridiem) {
10462            if (hour === 12) {
10463                hour = 0;
10464            }
10465            if (meridiem === 'pagi') {
10466                return hour;
10467            } else if (meridiem === 'tengahari') {
10468                return hour >= 11 ? hour : hour + 12;
10469            } else if (meridiem === 'petang' || meridiem === 'malam') {
10470                return hour + 12;
10471            }
10472        },
10473        meridiem: function (hours, minutes, isLower) {
10474            if (hours < 11) {
10475                return 'pagi';
10476            } else if (hours < 15) {
10477                return 'tengahari';
10478            } else if (hours < 19) {
10479                return 'petang';
10480            } else {
10481                return 'malam';
10482            }
10483        },
10484        calendar: {
10485            sameDay: '[Hari ini pukul] LT',
10486            nextDay: '[Esok pukul] LT',
10487            nextWeek: 'dddd [pukul] LT',
10488            lastDay: '[Kelmarin pukul] LT',
10489            lastWeek: 'dddd [lepas pukul] LT',
10490            sameElse: 'L',
10491        },
10492        relativeTime: {
10493            future: 'dalam %s',
10494            past: '%s yang lepas',
10495            s: 'beberapa saat',
10496            ss: '%d saat',
10497            m: 'seminit',
10498            mm: '%d minit',
10499            h: 'sejam',
10500            hh: '%d jam',
10501            d: 'sehari',
10502            dd: '%d hari',
10503            M: 'sebulan',
10504            MM: '%d bulan',
10505            y: 'setahun',
10506            yy: '%d tahun',
10507        },
10508        week: {
10509            dow: 1, // Monday is the first day of the week.
10510            doy: 7, // The week that contains Jan 7th is the first week of the year.
10511        },
10512    });
10513
10514    return msMy;
10515
10516})));
10517
10518
10519/***/ }),
10520
vendor: 3,411 bytes, lines 10521-10615
10521/***/ "../../node_modules/moment/locale/ms.js":
10522/*!*********************************************************************************************************************************!*\
10523  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ms.js ***!
10524  \*********************************************************************************************************************************/
10525/*! no static exports found */
10526/***/ (function(module, exports, __webpack_require__) {
10527
10528//! moment.js locale configuration
10529//! locale : Malay [ms]
10530//! author : Weldan Jamili : https://github.com/weldan
10531
10532;(function (global, factory) {
10533    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
10534   undefined
10535}(this, (function (moment) { 'use strict';
10536
10537    //! moment.js locale configuration
10538
10539    var ms = moment.defineLocale('ms', {
10540        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
10541            '_'
10542        ),
10543        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
10544        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
10545        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
10546        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
10547        longDateFormat: {
10548            LT: 'HH.mm',
10549            LTS: 'HH.mm.ss',
10550            L: 'DD/MM/YYYY',
10551            LL: 'D MMMM YYYY',
10552            LLL: 'D MMMM YYYY [pukul] HH.mm',
10553            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
10554        },
10555        meridiemParse: /pagi|tengahari|petang|malam/,
10556        meridiemHour: function (hour, meridiem) {
10557            if (hour === 12) {
10558                hour = 0;
10559            }
10560            if (meridiem === 'pagi') {
10561                return hour;
10562            } else if (meridiem === 'tengahari') {
10563                return hour >= 11 ? hour : hour + 12;
10564            } else if (meridiem === 'petang' || meridiem === 'malam') {
10565                return hour + 12;
10566            }
10567        },
10568        meridiem: function (hours, minutes, isLower) {
10569            if (hours < 11) {
10570                return 'pagi';
10571            } else if (hours < 15) {
10572                return 'tengahari';
10573            } else if (hours < 19) {
10574                return 'petang';
10575            } else {
10576                return 'malam';
10577            }
10578        },
10579        calendar: {
10580            sameDay: '[Hari ini pukul] LT',
10581            nextDay: '[Esok pukul] LT',
10582            nextWeek: 'dddd [pukul] LT',
10583            lastDay: '[Kelmarin pukul] LT',
10584            lastWeek: 'dddd [lepas pukul] LT',
10585            sameElse: 'L',
10586        },
10587        relativeTime: {
10588            future: 'dalam %s',
10589            past: '%s yang lepas',
10590            s: 'beberapa saat',
10591            ss: '%d saat',
10592            m: 'seminit',
10593            mm: '%d minit',
10594            h: 'sejam',
10595            hh: '%d jam',
10596            d: 'sehari',
10597            dd: '%d hari',
10598            M: 'sebulan',
10599            MM: '%d bulan',
10600            y: 'setahun',
10601            yy: '%d tahun',
10602        },
10603        week: {
10604            dow: 1, // Monday is the first day of the week.
10605            doy: 7, // The week that contains Jan 7th is the first week of the year.
10606        },
10607    });
10608
10609    return ms;
10610
10611})));
10612
10613
10614/***/ }),
10615
vendor: 2,702 bytes, lines 10616-10690
10616/***/ "../../node_modules/moment/locale/mt.js":
10617/*!*********************************************************************************************************************************!*\
10618  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/mt.js ***!
10619  \*********************************************************************************************************************************/
10620/*! no static exports found */
10621/***/ (function(module, exports, __webpack_require__) {
10622
10623//! moment.js locale configuration
10624//! locale : Maltese (Malta) [mt]
10625//! author : Alessandro Maruccia : https://github.com/alesma
10626
10627;(function (global, factory) {
10628    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
10629   undefined
10630}(this, (function (moment) { 'use strict';
10631
10632    //! moment.js locale configuration
10633
10634    var mt = moment.defineLocale('mt', {
10635        months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(
10636            '_'
10637        ),
10638        monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),
10639        weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(
10640            '_'
10641        ),
10642        weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),
10643        weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),
10644        longDateFormat: {
10645            LT: 'HH:mm',
10646            LTS: 'HH:mm:ss',
10647            L: 'DD/MM/YYYY',
10648            LL: 'D MMMM YYYY',
10649            LLL: 'D MMMM YYYY HH:mm',
10650            LLLL: 'dddd, D MMMM YYYY HH:mm',
10651        },
10652        calendar: {
10653            sameDay: '[Illum fil-]LT',
10654            nextDay: '[Għada fil-]LT',
10655            nextWeek: 'dddd [fil-]LT',
10656            lastDay: '[Il-bieraħ fil-]LT',
10657            lastWeek: 'dddd [li għadda] [fil-]LT',
10658            sameElse: 'L',
10659        },
10660        relativeTime: {
10661            future: 'f’ %s',
10662            past: '%s ilu',
10663            s: 'ftit sekondi',
10664            ss: '%d sekondi',
10665            m: 'minuta',
10666            mm: '%d minuti',
10667            h: 'siegħa',
10668            hh: '%d siegħat',
10669            d: 'ġurnata',
10670            dd: '%d ġranet',
10671            M: 'xahar',
10672            MM: '%d xhur',
10673            y: 'sena',
10674            yy: '%d sni',
10675        },
10676        dayOfMonthOrdinalParse: /\d{1,2}º/,
10677        ordinal: '%dº',
10678        week: {
10679            dow: 1, // Monday is the first day of the week.
10680            doy: 4, // The week that contains Jan 4th is the first week of the year.
10681        },
10682    });
10683
10684    return mt;
10685
10686})));
10687
10688
10689/***/ }),
10690
vendor: 4,312 bytes, lines 10691-10801
10691/***/ "../../node_modules/moment/locale/my.js":
10692/*!*********************************************************************************************************************************!*\
10693  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/my.js ***!
10694  \*********************************************************************************************************************************/
10695/*! no static exports found */
10696/***/ (function(module, exports, __webpack_require__) {
10697
10698//! moment.js locale configuration
10699//! locale : Burmese [my]
10700//! author : Squar team, mysquar.com
10701//! author : David Rossellat : https://github.com/gholadr
10702//! author : Tin Aung Lin : https://github.com/thanyawzinmin
10703
10704;(function (global, factory) {
10705    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
10706   undefined
10707}(this, (function (moment) { 'use strict';
10708
10709    //! moment.js locale configuration
10710
10711    var symbolMap = {
10712            '1': '၁',
10713            '2': '၂',
10714            '3': '၃',
10715            '4': '၄',
10716            '5': '၅',
10717            '6': '၆',
10718            '7': '၇',
10719            '8': '၈',
10720            '9': '၉',
10721            '0': '၀',
10722        },
10723        numberMap = {
10724            '၁': '1',
10725            '၂': '2',
10726            '၃': '3',
10727            '၄': '4',
10728            '၅': '5',
10729            '၆': '6',
10730            '၇': '7',
10731            '၈': '8',
10732            '၉': '9',
10733            '၀': '0',
10734        };
10735
10736    var my = moment.defineLocale('my', {
10737        months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(
10738            '_'
10739        ),
10740        monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
10741        weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(
10742            '_'
10743        ),
10744        weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
10745        weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
10746
10747        longDateFormat: {
10748            LT: 'HH:mm',
10749            LTS: 'HH:mm:ss',
10750            L: 'DD/MM/YYYY',
10751            LL: 'D MMMM YYYY',
10752            LLL: 'D MMMM YYYY HH:mm',
10753            LLLL: 'dddd D MMMM YYYY HH:mm',
10754        },
10755        calendar: {
10756            sameDay: '[ယနေ.] LT [မှာ]',
10757            nextDay: '[မနက်ဖြန်] LT [မှာ]',
10758            nextWeek: 'dddd LT [မှာ]',
10759            lastDay: '[မနေ.က] LT [မှာ]',
10760            lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',
10761            sameElse: 'L',
10762        },
10763        relativeTime: {
10764            future: 'လာမည့် %s မှာ',
10765            past: 'လွန်ခဲ့သော %s က',
10766            s: 'စက္ကန်.အနည်းငယ်',
10767            ss: '%d စက္ကန့်',
10768            m: 'တစ်မိနစ်',
10769            mm: '%d မိနစ်',
10770            h: 'တစ်နာရီ',
10771            hh: '%d နာရီ',
10772            d: 'တစ်ရက်',
10773            dd: '%d ရက်',
10774            M: 'တစ်လ',
10775            MM: '%d လ',
10776            y: 'တစ်နှစ်',
10777            yy: '%d နှစ်',
10778        },
10779        preparse: function (string) {
10780            return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
10781                return numberMap[match];
10782            });
10783        },
10784        postformat: function (string) {
10785            return string.replace(/\d/g, function (match) {
10786                return symbolMap[match];
10787            });
10788        },
10789        week: {
10790            dow: 1, // Monday is the first day of the week.
10791            doy: 4, // The week that contains Jan 4th is the first week of the year.
10792        },
10793    });
10794
10795    return my;
10796
10797})));
10798
10799
10800/***/ }),
10801
vendor: 2,907 bytes, lines 10802-10880
10802/***/ "../../node_modules/moment/locale/nb.js":
10803/*!*********************************************************************************************************************************!*\
10804  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/nb.js ***!
10805  \*********************************************************************************************************************************/
10806/*! no static exports found */
10807/***/ (function(module, exports, __webpack_require__) {
10808
10809//! moment.js locale configuration
10810//! locale : Norwegian Bokmål [nb]
10811//! authors : Espen Hovlandsdal : https://github.com/rexxars
10812//!           Sigurd Gartmann : https://github.com/sigurdga
10813//!           Stephen Ramthun : https://github.com/stephenramthun
10814
10815;(function (global, factory) {
10816    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
10817   undefined
10818}(this, (function (moment) { 'use strict';
10819
10820    //! moment.js locale configuration
10821
10822    var nb = moment.defineLocale('nb', {
10823        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
10824            '_'
10825        ),
10826        monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(
10827            '_'
10828        ),
10829        monthsParseExact: true,
10830        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
10831        weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),
10832        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
10833        weekdaysParseExact: true,
10834        longDateFormat: {
10835            LT: 'HH:mm',
10836            LTS: 'HH:mm:ss',
10837            L: 'DD.MM.YYYY',
10838            LL: 'D. MMMM YYYY',
10839            LLL: 'D. MMMM YYYY [kl.] HH:mm',
10840            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
10841        },
10842        calendar: {
10843            sameDay: '[i dag kl.] LT',
10844            nextDay: '[i morgen kl.] LT',
10845            nextWeek: 'dddd [kl.] LT',
10846            lastDay: '[i går kl.] LT',
10847            lastWeek: '[forrige] dddd [kl.] LT',
10848            sameElse: 'L',
10849        },
10850        relativeTime: {
10851            future: 'om %s',
10852            past: '%s siden',
10853            s: 'noen sekunder',
10854            ss: '%d sekunder',
10855            m: 'ett minutt',
10856            mm: '%d minutter',
10857            h: 'en time',
10858            hh: '%d timer',
10859            d: 'en dag',
10860            dd: '%d dager',
10861            M: 'en måned',
10862            MM: '%d måneder',
10863            y: 'ett år',
10864            yy: '%d år',
10865        },
10866        dayOfMonthOrdinalParse: /\d{1,2}\./,
10867        ordinal: '%d.',
10868        week: {
10869            dow: 1, // Monday is the first day of the week.
10870            doy: 4, // The week that contains Jan 4th is the first week of the year.
10871        },
10872    });
10873
10874    return nb;
10875
10876})));
10877
10878
10879/***/ }),
10880
vendor: 5,390 bytes, lines 10881-11020
10881/***/ "../../node_modules/moment/locale/ne.js":
10882/*!*********************************************************************************************************************************!*\
10883  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ne.js ***!
10884  \*********************************************************************************************************************************/
10885/*! no static exports found */
10886/***/ (function(module, exports, __webpack_require__) {
10887
10888//! moment.js locale configuration
10889//! locale : Nepalese [ne]
10890//! author : suvash : https://github.com/suvash
10891
10892;(function (global, factory) {
10893    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
10894   undefined
10895}(this, (function (moment) { 'use strict';
10896
10897    //! moment.js locale configuration
10898
10899    var symbolMap = {
10900            '1': '१',
10901            '2': '२',
10902            '3': '३',
10903            '4': '४',
10904            '5': '५',
10905            '6': '६',
10906            '7': '७',
10907            '8': '८',
10908            '9': '९',
10909            '0': '०',
10910        },
10911        numberMap = {
10912            '१': '1',
10913            '२': '2',
10914            '३': '3',
10915            '४': '4',
10916            '५': '5',
10917            '६': '6',
10918            '७': '7',
10919            '८': '8',
10920            '९': '9',
10921            '०': '0',
10922        };
10923
10924    var ne = moment.defineLocale('ne', {
10925        months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(
10926            '_'
10927        ),
10928        monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(
10929            '_'
10930        ),
10931        monthsParseExact: true,
10932        weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(
10933            '_'
10934        ),
10935        weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
10936        weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),
10937        weekdaysParseExact: true,
10938        longDateFormat: {
10939            LT: 'Aको h:mm बजे',
10940            LTS: 'Aको h:mm:ss बजे',
10941            L: 'DD/MM/YYYY',
10942            LL: 'D MMMM YYYY',
10943            LLL: 'D MMMM YYYY, Aको h:mm बजे',
10944            LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',
10945        },
10946        preparse: function (string) {
10947            return string.replace(/[१२३४५६७८९०]/g, function (match) {
10948                return numberMap[match];
10949            });
10950        },
10951        postformat: function (string) {
10952            return string.replace(/\d/g, function (match) {
10953                return symbolMap[match];
10954            });
10955        },
10956        meridiemParse: /राति|बिहान|दिउँसो|साँझ/,
10957        meridiemHour: function (hour, meridiem) {
10958            if (hour === 12) {
10959                hour = 0;
10960            }
10961            if (meridiem === 'राति') {
10962                return hour < 4 ? hour : hour + 12;
10963            } else if (meridiem === 'बिहान') {
10964                return hour;
10965            } else if (meridiem === 'दिउँसो') {
10966                return hour >= 10 ? hour : hour + 12;
10967            } else if (meridiem === 'साँझ') {
10968                return hour + 12;
10969            }
10970        },
10971        meridiem: function (hour, minute, isLower) {
10972            if (hour < 3) {
10973                return 'राति';
10974            } else if (hour < 12) {
10975                return 'बिहान';
10976            } else if (hour < 16) {
10977                return 'दिउँसो';
10978            } else if (hour < 20) {
10979                return 'साँझ';
10980            } else {
10981                return 'राति';
10982            }
10983        },
10984        calendar: {
10985            sameDay: '[आज] LT',
10986            nextDay: '[भोलि] LT',
10987            nextWeek: '[आउँदो] dddd[,] LT',
10988            lastDay: '[हिजो] LT',
10989            lastWeek: '[गएको] dddd[,] LT',
10990            sameElse: 'L',
10991        },
10992        relativeTime: {
10993            future: '%sमा',
10994            past: '%s अगाडि',
10995            s: 'केही क्षण',
10996            ss: '%d सेकेण्ड',
10997            m: 'एक मिनेट',
10998            mm: '%d मिनेट',
10999            h: 'एक घण्टा',
11000            hh: '%d घण्टा',
11001            d: 'एक दिन',
11002            dd: '%d दिन',
11003            M: 'एक महिना',
11004            MM: '%d महिना',
11005            y: 'एक बर्ष',
11006            yy: '%d बर्ष',
11007        },
11008        week: {
11009            dow: 0, // Sunday is the first day of the week.
11010            doy: 6, // The week that contains Jan 6th is the first week of the year.
11011        },
11012    });
11013
11014    return ne;
11015
11016})));
11017
11018
11019/***/ }),
11020
vendor: 4,428 bytes, lines 11021-11142
11021/***/ "../../node_modules/moment/locale/nl-be.js":
11022/*!************************************************************************************************************************************!*\
11023  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/nl-be.js ***!
11024  \************************************************************************************************************************************/
11025/*! no static exports found */
11026/***/ (function(module, exports, __webpack_require__) {
11027
11028//! moment.js locale configuration
11029//! locale : Dutch (Belgium) [nl-be]
11030//! author : Joris Röling : https://github.com/jorisroling
11031//! author : Jacob Middag : https://github.com/middagj
11032
11033;(function (global, factory) {
11034    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
11035   undefined
11036}(this, (function (moment) { 'use strict';
11037
11038    //! moment.js locale configuration
11039
11040    var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(
11041            '_'
11042        ),
11043        monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(
11044            '_'
11045        ),
11046        monthsParse = [
11047            /^jan/i,
11048            /^feb/i,
11049            /^maart|mrt.?$/i,
11050            /^apr/i,
11051            /^mei$/i,
11052            /^jun[i.]?$/i,
11053            /^jul[i.]?$/i,
11054            /^aug/i,
11055            /^sep/i,
11056            /^okt/i,
11057            /^nov/i,
11058            /^dec/i,
11059        ],
11060        monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
11061
11062    var nlBe = moment.defineLocale('nl-be', {
11063        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
11064            '_'
11065        ),
11066        monthsShort: function (m, format) {
11067            if (!m) {
11068                return monthsShortWithDots;
11069            } else if (/-MMM-/.test(format)) {
11070                return monthsShortWithoutDots[m.month()];
11071            } else {
11072                return monthsShortWithDots[m.month()];
11073            }
11074        },
11075
11076        monthsRegex: monthsRegex,
11077        monthsShortRegex: monthsRegex,
11078        monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
11079        monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
11080
11081        monthsParse: monthsParse,
11082        longMonthsParse: monthsParse,
11083        shortMonthsParse: monthsParse,
11084
11085        weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(
11086            '_'
11087        ),
11088        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
11089        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
11090        weekdaysParseExact: true,
11091        longDateFormat: {
11092            LT: 'HH:mm',
11093            LTS: 'HH:mm:ss',
11094            L: 'DD/MM/YYYY',
11095            LL: 'D MMMM YYYY',
11096            LLL: 'D MMMM YYYY HH:mm',
11097            LLLL: 'dddd D MMMM YYYY HH:mm',
11098        },
11099        calendar: {
11100            sameDay: '[vandaag om] LT',
11101            nextDay: '[morgen om] LT',
11102            nextWeek: 'dddd [om] LT',
11103            lastDay: '[gisteren om] LT',
11104            lastWeek: '[afgelopen] dddd [om] LT',
11105            sameElse: 'L',
11106        },
11107        relativeTime: {
11108            future: 'over %s',
11109            past: '%s geleden',
11110            s: 'een paar seconden',
11111            ss: '%d seconden',
11112            m: 'één minuut',
11113            mm: '%d minuten',
11114            h: 'één uur',
11115            hh: '%d uur',
11116            d: 'één dag',
11117            dd: '%d dagen',
11118            M: 'één maand',
11119            MM: '%d maanden',
11120            y: 'één jaar',
11121            yy: '%d jaar',
11122        },
11123        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
11124        ordinal: function (number) {
11125            return (
11126                number +
11127                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
11128            );
11129        },
11130        week: {
11131            dow: 1, // Monday is the first day of the week.
11132            doy: 4, // The week that contains Jan 4th is the first week of the year.
11133        },
11134    });
11135
11136    return nlBe;
11137
11138})));
11139
11140
11141/***/ }),
11142
vendor: 4,396 bytes, lines 11143-11264
11143/***/ "../../node_modules/moment/locale/nl.js":
11144/*!*********************************************************************************************************************************!*\
11145  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/nl.js ***!
11146  \*********************************************************************************************************************************/
11147/*! no static exports found */
11148/***/ (function(module, exports, __webpack_require__) {
11149
11150//! moment.js locale configuration
11151//! locale : Dutch [nl]
11152//! author : Joris Röling : https://github.com/jorisroling
11153//! author : Jacob Middag : https://github.com/middagj
11154
11155;(function (global, factory) {
11156    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
11157   undefined
11158}(this, (function (moment) { 'use strict';
11159
11160    //! moment.js locale configuration
11161
11162    var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(
11163            '_'
11164        ),
11165        monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(
11166            '_'
11167        ),
11168        monthsParse = [
11169            /^jan/i,
11170            /^feb/i,
11171            /^maart|mrt.?$/i,
11172            /^apr/i,
11173            /^mei$/i,
11174            /^jun[i.]?$/i,
11175            /^jul[i.]?$/i,
11176            /^aug/i,
11177            /^sep/i,
11178            /^okt/i,
11179            /^nov/i,
11180            /^dec/i,
11181        ],
11182        monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
11183
11184    var nl = moment.defineLocale('nl', {
11185        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
11186            '_'
11187        ),
11188        monthsShort: function (m, format) {
11189            if (!m) {
11190                return monthsShortWithDots;
11191            } else if (/-MMM-/.test(format)) {
11192                return monthsShortWithoutDots[m.month()];
11193            } else {
11194                return monthsShortWithDots[m.month()];
11195            }
11196        },
11197
11198        monthsRegex: monthsRegex,
11199        monthsShortRegex: monthsRegex,
11200        monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
11201        monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
11202
11203        monthsParse: monthsParse,
11204        longMonthsParse: monthsParse,
11205        shortMonthsParse: monthsParse,
11206
11207        weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(
11208            '_'
11209        ),
11210        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
11211        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
11212        weekdaysParseExact: true,
11213        longDateFormat: {
11214            LT: 'HH:mm',
11215            LTS: 'HH:mm:ss',
11216            L: 'DD-MM-YYYY',
11217            LL: 'D MMMM YYYY',
11218            LLL: 'D MMMM YYYY HH:mm',
11219            LLLL: 'dddd D MMMM YYYY HH:mm',
11220        },
11221        calendar: {
11222            sameDay: '[vandaag om] LT',
11223            nextDay: '[morgen om] LT',
11224            nextWeek: 'dddd [om] LT',
11225            lastDay: '[gisteren om] LT',
11226            lastWeek: '[afgelopen] dddd [om] LT',
11227            sameElse: 'L',
11228        },
11229        relativeTime: {
11230            future: 'over %s',
11231            past: '%s geleden',
11232            s: 'een paar seconden',
11233            ss: '%d seconden',
11234            m: 'één minuut',
11235            mm: '%d minuten',
11236            h: 'één uur',
11237            hh: '%d uur',
11238            d: 'één dag',
11239            dd: '%d dagen',
11240            M: 'één maand',
11241            MM: '%d maanden',
11242            y: 'één jaar',
11243            yy: '%d jaar',
11244        },
11245        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
11246        ordinal: function (number) {
11247            return (
11248                number +
11249                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
11250            );
11251        },
11252        week: {
11253            dow: 1, // Monday is the first day of the week.
11254            doy: 4, // The week that contains Jan 4th is the first week of the year.
11255        },
11256    });
11257
11258    return nl;
11259
11260})));
11261
11262
11263/***/ }),
11264
vendor: 2,833 bytes, lines 11265-11342
11265/***/ "../../node_modules/moment/locale/nn.js":
11266/*!*********************************************************************************************************************************!*\
11267  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/nn.js ***!
11268  \*********************************************************************************************************************************/
11269/*! no static exports found */
11270/***/ (function(module, exports, __webpack_require__) {
11271
11272//! moment.js locale configuration
11273//! locale : Nynorsk [nn]
11274//! authors : https://github.com/mechuwind
11275//!           Stephen Ramthun : https://github.com/stephenramthun
11276
11277;(function (global, factory) {
11278    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
11279   undefined
11280}(this, (function (moment) { 'use strict';
11281
11282    //! moment.js locale configuration
11283
11284    var nn = moment.defineLocale('nn', {
11285        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
11286            '_'
11287        ),
11288        monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(
11289            '_'
11290        ),
11291        monthsParseExact: true,
11292        weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
11293        weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),
11294        weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),
11295        weekdaysParseExact: true,
11296        longDateFormat: {
11297            LT: 'HH:mm',
11298            LTS: 'HH:mm:ss',
11299            L: 'DD.MM.YYYY',
11300            LL: 'D. MMMM YYYY',
11301            LLL: 'D. MMMM YYYY [kl.] H:mm',
11302            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
11303        },
11304        calendar: {
11305            sameDay: '[I dag klokka] LT',
11306            nextDay: '[I morgon klokka] LT',
11307            nextWeek: 'dddd [klokka] LT',
11308            lastDay: '[I går klokka] LT',
11309            lastWeek: '[Føregåande] dddd [klokka] LT',
11310            sameElse: 'L',
11311        },
11312        relativeTime: {
11313            future: 'om %s',
11314            past: '%s sidan',
11315            s: 'nokre sekund',
11316            ss: '%d sekund',
11317            m: 'eit minutt',
11318            mm: '%d minutt',
11319            h: 'ein time',
11320            hh: '%d timar',
11321            d: 'ein dag',
11322            dd: '%d dagar',
11323            M: 'ein månad',
11324            MM: '%d månader',
11325            y: 'eit år',
11326            yy: '%d år',
11327        },
11328        dayOfMonthOrdinalParse: /\d{1,2}\./,
11329        ordinal: '%d.',
11330        week: {
11331            dow: 1, // Monday is the first day of the week.
11332            doy: 4, // The week that contains Jan 4th is the first week of the year.
11333        },
11334    });
11335
11336    return nn;
11337
11338})));
11339
11340
11341/***/ }),
11342
vendor: 3,632 bytes, lines 11343-11445
11343/***/ "../../node_modules/moment/locale/oc-lnc.js":
11344/*!*************************************************************************************************************************************!*\
11345  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/oc-lnc.js ***!
11346  \*************************************************************************************************************************************/
11347/*! no static exports found */
11348/***/ (function(module, exports, __webpack_require__) {
11349
11350//! moment.js locale configuration
11351//! locale : Occitan, lengadocian dialecte [oc-lnc]
11352//! author : Quentin PAGÈS : https://github.com/Quenty31
11353
11354;(function (global, factory) {
11355    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
11356   undefined
11357}(this, (function (moment) { 'use strict';
11358
11359    //! moment.js locale configuration
11360
11361    var ocLnc = moment.defineLocale('oc-lnc', {
11362        months: {
11363            standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(
11364                '_'
11365            ),
11366            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(
11367                '_'
11368            ),
11369            isFormat: /D[oD]?(\s)+MMMM/,
11370        },
11371        monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(
11372            '_'
11373        ),
11374        monthsParseExact: true,
11375        weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(
11376            '_'
11377        ),
11378        weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),
11379        weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),
11380        weekdaysParseExact: true,
11381        longDateFormat: {
11382            LT: 'H:mm',
11383            LTS: 'H:mm:ss',
11384            L: 'DD/MM/YYYY',
11385            LL: 'D MMMM [de] YYYY',
11386            ll: 'D MMM YYYY',
11387            LLL: 'D MMMM [de] YYYY [a] H:mm',
11388            lll: 'D MMM YYYY, H:mm',
11389            LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',
11390            llll: 'ddd D MMM YYYY, H:mm',
11391        },
11392        calendar: {
11393            sameDay: '[uèi a] LT',
11394            nextDay: '[deman a] LT',
11395            nextWeek: 'dddd [a] LT',
11396            lastDay: '[ièr a] LT',
11397            lastWeek: 'dddd [passat a] LT',
11398            sameElse: 'L',
11399        },
11400        relativeTime: {
11401            future: "d'aquí %s",
11402            past: 'fa %s',
11403            s: 'unas segondas',
11404            ss: '%d segondas',
11405            m: 'una minuta',
11406            mm: '%d minutas',
11407            h: 'una ora',
11408            hh: '%d oras',
11409            d: 'un jorn',
11410            dd: '%d jorns',
11411            M: 'un mes',
11412            MM: '%d meses',
11413            y: 'un an',
11414            yy: '%d ans',
11415        },
11416        dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
11417        ordinal: function (number, period) {
11418            var output =
11419                number === 1
11420                    ? 'r'
11421                    : number === 2
11422                    ? 'n'
11423                    : number === 3
11424                    ? 'r'
11425                    : number === 4
11426                    ? 't'
11427                    : 'è';
11428            if (period === 'w' || period === 'W') {
11429                output = 'a';
11430            }
11431            return number + output;
11432        },
11433        week: {
11434            dow: 1, // Monday is the first day of the week.
11435            doy: 4,
11436        },
11437    });
11438
11439    return ocLnc;
11440
11441})));
11442
11443
11444/***/ }),
11445
vendor: 5,578 bytes, lines 11446-11586
11446/***/ "../../node_modules/moment/locale/pa-in.js":
11447/*!************************************************************************************************************************************!*\
11448  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/pa-in.js ***!
11449  \************************************************************************************************************************************/
11450/*! no static exports found */
11451/***/ (function(module, exports, __webpack_require__) {
11452
11453//! moment.js locale configuration
11454//! locale : Punjabi (India) [pa-in]
11455//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit
11456
11457;(function (global, factory) {
11458    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
11459   undefined
11460}(this, (function (moment) { 'use strict';
11461
11462    //! moment.js locale configuration
11463
11464    var symbolMap = {
11465            '1': 'à©§',
11466            '2': '੨',
11467            '3': 'à©©',
11468            '4': '੪',
11469            '5': 'à©«',
11470            '6': '੬',
11471            '7': 'à©­',
11472            '8': 'à©®',
11473            '9': '੯',
11474            '0': '੦',
11475        },
11476        numberMap = {
11477            'à©§': '1',
11478            '੨': '2',
11479            'à©©': '3',
11480            '੪': '4',
11481            'à©«': '5',
11482            '੬': '6',
11483            'à©­': '7',
11484            'à©®': '8',
11485            '੯': '9',
11486            '੦': '0',
11487        };
11488
11489    var paIn = moment.defineLocale('pa-in', {
11490        // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.
11491        months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
11492            '_'
11493        ),
11494        monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
11495            '_'
11496        ),
11497        weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(
11498            '_'
11499        ),
11500        weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
11501        weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
11502        longDateFormat: {
11503            LT: 'A h:mm ਵਜੇ',
11504            LTS: 'A h:mm:ss ਵਜੇ',
11505            L: 'DD/MM/YYYY',
11506            LL: 'D MMMM YYYY',
11507            LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',
11508            LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',
11509        },
11510        calendar: {
11511            sameDay: '[ਅਜ] LT',
11512            nextDay: '[ਕਲ] LT',
11513            nextWeek: '[ਅਗਲਾ] dddd, LT',
11514            lastDay: '[ਕਲ] LT',
11515            lastWeek: '[ਪਿਛਲੇ] dddd, LT',
11516            sameElse: 'L',
11517        },
11518        relativeTime: {
11519            future: '%s ਵਿੱਚ',
11520            past: '%s ਪਿਛਲੇ',
11521            s: 'ਕੁਝ ਸਕਿੰਟ',
11522            ss: '%d ਸਕਿੰਟ',
11523            m: 'ਇਕ ਮਿੰਟ',
11524            mm: '%d ਮਿੰਟ',
11525            h: 'ਇੱਕ ਘੰਟਾ',
11526            hh: '%d ਘੰਟੇ',
11527            d: 'ਇੱਕ ਦਿਨ',
11528            dd: '%d ਦਿਨ',
11529            M: 'ਇੱਕ ਮਹੀਨਾ',
11530            MM: '%d ਮਹੀਨੇ',
11531            y: 'ਇੱਕ ਸਾਲ',
11532            yy: '%d ਸਾਲ',
11533        },
11534        preparse: function (string) {
11535            return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {
11536                return numberMap[match];
11537            });
11538        },
11539        postformat: function (string) {
11540            return string.replace(/\d/g, function (match) {
11541                return symbolMap[match];
11542            });
11543        },
11544        // Punjabi notation for meridiems are quite fuzzy in practice. While there exists
11545        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.
11546        meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,
11547        meridiemHour: function (hour, meridiem) {
11548            if (hour === 12) {
11549                hour = 0;
11550            }
11551            if (meridiem === 'ਰਾਤ') {
11552                return hour < 4 ? hour : hour + 12;
11553            } else if (meridiem === 'ਸਵੇਰ') {
11554                return hour;
11555            } else if (meridiem === 'ਦੁਪਹਿਰ') {
11556                return hour >= 10 ? hour : hour + 12;
11557            } else if (meridiem === 'ਸ਼ਾਮ') {
11558                return hour + 12;
11559            }
11560        },
11561        meridiem: function (hour, minute, isLower) {
11562            if (hour < 4) {
11563                return 'ਰਾਤ';
11564            } else if (hour < 10) {
11565                return 'ਸਵੇਰ';
11566            } else if (hour < 17) {
11567                return 'ਦੁਪਹਿਰ';
11568            } else if (hour < 20) {
11569                return 'ਸ਼ਾਮ';
11570            } else {
11571                return 'ਰਾਤ';
11572            }
11573        },
11574        week: {
11575            dow: 0, // Sunday is the first day of the week.
11576            doy: 6, // The week that contains Jan 6th is the first week of the year.
11577        },
11578    });
11579
11580    return paIn;
11581
11582})));
11583
11584
11585/***/ }),
11586
vendor: 5,495 bytes, lines 11587-11735
11587/***/ "../../node_modules/moment/locale/pl.js":
11588/*!*********************************************************************************************************************************!*\
11589  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/pl.js ***!
11590  \*********************************************************************************************************************************/
11591/*! no static exports found */
11592/***/ (function(module, exports, __webpack_require__) {
11593
11594//! moment.js locale configuration
11595//! locale : Polish [pl]
11596//! author : Rafal Hirsz : https://github.com/evoL
11597
11598;(function (global, factory) {
11599    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
11600   undefined
11601}(this, (function (moment) { 'use strict';
11602
11603    //! moment.js locale configuration
11604
11605    var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(
11606            '_'
11607        ),
11608        monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(
11609            '_'
11610        );
11611    function plural(n) {
11612        return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;
11613    }
11614    function translate(number, withoutSuffix, key) {
11615        var result = number + ' ';
11616        switch (key) {
11617            case 'ss':
11618                return result + (plural(number) ? 'sekundy' : 'sekund');
11619            case 'm':
11620                return withoutSuffix ? 'minuta' : 'minutę';
11621            case 'mm':
11622                return result + (plural(number) ? 'minuty' : 'minut');
11623            case 'h':
11624                return withoutSuffix ? 'godzina' : 'godzinę';
11625            case 'hh':
11626                return result + (plural(number) ? 'godziny' : 'godzin');
11627            case 'MM':
11628                return result + (plural(number) ? 'miesiące' : 'miesięcy');
11629            case 'yy':
11630                return result + (plural(number) ? 'lata' : 'lat');
11631        }
11632    }
11633
11634    var pl = moment.defineLocale('pl', {
11635        months: function (momentToFormat, format) {
11636            if (!momentToFormat) {
11637                return monthsNominative;
11638            } else if (format === '') {
11639                // Hack: if format empty we know this is used to generate
11640                // RegExp by moment. Give then back both valid forms of months
11641                // in RegExp ready format.
11642                return (
11643                    '(' +
11644                    monthsSubjective[momentToFormat.month()] +
11645                    '|' +
11646                    monthsNominative[momentToFormat.month()] +
11647                    ')'
11648                );
11649            } else if (/D MMMM/.test(format)) {
11650                return monthsSubjective[momentToFormat.month()];
11651            } else {
11652                return monthsNominative[momentToFormat.month()];
11653            }
11654        },
11655        monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
11656        weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split(
11657            '_'
11658        ),
11659        weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),
11660        weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
11661        longDateFormat: {
11662            LT: 'HH:mm',
11663            LTS: 'HH:mm:ss',
11664            L: 'DD.MM.YYYY',
11665            LL: 'D MMMM YYYY',
11666            LLL: 'D MMMM YYYY HH:mm',
11667            LLLL: 'dddd, D MMMM YYYY HH:mm',
11668        },
11669        calendar: {
11670            sameDay: '[Dziś o] LT',
11671            nextDay: '[Jutro o] LT',
11672            nextWeek: function () {
11673                switch (this.day()) {
11674                    case 0:
11675                        return '[W niedzielę o] LT';
11676
11677                    case 2:
11678                        return '[We wtorek o] LT';
11679
11680                    case 3:
11681                        return '[W środę o] LT';
11682
11683                    case 6:
11684                        return '[W sobotę o] LT';
11685
11686                    default:
11687                        return '[W] dddd [o] LT';
11688                }
11689            },
11690            lastDay: '[Wczoraj o] LT',
11691            lastWeek: function () {
11692                switch (this.day()) {
11693                    case 0:
11694                        return '[W zeszłą niedzielę o] LT';
11695                    case 3:
11696                        return '[W zeszłą środę o] LT';
11697                    case 6:
11698                        return '[W zeszłą sobotę o] LT';
11699                    default:
11700                        return '[W zeszły] dddd [o] LT';
11701                }
11702            },
11703            sameElse: 'L',
11704        },
11705        relativeTime: {
11706            future: 'za %s',
11707            past: '%s temu',
11708            s: 'kilka sekund',
11709            ss: translate,
11710            m: translate,
11711            mm: translate,
11712            h: translate,
11713            hh: translate,
11714            d: '1 dzień',
11715            dd: '%d dni',
11716            M: 'miesiąc',
11717            MM: translate,
11718            y: 'rok',
11719            yy: translate,
11720        },
11721        dayOfMonthOrdinalParse: /\d{1,2}\./,
11722        ordinal: '%d.',
11723        week: {
11724            dow: 1, // Monday is the first day of the week.
11725            doy: 4, // The week that contains Jan 4th is the first week of the year.
11726        },
11727    });
11728
11729    return pl;
11730
11731})));
11732
11733
11734/***/ }),
11735
vendor: 2,858 bytes, lines 11736-11811
11736/***/ "../../node_modules/moment/locale/pt-br.js":
11737/*!************************************************************************************************************************************!*\
11738  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/pt-br.js ***!
11739  \************************************************************************************************************************************/
11740/*! no static exports found */
11741/***/ (function(module, exports, __webpack_require__) {
11742
11743//! moment.js locale configuration
11744//! locale : Portuguese (Brazil) [pt-br]
11745//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
11746
11747;(function (global, factory) {
11748    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
11749   undefined
11750}(this, (function (moment) { 'use strict';
11751
11752    //! moment.js locale configuration
11753
11754    var ptBr = moment.defineLocale('pt-br', {
11755        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
11756            '_'
11757        ),
11758        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
11759        weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(
11760            '_'
11761        ),
11762        weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),
11763        weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),
11764        weekdaysParseExact: true,
11765        longDateFormat: {
11766            LT: 'HH:mm',
11767            LTS: 'HH:mm:ss',
11768            L: 'DD/MM/YYYY',
11769            LL: 'D [de] MMMM [de] YYYY',
11770            LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',
11771            LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',
11772        },
11773        calendar: {
11774            sameDay: '[Hoje às] LT',
11775            nextDay: '[Amanhã às] LT',
11776            nextWeek: 'dddd [às] LT',
11777            lastDay: '[Ontem às] LT',
11778            lastWeek: function () {
11779                return this.day() === 0 || this.day() === 6
11780                    ? '[Último] dddd [às] LT' // Saturday + Sunday
11781                    : '[Última] dddd [às] LT'; // Monday - Friday
11782            },
11783            sameElse: 'L',
11784        },
11785        relativeTime: {
11786            future: 'em %s',
11787            past: 'há %s',
11788            s: 'poucos segundos',
11789            ss: '%d segundos',
11790            m: 'um minuto',
11791            mm: '%d minutos',
11792            h: 'uma hora',
11793            hh: '%d horas',
11794            d: 'um dia',
11795            dd: '%d dias',
11796            M: 'um mês',
11797            MM: '%d meses',
11798            y: 'um ano',
11799            yy: '%d anos',
11800        },
11801        dayOfMonthOrdinalParse: /\d{1,2}º/,
11802        ordinal: '%dº',
11803    });
11804
11805    return ptBr;
11806
11807})));
11808
11809
11810/***/ }),
11811
vendor: 2,960 bytes, lines 11812-11891
11812/***/ "../../node_modules/moment/locale/pt.js":
11813/*!*********************************************************************************************************************************!*\
11814  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/pt.js ***!
11815  \*********************************************************************************************************************************/
11816/*! no static exports found */
11817/***/ (function(module, exports, __webpack_require__) {
11818
11819//! moment.js locale configuration
11820//! locale : Portuguese [pt]
11821//! author : Jefferson : https://github.com/jalex79
11822
11823;(function (global, factory) {
11824    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
11825   undefined
11826}(this, (function (moment) { 'use strict';
11827
11828    //! moment.js locale configuration
11829
11830    var pt = moment.defineLocale('pt', {
11831        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
11832            '_'
11833        ),
11834        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
11835        weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(
11836            '_'
11837        ),
11838        weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
11839        weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
11840        weekdaysParseExact: true,
11841        longDateFormat: {
11842            LT: 'HH:mm',
11843            LTS: 'HH:mm:ss',
11844            L: 'DD/MM/YYYY',
11845            LL: 'D [de] MMMM [de] YYYY',
11846            LLL: 'D [de] MMMM [de] YYYY HH:mm',
11847            LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',
11848        },
11849        calendar: {
11850            sameDay: '[Hoje às] LT',
11851            nextDay: '[Amanhã às] LT',
11852            nextWeek: 'dddd [às] LT',
11853            lastDay: '[Ontem às] LT',
11854            lastWeek: function () {
11855                return this.day() === 0 || this.day() === 6
11856                    ? '[Último] dddd [às] LT' // Saturday + Sunday
11857                    : '[Última] dddd [às] LT'; // Monday - Friday
11858            },
11859            sameElse: 'L',
11860        },
11861        relativeTime: {
11862            future: 'em %s',
11863            past: 'há %s',
11864            s: 'segundos',
11865            ss: '%d segundos',
11866            m: 'um minuto',
11867            mm: '%d minutos',
11868            h: 'uma hora',
11869            hh: '%d horas',
11870            d: 'um dia',
11871            dd: '%d dias',
11872            M: 'um mês',
11873            MM: '%d meses',
11874            y: 'um ano',
11875            yy: '%d anos',
11876        },
11877        dayOfMonthOrdinalParse: /\d{1,2}º/,
11878        ordinal: '%dº',
11879        week: {
11880            dow: 1, // Monday is the first day of the week.
11881            doy: 4, // The week that contains Jan 4th is the first week of the year.
11882        },
11883    });
11884
11885    return pt;
11886
11887})));
11888
11889
11890/***/ }),
11891
vendor: 3,312 bytes, lines 11892-11983
11892/***/ "../../node_modules/moment/locale/ro.js":
11893/*!*********************************************************************************************************************************!*\
11894  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ro.js ***!
11895  \*********************************************************************************************************************************/
11896/*! no static exports found */
11897/***/ (function(module, exports, __webpack_require__) {
11898
11899//! moment.js locale configuration
11900//! locale : Romanian [ro]
11901//! author : Vlad Gurdiga : https://github.com/gurdiga
11902//! author : Valentin Agachi : https://github.com/avaly
11903//! author : Emanuel Cepoi : https://github.com/cepem
11904
11905;(function (global, factory) {
11906    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
11907   undefined
11908}(this, (function (moment) { 'use strict';
11909
11910    //! moment.js locale configuration
11911
11912    function relativeTimeWithPlural(number, withoutSuffix, key) {
11913        var format = {
11914                ss: 'secunde',
11915                mm: 'minute',
11916                hh: 'ore',
11917                dd: 'zile',
11918                MM: 'luni',
11919                yy: 'ani',
11920            },
11921            separator = ' ';
11922        if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
11923            separator = ' de ';
11924        }
11925        return number + separator + format[key];
11926    }
11927
11928    var ro = moment.defineLocale('ro', {
11929        months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(
11930            '_'
11931        ),
11932        monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(
11933            '_'
11934        ),
11935        monthsParseExact: true,
11936        weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
11937        weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
11938        weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
11939        longDateFormat: {
11940            LT: 'H:mm',
11941            LTS: 'H:mm:ss',
11942            L: 'DD.MM.YYYY',
11943            LL: 'D MMMM YYYY',
11944            LLL: 'D MMMM YYYY H:mm',
11945            LLLL: 'dddd, D MMMM YYYY H:mm',
11946        },
11947        calendar: {
11948            sameDay: '[azi la] LT',
11949            nextDay: '[mâine la] LT',
11950            nextWeek: 'dddd [la] LT',
11951            lastDay: '[ieri la] LT',
11952            lastWeek: '[fosta] dddd [la] LT',
11953            sameElse: 'L',
11954        },
11955        relativeTime: {
11956            future: 'peste %s',
11957            past: '%s în urmă',
11958            s: 'câteva secunde',
11959            ss: relativeTimeWithPlural,
11960            m: 'un minut',
11961            mm: relativeTimeWithPlural,
11962            h: 'o oră',
11963            hh: relativeTimeWithPlural,
11964            d: 'o zi',
11965            dd: relativeTimeWithPlural,
11966            M: 'o lună',
11967            MM: relativeTimeWithPlural,
11968            y: 'un an',
11969            yy: relativeTimeWithPlural,
11970        },
11971        week: {
11972            dow: 1, // Monday is the first day of the week.
11973            doy: 7, // The week that contains Jan 7th is the first week of the year.
11974        },
11975    });
11976
11977    return ro;
11978
11979})));
11980
11981
11982/***/ }),
11983
vendor: 9,955 bytes, lines 11984-12206
11984/***/ "../../node_modules/moment/locale/ru.js":
11985/*!*********************************************************************************************************************************!*\
11986  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ru.js ***!
11987  \*********************************************************************************************************************************/
11988/*! no static exports found */
11989/***/ (function(module, exports, __webpack_require__) {
11990
11991//! moment.js locale configuration
11992//! locale : Russian [ru]
11993//! author : Viktorminator : https://github.com/Viktorminator
11994//! author : Menelion Elensúle : https://github.com/Oire
11995//! author : Коренберг Марк : https://github.com/socketpair
11996
11997;(function (global, factory) {
11998    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
11999   undefined
12000}(this, (function (moment) { 'use strict';
12001
12002    //! moment.js locale configuration
12003
12004    function plural(word, num) {
12005        var forms = word.split('_');
12006        return num % 10 === 1 && num % 100 !== 11
12007            ? forms[0]
12008            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
12009            ? forms[1]
12010            : forms[2];
12011    }
12012    function relativeTimeWithPlural(number, withoutSuffix, key) {
12013        var format = {
12014            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
12015            mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
12016            hh: 'час_часа_часов',
12017            dd: 'день_дня_дней',
12018            MM: 'месяц_месяца_месяцев',
12019            yy: 'год_года_лет',
12020        };
12021        if (key === 'm') {
12022            return withoutSuffix ? 'минута' : 'минуту';
12023        } else {
12024            return number + ' ' + plural(format[key], +number);
12025        }
12026    }
12027    var monthsParse = [
12028        /^янв/i,
12029        /^фев/i,
12030        /^мар/i,
12031        /^апр/i,
12032        /^ма[йя]/i,
12033        /^июн/i,
12034        /^июл/i,
12035        /^авг/i,
12036        /^сен/i,
12037        /^окт/i,
12038        /^ноя/i,
12039        /^дек/i,
12040    ];
12041
12042    // http://new.gramota.ru/spravka/rules/139-prop : § 103
12043    // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637
12044    // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753
12045    var ru = moment.defineLocale('ru', {
12046        months: {
12047            format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(
12048                '_'
12049            ),
12050            standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
12051                '_'
12052            ),
12053        },
12054        monthsShort: {
12055            // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку?
12056            format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(
12057                '_'
12058            ),
12059            standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(
12060                '_'
12061            ),
12062        },
12063        weekdays: {
12064            standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(
12065                '_'
12066            ),
12067            format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(
12068                '_'
12069            ),
12070            isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,
12071        },
12072        weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
12073        weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
12074        monthsParse: monthsParse,
12075        longMonthsParse: monthsParse,
12076        shortMonthsParse: monthsParse,
12077
12078        // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки
12079        monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
12080
12081        // копия предыдущего
12082        monthsShortRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
12083
12084        // полные названия с падежами
12085        monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,
12086
12087        // Выражение, которое соответствует только сокращённым формам
12088        monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,
12089        longDateFormat: {
12090            LT: 'H:mm',
12091            LTS: 'H:mm:ss',
12092            L: 'DD.MM.YYYY',
12093            LL: 'D MMMM YYYY г.',
12094            LLL: 'D MMMM YYYY г., H:mm',
12095            LLLL: 'dddd, D MMMM YYYY г., H:mm',
12096        },
12097        calendar: {
12098            sameDay: '[Сегодня, в] LT',
12099            nextDay: '[Завтра, в] LT',
12100            lastDay: '[Вчера, в] LT',
12101            nextWeek: function (now) {
12102                if (now.week() !== this.week()) {
12103                    switch (this.day()) {
12104                        case 0:
12105                            return '[В следующее] dddd, [в] LT';
12106                        case 1:
12107                        case 2:
12108                        case 4:
12109                            return '[В следующий] dddd, [в] LT';
12110                        case 3:
12111                        case 5:
12112                        case 6:
12113                            return '[В следующую] dddd, [в] LT';
12114                    }
12115                } else {
12116                    if (this.day() === 2) {
12117                        return '[Во] dddd, [в] LT';
12118                    } else {
12119                        return '[В] dddd, [в] LT';
12120                    }
12121                }
12122            },
12123            lastWeek: function (now) {
12124                if (now.week() !== this.week()) {
12125                    switch (this.day()) {
12126                        case 0:
12127                            return '[В прошлое] dddd, [в] LT';
12128                        case 1:
12129                        case 2:
12130                        case 4:
12131                            return '[В прошлый] dddd, [в] LT';
12132                        case 3:
12133                        case 5:
12134                        case 6:
12135                            return '[В прошлую] dddd, [в] LT';
12136                    }
12137                } else {
12138                    if (this.day() === 2) {
12139                        return '[Во] dddd, [в] LT';
12140                    } else {
12141                        return '[В] dddd, [в] LT';
12142                    }
12143                }
12144            },
12145            sameElse: 'L',
12146        },
12147        relativeTime: {
12148            future: 'через %s',
12149            past: '%s назад',
12150            s: 'несколько секунд',
12151            ss: relativeTimeWithPlural,
12152            m: relativeTimeWithPlural,
12153            mm: relativeTimeWithPlural,
12154            h: 'час',
12155            hh: relativeTimeWithPlural,
12156            d: 'день',
12157            dd: relativeTimeWithPlural,
12158            M: 'месяц',
12159            MM: relativeTimeWithPlural,
12160            y: 'год',
12161            yy: relativeTimeWithPlural,
12162        },
12163        meridiemParse: /ночи|утра|дня|вечера/i,
12164        isPM: function (input) {
12165            return /^(дня|вечера)$/.test(input);
12166        },
12167        meridiem: function (hour, minute, isLower) {
12168            if (hour < 4) {
12169                return 'ночи';
12170            } else if (hour < 12) {
12171                return 'утра';
12172            } else if (hour < 17) {
12173                return 'дня';
12174            } else {
12175                return 'вечера';
12176            }
12177        },
12178        dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/,
12179        ordinal: function (number, period) {
12180            switch (period) {
12181                case 'M':
12182                case 'd':
12183                case 'DDD':
12184                    return number + '-й';
12185                case 'D':
12186                    return number + '-го';
12187                case 'w':
12188                case 'W':
12189                    return number + '-я';
12190                default:
12191                    return number;
12192            }
12193        },
12194        week: {
12195            dow: 1, // Monday is the first day of the week.
12196            doy: 4, // The week that contains Jan 4th is the first week of the year.
12197        },
12198    });
12199
12200    return ru;
12201
12202})));
12203
12204
12205/***/ }),
12206
vendor: 3,313 bytes, lines 12207-12307
12207/***/ "../../node_modules/moment/locale/sd.js":
12208/*!*********************************************************************************************************************************!*\
12209  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/sd.js ***!
12210  \*********************************************************************************************************************************/
12211/*! no static exports found */
12212/***/ (function(module, exports, __webpack_require__) {
12213
12214//! moment.js locale configuration
12215//! locale : Sindhi [sd]
12216//! author : Narain Sagar : https://github.com/narainsagar
12217
12218;(function (global, factory) {
12219    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
12220   undefined
12221}(this, (function (moment) { 'use strict';
12222
12223    //! moment.js locale configuration
12224
12225    var months = [
12226            'جنوري',
12227            'فيبروري',
12228            'مارچ',
12229            'اپريل',
12230            'مئي',
12231            'جون',
12232            'جولاءِ',
12233            'آگسٽ',
12234            'سيپٽمبر',
12235            'آڪٽوبر',
12236            'نومبر',
12237            'ڊسمبر',
12238        ],
12239        days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];
12240
12241    var sd = moment.defineLocale('sd', {
12242        months: months,
12243        monthsShort: months,
12244        weekdays: days,
12245        weekdaysShort: days,
12246        weekdaysMin: days,
12247        longDateFormat: {
12248            LT: 'HH:mm',
12249            LTS: 'HH:mm:ss',
12250            L: 'DD/MM/YYYY',
12251            LL: 'D MMMM YYYY',
12252            LLL: 'D MMMM YYYY HH:mm',
12253            LLLL: 'dddd، D MMMM YYYY HH:mm',
12254        },
12255        meridiemParse: /صبح|شام/,
12256        isPM: function (input) {
12257            return 'شام' === input;
12258        },
12259        meridiem: function (hour, minute, isLower) {
12260            if (hour < 12) {
12261                return 'صبح';
12262            }
12263            return 'شام';
12264        },
12265        calendar: {
12266            sameDay: '[اڄ] LT',
12267            nextDay: '[سڀاڻي] LT',
12268            nextWeek: 'dddd [اڳين هفتي تي] LT',
12269            lastDay: '[ڪالهه] LT',
12270            lastWeek: '[گزريل هفتي] dddd [تي] LT',
12271            sameElse: 'L',
12272        },
12273        relativeTime: {
12274            future: '%s پوء',
12275            past: '%s اڳ',
12276            s: 'چند سيڪنڊ',
12277            ss: '%d سيڪنڊ',
12278            m: 'هڪ منٽ',
12279            mm: '%d منٽ',
12280            h: 'هڪ ڪلاڪ',
12281            hh: '%d ڪلاڪ',
12282            d: 'هڪ ڏينهن',
12283            dd: '%d ڏينهن',
12284            M: 'هڪ مهينو',
12285            MM: '%d مهينا',
12286            y: 'هڪ سال',
12287            yy: '%d سال',
12288        },
12289        preparse: function (string) {
12290            return string.replace(/،/g, ',');
12291        },
12292        postformat: function (string) {
12293            return string.replace(/,/g, '،');
12294        },
12295        week: {
12296            dow: 1, // Monday is the first day of the week.
12297            doy: 4, // The week that contains Jan 4th is the first week of the year.
12298        },
12299    });
12300
12301    return sd;
12302
12303})));
12304
12305
12306/***/ }),
12307
vendor: 2,883 bytes, lines 12308-12384
12308/***/ "../../node_modules/moment/locale/se.js":
12309/*!*********************************************************************************************************************************!*\
12310  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/se.js ***!
12311  \*********************************************************************************************************************************/
12312/*! no static exports found */
12313/***/ (function(module, exports, __webpack_require__) {
12314
12315//! moment.js locale configuration
12316//! locale : Northern Sami [se]
12317//! authors : BÃ¥rd Rolstad Henriksen : https://github.com/karamell
12318
12319;(function (global, factory) {
12320    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
12321   undefined
12322}(this, (function (moment) { 'use strict';
12323
12324    //! moment.js locale configuration
12325
12326    var se = moment.defineLocale('se', {
12327        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(
12328            '_'
12329        ),
12330        monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split(
12331            '_'
12332        ),
12333        weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(
12334            '_'
12335        ),
12336        weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),
12337        weekdaysMin: 's_v_m_g_d_b_L'.split('_'),
12338        longDateFormat: {
12339            LT: 'HH:mm',
12340            LTS: 'HH:mm:ss',
12341            L: 'DD.MM.YYYY',
12342            LL: 'MMMM D. [b.] YYYY',
12343            LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',
12344            LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',
12345        },
12346        calendar: {
12347            sameDay: '[otne ti] LT',
12348            nextDay: '[ihttin ti] LT',
12349            nextWeek: 'dddd [ti] LT',
12350            lastDay: '[ikte ti] LT',
12351            lastWeek: '[ovddit] dddd [ti] LT',
12352            sameElse: 'L',
12353        },
12354        relativeTime: {
12355            future: '%s geažes',
12356            past: 'maŋit %s',
12357            s: 'moadde sekunddat',
12358            ss: '%d sekunddat',
12359            m: 'okta minuhta',
12360            mm: '%d minuhtat',
12361            h: 'okta diimmu',
12362            hh: '%d diimmut',
12363            d: 'okta beaivi',
12364            dd: '%d beaivvit',
12365            M: 'okta mánnu',
12366            MM: '%d mánut',
12367            y: 'okta jahki',
12368            yy: '%d jagit',
12369        },
12370        dayOfMonthOrdinalParse: /\d{1,2}\./,
12371        ordinal: '%d.',
12372        week: {
12373            dow: 1, // Monday is the first day of the week.
12374            doy: 4, // The week that contains Jan 4th is the first week of the year.
12375        },
12376    });
12377
12378    return se;
12379
12380})));
12381
12382
12383/***/ }),
12384
vendor: 3,764 bytes, lines 12385-12472
12385/***/ "../../node_modules/moment/locale/si.js":
12386/*!*********************************************************************************************************************************!*\
12387  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/si.js ***!
12388  \*********************************************************************************************************************************/
12389/*! no static exports found */
12390/***/ (function(module, exports, __webpack_require__) {
12391
12392//! moment.js locale configuration
12393//! locale : Sinhalese [si]
12394//! author : Sampath Sitinamaluwa : https://github.com/sampathsris
12395
12396;(function (global, factory) {
12397    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
12398   undefined
12399}(this, (function (moment) { 'use strict';
12400
12401    //! moment.js locale configuration
12402
12403    /*jshint -W100*/
12404    var si = moment.defineLocale('si', {
12405        months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(
12406            '_'
12407        ),
12408        monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(
12409            '_'
12410        ),
12411        weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(
12412            '_'
12413        ),
12414        weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),
12415        weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),
12416        weekdaysParseExact: true,
12417        longDateFormat: {
12418            LT: 'a h:mm',
12419            LTS: 'a h:mm:ss',
12420            L: 'YYYY/MM/DD',
12421            LL: 'YYYY MMMM D',
12422            LLL: 'YYYY MMMM D, a h:mm',
12423            LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',
12424        },
12425        calendar: {
12426            sameDay: '[අද] LT[ට]',
12427            nextDay: '[හෙට] LT[ට]',
12428            nextWeek: 'dddd LT[à¶§]',
12429            lastDay: '[ඊයේ] LT[ට]',
12430            lastWeek: '[පසුගිය] dddd LT[ට]',
12431            sameElse: 'L',
12432        },
12433        relativeTime: {
12434            future: '%sකින්',
12435            past: '%sකට පෙර',
12436            s: 'තත්පර කිහිපය',
12437            ss: 'තත්පර %d',
12438            m: 'මිනිත්තුව',
12439            mm: 'මිනිත්තු %d',
12440            h: 'පැය',
12441            hh: 'පැය %d',
12442            d: 'දිනය',
12443            dd: 'දින %d',
12444            M: 'මාසය',
12445            MM: 'මාස %d',
12446            y: 'වසර',
12447            yy: 'වසර %d',
12448        },
12449        dayOfMonthOrdinalParse: /\d{1,2} වැනි/,
12450        ordinal: function (number) {
12451            return number + ' වැනි';
12452        },
12453        meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,
12454        isPM: function (input) {
12455            return input === 'ප.ව.' || input === 'පස් වරු';
12456        },
12457        meridiem: function (hours, minutes, isLower) {
12458            if (hours > 11) {
12459                return isLower ? 'ප.ව.' : 'පස් වරු';
12460            } else {
12461                return isLower ? 'පෙ.ව.' : 'පෙර වරු';
12462            }
12463        },
12464    });
12465
12466    return si;
12467
12468})));
12469
12470
12471/***/ }),
12472
vendor: 6,628 bytes, lines 12473-12636
12473/***/ "../../node_modules/moment/locale/sk.js":
12474/*!*********************************************************************************************************************************!*\
12475  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/sk.js ***!
12476  \*********************************************************************************************************************************/
12477/*! no static exports found */
12478/***/ (function(module, exports, __webpack_require__) {
12479
12480//! moment.js locale configuration
12481//! locale : Slovak [sk]
12482//! author : Martin Minka : https://github.com/k2s
12483//! based on work of petrbela : https://github.com/petrbela
12484
12485;(function (global, factory) {
12486    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
12487   undefined
12488}(this, (function (moment) { 'use strict';
12489
12490    //! moment.js locale configuration
12491
12492    var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(
12493            '_'
12494        ),
12495        monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');
12496    function plural(n) {
12497        return n > 1 && n < 5;
12498    }
12499    function translate(number, withoutSuffix, key, isFuture) {
12500        var result = number + ' ';
12501        switch (key) {
12502            case 's': // a few seconds / in a few seconds / a few seconds ago
12503                return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';
12504            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
12505                if (withoutSuffix || isFuture) {
12506                    return result + (plural(number) ? 'sekundy' : 'sekúnd');
12507                } else {
12508                    return result + 'sekundami';
12509                }
12510            case 'm': // a minute / in a minute / a minute ago
12511                return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';
12512            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
12513                if (withoutSuffix || isFuture) {
12514                    return result + (plural(number) ? 'minúty' : 'minút');
12515                } else {
12516                    return result + 'minútami';
12517                }
12518            case 'h': // an hour / in an hour / an hour ago
12519                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
12520            case 'hh': // 9 hours / in 9 hours / 9 hours ago
12521                if (withoutSuffix || isFuture) {
12522                    return result + (plural(number) ? 'hodiny' : 'hodín');
12523                } else {
12524                    return result + 'hodinami';
12525                }
12526            case 'd': // a day / in a day / a day ago
12527                return withoutSuffix || isFuture ? 'deň' : 'dňom';
12528            case 'dd': // 9 days / in 9 days / 9 days ago
12529                if (withoutSuffix || isFuture) {
12530                    return result + (plural(number) ? 'dni' : 'dní');
12531                } else {
12532                    return result + 'dňami';
12533                }
12534            case 'M': // a month / in a month / a month ago
12535                return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';
12536            case 'MM': // 9 months / in 9 months / 9 months ago
12537                if (withoutSuffix || isFuture) {
12538                    return result + (plural(number) ? 'mesiace' : 'mesiacov');
12539                } else {
12540                    return result + 'mesiacmi';
12541                }
12542            case 'y': // a year / in a year / a year ago
12543                return withoutSuffix || isFuture ? 'rok' : 'rokom';
12544            case 'yy': // 9 years / in 9 years / 9 years ago
12545                if (withoutSuffix || isFuture) {
12546                    return result + (plural(number) ? 'roky' : 'rokov');
12547                } else {
12548                    return result + 'rokmi';
12549                }
12550        }
12551    }
12552
12553    var sk = moment.defineLocale('sk', {
12554        months: months,
12555        monthsShort: monthsShort,
12556        weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
12557        weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),
12558        weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),
12559        longDateFormat: {
12560            LT: 'H:mm',
12561            LTS: 'H:mm:ss',
12562            L: 'DD.MM.YYYY',
12563            LL: 'D. MMMM YYYY',
12564            LLL: 'D. MMMM YYYY H:mm',
12565            LLLL: 'dddd D. MMMM YYYY H:mm',
12566        },
12567        calendar: {
12568            sameDay: '[dnes o] LT',
12569            nextDay: '[zajtra o] LT',
12570            nextWeek: function () {
12571                switch (this.day()) {
12572                    case 0:
12573                        return '[v nedeľu o] LT';
12574                    case 1:
12575                    case 2:
12576                        return '[v] dddd [o] LT';
12577                    case 3:
12578                        return '[v stredu o] LT';
12579                    case 4:
12580                        return '[vo štvrtok o] LT';
12581                    case 5:
12582                        return '[v piatok o] LT';
12583                    case 6:
12584                        return '[v sobotu o] LT';
12585                }
12586            },
12587            lastDay: '[včera o] LT',
12588            lastWeek: function () {
12589                switch (this.day()) {
12590                    case 0:
12591                        return '[minulú nedeľu o] LT';
12592                    case 1:
12593                    case 2:
12594                        return '[minulý] dddd [o] LT';
12595                    case 3:
12596                        return '[minulú stredu o] LT';
12597                    case 4:
12598                    case 5:
12599                        return '[minulý] dddd [o] LT';
12600                    case 6:
12601                        return '[minulú sobotu o] LT';
12602                }
12603            },
12604            sameElse: 'L',
12605        },
12606        relativeTime: {
12607            future: 'za %s',
12608            past: 'pred %s',
12609            s: translate,
12610            ss: translate,
12611            m: translate,
12612            mm: translate,
12613            h: translate,
12614            hh: translate,
12615            d: translate,
12616            dd: translate,
12617            M: translate,
12618            MM: translate,
12619            y: translate,
12620            yy: translate,
12621        },
12622        dayOfMonthOrdinalParse: /\d{1,2}\./,
12623        ordinal: '%d.',
12624        week: {
12625            dow: 1, // Monday is the first day of the week.
12626            doy: 4, // The week that contains Jan 4th is the first week of the year.
12627        },
12628    });
12629
12630    return sk;
12631
12632})));
12633
12634
12635/***/ }),
12636
vendor: 7,700 bytes, lines 12637-12826
12637/***/ "../../node_modules/moment/locale/sl.js":
12638/*!*********************************************************************************************************************************!*\
12639  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/sl.js ***!
12640  \*********************************************************************************************************************************/
12641/*! no static exports found */
12642/***/ (function(module, exports, __webpack_require__) {
12643
12644//! moment.js locale configuration
12645//! locale : Slovenian [sl]
12646//! author : Robert Sedovšek : https://github.com/sedovsek
12647
12648;(function (global, factory) {
12649    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
12650   undefined
12651}(this, (function (moment) { 'use strict';
12652
12653    //! moment.js locale configuration
12654
12655    function processRelativeTime(number, withoutSuffix, key, isFuture) {
12656        var result = number + ' ';
12657        switch (key) {
12658            case 's':
12659                return withoutSuffix || isFuture
12660                    ? 'nekaj sekund'
12661                    : 'nekaj sekundami';
12662            case 'ss':
12663                if (number === 1) {
12664                    result += withoutSuffix ? 'sekundo' : 'sekundi';
12665                } else if (number === 2) {
12666                    result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';
12667                } else if (number < 5) {
12668                    result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';
12669                } else {
12670                    result += 'sekund';
12671                }
12672                return result;
12673            case 'm':
12674                return withoutSuffix ? 'ena minuta' : 'eno minuto';
12675            case 'mm':
12676                if (number === 1) {
12677                    result += withoutSuffix ? 'minuta' : 'minuto';
12678                } else if (number === 2) {
12679                    result += withoutSuffix || isFuture ? 'minuti' : 'minutama';
12680                } else if (number < 5) {
12681                    result += withoutSuffix || isFuture ? 'minute' : 'minutami';
12682                } else {
12683                    result += withoutSuffix || isFuture ? 'minut' : 'minutami';
12684                }
12685                return result;
12686            case 'h':
12687                return withoutSuffix ? 'ena ura' : 'eno uro';
12688            case 'hh':
12689                if (number === 1) {
12690                    result += withoutSuffix ? 'ura' : 'uro';
12691                } else if (number === 2) {
12692                    result += withoutSuffix || isFuture ? 'uri' : 'urama';
12693                } else if (number < 5) {
12694                    result += withoutSuffix || isFuture ? 'ure' : 'urami';
12695                } else {
12696                    result += withoutSuffix || isFuture ? 'ur' : 'urami';
12697                }
12698                return result;
12699            case 'd':
12700                return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';
12701            case 'dd':
12702                if (number === 1) {
12703                    result += withoutSuffix || isFuture ? 'dan' : 'dnem';
12704                } else if (number === 2) {
12705                    result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';
12706                } else {
12707                    result += withoutSuffix || isFuture ? 'dni' : 'dnevi';
12708                }
12709                return result;
12710            case 'M':
12711                return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';
12712            case 'MM':
12713                if (number === 1) {
12714                    result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';
12715                } else if (number === 2) {
12716                    result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';
12717                } else if (number < 5) {
12718                    result += withoutSuffix || isFuture ? 'mesece' : 'meseci';
12719                } else {
12720                    result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';
12721                }
12722                return result;
12723            case 'y':
12724                return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';
12725            case 'yy':
12726                if (number === 1) {
12727                    result += withoutSuffix || isFuture ? 'leto' : 'letom';
12728                } else if (number === 2) {
12729                    result += withoutSuffix || isFuture ? 'leti' : 'letoma';
12730                } else if (number < 5) {
12731                    result += withoutSuffix || isFuture ? 'leta' : 'leti';
12732                } else {
12733                    result += withoutSuffix || isFuture ? 'let' : 'leti';
12734                }
12735                return result;
12736        }
12737    }
12738
12739    var sl = moment.defineLocale('sl', {
12740        months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(
12741            '_'
12742        ),
12743        monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(
12744            '_'
12745        ),
12746        monthsParseExact: true,
12747        weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
12748        weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
12749        weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),
12750        weekdaysParseExact: true,
12751        longDateFormat: {
12752            LT: 'H:mm',
12753            LTS: 'H:mm:ss',
12754            L: 'DD. MM. YYYY',
12755            LL: 'D. MMMM YYYY',
12756            LLL: 'D. MMMM YYYY H:mm',
12757            LLLL: 'dddd, D. MMMM YYYY H:mm',
12758        },
12759        calendar: {
12760            sameDay: '[danes ob] LT',
12761            nextDay: '[jutri ob] LT',
12762
12763            nextWeek: function () {
12764                switch (this.day()) {
12765                    case 0:
12766                        return '[v] [nedeljo] [ob] LT';
12767                    case 3:
12768                        return '[v] [sredo] [ob] LT';
12769                    case 6:
12770                        return '[v] [soboto] [ob] LT';
12771                    case 1:
12772                    case 2:
12773                    case 4:
12774                    case 5:
12775                        return '[v] dddd [ob] LT';
12776                }
12777            },
12778            lastDay: '[včeraj ob] LT',
12779            lastWeek: function () {
12780                switch (this.day()) {
12781                    case 0:
12782                        return '[prejšnjo] [nedeljo] [ob] LT';
12783                    case 3:
12784                        return '[prejšnjo] [sredo] [ob] LT';
12785                    case 6:
12786                        return '[prejšnjo] [soboto] [ob] LT';
12787                    case 1:
12788                    case 2:
12789                    case 4:
12790                    case 5:
12791                        return '[prejšnji] dddd [ob] LT';
12792                }
12793            },
12794            sameElse: 'L',
12795        },
12796        relativeTime: {
12797            future: 'čez %s',
12798            past: 'pred %s',
12799            s: processRelativeTime,
12800            ss: processRelativeTime,
12801            m: processRelativeTime,
12802            mm: processRelativeTime,
12803            h: processRelativeTime,
12804            hh: processRelativeTime,
12805            d: processRelativeTime,
12806            dd: processRelativeTime,
12807            M: processRelativeTime,
12808            MM: processRelativeTime,
12809            y: processRelativeTime,
12810            yy: processRelativeTime,
12811        },
12812        dayOfMonthOrdinalParse: /\d{1,2}\./,
12813        ordinal: '%d.',
12814        week: {
12815            dow: 1, // Monday is the first day of the week.
12816            doy: 7, // The week that contains Jan 7th is the first week of the year.
12817        },
12818    });
12819
12820    return sl;
12821
12822})));
12823
12824
12825/***/ }),
12826
vendor: 3,063 bytes, lines 12827-12911
12827/***/ "../../node_modules/moment/locale/sq.js":
12828/*!*********************************************************************************************************************************!*\
12829  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/sq.js ***!
12830  \*********************************************************************************************************************************/
12831/*! no static exports found */
12832/***/ (function(module, exports, __webpack_require__) {
12833
12834//! moment.js locale configuration
12835//! locale : Albanian [sq]
12836//! author : Flakërim Ismani : https://github.com/flakerimi
12837//! author : Menelion Elensúle : https://github.com/Oire
12838//! author : Oerd Cukalla : https://github.com/oerd
12839
12840;(function (global, factory) {
12841    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
12842   undefined
12843}(this, (function (moment) { 'use strict';
12844
12845    //! moment.js locale configuration
12846
12847    var sq = moment.defineLocale('sq', {
12848        months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(
12849            '_'
12850        ),
12851        monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
12852        weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(
12853            '_'
12854        ),
12855        weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
12856        weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),
12857        weekdaysParseExact: true,
12858        meridiemParse: /PD|MD/,
12859        isPM: function (input) {
12860            return input.charAt(0) === 'M';
12861        },
12862        meridiem: function (hours, minutes, isLower) {
12863            return hours < 12 ? 'PD' : 'MD';
12864        },
12865        longDateFormat: {
12866            LT: 'HH:mm',
12867            LTS: 'HH:mm:ss',
12868            L: 'DD/MM/YYYY',
12869            LL: 'D MMMM YYYY',
12870            LLL: 'D MMMM YYYY HH:mm',
12871            LLLL: 'dddd, D MMMM YYYY HH:mm',
12872        },
12873        calendar: {
12874            sameDay: '[Sot në] LT',
12875            nextDay: '[Nesër në] LT',
12876            nextWeek: 'dddd [në] LT',
12877            lastDay: '[Dje në] LT',
12878            lastWeek: 'dddd [e kaluar në] LT',
12879            sameElse: 'L',
12880        },
12881        relativeTime: {
12882            future: 'në %s',
12883            past: '%s më parë',
12884            s: 'disa sekonda',
12885            ss: '%d sekonda',
12886            m: 'një minutë',
12887            mm: '%d minuta',
12888            h: 'një orë',
12889            hh: '%d orë',
12890            d: 'një ditë',
12891            dd: '%d ditë',
12892            M: 'një muaj',
12893            MM: '%d muaj',
12894            y: 'një vit',
12895            yy: '%d vite',
12896        },
12897        dayOfMonthOrdinalParse: /\d{1,2}\./,
12898        ordinal: '%d.',
12899        week: {
12900            dow: 1, // Monday is the first day of the week.
12901            doy: 4, // The week that contains Jan 4th is the first week of the year.
12902        },
12903    });
12904
12905    return sq;
12906
12907})));
12908
12909
12910/***/ }),
12911
vendor: 5,486 bytes, lines 12912-13046
12912/***/ "../../node_modules/moment/locale/sr-cyrl.js":
12913/*!**************************************************************************************************************************************!*\
12914  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/sr-cyrl.js ***!
12915  \**************************************************************************************************************************************/
12916/*! no static exports found */
12917/***/ (function(module, exports, __webpack_require__) {
12918
12919//! moment.js locale configuration
12920//! locale : Serbian Cyrillic [sr-cyrl]
12921//! author : Milan Janačković<[email protected]> : https://github.com/milan-j
12922
12923;(function (global, factory) {
12924    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
12925   undefined
12926}(this, (function (moment) { 'use strict';
12927
12928    //! moment.js locale configuration
12929
12930    var translator = {
12931        words: {
12932            //Different grammatical cases
12933            ss: ['секунда', 'секунде', 'секунди'],
12934            m: ['један минут', 'једне минуте'],
12935            mm: ['минут', 'минуте', 'минута'],
12936            h: ['један сат', 'једног сата'],
12937            hh: ['сат', 'сата', 'сати'],
12938            dd: ['дан', 'дана', 'дана'],
12939            MM: ['месец', 'месеца', 'месеци'],
12940            yy: ['година', 'године', 'година'],
12941        },
12942        correctGrammaticalCase: function (number, wordKey) {
12943            return number === 1
12944                ? wordKey[0]
12945                : number >= 2 && number <= 4
12946                ? wordKey[1]
12947                : wordKey[2];
12948        },
12949        translate: function (number, withoutSuffix, key) {
12950            var wordKey = translator.words[key];
12951            if (key.length === 1) {
12952                return withoutSuffix ? wordKey[0] : wordKey[1];
12953            } else {
12954                return (
12955                    number +
12956                    ' ' +
12957                    translator.correctGrammaticalCase(number, wordKey)
12958                );
12959            }
12960        },
12961    };
12962
12963    var srCyrl = moment.defineLocale('sr-cyrl', {
12964        months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(
12965            '_'
12966        ),
12967        monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split(
12968            '_'
12969        ),
12970        monthsParseExact: true,
12971        weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),
12972        weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),
12973        weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),
12974        weekdaysParseExact: true,
12975        longDateFormat: {
12976            LT: 'H:mm',
12977            LTS: 'H:mm:ss',
12978            L: 'DD.MM.YYYY',
12979            LL: 'D. MMMM YYYY',
12980            LLL: 'D. MMMM YYYY H:mm',
12981            LLLL: 'dddd, D. MMMM YYYY H:mm',
12982        },
12983        calendar: {
12984            sameDay: '[данас у] LT',
12985            nextDay: '[сутра у] LT',
12986            nextWeek: function () {
12987                switch (this.day()) {
12988                    case 0:
12989                        return '[у] [недељу] [у] LT';
12990                    case 3:
12991                        return '[у] [среду] [у] LT';
12992                    case 6:
12993                        return '[у] [суботу] [у] LT';
12994                    case 1:
12995                    case 2:
12996                    case 4:
12997                    case 5:
12998                        return '[у] dddd [у] LT';
12999                }
13000            },
13001            lastDay: '[јуче у] LT',
13002            lastWeek: function () {
13003                var lastWeekDays = [
13004                    '[прошле] [недеље] [у] LT',
13005                    '[прошлог] [понедељка] [у] LT',
13006                    '[прошлог] [уторка] [у] LT',
13007                    '[прошле] [среде] [у] LT',
13008                    '[прошлог] [четвртка] [у] LT',
13009                    '[прошлог] [петка] [у] LT',
13010                    '[прошле] [суботе] [у] LT',
13011                ];
13012                return lastWeekDays[this.day()];
13013            },
13014            sameElse: 'L',
13015        },
13016        relativeTime: {
13017            future: 'за %s',
13018            past: 'пре %s',
13019            s: 'неколико секунди',
13020            ss: translator.translate,
13021            m: translator.translate,
13022            mm: translator.translate,
13023            h: translator.translate,
13024            hh: translator.translate,
13025            d: 'дан',
13026            dd: translator.translate,
13027            M: 'месец',
13028            MM: translator.translate,
13029            y: 'годину',
13030            yy: translator.translate,
13031        },
13032        dayOfMonthOrdinalParse: /\d{1,2}\./,
13033        ordinal: '%d.',
13034        week: {
13035            dow: 1, // Monday is the first day of the week.
13036            doy: 7, // The week that contains Jan 7th is the first week of the year.
13037        },
13038    });
13039
13040    return srCyrl;
13041
13042})));
13043
13044
13045/***/ }),
13046
vendor: 4,987 bytes, lines 13047-13183
13047/***/ "../../node_modules/moment/locale/sr.js":
13048/*!*********************************************************************************************************************************!*\
13049  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/sr.js ***!
13050  \*********************************************************************************************************************************/
13051/*! no static exports found */
13052/***/ (function(module, exports, __webpack_require__) {
13053
13054//! moment.js locale configuration
13055//! locale : Serbian [sr]
13056//! author : Milan Janačković<[email protected]> : https://github.com/milan-j
13057
13058;(function (global, factory) {
13059    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
13060   undefined
13061}(this, (function (moment) { 'use strict';
13062
13063    //! moment.js locale configuration
13064
13065    var translator = {
13066        words: {
13067            //Different grammatical cases
13068            ss: ['sekunda', 'sekunde', 'sekundi'],
13069            m: ['jedan minut', 'jedne minute'],
13070            mm: ['minut', 'minute', 'minuta'],
13071            h: ['jedan sat', 'jednog sata'],
13072            hh: ['sat', 'sata', 'sati'],
13073            dd: ['dan', 'dana', 'dana'],
13074            MM: ['mesec', 'meseca', 'meseci'],
13075            yy: ['godina', 'godine', 'godina'],
13076        },
13077        correctGrammaticalCase: function (number, wordKey) {
13078            return number === 1
13079                ? wordKey[0]
13080                : number >= 2 && number <= 4
13081                ? wordKey[1]
13082                : wordKey[2];
13083        },
13084        translate: function (number, withoutSuffix, key) {
13085            var wordKey = translator.words[key];
13086            if (key.length === 1) {
13087                return withoutSuffix ? wordKey[0] : wordKey[1];
13088            } else {
13089                return (
13090                    number +
13091                    ' ' +
13092                    translator.correctGrammaticalCase(number, wordKey)
13093                );
13094            }
13095        },
13096    };
13097
13098    var sr = moment.defineLocale('sr', {
13099        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
13100            '_'
13101        ),
13102        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(
13103            '_'
13104        ),
13105        monthsParseExact: true,
13106        weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(
13107            '_'
13108        ),
13109        weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),
13110        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
13111        weekdaysParseExact: true,
13112        longDateFormat: {
13113            LT: 'H:mm',
13114            LTS: 'H:mm:ss',
13115            L: 'DD.MM.YYYY',
13116            LL: 'D. MMMM YYYY',
13117            LLL: 'D. MMMM YYYY H:mm',
13118            LLLL: 'dddd, D. MMMM YYYY H:mm',
13119        },
13120        calendar: {
13121            sameDay: '[danas u] LT',
13122            nextDay: '[sutra u] LT',
13123            nextWeek: function () {
13124                switch (this.day()) {
13125                    case 0:
13126                        return '[u] [nedelju] [u] LT';
13127                    case 3:
13128                        return '[u] [sredu] [u] LT';
13129                    case 6:
13130                        return '[u] [subotu] [u] LT';
13131                    case 1:
13132                    case 2:
13133                    case 4:
13134                    case 5:
13135                        return '[u] dddd [u] LT';
13136                }
13137            },
13138            lastDay: '[juče u] LT',
13139            lastWeek: function () {
13140                var lastWeekDays = [
13141                    '[prošle] [nedelje] [u] LT',
13142                    '[prošlog] [ponedeljka] [u] LT',
13143                    '[prošlog] [utorka] [u] LT',
13144                    '[prošle] [srede] [u] LT',
13145                    '[prošlog] [četvrtka] [u] LT',
13146                    '[prošlog] [petka] [u] LT',
13147                    '[prošle] [subote] [u] LT',
13148                ];
13149                return lastWeekDays[this.day()];
13150            },
13151            sameElse: 'L',
13152        },
13153        relativeTime: {
13154            future: 'za %s',
13155            past: 'pre %s',
13156            s: 'nekoliko sekundi',
13157            ss: translator.translate,
13158            m: translator.translate,
13159            mm: translator.translate,
13160            h: translator.translate,
13161            hh: translator.translate,
13162            d: 'dan',
13163            dd: translator.translate,
13164            M: 'mesec',
13165            MM: translator.translate,
13166            y: 'godinu',
13167            yy: translator.translate,
13168        },
13169        dayOfMonthOrdinalParse: /\d{1,2}\./,
13170        ordinal: '%d.',
13171        week: {
13172            dow: 1, // Monday is the first day of the week.
13173            doy: 7, // The week that contains Jan 7th is the first week of the year.
13174        },
13175    });
13176
13177    return sr;
13178
13179})));
13180
13181
13182/***/ }),
13183
vendor: 3,730 bytes, lines 13184-13286
13184/***/ "../../node_modules/moment/locale/ss.js":
13185/*!*********************************************************************************************************************************!*\
13186  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ss.js ***!
13187  \*********************************************************************************************************************************/
13188/*! no static exports found */
13189/***/ (function(module, exports, __webpack_require__) {
13190
13191//! moment.js locale configuration
13192//! locale : siSwati [ss]
13193//! author : Nicolai Davies<[email protected]> : https://github.com/nicolaidavies
13194
13195;(function (global, factory) {
13196    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
13197   undefined
13198}(this, (function (moment) { 'use strict';
13199
13200    //! moment.js locale configuration
13201
13202    var ss = moment.defineLocale('ss', {
13203        months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split(
13204            '_'
13205        ),
13206        monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),
13207        weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(
13208            '_'
13209        ),
13210        weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),
13211        weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),
13212        weekdaysParseExact: true,
13213        longDateFormat: {
13214            LT: 'h:mm A',
13215            LTS: 'h:mm:ss A',
13216            L: 'DD/MM/YYYY',
13217            LL: 'D MMMM YYYY',
13218            LLL: 'D MMMM YYYY h:mm A',
13219            LLLL: 'dddd, D MMMM YYYY h:mm A',
13220        },
13221        calendar: {
13222            sameDay: '[Namuhla nga] LT',
13223            nextDay: '[Kusasa nga] LT',
13224            nextWeek: 'dddd [nga] LT',
13225            lastDay: '[Itolo nga] LT',
13226            lastWeek: 'dddd [leliphelile] [nga] LT',
13227            sameElse: 'L',
13228        },
13229        relativeTime: {
13230            future: 'nga %s',
13231            past: 'wenteka nga %s',
13232            s: 'emizuzwana lomcane',
13233            ss: '%d mzuzwana',
13234            m: 'umzuzu',
13235            mm: '%d emizuzu',
13236            h: 'lihora',
13237            hh: '%d emahora',
13238            d: 'lilanga',
13239            dd: '%d emalanga',
13240            M: 'inyanga',
13241            MM: '%d tinyanga',
13242            y: 'umnyaka',
13243            yy: '%d iminyaka',
13244        },
13245        meridiemParse: /ekuseni|emini|entsambama|ebusuku/,
13246        meridiem: function (hours, minutes, isLower) {
13247            if (hours < 11) {
13248                return 'ekuseni';
13249            } else if (hours < 15) {
13250                return 'emini';
13251            } else if (hours < 19) {
13252                return 'entsambama';
13253            } else {
13254                return 'ebusuku';
13255            }
13256        },
13257        meridiemHour: function (hour, meridiem) {
13258            if (hour === 12) {
13259                hour = 0;
13260            }
13261            if (meridiem === 'ekuseni') {
13262                return hour;
13263            } else if (meridiem === 'emini') {
13264                return hour >= 11 ? hour : hour + 12;
13265            } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {
13266                if (hour === 0) {
13267                    return 0;
13268                }
13269                return hour + 12;
13270            }
13271        },
13272        dayOfMonthOrdinalParse: /\d{1,2}/,
13273        ordinal: '%d',
13274        week: {
13275            dow: 1, // Monday is the first day of the week.
13276            doy: 4, // The week that contains Jan 4th is the first week of the year.
13277        },
13278    });
13279
13280    return ss;
13281
13282})));
13283
13284
13285/***/ }),
13286
vendor: 3,165 bytes, lines 13287-13374
13287/***/ "../../node_modules/moment/locale/sv.js":
13288/*!*********************************************************************************************************************************!*\
13289  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/sv.js ***!
13290  \*********************************************************************************************************************************/
13291/*! no static exports found */
13292/***/ (function(module, exports, __webpack_require__) {
13293
13294//! moment.js locale configuration
13295//! locale : Swedish [sv]
13296//! author : Jens Alm : https://github.com/ulmus
13297
13298;(function (global, factory) {
13299    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
13300   undefined
13301}(this, (function (moment) { 'use strict';
13302
13303    //! moment.js locale configuration
13304
13305    var sv = moment.defineLocale('sv', {
13306        months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(
13307            '_'
13308        ),
13309        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
13310        weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
13311        weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
13312        weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),
13313        longDateFormat: {
13314            LT: 'HH:mm',
13315            LTS: 'HH:mm:ss',
13316            L: 'YYYY-MM-DD',
13317            LL: 'D MMMM YYYY',
13318            LLL: 'D MMMM YYYY [kl.] HH:mm',
13319            LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',
13320            lll: 'D MMM YYYY HH:mm',
13321            llll: 'ddd D MMM YYYY HH:mm',
13322        },
13323        calendar: {
13324            sameDay: '[Idag] LT',
13325            nextDay: '[Imorgon] LT',
13326            lastDay: '[Igår] LT',
13327            nextWeek: '[PÃ¥] dddd LT',
13328            lastWeek: '[I] dddd[s] LT',
13329            sameElse: 'L',
13330        },
13331        relativeTime: {
13332            future: 'om %s',
13333            past: 'för %s sedan',
13334            s: 'några sekunder',
13335            ss: '%d sekunder',
13336            m: 'en minut',
13337            mm: '%d minuter',
13338            h: 'en timme',
13339            hh: '%d timmar',
13340            d: 'en dag',
13341            dd: '%d dagar',
13342            M: 'en månad',
13343            MM: '%d månader',
13344            y: 'ett år',
13345            yy: '%d år',
13346        },
13347        dayOfMonthOrdinalParse: /\d{1,2}(\:e|\:a)/,
13348        ordinal: function (number) {
13349            var b = number % 10,
13350                output =
13351                    ~~((number % 100) / 10) === 1
13352                        ? ':e'
13353                        : b === 1
13354                        ? ':a'
13355                        : b === 2
13356                        ? ':a'
13357                        : b === 3
13358                        ? ':e'
13359                        : ':e';
13360            return number + output;
13361        },
13362        week: {
13363            dow: 1, // Monday is the first day of the week.
13364            doy: 4, // The week that contains Jan 4th is the first week of the year.
13365        },
13366    });
13367
13368    return sv;
13369
13370})));
13371
13372
13373/***/ }),
13374
vendor: 2,664 bytes, lines 13375-13448
13375/***/ "../../node_modules/moment/locale/sw.js":
13376/*!*********************************************************************************************************************************!*\
13377  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/sw.js ***!
13378  \*********************************************************************************************************************************/
13379/*! no static exports found */
13380/***/ (function(module, exports, __webpack_require__) {
13381
13382//! moment.js locale configuration
13383//! locale : Swahili [sw]
13384//! author : Fahad Kassim : https://github.com/fadsel
13385
13386;(function (global, factory) {
13387    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
13388   undefined
13389}(this, (function (moment) { 'use strict';
13390
13391    //! moment.js locale configuration
13392
13393    var sw = moment.defineLocale('sw', {
13394        months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(
13395            '_'
13396        ),
13397        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),
13398        weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(
13399            '_'
13400        ),
13401        weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),
13402        weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),
13403        weekdaysParseExact: true,
13404        longDateFormat: {
13405            LT: 'hh:mm A',
13406            LTS: 'HH:mm:ss',
13407            L: 'DD.MM.YYYY',
13408            LL: 'D MMMM YYYY',
13409            LLL: 'D MMMM YYYY HH:mm',
13410            LLLL: 'dddd, D MMMM YYYY HH:mm',
13411        },
13412        calendar: {
13413            sameDay: '[leo saa] LT',
13414            nextDay: '[kesho saa] LT',
13415            nextWeek: '[wiki ijayo] dddd [saat] LT',
13416            lastDay: '[jana] LT',
13417            lastWeek: '[wiki iliyopita] dddd [saat] LT',
13418            sameElse: 'L',
13419        },
13420        relativeTime: {
13421            future: '%s baadaye',
13422            past: 'tokea %s',
13423            s: 'hivi punde',
13424            ss: 'sekunde %d',
13425            m: 'dakika moja',
13426            mm: 'dakika %d',
13427            h: 'saa limoja',
13428            hh: 'masaa %d',
13429            d: 'siku moja',
13430            dd: 'siku %d',
13431            M: 'mwezi mmoja',
13432            MM: 'miezi %d',
13433            y: 'mwaka mmoja',
13434            yy: 'miaka %d',
13435        },
13436        week: {
13437            dow: 1, // Monday is the first day of the week.
13438            doy: 7, // The week that contains Jan 7th is the first week of the year.
13439        },
13440    });
13441
13442    return sw;
13443
13444})));
13445
13446
13447/***/ }),
13448
vendor: 6,188 bytes, lines 13449-13597
13449/***/ "../../node_modules/moment/locale/ta.js":
13450/*!*********************************************************************************************************************************!*\
13451  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ta.js ***!
13452  \*********************************************************************************************************************************/
13453/*! no static exports found */
13454/***/ (function(module, exports, __webpack_require__) {
13455
13456//! moment.js locale configuration
13457//! locale : Tamil [ta]
13458//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404
13459
13460;(function (global, factory) {
13461    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
13462   undefined
13463}(this, (function (moment) { 'use strict';
13464
13465    //! moment.js locale configuration
13466
13467    var symbolMap = {
13468            '1': '௧',
13469            '2': '௨',
13470            '3': '௩',
13471            '4': '௪',
13472            '5': '௫',
13473            '6': '௬',
13474            '7': '௭',
13475            '8': '௮',
13476            '9': '௯',
13477            '0': '௦',
13478        },
13479        numberMap = {
13480            '௧': '1',
13481            '௨': '2',
13482            '௩': '3',
13483            '௪': '4',
13484            '௫': '5',
13485            '௬': '6',
13486            '௭': '7',
13487            '௮': '8',
13488            '௯': '9',
13489            '௦': '0',
13490        };
13491
13492    var ta = moment.defineLocale('ta', {
13493        months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
13494            '_'
13495        ),
13496        monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
13497            '_'
13498        ),
13499        weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(
13500            '_'
13501        ),
13502        weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(
13503            '_'
13504        ),
13505        weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
13506        longDateFormat: {
13507            LT: 'HH:mm',
13508            LTS: 'HH:mm:ss',
13509            L: 'DD/MM/YYYY',
13510            LL: 'D MMMM YYYY',
13511            LLL: 'D MMMM YYYY, HH:mm',
13512            LLLL: 'dddd, D MMMM YYYY, HH:mm',
13513        },
13514        calendar: {
13515            sameDay: '[இன்று] LT',
13516            nextDay: '[நாளை] LT',
13517            nextWeek: 'dddd, LT',
13518            lastDay: '[நேற்று] LT',
13519            lastWeek: '[கடந்த வாரம்] dddd, LT',
13520            sameElse: 'L',
13521        },
13522        relativeTime: {
13523            future: '%s இல்',
13524            past: '%s முன்',
13525            s: 'ஒரு சில விநாடிகள்',
13526            ss: '%d விநாடிகள்',
13527            m: 'ஒரு நிமிடம்',
13528            mm: '%d நிமிடங்கள்',
13529            h: 'ஒரு மணி நேரம்',
13530            hh: '%d மணி நேரம்',
13531            d: 'ஒரு நாள்',
13532            dd: '%d நாட்கள்',
13533            M: 'ஒரு மாதம்',
13534            MM: '%d மாதங்கள்',
13535            y: 'ஒரு வருடம்',
13536            yy: '%d ஆண்டுகள்',
13537        },
13538        dayOfMonthOrdinalParse: /\d{1,2}வது/,
13539        ordinal: function (number) {
13540            return number + 'வது';
13541        },
13542        preparse: function (string) {
13543            return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {
13544                return numberMap[match];
13545            });
13546        },
13547        postformat: function (string) {
13548            return string.replace(/\d/g, function (match) {
13549                return symbolMap[match];
13550            });
13551        },
13552        // refer http://ta.wikipedia.org/s/1er1
13553        meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,
13554        meridiem: function (hour, minute, isLower) {
13555            if (hour < 2) {
13556                return ' யாமம்';
13557            } else if (hour < 6) {
13558                return ' வைகறை'; // வைகறை
13559            } else if (hour < 10) {
13560                return ' காலை'; // காலை
13561            } else if (hour < 14) {
13562                return ' நண்பகல்'; // நண்பகல்
13563            } else if (hour < 18) {
13564                return ' எற்பாடு'; // எற்பாடு
13565            } else if (hour < 22) {
13566                return ' மாலை'; // மாலை
13567            } else {
13568                return ' யாமம்';
13569            }
13570        },
13571        meridiemHour: function (hour, meridiem) {
13572            if (hour === 12) {
13573                hour = 0;
13574            }
13575            if (meridiem === 'யாமம்') {
13576                return hour < 2 ? hour : hour + 12;
13577            } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {
13578                return hour;
13579            } else if (meridiem === 'நண்பகல்') {
13580                return hour >= 10 ? hour : hour + 12;
13581            } else {
13582                return hour + 12;
13583            }
13584        },
13585        week: {
13586            dow: 0, // Sunday is the first day of the week.
13587            doy: 6, // The week that contains Jan 6th is the first week of the year.
13588        },
13589    });
13590
13591    return ta;
13592
13593})));
13594
13595
13596/***/ }),
13597
vendor: 4,549 bytes, lines 13598-13703
13598/***/ "../../node_modules/moment/locale/te.js":
13599/*!*********************************************************************************************************************************!*\
13600  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/te.js ***!
13601  \*********************************************************************************************************************************/
13602/*! no static exports found */
13603/***/ (function(module, exports, __webpack_require__) {
13604
13605//! moment.js locale configuration
13606//! locale : Telugu [te]
13607//! author : Krishna Chaitanya Thota : https://github.com/kcthota
13608
13609;(function (global, factory) {
13610    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
13611   undefined
13612}(this, (function (moment) { 'use strict';
13613
13614    //! moment.js locale configuration
13615
13616    var te = moment.defineLocale('te', {
13617        months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(
13618            '_'
13619        ),
13620        monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(
13621            '_'
13622        ),
13623        monthsParseExact: true,
13624        weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(
13625            '_'
13626        ),
13627        weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),
13628        weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),
13629        longDateFormat: {
13630            LT: 'A h:mm',
13631            LTS: 'A h:mm:ss',
13632            L: 'DD/MM/YYYY',
13633            LL: 'D MMMM YYYY',
13634            LLL: 'D MMMM YYYY, A h:mm',
13635            LLLL: 'dddd, D MMMM YYYY, A h:mm',
13636        },
13637        calendar: {
13638            sameDay: '[నేడు] LT',
13639            nextDay: '[రేపు] LT',
13640            nextWeek: 'dddd, LT',
13641            lastDay: '[నిన్న] LT',
13642            lastWeek: '[గత] dddd, LT',
13643            sameElse: 'L',
13644        },
13645        relativeTime: {
13646            future: '%s లో',
13647            past: '%s క్రితం',
13648            s: 'కొన్ని క్షణాలు',
13649            ss: '%d సెకన్లు',
13650            m: 'ఒక నిమిషం',
13651            mm: '%d నిమిషాలు',
13652            h: 'ఒక గంట',
13653            hh: '%d గంటలు',
13654            d: 'ఒక రోజు',
13655            dd: '%d రోజులు',
13656            M: 'ఒక నెల',
13657            MM: '%d నెలలు',
13658            y: 'ఒక సంవత్సరం',
13659            yy: '%d సంవత్సరాలు',
13660        },
13661        dayOfMonthOrdinalParse: /\d{1,2}à°µ/,
13662        ordinal: '%dà°µ',
13663        meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,
13664        meridiemHour: function (hour, meridiem) {
13665            if (hour === 12) {
13666                hour = 0;
13667            }
13668            if (meridiem === 'రాత్రి') {
13669                return hour < 4 ? hour : hour + 12;
13670            } else if (meridiem === 'ఉదయం') {
13671                return hour;
13672            } else if (meridiem === 'మధ్యాహ్నం') {
13673                return hour >= 10 ? hour : hour + 12;
13674            } else if (meridiem === 'సాయంత్రం') {
13675                return hour + 12;
13676            }
13677        },
13678        meridiem: function (hour, minute, isLower) {
13679            if (hour < 4) {
13680                return 'రాత్రి';
13681            } else if (hour < 10) {
13682                return 'ఉదయం';
13683            } else if (hour < 17) {
13684                return 'మధ్యాహ్నం';
13685            } else if (hour < 20) {
13686                return 'సాయంత్రం';
13687            } else {
13688                return 'రాత్రి';
13689            }
13690        },
13691        week: {
13692            dow: 0, // Sunday is the first day of the week.
13693            doy: 6, // The week that contains Jan 6th is the first week of the year.
13694        },
13695    });
13696
13697    return te;
13698
13699})));
13700
13701
13702/***/ }),
13703
vendor: 3,252 bytes, lines 13704-13791
13704/***/ "../../node_modules/moment/locale/tet.js":
13705/*!**********************************************************************************************************************************!*\
13706  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/tet.js ***!
13707  \**********************************************************************************************************************************/
13708/*! no static exports found */
13709/***/ (function(module, exports, __webpack_require__) {
13710
13711//! moment.js locale configuration
13712//! locale : Tetun Dili (East Timor) [tet]
13713//! author : Joshua Brooks : https://github.com/joshbrooks
13714//! author : Onorio De J. Afonso : https://github.com/marobo
13715//! author : Sonia Simoes : https://github.com/soniasimoes
13716
13717;(function (global, factory) {
13718    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
13719   undefined
13720}(this, (function (moment) { 'use strict';
13721
13722    //! moment.js locale configuration
13723
13724    var tet = moment.defineLocale('tet', {
13725        months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(
13726            '_'
13727        ),
13728        monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
13729        weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),
13730        weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),
13731        weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),
13732        longDateFormat: {
13733            LT: 'HH:mm',
13734            LTS: 'HH:mm:ss',
13735            L: 'DD/MM/YYYY',
13736            LL: 'D MMMM YYYY',
13737            LLL: 'D MMMM YYYY HH:mm',
13738            LLLL: 'dddd, D MMMM YYYY HH:mm',
13739        },
13740        calendar: {
13741            sameDay: '[Ohin iha] LT',
13742            nextDay: '[Aban iha] LT',
13743            nextWeek: 'dddd [iha] LT',
13744            lastDay: '[Horiseik iha] LT',
13745            lastWeek: 'dddd [semana kotuk] [iha] LT',
13746            sameElse: 'L',
13747        },
13748        relativeTime: {
13749            future: 'iha %s',
13750            past: '%s liuba',
13751            s: 'segundu balun',
13752            ss: 'segundu %d',
13753            m: 'minutu ida',
13754            mm: 'minutu %d',
13755            h: 'oras ida',
13756            hh: 'oras %d',
13757            d: 'loron ida',
13758            dd: 'loron %d',
13759            M: 'fulan ida',
13760            MM: 'fulan %d',
13761            y: 'tinan ida',
13762            yy: 'tinan %d',
13763        },
13764        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
13765        ordinal: function (number) {
13766            var b = number % 10,
13767                output =
13768                    ~~((number % 100) / 10) === 1
13769                        ? 'th'
13770                        : b === 1
13771                        ? 'st'
13772                        : b === 2
13773                        ? 'nd'
13774                        : b === 3
13775                        ? 'rd'
13776                        : 'th';
13777            return number + output;
13778        },
13779        week: {
13780            dow: 1, // Monday is the first day of the week.
13781            doy: 4, // The week that contains Jan 4th is the first week of the year.
13782        },
13783    });
13784
13785    return tet;
13786
13787})));
13788
13789
13790/***/ }),
13791
vendor: 4,651 bytes, lines 13792-13922
13792/***/ "../../node_modules/moment/locale/tg.js":
13793/*!*********************************************************************************************************************************!*\
13794  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/tg.js ***!
13795  \*********************************************************************************************************************************/
13796/*! no static exports found */
13797/***/ (function(module, exports, __webpack_require__) {
13798
13799//! moment.js locale configuration
13800//! locale : Tajik [tg]
13801//! author : Orif N. Jr. : https://github.com/orif-jr
13802
13803;(function (global, factory) {
13804    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
13805   undefined
13806}(this, (function (moment) { 'use strict';
13807
13808    //! moment.js locale configuration
13809
13810    var suffixes = {
13811        0: '-ум',
13812        1: '-ум',
13813        2: '-юм',
13814        3: '-юм',
13815        4: '-ум',
13816        5: '-ум',
13817        6: '-ум',
13818        7: '-ум',
13819        8: '-ум',
13820        9: '-ум',
13821        10: '-ум',
13822        12: '-ум',
13823        13: '-ум',
13824        20: '-ум',
13825        30: '-юм',
13826        40: '-ум',
13827        50: '-ум',
13828        60: '-ум',
13829        70: '-ум',
13830        80: '-ум',
13831        90: '-ум',
13832        100: '-ум',
13833    };
13834
13835    var tg = moment.defineLocale('tg', {
13836        months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
13837            '_'
13838        ),
13839        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
13840        weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(
13841            '_'
13842        ),
13843        weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),
13844        weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),
13845        longDateFormat: {
13846            LT: 'HH:mm',
13847            LTS: 'HH:mm:ss',
13848            L: 'DD/MM/YYYY',
13849            LL: 'D MMMM YYYY',
13850            LLL: 'D MMMM YYYY HH:mm',
13851            LLLL: 'dddd, D MMMM YYYY HH:mm',
13852        },
13853        calendar: {
13854            sameDay: '[Имрӯз соати] LT',
13855            nextDay: '[Пагоҳ соати] LT',
13856            lastDay: '[Дирӯз соати] LT',
13857            nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',
13858            lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',
13859            sameElse: 'L',
13860        },
13861        relativeTime: {
13862            future: 'баъди %s',
13863            past: '%s пеш',
13864            s: 'якчанд сония',
13865            m: 'як дақиқа',
13866            mm: '%d дақиқа',
13867            h: 'як соат',
13868            hh: '%d соат',
13869            d: 'як рӯз',
13870            dd: '%d рӯз',
13871            M: 'як моҳ',
13872            MM: '%d моҳ',
13873            y: 'як сол',
13874            yy: '%d сол',
13875        },
13876        meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,
13877        meridiemHour: function (hour, meridiem) {
13878            if (hour === 12) {
13879                hour = 0;
13880            }
13881            if (meridiem === 'шаб') {
13882                return hour < 4 ? hour : hour + 12;
13883            } else if (meridiem === 'субҳ') {
13884                return hour;
13885            } else if (meridiem === 'рӯз') {
13886                return hour >= 11 ? hour : hour + 12;
13887            } else if (meridiem === 'бегоҳ') {
13888                return hour + 12;
13889            }
13890        },
13891        meridiem: function (hour, minute, isLower) {
13892            if (hour < 4) {
13893                return 'шаб';
13894            } else if (hour < 11) {
13895                return 'субҳ';
13896            } else if (hour < 16) {
13897                return 'рӯз';
13898            } else if (hour < 19) {
13899                return 'бегоҳ';
13900            } else {
13901                return 'шаб';
13902            }
13903        },
13904        dayOfMonthOrdinalParse: /\d{1,2}-(ум|юм)/,
13905        ordinal: function (number) {
13906            var a = number % 10,
13907                b = number >= 100 ? 100 : null;
13908            return number + (suffixes[number] || suffixes[a] || suffixes[b]);
13909        },
13910        week: {
13911            dow: 1, // Monday is the first day of the week.
13912            doy: 7, // The week that contains Jan 1th is the first week of the year.
13913        },
13914    });
13915
13916    return tg;
13917
13918})));
13919
13920
13921/***/ }),
13922
vendor: 3,711 bytes, lines 13923-14004
13923/***/ "../../node_modules/moment/locale/th.js":
13924/*!*********************************************************************************************************************************!*\
13925  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/th.js ***!
13926  \*********************************************************************************************************************************/
13927/*! no static exports found */
13928/***/ (function(module, exports, __webpack_require__) {
13929
13930//! moment.js locale configuration
13931//! locale : Thai [th]
13932//! author : Kridsada Thanabulpong : https://github.com/sirn
13933
13934;(function (global, factory) {
13935    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
13936   undefined
13937}(this, (function (moment) { 'use strict';
13938
13939    //! moment.js locale configuration
13940
13941    var th = moment.defineLocale('th', {
13942        months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(
13943            '_'
13944        ),
13945        monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(
13946            '_'
13947        ),
13948        monthsParseExact: true,
13949        weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),
13950        weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference
13951        weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
13952        weekdaysParseExact: true,
13953        longDateFormat: {
13954            LT: 'H:mm',
13955            LTS: 'H:mm:ss',
13956            L: 'DD/MM/YYYY',
13957            LL: 'D MMMM YYYY',
13958            LLL: 'D MMMM YYYY เวลา H:mm',
13959            LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',
13960        },
13961        meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
13962        isPM: function (input) {
13963            return input === 'หลังเที่ยง';
13964        },
13965        meridiem: function (hour, minute, isLower) {
13966            if (hour < 12) {
13967                return 'ก่อนเที่ยง';
13968            } else {
13969                return 'หลังเที่ยง';
13970            }
13971        },
13972        calendar: {
13973            sameDay: '[วันนี้ เวลา] LT',
13974            nextDay: '[พรุ่งนี้ เวลา] LT',
13975            nextWeek: 'dddd[หน้า เวลา] LT',
13976            lastDay: '[เมื่อวานนี้ เวลา] LT',
13977            lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',
13978            sameElse: 'L',
13979        },
13980        relativeTime: {
13981            future: 'อีก %s',
13982            past: '%sที่แล้ว',
13983            s: 'ไม่กี่วินาที',
13984            ss: '%d วินาที',
13985            m: '1 นาที',
13986            mm: '%d นาที',
13987            h: '1 ชั่วโมง',
13988            hh: '%d ชั่วโมง',
13989            d: '1 วัน',
13990            dd: '%d วัน',
13991            M: '1 เดือน',
13992            MM: '%d เดือน',
13993            y: '1 ปี',
13994            yy: '%d ปี',
13995        },
13996    });
13997
13998    return th;
13999
14000})));
14001
14002
14003/***/ }),
14004
vendor: 3,699 bytes, lines 14005-14115
14005/***/ "../../node_modules/moment/locale/tk.js":
14006/*!*********************************************************************************************************************************!*\
14007  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/tk.js ***!
14008  \*********************************************************************************************************************************/
14009/*! no static exports found */
14010/***/ (function(module, exports, __webpack_require__) {
14011
14012//! moment.js locale configuration
14013//! locale : Turkmen [trk]
14014//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy
14015
14016;(function (global, factory) {
14017    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
14018   undefined
14019}(this, (function (moment) { 'use strict';
14020
14021    //! moment.js locale configuration
14022
14023    var suffixes = {
14024        1: "'inji",
14025        5: "'inji",
14026        8: "'inji",
14027        70: "'inji",
14028        80: "'inji",
14029        2: "'nji",
14030        7: "'nji",
14031        20: "'nji",
14032        50: "'nji",
14033        3: "'ünji",
14034        4: "'ünji",
14035        100: "'ünji",
14036        6: "'njy",
14037        9: "'unjy",
14038        10: "'unjy",
14039        30: "'unjy",
14040        60: "'ynjy",
14041        90: "'ynjy",
14042    };
14043
14044    var tk = moment.defineLocale('tk', {
14045        months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(
14046            '_'
14047        ),
14048        monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),
14049        weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(
14050            '_'
14051        ),
14052        weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),
14053        weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),
14054        longDateFormat: {
14055            LT: 'HH:mm',
14056            LTS: 'HH:mm:ss',
14057            L: 'DD.MM.YYYY',
14058            LL: 'D MMMM YYYY',
14059            LLL: 'D MMMM YYYY HH:mm',
14060            LLLL: 'dddd, D MMMM YYYY HH:mm',
14061        },
14062        calendar: {
14063            sameDay: '[bugün sagat] LT',
14064            nextDay: '[ertir sagat] LT',
14065            nextWeek: '[indiki] dddd [sagat] LT',
14066            lastDay: '[düýn] LT',
14067            lastWeek: '[geçen] dddd [sagat] LT',
14068            sameElse: 'L',
14069        },
14070        relativeTime: {
14071            future: '%s soň',
14072            past: '%s öň',
14073            s: 'birnäçe sekunt',
14074            m: 'bir minut',
14075            mm: '%d minut',
14076            h: 'bir sagat',
14077            hh: '%d sagat',
14078            d: 'bir gün',
14079            dd: '%d gün',
14080            M: 'bir aý',
14081            MM: '%d aý',
14082            y: 'bir ýyl',
14083            yy: '%d ýyl',
14084        },
14085        ordinal: function (number, period) {
14086            switch (period) {
14087                case 'd':
14088                case 'D':
14089                case 'Do':
14090                case 'DD':
14091                    return number;
14092                default:
14093                    if (number === 0) {
14094                        // special case for zero
14095                        return number + "'unjy";
14096                    }
14097                    var a = number % 10,
14098                        b = (number % 100) - a,
14099                        c = number >= 100 ? 100 : null;
14100                    return number + (suffixes[a] || suffixes[b] || suffixes[c]);
14101            }
14102        },
14103        week: {
14104            dow: 1, // Monday is the first day of the week.
14105            doy: 7, // The week that contains Jan 7th is the first week of the year.
14106        },
14107    });
14108
14109    return tk;
14110
14111})));
14112
14113
14114/***/ }),
14115
vendor: 2,795 bytes, lines 14116-14192
14116/***/ "../../node_modules/moment/locale/tl-ph.js":
14117/*!************************************************************************************************************************************!*\
14118  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/tl-ph.js ***!
14119  \************************************************************************************************************************************/
14120/*! no static exports found */
14121/***/ (function(module, exports, __webpack_require__) {
14122
14123//! moment.js locale configuration
14124//! locale : Tagalog (Philippines) [tl-ph]
14125//! author : Dan Hagman : https://github.com/hagmandan
14126
14127;(function (global, factory) {
14128    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
14129   undefined
14130}(this, (function (moment) { 'use strict';
14131
14132    //! moment.js locale configuration
14133
14134    var tlPh = moment.defineLocale('tl-ph', {
14135        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
14136            '_'
14137        ),
14138        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
14139        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
14140            '_'
14141        ),
14142        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
14143        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
14144        longDateFormat: {
14145            LT: 'HH:mm',
14146            LTS: 'HH:mm:ss',
14147            L: 'MM/D/YYYY',
14148            LL: 'MMMM D, YYYY',
14149            LLL: 'MMMM D, YYYY HH:mm',
14150            LLLL: 'dddd, MMMM DD, YYYY HH:mm',
14151        },
14152        calendar: {
14153            sameDay: 'LT [ngayong araw]',
14154            nextDay: '[Bukas ng] LT',
14155            nextWeek: 'LT [sa susunod na] dddd',
14156            lastDay: 'LT [kahapon]',
14157            lastWeek: 'LT [noong nakaraang] dddd',
14158            sameElse: 'L',
14159        },
14160        relativeTime: {
14161            future: 'sa loob ng %s',
14162            past: '%s ang nakalipas',
14163            s: 'ilang segundo',
14164            ss: '%d segundo',
14165            m: 'isang minuto',
14166            mm: '%d minuto',
14167            h: 'isang oras',
14168            hh: '%d oras',
14169            d: 'isang araw',
14170            dd: '%d araw',
14171            M: 'isang buwan',
14172            MM: '%d buwan',
14173            y: 'isang taon',
14174            yy: '%d taon',
14175        },
14176        dayOfMonthOrdinalParse: /\d{1,2}/,
14177        ordinal: function (number) {
14178            return number;
14179        },
14180        week: {
14181            dow: 1, // Monday is the first day of the week.
14182            doy: 4, // The week that contains Jan 4th is the first week of the year.
14183        },
14184    });
14185
14186    return tlPh;
14187
14188})));
14189
14190
14191/***/ }),
14192
vendor: 5,121 bytes, lines 14193-14337
14193/***/ "../../node_modules/moment/locale/tlh.js":
14194/*!**********************************************************************************************************************************!*\
14195  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/tlh.js ***!
14196  \**********************************************************************************************************************************/
14197/*! no static exports found */
14198/***/ (function(module, exports, __webpack_require__) {
14199
14200//! moment.js locale configuration
14201//! locale : Klingon [tlh]
14202//! author : Dominika Kruk : https://github.com/amaranthrose
14203
14204;(function (global, factory) {
14205    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
14206   undefined
14207}(this, (function (moment) { 'use strict';
14208
14209    //! moment.js locale configuration
14210
14211    var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');
14212
14213    function translateFuture(output) {
14214        var time = output;
14215        time =
14216            output.indexOf('jaj') !== -1
14217                ? time.slice(0, -3) + 'leS'
14218                : output.indexOf('jar') !== -1
14219                ? time.slice(0, -3) + 'waQ'
14220                : output.indexOf('DIS') !== -1
14221                ? time.slice(0, -3) + 'nem'
14222                : time + ' pIq';
14223        return time;
14224    }
14225
14226    function translatePast(output) {
14227        var time = output;
14228        time =
14229            output.indexOf('jaj') !== -1
14230                ? time.slice(0, -3) + 'Hu’'
14231                : output.indexOf('jar') !== -1
14232                ? time.slice(0, -3) + 'wen'
14233                : output.indexOf('DIS') !== -1
14234                ? time.slice(0, -3) + 'ben'
14235                : time + ' ret';
14236        return time;
14237    }
14238
14239    function translate(number, withoutSuffix, string, isFuture) {
14240        var numberNoun = numberAsNoun(number);
14241        switch (string) {
14242            case 'ss':
14243                return numberNoun + ' lup';
14244            case 'mm':
14245                return numberNoun + ' tup';
14246            case 'hh':
14247                return numberNoun + ' rep';
14248            case 'dd':
14249                return numberNoun + ' jaj';
14250            case 'MM':
14251                return numberNoun + ' jar';
14252            case 'yy':
14253                return numberNoun + ' DIS';
14254        }
14255    }
14256
14257    function numberAsNoun(number) {
14258        var hundred = Math.floor((number % 1000) / 100),
14259            ten = Math.floor((number % 100) / 10),
14260            one = number % 10,
14261            word = '';
14262        if (hundred > 0) {
14263            word += numbersNouns[hundred] + 'vatlh';
14264        }
14265        if (ten > 0) {
14266            word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';
14267        }
14268        if (one > 0) {
14269            word += (word !== '' ? ' ' : '') + numbersNouns[one];
14270        }
14271        return word === '' ? 'pagh' : word;
14272    }
14273
14274    var tlh = moment.defineLocale('tlh', {
14275        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(
14276            '_'
14277        ),
14278        monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(
14279            '_'
14280        ),
14281        monthsParseExact: true,
14282        weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
14283            '_'
14284        ),
14285        weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
14286            '_'
14287        ),
14288        weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
14289            '_'
14290        ),
14291        longDateFormat: {
14292            LT: 'HH:mm',
14293            LTS: 'HH:mm:ss',
14294            L: 'DD.MM.YYYY',
14295            LL: 'D MMMM YYYY',
14296            LLL: 'D MMMM YYYY HH:mm',
14297            LLLL: 'dddd, D MMMM YYYY HH:mm',
14298        },
14299        calendar: {
14300            sameDay: '[DaHjaj] LT',
14301            nextDay: '[wa’leS] LT',
14302            nextWeek: 'LLL',
14303            lastDay: '[wa’Hu’] LT',
14304            lastWeek: 'LLL',
14305            sameElse: 'L',
14306        },
14307        relativeTime: {
14308            future: translateFuture,
14309            past: translatePast,
14310            s: 'puS lup',
14311            ss: translate,
14312            m: 'wa’ tup',
14313            mm: translate,
14314            h: 'wa’ rep',
14315            hh: translate,
14316            d: 'wa’ jaj',
14317            dd: translate,
14318            M: 'wa’ jar',
14319            MM: translate,
14320            y: 'wa’ DIS',
14321            yy: translate,
14322        },
14323        dayOfMonthOrdinalParse: /\d{1,2}\./,
14324        ordinal: '%d.',
14325        week: {
14326            dow: 1, // Monday is the first day of the week.
14327            doy: 4, // The week that contains Jan 4th is the first week of the year.
14328        },
14329    });
14330
14331    return tlh;
14332
14333})));
14334
14335
14336/***/ }),
14337
vendor: 4,150 bytes, lines 14338-14461
14338/***/ "../../node_modules/moment/locale/tr.js":
14339/*!*********************************************************************************************************************************!*\
14340  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/tr.js ***!
14341  \*********************************************************************************************************************************/
14342/*! no static exports found */
14343/***/ (function(module, exports, __webpack_require__) {
14344
14345//! moment.js locale configuration
14346//! locale : Turkish [tr]
14347//! authors : Erhan Gundogan : https://github.com/erhangundogan,
14348//!           Burak Yiğit Kaya: https://github.com/BYK
14349
14350;(function (global, factory) {
14351    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
14352   undefined
14353}(this, (function (moment) { 'use strict';
14354
14355    //! moment.js locale configuration
14356
14357    var suffixes = {
14358        1: "'inci",
14359        5: "'inci",
14360        8: "'inci",
14361        70: "'inci",
14362        80: "'inci",
14363        2: "'nci",
14364        7: "'nci",
14365        20: "'nci",
14366        50: "'nci",
14367        3: "'üncü",
14368        4: "'üncü",
14369        100: "'üncü",
14370        6: "'ncı",
14371        9: "'uncu",
14372        10: "'uncu",
14373        30: "'uncu",
14374        60: "'ıncı",
14375        90: "'ıncı",
14376    };
14377
14378    var tr = moment.defineLocale('tr', {
14379        months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(
14380            '_'
14381        ),
14382        monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
14383        weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(
14384            '_'
14385        ),
14386        weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),
14387        weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
14388        meridiem: function (hours, minutes, isLower) {
14389            if (hours < 12) {
14390                return isLower ? 'öö' : 'ÖÖ';
14391            } else {
14392                return isLower ? 'ös' : 'ÖS';
14393            }
14394        },
14395        meridiemParse: /öö|ÖÖ|ös|ÖS/,
14396        isPM: function (input) {
14397            return input === 'ös' || input === 'ÖS';
14398        },
14399        longDateFormat: {
14400            LT: 'HH:mm',
14401            LTS: 'HH:mm:ss',
14402            L: 'DD.MM.YYYY',
14403            LL: 'D MMMM YYYY',
14404            LLL: 'D MMMM YYYY HH:mm',
14405            LLLL: 'dddd, D MMMM YYYY HH:mm',
14406        },
14407        calendar: {
14408            sameDay: '[bugün saat] LT',
14409            nextDay: '[yarın saat] LT',
14410            nextWeek: '[gelecek] dddd [saat] LT',
14411            lastDay: '[dün] LT',
14412            lastWeek: '[geçen] dddd [saat] LT',
14413            sameElse: 'L',
14414        },
14415        relativeTime: {
14416            future: '%s sonra',
14417            past: '%s önce',
14418            s: 'birkaç saniye',
14419            ss: '%d saniye',
14420            m: 'bir dakika',
14421            mm: '%d dakika',
14422            h: 'bir saat',
14423            hh: '%d saat',
14424            d: 'bir gün',
14425            dd: '%d gün',
14426            M: 'bir ay',
14427            MM: '%d ay',
14428            y: 'bir yıl',
14429            yy: '%d yıl',
14430        },
14431        ordinal: function (number, period) {
14432            switch (period) {
14433                case 'd':
14434                case 'D':
14435                case 'Do':
14436                case 'DD':
14437                    return number;
14438                default:
14439                    if (number === 0) {
14440                        // special case for zero
14441                        return number + "'ıncı";
14442                    }
14443                    var a = number % 10,
14444                        b = (number % 100) - a,
14445                        c = number >= 100 ? 100 : null;
14446                    return number + (suffixes[a] || suffixes[b] || suffixes[c]);
14447            }
14448        },
14449        week: {
14450            dow: 1, // Monday is the first day of the week.
14451            doy: 7, // The week that contains Jan 7th is the first week of the year.
14452        },
14453    });
14454
14455    return tr;
14456
14457})));
14458
14459
14460/***/ }),
14461
vendor: 4,311 bytes, lines 14462-14570
14462/***/ "../../node_modules/moment/locale/tzl.js":
14463/*!**********************************************************************************************************************************!*\
14464  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/tzl.js ***!
14465  \**********************************************************************************************************************************/
14466/*! no static exports found */
14467/***/ (function(module, exports, __webpack_require__) {
14468
14469//! moment.js locale configuration
14470//! locale : Talossan [tzl]
14471//! author : Robin van der Vliet : https://github.com/robin0van0der0v
14472//! author : Iustì Canun
14473
14474;(function (global, factory) {
14475    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
14476   undefined
14477}(this, (function (moment) { 'use strict';
14478
14479    //! moment.js locale configuration
14480
14481    // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.
14482    // This is currently too difficult (maybe even impossible) to add.
14483    var tzl = moment.defineLocale('tzl', {
14484        months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(
14485            '_'
14486        ),
14487        monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),
14488        weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),
14489        weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),
14490        weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),
14491        longDateFormat: {
14492            LT: 'HH.mm',
14493            LTS: 'HH.mm.ss',
14494            L: 'DD.MM.YYYY',
14495            LL: 'D. MMMM [dallas] YYYY',
14496            LLL: 'D. MMMM [dallas] YYYY HH.mm',
14497            LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',
14498        },
14499        meridiemParse: /d\'o|d\'a/i,
14500        isPM: function (input) {
14501            return "d'o" === input.toLowerCase();
14502        },
14503        meridiem: function (hours, minutes, isLower) {
14504            if (hours > 11) {
14505                return isLower ? "d'o" : "D'O";
14506            } else {
14507                return isLower ? "d'a" : "D'A";
14508            }
14509        },
14510        calendar: {
14511            sameDay: '[oxhi à] LT',
14512            nextDay: '[demà à] LT',
14513            nextWeek: 'dddd [à] LT',
14514            lastDay: '[ieiri à] LT',
14515            lastWeek: '[sür el] dddd [lasteu à] LT',
14516            sameElse: 'L',
14517        },
14518        relativeTime: {
14519            future: 'osprei %s',
14520            past: 'ja%s',
14521            s: processRelativeTime,
14522            ss: processRelativeTime,
14523            m: processRelativeTime,
14524            mm: processRelativeTime,
14525            h: processRelativeTime,
14526            hh: processRelativeTime,
14527            d: processRelativeTime,
14528            dd: processRelativeTime,
14529            M: processRelativeTime,
14530            MM: processRelativeTime,
14531            y: processRelativeTime,
14532            yy: processRelativeTime,
14533        },
14534        dayOfMonthOrdinalParse: /\d{1,2}\./,
14535        ordinal: '%d.',
14536        week: {
14537            dow: 1, // Monday is the first day of the week.
14538            doy: 4, // The week that contains Jan 4th is the first week of the year.
14539        },
14540    });
14541
14542    function processRelativeTime(number, withoutSuffix, key, isFuture) {
14543        var format = {
14544            s: ['viensas secunds', "'iensas secunds"],
14545            ss: [number + ' secunds', '' + number + ' secunds'],
14546            m: ["'n míut", "'iens míut"],
14547            mm: [number + ' míuts', '' + number + ' míuts'],
14548            h: ["'n þora", "'iensa þora"],
14549            hh: [number + ' þoras', '' + number + ' þoras'],
14550            d: ["'n ziua", "'iensa ziua"],
14551            dd: [number + ' ziuas', '' + number + ' ziuas'],
14552            M: ["'n mes", "'iens mes"],
14553            MM: [number + ' mesen', '' + number + ' mesen'],
14554            y: ["'n ar", "'iens ar"],
14555            yy: [number + ' ars', '' + number + ' ars'],
14556        };
14557        return isFuture
14558            ? format[key][0]
14559            : withoutSuffix
14560            ? format[key][0]
14561            : format[key][1];
14562    }
14563
14564    return tzl;
14565
14566})));
14567
14568
14569/***/ }),
14570
vendor: 2,733 bytes, lines 14571-14643
14571/***/ "../../node_modules/moment/locale/tzm-latn.js":
14572/*!***************************************************************************************************************************************!*\
14573  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/tzm-latn.js ***!
14574  \***************************************************************************************************************************************/
14575/*! no static exports found */
14576/***/ (function(module, exports, __webpack_require__) {
14577
14578//! moment.js locale configuration
14579//! locale : Central Atlas Tamazight Latin [tzm-latn]
14580//! author : Abdel Said : https://github.com/abdelsaid
14581
14582;(function (global, factory) {
14583    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
14584   undefined
14585}(this, (function (moment) { 'use strict';
14586
14587    //! moment.js locale configuration
14588
14589    var tzmLatn = moment.defineLocale('tzm-latn', {
14590        months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
14591            '_'
14592        ),
14593        monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
14594            '_'
14595        ),
14596        weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
14597        weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
14598        weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
14599        longDateFormat: {
14600            LT: 'HH:mm',
14601            LTS: 'HH:mm:ss',
14602            L: 'DD/MM/YYYY',
14603            LL: 'D MMMM YYYY',
14604            LLL: 'D MMMM YYYY HH:mm',
14605            LLLL: 'dddd D MMMM YYYY HH:mm',
14606        },
14607        calendar: {
14608            sameDay: '[asdkh g] LT',
14609            nextDay: '[aska g] LT',
14610            nextWeek: 'dddd [g] LT',
14611            lastDay: '[assant g] LT',
14612            lastWeek: 'dddd [g] LT',
14613            sameElse: 'L',
14614        },
14615        relativeTime: {
14616            future: 'dadkh s yan %s',
14617            past: 'yan %s',
14618            s: 'imik',
14619            ss: '%d imik',
14620            m: 'minuḍ',
14621            mm: '%d minuḍ',
14622            h: 'saɛa',
14623            hh: '%d tassaɛin',
14624            d: 'ass',
14625            dd: '%d ossan',
14626            M: 'ayowr',
14627            MM: '%d iyyirn',
14628            y: 'asgas',
14629            yy: '%d isgasn',
14630        },
14631        week: {
14632            dow: 6, // Saturday is the first day of the week.
14633            doy: 12, // The week that contains Jan 12th is the first week of the year.
14634        },
14635    });
14636
14637    return tzmLatn;
14638
14639})));
14640
14641
14642/***/ }),
14643
vendor: 3,336 bytes, lines 14644-14716
14644/***/ "../../node_modules/moment/locale/tzm.js":
14645/*!**********************************************************************************************************************************!*\
14646  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/tzm.js ***!
14647  \**********************************************************************************************************************************/
14648/*! no static exports found */
14649/***/ (function(module, exports, __webpack_require__) {
14650
14651//! moment.js locale configuration
14652//! locale : Central Atlas Tamazight [tzm]
14653//! author : Abdel Said : https://github.com/abdelsaid
14654
14655;(function (global, factory) {
14656    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
14657   undefined
14658}(this, (function (moment) { 'use strict';
14659
14660    //! moment.js locale configuration
14661
14662    var tzm = moment.defineLocale('tzm', {
14663        months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
14664            '_'
14665        ),
14666        monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
14667            '_'
14668        ),
14669        weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
14670        weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
14671        weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
14672        longDateFormat: {
14673            LT: 'HH:mm',
14674            LTS: 'HH:mm:ss',
14675            L: 'DD/MM/YYYY',
14676            LL: 'D MMMM YYYY',
14677            LLL: 'D MMMM YYYY HH:mm',
14678            LLLL: 'dddd D MMMM YYYY HH:mm',
14679        },
14680        calendar: {
14681            sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',
14682            nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
14683            nextWeek: 'dddd [â´´] LT',
14684            lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',
14685            lastWeek: 'dddd [â´´] LT',
14686            sameElse: 'L',
14687        },
14688        relativeTime: {
14689            future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',
14690            past: 'ⵢⴰⵏ %s',
14691            s: 'ⵉⵎⵉⴽ',
14692            ss: '%d ⵉⵎⵉⴽ',
14693            m: 'ⵎⵉⵏⵓⴺ',
14694            mm: '%d ⵎⵉⵏⵓⴺ',
14695            h: 'ⵙⴰⵄⴰ',
14696            hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',
14697            d: 'ⴰⵙⵙ',
14698            dd: '%d oⵙⵙⴰⵏ',
14699            M: 'ⴰⵢoⵓⵔ',
14700            MM: '%d ⵉⵢⵢⵉⵔⵏ',
14701            y: 'ⴰⵙⴳⴰⵙ',
14702            yy: '%d ⵉⵙⴳⴰⵙⵏ',
14703        },
14704        week: {
14705            dow: 6, // Saturday is the first day of the week.
14706            doy: 12, // The week that contains Jan 12th is the first week of the year.
14707        },
14708    });
14709
14710    return tzm;
14711
14712})));
14713
14714
14715/***/ }),
14716
vendor: 5,189 bytes, lines 14717-14846
14717/***/ "../../node_modules/moment/locale/ug-cn.js":
14718/*!************************************************************************************************************************************!*\
14719  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ug-cn.js ***!
14720  \************************************************************************************************************************************/
14721/*! no static exports found */
14722/***/ (function(module, exports, __webpack_require__) {
14723
14724//! moment.js language configuration
14725//! locale : Uyghur (China) [ug-cn]
14726//! author: boyaq : https://github.com/boyaq
14727
14728;(function (global, factory) {
14729    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
14730   undefined
14731}(this, (function (moment) { 'use strict';
14732
14733    //! moment.js language configuration
14734
14735    var ugCn = moment.defineLocale('ug-cn', {
14736        months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
14737            '_'
14738        ),
14739        monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
14740            '_'
14741        ),
14742        weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(
14743            '_'
14744        ),
14745        weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
14746        weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
14747        longDateFormat: {
14748            LT: 'HH:mm',
14749            LTS: 'HH:mm:ss',
14750            L: 'YYYY-MM-DD',
14751            LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',
14752            LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
14753            LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
14754        },
14755        meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,
14756        meridiemHour: function (hour, meridiem) {
14757            if (hour === 12) {
14758                hour = 0;
14759            }
14760            if (
14761                meridiem === 'يېرىم كېچە' ||
14762                meridiem === 'سەھەر' ||
14763                meridiem === 'چۈشتىن بۇرۇن'
14764            ) {
14765                return hour;
14766            } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {
14767                return hour + 12;
14768            } else {
14769                return hour >= 11 ? hour : hour + 12;
14770            }
14771        },
14772        meridiem: function (hour, minute, isLower) {
14773            var hm = hour * 100 + minute;
14774            if (hm < 600) {
14775                return 'يېرىم كېچە';
14776            } else if (hm < 900) {
14777                return 'سەھەر';
14778            } else if (hm < 1130) {
14779                return 'چۈشتىن بۇرۇن';
14780            } else if (hm < 1230) {
14781                return 'چۈش';
14782            } else if (hm < 1800) {
14783                return 'چۈشتىن كېيىن';
14784            } else {
14785                return 'كەچ';
14786            }
14787        },
14788        calendar: {
14789            sameDay: '[بۈگۈن سائەت] LT',
14790            nextDay: '[ئەتە سائەت] LT',
14791            nextWeek: '[كېلەركى] dddd [سائەت] LT',
14792            lastDay: '[تۆنۈگۈن] LT',
14793            lastWeek: '[ئالدىنقى] dddd [سائەت] LT',
14794            sameElse: 'L',
14795        },
14796        relativeTime: {
14797            future: '%s كېيىن',
14798            past: '%s بۇرۇن',
14799            s: 'نەچچە سېكونت',
14800            ss: '%d سېكونت',
14801            m: 'بىر مىنۇت',
14802            mm: '%d مىنۇت',
14803            h: 'بىر سائەت',
14804            hh: '%d سائەت',
14805            d: 'بىر كۈن',
14806            dd: '%d كۈن',
14807            M: 'بىر ئاي',
14808            MM: '%d ئاي',
14809            y: 'بىر يىل',
14810            yy: '%d يىل',
14811        },
14812
14813        dayOfMonthOrdinalParse: /\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,
14814        ordinal: function (number, period) {
14815            switch (period) {
14816                case 'd':
14817                case 'D':
14818                case 'DDD':
14819                    return number + '-كۈنى';
14820                case 'w':
14821                case 'W':
14822                    return number + '-ھەپتە';
14823                default:
14824                    return number;
14825            }
14826        },
14827        preparse: function (string) {
14828            return string.replace(/،/g, ',');
14829        },
14830        postformat: function (string) {
14831            return string.replace(/,/g, '،');
14832        },
14833        week: {
14834            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
14835            dow: 1, // Monday is the first day of the week.
14836            doy: 7, // The week that contains Jan 1st is the first week of the year.
14837        },
14838    });
14839
14840    return ugCn;
14841
14842})));
14843
14844
14845/***/ }),
14846
vendor: 7,421 bytes, lines 14847-15029
14847/***/ "../../node_modules/moment/locale/uk.js":
14848/*!*********************************************************************************************************************************!*\
14849  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/uk.js ***!
14850  \*********************************************************************************************************************************/
14851/*! no static exports found */
14852/***/ (function(module, exports, __webpack_require__) {
14853
14854//! moment.js locale configuration
14855//! locale : Ukrainian [uk]
14856//! author : zemlanin : https://github.com/zemlanin
14857//! Author : Menelion Elensúle : https://github.com/Oire
14858
14859;(function (global, factory) {
14860    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
14861   undefined
14862}(this, (function (moment) { 'use strict';
14863
14864    //! moment.js locale configuration
14865
14866    function plural(word, num) {
14867        var forms = word.split('_');
14868        return num % 10 === 1 && num % 100 !== 11
14869            ? forms[0]
14870            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
14871            ? forms[1]
14872            : forms[2];
14873    }
14874    function relativeTimeWithPlural(number, withoutSuffix, key) {
14875        var format = {
14876            ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',
14877            mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',
14878            hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',
14879            dd: 'день_дні_днів',
14880            MM: 'місяць_місяці_місяців',
14881            yy: 'рік_роки_років',
14882        };
14883        if (key === 'm') {
14884            return withoutSuffix ? 'хвилина' : 'хвилину';
14885        } else if (key === 'h') {
14886            return withoutSuffix ? 'година' : 'годину';
14887        } else {
14888            return number + ' ' + plural(format[key], +number);
14889        }
14890    }
14891    function weekdaysCaseReplace(m, format) {
14892        var weekdays = {
14893                nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(
14894                    '_'
14895                ),
14896                accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(
14897                    '_'
14898                ),
14899                genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(
14900                    '_'
14901                ),
14902            },
14903            nounCase;
14904
14905        if (m === true) {
14906            return weekdays['nominative']
14907                .slice(1, 7)
14908                .concat(weekdays['nominative'].slice(0, 1));
14909        }
14910        if (!m) {
14911            return weekdays['nominative'];
14912        }
14913
14914        nounCase = /(\[[ВвУу]\]) ?dddd/.test(format)
14915            ? 'accusative'
14916            : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format)
14917            ? 'genitive'
14918            : 'nominative';
14919        return weekdays[nounCase][m.day()];
14920    }
14921    function processHoursFunction(str) {
14922        return function () {
14923            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
14924        };
14925    }
14926
14927    var uk = moment.defineLocale('uk', {
14928        months: {
14929            format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(
14930                '_'
14931            ),
14932            standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(
14933                '_'
14934            ),
14935        },
14936        monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(
14937            '_'
14938        ),
14939        weekdays: weekdaysCaseReplace,
14940        weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
14941        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
14942        longDateFormat: {
14943            LT: 'HH:mm',
14944            LTS: 'HH:mm:ss',
14945            L: 'DD.MM.YYYY',
14946            LL: 'D MMMM YYYY р.',
14947            LLL: 'D MMMM YYYY р., HH:mm',
14948            LLLL: 'dddd, D MMMM YYYY р., HH:mm',
14949        },
14950        calendar: {
14951            sameDay: processHoursFunction('[Сьогодні '),
14952            nextDay: processHoursFunction('[Завтра '),
14953            lastDay: processHoursFunction('[Вчора '),
14954            nextWeek: processHoursFunction('[У] dddd ['),
14955            lastWeek: function () {
14956                switch (this.day()) {
14957                    case 0:
14958                    case 3:
14959                    case 5:
14960                    case 6:
14961                        return processHoursFunction('[Минулої] dddd [').call(this);
14962                    case 1:
14963                    case 2:
14964                    case 4:
14965                        return processHoursFunction('[Минулого] dddd [').call(this);
14966                }
14967            },
14968            sameElse: 'L',
14969        },
14970        relativeTime: {
14971            future: 'за %s',
14972            past: '%s тому',
14973            s: 'декілька секунд',
14974            ss: relativeTimeWithPlural,
14975            m: relativeTimeWithPlural,
14976            mm: relativeTimeWithPlural,
14977            h: 'годину',
14978            hh: relativeTimeWithPlural,
14979            d: 'день',
14980            dd: relativeTimeWithPlural,
14981            M: 'місяць',
14982            MM: relativeTimeWithPlural,
14983            y: 'рік',
14984            yy: relativeTimeWithPlural,
14985        },
14986        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
14987        meridiemParse: /ночі|ранку|дня|вечора/,
14988        isPM: function (input) {
14989            return /^(дня|вечора)$/.test(input);
14990        },
14991        meridiem: function (hour, minute, isLower) {
14992            if (hour < 4) {
14993                return 'ночі';
14994            } else if (hour < 12) {
14995                return 'ранку';
14996            } else if (hour < 17) {
14997                return 'дня';
14998            } else {
14999                return 'вечора';
15000            }
15001        },
15002        dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/,
15003        ordinal: function (number, period) {
15004            switch (period) {
15005                case 'M':
15006                case 'd':
15007                case 'DDD':
15008                case 'w':
15009                case 'W':
15010                    return number + '-й';
15011                case 'D':
15012                    return number + '-го';
15013                default:
15014                    return number;
15015            }
15016        },
15017        week: {
15018            dow: 1, // Monday is the first day of the week.
15019            doy: 7, // The week that contains Jan 7th is the first week of the year.
15020        },
15021    });
15022
15023    return uk;
15024
15025})));
15026
15027
15028/***/ }),
15029
vendor: 3,361 bytes, lines 15030-15131
15030/***/ "../../node_modules/moment/locale/ur.js":
15031/*!*********************************************************************************************************************************!*\
15032  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ur.js ***!
15033  \*********************************************************************************************************************************/
15034/*! no static exports found */
15035/***/ (function(module, exports, __webpack_require__) {
15036
15037//! moment.js locale configuration
15038//! locale : Urdu [ur]
15039//! author : Sawood Alam : https://github.com/ibnesayeed
15040//! author : Zack : https://github.com/ZackVision
15041
15042;(function (global, factory) {
15043    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
15044   undefined
15045}(this, (function (moment) { 'use strict';
15046
15047    //! moment.js locale configuration
15048
15049    var months = [
15050            'جنوری',
15051            'فروری',
15052            'مارچ',
15053            'اپریل',
15054            'مئی',
15055            'جون',
15056            'جولائی',
15057            'اگست',
15058            'ستمبر',
15059            'اکتوبر',
15060            'نومبر',
15061            'دسمبر',
15062        ],
15063        days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];
15064
15065    var ur = moment.defineLocale('ur', {
15066        months: months,
15067        monthsShort: months,
15068        weekdays: days,
15069        weekdaysShort: days,
15070        weekdaysMin: days,
15071        longDateFormat: {
15072            LT: 'HH:mm',
15073            LTS: 'HH:mm:ss',
15074            L: 'DD/MM/YYYY',
15075            LL: 'D MMMM YYYY',
15076            LLL: 'D MMMM YYYY HH:mm',
15077            LLLL: 'dddd، D MMMM YYYY HH:mm',
15078        },
15079        meridiemParse: /صبح|شام/,
15080        isPM: function (input) {
15081            return 'شام' === input;
15082        },
15083        meridiem: function (hour, minute, isLower) {
15084            if (hour < 12) {
15085                return 'صبح';
15086            }
15087            return 'شام';
15088        },
15089        calendar: {
15090            sameDay: '[آج بوقت] LT',
15091            nextDay: '[کل بوقت] LT',
15092            nextWeek: 'dddd [بوقت] LT',
15093            lastDay: '[گذشتہ روز بوقت] LT',
15094            lastWeek: '[گذشتہ] dddd [بوقت] LT',
15095            sameElse: 'L',
15096        },
15097        relativeTime: {
15098            future: '%s بعد',
15099            past: '%s قبل',
15100            s: 'چند سیکنڈ',
15101            ss: '%d سیکنڈ',
15102            m: 'ایک منٹ',
15103            mm: '%d منٹ',
15104            h: 'ایک گھنٹہ',
15105            hh: '%d گھنٹے',
15106            d: 'ایک دن',
15107            dd: '%d دن',
15108            M: 'ایک ماہ',
15109            MM: '%d ماہ',
15110            y: 'ایک سال',
15111            yy: '%d سال',
15112        },
15113        preparse: function (string) {
15114            return string.replace(/،/g, ',');
15115        },
15116        postformat: function (string) {
15117            return string.replace(/,/g, '،');
15118        },
15119        week: {
15120            dow: 1, // Monday is the first day of the week.
15121            doy: 4, // The week that contains Jan 4th is the first week of the year.
15122        },
15123    });
15124
15125    return ur;
15126
15127})));
15128
15129
15130/***/ }),
15131
vendor: 2,675 bytes, lines 15132-15204
15132/***/ "../../node_modules/moment/locale/uz-latn.js":
15133/*!**************************************************************************************************************************************!*\
15134  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/uz-latn.js ***!
15135  \**************************************************************************************************************************************/
15136/*! no static exports found */
15137/***/ (function(module, exports, __webpack_require__) {
15138
15139//! moment.js locale configuration
15140//! locale : Uzbek Latin [uz-latn]
15141//! author : Rasulbek Mirzayev : github.com/Rasulbeeek
15142
15143;(function (global, factory) {
15144    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
15145   undefined
15146}(this, (function (moment) { 'use strict';
15147
15148    //! moment.js locale configuration
15149
15150    var uzLatn = moment.defineLocale('uz-latn', {
15151        months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(
15152            '_'
15153        ),
15154        monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),
15155        weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(
15156            '_'
15157        ),
15158        weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),
15159        weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),
15160        longDateFormat: {
15161            LT: 'HH:mm',
15162            LTS: 'HH:mm:ss',
15163            L: 'DD/MM/YYYY',
15164            LL: 'D MMMM YYYY',
15165            LLL: 'D MMMM YYYY HH:mm',
15166            LLLL: 'D MMMM YYYY, dddd HH:mm',
15167        },
15168        calendar: {
15169            sameDay: '[Bugun soat] LT [da]',
15170            nextDay: '[Ertaga] LT [da]',
15171            nextWeek: 'dddd [kuni soat] LT [da]',
15172            lastDay: '[Kecha soat] LT [da]',
15173            lastWeek: "[O'tgan] dddd [kuni soat] LT [da]",
15174            sameElse: 'L',
15175        },
15176        relativeTime: {
15177            future: 'Yaqin %s ichida',
15178            past: 'Bir necha %s oldin',
15179            s: 'soniya',
15180            ss: '%d soniya',
15181            m: 'bir daqiqa',
15182            mm: '%d daqiqa',
15183            h: 'bir soat',
15184            hh: '%d soat',
15185            d: 'bir kun',
15186            dd: '%d kun',
15187            M: 'bir oy',
15188            MM: '%d oy',
15189            y: 'bir yil',
15190            yy: '%d yil',
15191        },
15192        week: {
15193            dow: 1, // Monday is the first day of the week.
15194            doy: 7, // The week that contains Jan 7th is the first week of the year.
15195        },
15196    });
15197
15198    return uzLatn;
15199
15200})));
15201
15202
15203/***/ }),
15204
vendor: 2,899 bytes, lines 15205-15275
15205/***/ "../../node_modules/moment/locale/uz.js":
15206/*!*********************************************************************************************************************************!*\
15207  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/uz.js ***!
15208  \*********************************************************************************************************************************/
15209/*! no static exports found */
15210/***/ (function(module, exports, __webpack_require__) {
15211
15212//! moment.js locale configuration
15213//! locale : Uzbek [uz]
15214//! author : Sardor Muminov : https://github.com/muminoff
15215
15216;(function (global, factory) {
15217    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
15218   undefined
15219}(this, (function (moment) { 'use strict';
15220
15221    //! moment.js locale configuration
15222
15223    var uz = moment.defineLocale('uz', {
15224        months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
15225            '_'
15226        ),
15227        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
15228        weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
15229        weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),
15230        weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
15231        longDateFormat: {
15232            LT: 'HH:mm',
15233            LTS: 'HH:mm:ss',
15234            L: 'DD/MM/YYYY',
15235            LL: 'D MMMM YYYY',
15236            LLL: 'D MMMM YYYY HH:mm',
15237            LLLL: 'D MMMM YYYY, dddd HH:mm',
15238        },
15239        calendar: {
15240            sameDay: '[Бугун соат] LT [да]',
15241            nextDay: '[Эртага] LT [да]',
15242            nextWeek: 'dddd [куни соат] LT [да]',
15243            lastDay: '[Кеча соат] LT [да]',
15244            lastWeek: '[Утган] dddd [куни соат] LT [да]',
15245            sameElse: 'L',
15246        },
15247        relativeTime: {
15248            future: 'Якин %s ичида',
15249            past: 'Бир неча %s олдин',
15250            s: 'фурсат',
15251            ss: '%d фурсат',
15252            m: 'бир дакика',
15253            mm: '%d дакика',
15254            h: 'бир соат',
15255            hh: '%d соат',
15256            d: 'бир кун',
15257            dd: '%d кун',
15258            M: 'бир ой',
15259            MM: '%d ой',
15260            y: 'бир йил',
15261            yy: '%d йил',
15262        },
15263        week: {
15264            dow: 1, // Monday is the first day of the week.
15265            doy: 7, // The week that contains Jan 4th is the first week of the year.
15266        },
15267    });
15268
15269    return uz;
15270
15271})));
15272
15273
15274/***/ }),
15275
vendor: 3,502 bytes, lines 15276-15372
15276/***/ "../../node_modules/moment/locale/vi.js":
15277/*!*********************************************************************************************************************************!*\
15278  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/vi.js ***!
15279  \*********************************************************************************************************************************/
15280/*! no static exports found */
15281/***/ (function(module, exports, __webpack_require__) {
15282
15283//! moment.js locale configuration
15284//! locale : Vietnamese [vi]
15285//! author : Bang Nguyen : https://github.com/bangnk
15286//! author : Chien Kira : https://github.com/chienkira
15287
15288;(function (global, factory) {
15289    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
15290   undefined
15291}(this, (function (moment) { 'use strict';
15292
15293    //! moment.js locale configuration
15294
15295    var vi = moment.defineLocale('vi', {
15296        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(
15297            '_'
15298        ),
15299        monthsShort: 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(
15300            '_'
15301        ),
15302        monthsParseExact: true,
15303        weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(
15304            '_'
15305        ),
15306        weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
15307        weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
15308        weekdaysParseExact: true,
15309        meridiemParse: /sa|ch/i,
15310        isPM: function (input) {
15311            return /^ch$/i.test(input);
15312        },
15313        meridiem: function (hours, minutes, isLower) {
15314            if (hours < 12) {
15315                return isLower ? 'sa' : 'SA';
15316            } else {
15317                return isLower ? 'ch' : 'CH';
15318            }
15319        },
15320        longDateFormat: {
15321            LT: 'HH:mm',
15322            LTS: 'HH:mm:ss',
15323            L: 'DD/MM/YYYY',
15324            LL: 'D MMMM [năm] YYYY',
15325            LLL: 'D MMMM [năm] YYYY HH:mm',
15326            LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',
15327            l: 'DD/M/YYYY',
15328            ll: 'D MMM YYYY',
15329            lll: 'D MMM YYYY HH:mm',
15330            llll: 'ddd, D MMM YYYY HH:mm',
15331        },
15332        calendar: {
15333            sameDay: '[Hôm nay lúc] LT',
15334            nextDay: '[Ngày mai lúc] LT',
15335            nextWeek: 'dddd [tuần tới lúc] LT',
15336            lastDay: '[Hôm qua lúc] LT',
15337            lastWeek: 'dddd [tuần trước lúc] LT',
15338            sameElse: 'L',
15339        },
15340        relativeTime: {
15341            future: '%s tới',
15342            past: '%s trước',
15343            s: 'vài giây',
15344            ss: '%d giây',
15345            m: 'một phút',
15346            mm: '%d phút',
15347            h: 'một giờ',
15348            hh: '%d giờ',
15349            d: 'một ngày',
15350            dd: '%d ngày',
15351            M: 'một tháng',
15352            MM: '%d tháng',
15353            y: 'một năm',
15354            yy: '%d năm',
15355        },
15356        dayOfMonthOrdinalParse: /\d{1,2}/,
15357        ordinal: function (number) {
15358            return number;
15359        },
15360        week: {
15361            dow: 1, // Monday is the first day of the week.
15362            doy: 4, // The week that contains Jan 4th is the first week of the year.
15363        },
15364    });
15365
15366    return vi;
15367
15368})));
15369
15370
15371/***/ }),
15372
vendor: 3,464 bytes, lines 15373-15463
15373/***/ "../../node_modules/moment/locale/x-pseudo.js":
15374/*!***************************************************************************************************************************************!*\
15375  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/x-pseudo.js ***!
15376  \***************************************************************************************************************************************/
15377/*! no static exports found */
15378/***/ (function(module, exports, __webpack_require__) {
15379
15380//! moment.js locale configuration
15381//! locale : Pseudo [x-pseudo]
15382//! author : Andrew Hood : https://github.com/andrewhood125
15383
15384;(function (global, factory) {
15385    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
15386   undefined
15387}(this, (function (moment) { 'use strict';
15388
15389    //! moment.js locale configuration
15390
15391    var xPseudo = moment.defineLocale('x-pseudo', {
15392        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(
15393            '_'
15394        ),
15395        monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(
15396            '_'
15397        ),
15398        monthsParseExact: true,
15399        weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(
15400            '_'
15401        ),
15402        weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),
15403        weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),
15404        weekdaysParseExact: true,
15405        longDateFormat: {
15406            LT: 'HH:mm',
15407            L: 'DD/MM/YYYY',
15408            LL: 'D MMMM YYYY',
15409            LLL: 'D MMMM YYYY HH:mm',
15410            LLLL: 'dddd, D MMMM YYYY HH:mm',
15411        },
15412        calendar: {
15413            sameDay: '[T~ódá~ý át] LT',
15414            nextDay: '[T~ómó~rró~w át] LT',
15415            nextWeek: 'dddd [át] LT',
15416            lastDay: '[Ý~ést~érdá~ý át] LT',
15417            lastWeek: '[L~ást] dddd [át] LT',
15418            sameElse: 'L',
15419        },
15420        relativeTime: {
15421            future: 'í~ñ %s',
15422            past: '%s á~gó',
15423            s: 'á ~féw ~sécó~ñds',
15424            ss: '%d s~écóñ~ds',
15425            m: 'á ~míñ~úté',
15426            mm: '%d m~íñú~tés',
15427            h: 'á~ñ hó~úr',
15428            hh: '%d h~óúrs',
15429            d: 'á ~dáý',
15430            dd: '%d d~áýs',
15431            M: 'á ~móñ~th',
15432            MM: '%d m~óñt~hs',
15433            y: 'á ~ýéár',
15434            yy: '%d ý~éárs',
15435        },
15436        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
15437        ordinal: function (number) {
15438            var b = number % 10,
15439                output =
15440                    ~~((number % 100) / 10) === 1
15441                        ? 'th'
15442                        : b === 1
15443                        ? 'st'
15444                        : b === 2
15445                        ? 'nd'
15446                        : b === 3
15447                        ? 'rd'
15448                        : 'th';
15449            return number + output;
15450        },
15451        week: {
15452            dow: 1, // Monday is the first day of the week.
15453            doy: 4, // The week that contains Jan 4th is the first week of the year.
15454        },
15455    });
15456
15457    return xPseudo;
15458
15459})));
15460
15461
15462/***/ }),
15463
vendor: 2,911 bytes, lines 15464-15536
15464/***/ "../../node_modules/moment/locale/yo.js":
15465/*!*********************************************************************************************************************************!*\
15466  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/yo.js ***!
15467  \*********************************************************************************************************************************/
15468/*! no static exports found */
15469/***/ (function(module, exports, __webpack_require__) {
15470
15471//! moment.js locale configuration
15472//! locale : Yoruba Nigeria [yo]
15473//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe
15474
15475;(function (global, factory) {
15476    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
15477   undefined
15478}(this, (function (moment) { 'use strict';
15479
15480    //! moment.js locale configuration
15481
15482    var yo = moment.defineLocale('yo', {
15483        months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(
15484            '_'
15485        ),
15486        monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),
15487        weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),
15488        weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),
15489        weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),
15490        longDateFormat: {
15491            LT: 'h:mm A',
15492            LTS: 'h:mm:ss A',
15493            L: 'DD/MM/YYYY',
15494            LL: 'D MMMM YYYY',
15495            LLL: 'D MMMM YYYY h:mm A',
15496            LLLL: 'dddd, D MMMM YYYY h:mm A',
15497        },
15498        calendar: {
15499            sameDay: '[Ònì ni] LT',
15500            nextDay: '[Ọ̀la ni] LT',
15501            nextWeek: "dddd [Ọsẹ̀ tón'bọ] [ni] LT",
15502            lastDay: '[Àna ni] LT',
15503            lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',
15504            sameElse: 'L',
15505        },
15506        relativeTime: {
15507            future: 'ní %s',
15508            past: '%s kọjá',
15509            s: 'ìsẹjú aayá die',
15510            ss: 'aayá %d',
15511            m: 'ìsẹjú kan',
15512            mm: 'ìsẹjú %d',
15513            h: 'wákati kan',
15514            hh: 'wákati %d',
15515            d: 'ọjọ́ kan',
15516            dd: 'ọjọ́ %d',
15517            M: 'osù kan',
15518            MM: 'osù %d',
15519            y: 'ọdún kan',
15520            yy: 'ọdún %d',
15521        },
15522        dayOfMonthOrdinalParse: /ọjọ́\s\d{1,2}/,
15523        ordinal: 'ọjọ́ %d',
15524        week: {
15525            dow: 1, // Monday is the first day of the week.
15526            doy: 4, // The week that contains Jan 4th is the first week of the year.
15527        },
15528    });
15529
15530    return yo;
15531
15532})));
15533
15534
15535/***/ }),
15536
vendor: 5,026 bytes, lines 15537-15674
15537/***/ "../../node_modules/moment/locale/zh-cn.js":
15538/*!************************************************************************************************************************************!*\
15539  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/zh-cn.js ***!
15540  \************************************************************************************************************************************/
15541/*! no static exports found */
15542/***/ (function(module, exports, __webpack_require__) {
15543
15544//! moment.js locale configuration
15545//! locale : Chinese (China) [zh-cn]
15546//! author : suupic : https://github.com/suupic
15547//! author : Zeno Zeng : https://github.com/zenozeng
15548//! author : uu109 : https://github.com/uu109
15549
15550;(function (global, factory) {
15551    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
15552   undefined
15553}(this, (function (moment) { 'use strict';
15554
15555    //! moment.js locale configuration
15556
15557    var zhCn = moment.defineLocale('zh-cn', {
15558        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
15559            '_'
15560        ),
15561        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
15562            '_'
15563        ),
15564        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
15565        weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
15566        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
15567        longDateFormat: {
15568            LT: 'HH:mm',
15569            LTS: 'HH:mm:ss',
15570            L: 'YYYY/MM/DD',
15571            LL: 'YYYY年M月D日',
15572            LLL: 'YYYY年M月D日Ah点mm分',
15573            LLLL: 'YYYY年M月D日ddddAh点mm分',
15574            l: 'YYYY/M/D',
15575            ll: 'YYYY年M月D日',
15576            lll: 'YYYY年M月D日 HH:mm',
15577            llll: 'YYYY年M月D日dddd HH:mm',
15578        },
15579        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
15580        meridiemHour: function (hour, meridiem) {
15581            if (hour === 12) {
15582                hour = 0;
15583            }
15584            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
15585                return hour;
15586            } else if (meridiem === '下午' || meridiem === '晚上') {
15587                return hour + 12;
15588            } else {
15589                // '中午'
15590                return hour >= 11 ? hour : hour + 12;
15591            }
15592        },
15593        meridiem: function (hour, minute, isLower) {
15594            var hm = hour * 100 + minute;
15595            if (hm < 600) {
15596                return '凌晨';
15597            } else if (hm < 900) {
15598                return '早上';
15599            } else if (hm < 1130) {
15600                return '上午';
15601            } else if (hm < 1230) {
15602                return '中午';
15603            } else if (hm < 1800) {
15604                return '下午';
15605            } else {
15606                return '晚上';
15607            }
15608        },
15609        calendar: {
15610            sameDay: '[今天]LT',
15611            nextDay: '[明天]LT',
15612            nextWeek: function (now) {
15613                if (now.week() !== this.week()) {
15614                    return '[下]dddLT';
15615                } else {
15616                    return '[本]dddLT';
15617                }
15618            },
15619            lastDay: '[昨天]LT',
15620            lastWeek: function (now) {
15621                if (this.week() !== now.week()) {
15622                    return '[上]dddLT';
15623                } else {
15624                    return '[本]dddLT';
15625                }
15626            },
15627            sameElse: 'L',
15628        },
15629        dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
15630        ordinal: function (number, period) {
15631            switch (period) {
15632                case 'd':
15633                case 'D':
15634                case 'DDD':
15635                    return number + '日';
15636                case 'M':
15637                    return number + '月';
15638                case 'w':
15639                case 'W':
15640                    return number + '周';
15641                default:
15642                    return number;
15643            }
15644        },
15645        relativeTime: {
15646            future: '%s后',
15647            past: '%s前',
15648            s: '几秒',
15649            ss: '%d 秒',
15650            m: '1 分钟',
15651            mm: '%d 分钟',
15652            h: '1 小时',
15653            hh: '%d 小时',
15654            d: '1 天',
15655            dd: '%d 天',
15656            M: '1 个月',
15657            MM: '%d 个月',
15658            y: '1 å¹´',
15659            yy: '%d å¹´',
15660        },
15661        week: {
15662            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
15663            dow: 1, // Monday is the first day of the week.
15664            doy: 4, // The week that contains Jan 4th is the first week of the year.
15665        },
15666    });
15667
15668    return zhCn;
15669
15670})));
15671
15672
15673/***/ }),
15674
vendor: 4,384 bytes, lines 15675-15795
15675/***/ "../../node_modules/moment/locale/zh-hk.js":
15676/*!************************************************************************************************************************************!*\
15677  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/zh-hk.js ***!
15678  \************************************************************************************************************************************/
15679/*! no static exports found */
15680/***/ (function(module, exports, __webpack_require__) {
15681
15682//! moment.js locale configuration
15683//! locale : Chinese (Hong Kong) [zh-hk]
15684//! author : Ben : https://github.com/ben-lin
15685//! author : Chris Lam : https://github.com/hehachris
15686//! author : Konstantin : https://github.com/skfd
15687//! author : Anthony : https://github.com/anthonylau
15688
15689;(function (global, factory) {
15690    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
15691   undefined
15692}(this, (function (moment) { 'use strict';
15693
15694    //! moment.js locale configuration
15695
15696    var zhHk = moment.defineLocale('zh-hk', {
15697        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
15698            '_'
15699        ),
15700        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
15701            '_'
15702        ),
15703        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
15704        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
15705        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
15706        longDateFormat: {
15707            LT: 'HH:mm',
15708            LTS: 'HH:mm:ss',
15709            L: 'YYYY/MM/DD',
15710            LL: 'YYYY年M月D日',
15711            LLL: 'YYYY年M月D日 HH:mm',
15712            LLLL: 'YYYY年M月D日dddd HH:mm',
15713            l: 'YYYY/M/D',
15714            ll: 'YYYY年M月D日',
15715            lll: 'YYYY年M月D日 HH:mm',
15716            llll: 'YYYY年M月D日dddd HH:mm',
15717        },
15718        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
15719        meridiemHour: function (hour, meridiem) {
15720            if (hour === 12) {
15721                hour = 0;
15722            }
15723            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
15724                return hour;
15725            } else if (meridiem === '中午') {
15726                return hour >= 11 ? hour : hour + 12;
15727            } else if (meridiem === '下午' || meridiem === '晚上') {
15728                return hour + 12;
15729            }
15730        },
15731        meridiem: function (hour, minute, isLower) {
15732            var hm = hour * 100 + minute;
15733            if (hm < 600) {
15734                return '凌晨';
15735            } else if (hm < 900) {
15736                return '早上';
15737            } else if (hm < 1200) {
15738                return '上午';
15739            } else if (hm === 1200) {
15740                return '中午';
15741            } else if (hm < 1800) {
15742                return '下午';
15743            } else {
15744                return '晚上';
15745            }
15746        },
15747        calendar: {
15748            sameDay: '[今天]LT',
15749            nextDay: '[明天]LT',
15750            nextWeek: '[下]ddddLT',
15751            lastDay: '[昨天]LT',
15752            lastWeek: '[上]ddddLT',
15753            sameElse: 'L',
15754        },
15755        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
15756        ordinal: function (number, period) {
15757            switch (period) {
15758                case 'd':
15759                case 'D':
15760                case 'DDD':
15761                    return number + '日';
15762                case 'M':
15763                    return number + '月';
15764                case 'w':
15765                case 'W':
15766                    return number + '週';
15767                default:
15768                    return number;
15769            }
15770        },
15771        relativeTime: {
15772            future: '%s後',
15773            past: '%s前',
15774            s: '幾秒',
15775            ss: '%d 秒',
15776            m: '1 分鐘',
15777            mm: '%d 分鐘',
15778            h: '1 小時',
15779            hh: '%d 小時',
15780            d: '1 天',
15781            dd: '%d 天',
15782            M: '1 個月',
15783            MM: '%d 個月',
15784            y: '1 å¹´',
15785            yy: '%d å¹´',
15786        },
15787    });
15788
15789    return zhHk;
15790
15791})));
15792
15793
15794/***/ }),
15795
vendor: 4,333 bytes, lines 15796-15915
15796/***/ "../../node_modules/moment/locale/zh-mo.js":
15797/*!************************************************************************************************************************************!*\
15798  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/zh-mo.js ***!
15799  \************************************************************************************************************************************/
15800/*! no static exports found */
15801/***/ (function(module, exports, __webpack_require__) {
15802
15803//! moment.js locale configuration
15804//! locale : Chinese (Macau) [zh-mo]
15805//! author : Ben : https://github.com/ben-lin
15806//! author : Chris Lam : https://github.com/hehachris
15807//! author : Tan Yuanhong : https://github.com/le0tan
15808
15809;(function (global, factory) {
15810    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
15811   undefined
15812}(this, (function (moment) { 'use strict';
15813
15814    //! moment.js locale configuration
15815
15816    var zhMo = moment.defineLocale('zh-mo', {
15817        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
15818            '_'
15819        ),
15820        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
15821            '_'
15822        ),
15823        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
15824        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
15825        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
15826        longDateFormat: {
15827            LT: 'HH:mm',
15828            LTS: 'HH:mm:ss',
15829            L: 'DD/MM/YYYY',
15830            LL: 'YYYY年M月D日',
15831            LLL: 'YYYY年M月D日 HH:mm',
15832            LLLL: 'YYYY年M月D日dddd HH:mm',
15833            l: 'D/M/YYYY',
15834            ll: 'YYYY年M月D日',
15835            lll: 'YYYY年M月D日 HH:mm',
15836            llll: 'YYYY年M月D日dddd HH:mm',
15837        },
15838        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
15839        meridiemHour: function (hour, meridiem) {
15840            if (hour === 12) {
15841                hour = 0;
15842            }
15843            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
15844                return hour;
15845            } else if (meridiem === '中午') {
15846                return hour >= 11 ? hour : hour + 12;
15847            } else if (meridiem === '下午' || meridiem === '晚上') {
15848                return hour + 12;
15849            }
15850        },
15851        meridiem: function (hour, minute, isLower) {
15852            var hm = hour * 100 + minute;
15853            if (hm < 600) {
15854                return '凌晨';
15855            } else if (hm < 900) {
15856                return '早上';
15857            } else if (hm < 1130) {
15858                return '上午';
15859            } else if (hm < 1230) {
15860                return '中午';
15861            } else if (hm < 1800) {
15862                return '下午';
15863            } else {
15864                return '晚上';
15865            }
15866        },
15867        calendar: {
15868            sameDay: '[今天] LT',
15869            nextDay: '[明天] LT',
15870            nextWeek: '[下]dddd LT',
15871            lastDay: '[昨天] LT',
15872            lastWeek: '[上]dddd LT',
15873            sameElse: 'L',
15874        },
15875        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
15876        ordinal: function (number, period) {
15877            switch (period) {
15878                case 'd':
15879                case 'D':
15880                case 'DDD':
15881                    return number + '日';
15882                case 'M':
15883                    return number + '月';
15884                case 'w':
15885                case 'W':
15886                    return number + '週';
15887                default:
15888                    return number;
15889            }
15890        },
15891        relativeTime: {
15892            future: '%s內',
15893            past: '%s前',
15894            s: '幾秒',
15895            ss: '%d 秒',
15896            m: '1 分鐘',
15897            mm: '%d 分鐘',
15898            h: '1 小時',
15899            hh: '%d 小時',
15900            d: '1 天',
15901            dd: '%d 天',
15902            M: '1 個月',
15903            MM: '%d 個月',
15904            y: '1 å¹´',
15905            yy: '%d å¹´',
15906        },
15907    });
15908
15909    return zhMo;
15910
15911})));
15912
15913
15914/***/ }),
15915
vendor: 4,279 bytes, lines 15916-16034
15916/***/ "../../node_modules/moment/locale/zh-tw.js":
15917/*!************************************************************************************************************************************!*\
15918  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/zh-tw.js ***!
15919  \************************************************************************************************************************************/
15920/*! no static exports found */
15921/***/ (function(module, exports, __webpack_require__) {
15922
15923//! moment.js locale configuration
15924//! locale : Chinese (Taiwan) [zh-tw]
15925//! author : Ben : https://github.com/ben-lin
15926//! author : Chris Lam : https://github.com/hehachris
15927
15928;(function (global, factory) {
15929    true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) :
15930   undefined
15931}(this, (function (moment) { 'use strict';
15932
15933    //! moment.js locale configuration
15934
15935    var zhTw = moment.defineLocale('zh-tw', {
15936        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
15937            '_'
15938        ),
15939        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
15940            '_'
15941        ),
15942        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
15943        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
15944        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
15945        longDateFormat: {
15946            LT: 'HH:mm',
15947            LTS: 'HH:mm:ss',
15948            L: 'YYYY/MM/DD',
15949            LL: 'YYYY年M月D日',
15950            LLL: 'YYYY年M月D日 HH:mm',
15951            LLLL: 'YYYY年M月D日dddd HH:mm',
15952            l: 'YYYY/M/D',
15953            ll: 'YYYY年M月D日',
15954            lll: 'YYYY年M月D日 HH:mm',
15955            llll: 'YYYY年M月D日dddd HH:mm',
15956        },
15957        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
15958        meridiemHour: function (hour, meridiem) {
15959            if (hour === 12) {
15960                hour = 0;
15961            }
15962            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
15963                return hour;
15964            } else if (meridiem === '中午') {
15965                return hour >= 11 ? hour : hour + 12;
15966            } else if (meridiem === '下午' || meridiem === '晚上') {
15967                return hour + 12;
15968            }
15969        },
15970        meridiem: function (hour, minute, isLower) {
15971            var hm = hour * 100 + minute;
15972            if (hm < 600) {
15973                return '凌晨';
15974            } else if (hm < 900) {
15975                return '早上';
15976            } else if (hm < 1130) {
15977                return '上午';
15978            } else if (hm < 1230) {
15979                return '中午';
15980            } else if (hm < 1800) {
15981                return '下午';
15982            } else {
15983                return '晚上';
15984            }
15985        },
15986        calendar: {
15987            sameDay: '[今天] LT',
15988            nextDay: '[明天] LT',
15989            nextWeek: '[下]dddd LT',
15990            lastDay: '[昨天] LT',
15991            lastWeek: '[上]dddd LT',
15992            sameElse: 'L',
15993        },
15994        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
15995        ordinal: function (number, period) {
15996            switch (period) {
15997                case 'd':
15998                case 'D':
15999                case 'DDD':
16000                    return number + '日';
16001                case 'M':
16002                    return number + '月';
16003                case 'w':
16004                case 'W':
16005                    return number + '週';
16006                default:
16007                    return number;
16008            }
16009        },
16010        relativeTime: {
16011            future: '%s後',
16012            past: '%s前',
16013            s: '幾秒',
16014            ss: '%d 秒',
16015            m: '1 分鐘',
16016            mm: '%d 分鐘',
16017            h: '1 小時',
16018            hh: '%d 小時',
16019            d: '1 天',
16020            dd: '%d 天',
16021            M: '1 個月',
16022            MM: '%d 個月',
16023            y: '1 å¹´',
16024            yy: '%d å¹´',
16025        },
16026    });
16027
16028    return zhTw;
16029
16030})));
16031
16032
16033/***/ }),
16034
vendor: 180,181 bytes, lines 16035-21713
16035/***/ "../../node_modules/moment/moment.js":
16036/*!******************************************************************************************************************************!*\
16037  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/moment.js ***!
16038  \******************************************************************************************************************************/
16039/*! no static exports found */
16040/***/ (function(module, exports, __webpack_require__) {
16041
16042/* WEBPACK VAR INJECTION */(function(module) {var require;//! moment.js
16043//! version : 2.27.0
16044//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
16045//! license : MIT
16046//! momentjs.com
16047
16048;(function (global, factory) {
16049     true ? module.exports = factory() :
16050    undefined
16051}(this, (function () { 'use strict';
16052
16053    var hookCallback;
16054
16055    function hooks() {
16056        return hookCallback.apply(null, arguments);
16057    }
16058
16059    // This is done to register the method called with moment()
16060    // without creating circular dependencies.
16061    function setHookCallback(callback) {
16062        hookCallback = callback;
16063    }
16064
16065    function isArray(input) {
16066        return (
16067            input instanceof Array ||
16068            Object.prototype.toString.call(input) === '[object Array]'
16069        );
16070    }
16071
16072    function isObject(input) {
16073        // IE8 will treat undefined and null as object if it wasn't for
16074        // input != null
16075        return (
16076            input != null &&
16077            Object.prototype.toString.call(input) === '[object Object]'
16078        );
16079    }
16080
16081    function hasOwnProp(a, b) {
16082        return Object.prototype.hasOwnProperty.call(a, b);
16083    }
16084
16085    function isObjectEmpty(obj) {
16086        if (Object.getOwnPropertyNames) {
16087            return Object.getOwnPropertyNames(obj).length === 0;
16088        } else {
16089            var k;
16090            for (k in obj) {
16091                if (hasOwnProp(obj, k)) {
16092                    return false;
16093                }
16094            }
16095            return true;
16096        }
16097    }
16098
16099    function isUndefined(input) {
16100        return input === void 0;
16101    }
16102
16103    function isNumber(input) {
16104        return (
16105            typeof input === 'number' ||
16106            Object.prototype.toString.call(input) === '[object Number]'
16107        );
16108    }
16109
16110    function isDate(input) {
16111        return (
16112            input instanceof Date ||
16113            Object.prototype.toString.call(input) === '[object Date]'
16114        );
16115    }
16116
16117    function map(arr, fn) {
16118        var res = [],
16119            i;
16120        for (i = 0; i < arr.length; ++i) {
16121            res.push(fn(arr[i], i));
16122        }
16123        return res;
16124    }
16125
16126    function extend(a, b) {
16127        for (var i in b) {
16128            if (hasOwnProp(b, i)) {
16129                a[i] = b[i];
16130            }
16131        }
16132
16133        if (hasOwnProp(b, 'toString')) {
16134            a.toString = b.toString;
16135        }
16136
16137        if (hasOwnProp(b, 'valueOf')) {
16138            a.valueOf = b.valueOf;
16139        }
16140
16141        return a;
16142    }
16143
16144    function createUTC(input, format, locale, strict) {
16145        return createLocalOrUTC(input, format, locale, strict, true).utc();
16146    }
16147
16148    function defaultParsingFlags() {
16149        // We need to deep clone this object.
16150        return {
16151            empty: false,
16152            unusedTokens: [],
16153            unusedInput: [],
16154            overflow: -2,
16155            charsLeftOver: 0,
16156            nullInput: false,
16157            invalidEra: null,
16158            invalidMonth: null,
16159            invalidFormat: false,
16160            userInvalidated: false,
16161            iso: false,
16162            parsedDateParts: [],
16163            era: null,
16164            meridiem: null,
16165            rfc2822: false,
16166            weekdayMismatch: false,
16167        };
16168    }
16169
16170    function getParsingFlags(m) {
16171        if (m._pf == null) {
16172            m._pf = defaultParsingFlags();
16173        }
16174        return m._pf;
16175    }
16176
16177    var some;
16178    if (Array.prototype.some) {
16179        some = Array.prototype.some;
16180    } else {
16181        some = function (fun) {
16182            var t = Object(this),
16183                len = t.length >>> 0,
16184                i;
16185
16186            for (i = 0; i < len; i++) {
16187                if (i in t && fun.call(this, t[i], i, t)) {
16188                    return true;
16189                }
16190            }
16191
16192            return false;
16193        };
16194    }
16195
16196    function isValid(m) {
16197        if (m._isValid == null) {
16198            var flags = getParsingFlags(m),
16199                parsedParts = some.call(flags.parsedDateParts, function (i) {
16200                    return i != null;
16201                }),
16202                isNowValid =
16203                    !isNaN(m._d.getTime()) &&
16204                    flags.overflow < 0 &&
16205                    !flags.empty &&
16206                    !flags.invalidEra &&
16207                    !flags.invalidMonth &&
16208                    !flags.invalidWeekday &&
16209                    !flags.weekdayMismatch &&
16210                    !flags.nullInput &&
16211                    !flags.invalidFormat &&
16212                    !flags.userInvalidated &&
16213                    (!flags.meridiem || (flags.meridiem && parsedParts));
16214
16215            if (m._strict) {
16216                isNowValid =
16217                    isNowValid &&
16218                    flags.charsLeftOver === 0 &&
16219                    flags.unusedTokens.length === 0 &&
16220                    flags.bigHour === undefined;
16221            }
16222
16223            if (Object.isFrozen == null || !Object.isFrozen(m)) {
16224                m._isValid = isNowValid;
16225            } else {
16226                return isNowValid;
16227            }
16228        }
16229        return m._isValid;
16230    }
16231
16232    function createInvalid(flags) {
16233        var m = createUTC(NaN);
16234        if (flags != null) {
16235            extend(getParsingFlags(m), flags);
16236        } else {
16237            getParsingFlags(m).userInvalidated = true;
16238        }
16239
16240        return m;
16241    }
16242
16243    // Plugins that add properties should also add the key here (null value),
16244    // so we can properly clone ourselves.
16245    var momentProperties = (hooks.momentProperties = []),
16246        updateInProgress = false;
16247
16248    function copyConfig(to, from) {
16249        var i, prop, val;
16250
16251        if (!isUndefined(from._isAMomentObject)) {
16252            to._isAMomentObject = from._isAMomentObject;
16253        }
16254        if (!isUndefined(from._i)) {
16255            to._i = from._i;
16256        }
16257        if (!isUndefined(from._f)) {
16258            to._f = from._f;
16259        }
16260        if (!isUndefined(from._l)) {
16261            to._l = from._l;
16262        }
16263        if (!isUndefined(from._strict)) {
16264            to._strict = from._strict;
16265        }
16266        if (!isUndefined(from._tzm)) {
16267            to._tzm = from._tzm;
16268        }
16269        if (!isUndefined(from._isUTC)) {
16270            to._isUTC = from._isUTC;
16271        }
16272        if (!isUndefined(from._offset)) {
16273            to._offset = from._offset;
16274        }
16275        if (!isUndefined(from._pf)) {
16276            to._pf = getParsingFlags(from);
16277        }
16278        if (!isUndefined(from._locale)) {
16279            to._locale = from._locale;
16280        }
16281
16282        if (momentProperties.length > 0) {
16283            for (i = 0; i < momentProperties.length; i++) {
16284                prop = momentProperties[i];
16285                val = from[prop];
16286                if (!isUndefined(val)) {
16287                    to[prop] = val;
16288                }
16289            }
16290        }
16291
16292        return to;
16293    }
16294
16295    // Moment prototype object
16296    function Moment(config) {
16297        copyConfig(this, config);
16298        this._d = new Date(config._d != null ? config._d.getTime() : NaN);
16299        if (!this.isValid()) {
16300            this._d = new Date(NaN);
16301        }
16302        // Prevent infinite loop in case updateOffset creates new moment
16303        // objects.
16304        if (updateInProgress === false) {
16305            updateInProgress = true;
16306            hooks.updateOffset(this);
16307            updateInProgress = false;
16308        }
16309    }
16310
16311    function isMoment(obj) {
16312        return (
16313            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)
16314        );
16315    }
16316
16317    function warn(msg) {
16318        if (
16319            hooks.suppressDeprecationWarnings === false &&
16320            typeof console !== 'undefined' &&
16321            console.warn
16322        ) {
16323            console.warn('Deprecation warning: ' + msg);
16324        }
16325    }
16326
16327    function deprecate(msg, fn) {
16328        var firstTime = true;
16329
16330        return extend(function () {
16331            if (hooks.deprecationHandler != null) {
16332                hooks.deprecationHandler(null, msg);
16333            }
16334            if (firstTime) {
16335                var args = [],
16336                    arg,
16337                    i,
16338                    key;
16339                for (i = 0; i < arguments.length; i++) {
16340                    arg = '';
16341                    if (typeof arguments[i] === 'object') {
16342                        arg += '\n[' + i + '] ';
16343                        for (key in arguments[0]) {
16344                            if (hasOwnProp(arguments[0], key)) {
16345                                arg += key + ': ' + arguments[0][key] + ', ';
16346                            }
16347                        }
16348                        arg = arg.slice(0, -2); // Remove trailing comma and space
16349                    } else {
16350                        arg = arguments[i];
16351                    }
16352                    args.push(arg);
16353                }
16354                warn(
16355                    msg +
16356                        '\nArguments: ' +
16357                        Array.prototype.slice.call(args).join('') +
16358                        '\n' +
16359                        new Error().stack
16360                );
16361                firstTime = false;
16362            }
16363            return fn.apply(this, arguments);
16364        }, fn);
16365    }
16366
16367    var deprecations = {};
16368
16369    function deprecateSimple(name, msg) {
16370        if (hooks.deprecationHandler != null) {
16371            hooks.deprecationHandler(name, msg);
16372        }
16373        if (!deprecations[name]) {
16374            warn(msg);
16375            deprecations[name] = true;
16376        }
16377    }
16378
16379    hooks.suppressDeprecationWarnings = false;
16380    hooks.deprecationHandler = null;
16381
16382    function isFunction(input) {
16383        return (
16384            (typeof Function !== 'undefined' && input instanceof Function) ||
16385            Object.prototype.toString.call(input) === '[object Function]'
16386        );
16387    }
16388
16389    function set(config) {
16390        var prop, i;
16391        for (i in config) {
16392            if (hasOwnProp(config, i)) {
16393                prop = config[i];
16394                if (isFunction(prop)) {
16395                    this[i] = prop;
16396                } else {
16397                    this['_' + i] = prop;
16398                }
16399            }
16400        }
16401        this._config = config;
16402        // Lenient ordinal parsing accepts just a number in addition to
16403        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.
16404        // TODO: Remove "ordinalParse" fallback in next major release.
16405        this._dayOfMonthOrdinalParseLenient = new RegExp(
16406            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +
16407                '|' +
16408                /\d{1,2}/.source
16409        );
16410    }
16411
16412    function mergeConfigs(parentConfig, childConfig) {
16413        var res = extend({}, parentConfig),
16414            prop;
16415        for (prop in childConfig) {
16416            if (hasOwnProp(childConfig, prop)) {
16417                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
16418                    res[prop] = {};
16419                    extend(res[prop], parentConfig[prop]);
16420                    extend(res[prop], childConfig[prop]);
16421                } else if (childConfig[prop] != null) {
16422                    res[prop] = childConfig[prop];
16423                } else {
16424                    delete res[prop];
16425                }
16426            }
16427        }
16428        for (prop in parentConfig) {
16429            if (
16430                hasOwnProp(parentConfig, prop) &&
16431                !hasOwnProp(childConfig, prop) &&
16432                isObject(parentConfig[prop])
16433            ) {
16434                // make sure changes to properties don't modify parent config
16435                res[prop] = extend({}, res[prop]);
16436            }
16437        }
16438        return res;
16439    }
16440
16441    function Locale(config) {
16442        if (config != null) {
16443            this.set(config);
16444        }
16445    }
16446
16447    var keys;
16448
16449    if (Object.keys) {
16450        keys = Object.keys;
16451    } else {
16452        keys = function (obj) {
16453            var i,
16454                res = [];
16455            for (i in obj) {
16456                if (hasOwnProp(obj, i)) {
16457                    res.push(i);
16458                }
16459            }
16460            return res;
16461        };
16462    }
16463
16464    var defaultCalendar = {
16465        sameDay: '[Today at] LT',
16466        nextDay: '[Tomorrow at] LT',
16467        nextWeek: 'dddd [at] LT',
16468        lastDay: '[Yesterday at] LT',
16469        lastWeek: '[Last] dddd [at] LT',
16470        sameElse: 'L',
16471    };
16472
16473    function calendar(key, mom, now) {
16474        var output = this._calendar[key] || this._calendar['sameElse'];
16475        return isFunction(output) ? output.call(mom, now) : output;
16476    }
16477
16478    function zeroFill(number, targetLength, forceSign) {
16479        var absNumber = '' + Math.abs(number),
16480            zerosToFill = targetLength - absNumber.length,
16481            sign = number >= 0;
16482        return (
16483            (sign ? (forceSign ? '+' : '') : '-') +
16484            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +
16485            absNumber
16486        );
16487    }
16488
16489    var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,
16490        localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
16491        formatFunctions = {},
16492        formatTokenFunctions = {};
16493
16494    // token:    'M'
16495    // padded:   ['MM', 2]
16496    // ordinal:  'Mo'
16497    // callback: function () { this.month() + 1 }
16498    function addFormatToken(token, padded, ordinal, callback) {
16499        var func = callback;
16500        if (typeof callback === 'string') {
16501            func = function () {
16502                return this[callback]();
16503            };
16504        }
16505        if (token) {
16506            formatTokenFunctions[token] = func;
16507        }
16508        if (padded) {
16509            formatTokenFunctions[padded[0]] = function () {
16510                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
16511            };
16512        }
16513        if (ordinal) {
16514            formatTokenFunctions[ordinal] = function () {
16515                return this.localeData().ordinal(
16516                    func.apply(this, arguments),
16517                    token
16518                );
16519            };
16520        }
16521    }
16522
16523    function removeFormattingTokens(input) {
16524        if (input.match(/\[[\s\S]/)) {
16525            return input.replace(/^\[|\]$/g, '');
16526        }
16527        return input.replace(/\\/g, '');
16528    }
16529
16530    function makeFormatFunction(format) {
16531        var array = format.match(formattingTokens),
16532            i,
16533            length;
16534
16535        for (i = 0, length = array.length; i < length; i++) {
16536            if (formatTokenFunctions[array[i]]) {
16537                array[i] = formatTokenFunctions[array[i]];
16538            } else {
16539                array[i] = removeFormattingTokens(array[i]);
16540            }
16541        }
16542
16543        return function (mom) {
16544            var output = '',
16545                i;
16546            for (i = 0; i < length; i++) {
16547                output += isFunction(array[i])
16548                    ? array[i].call(mom, format)
16549                    : array[i];
16550            }
16551            return output;
16552        };
16553    }
16554
16555    // format date using native date object
16556    function formatMoment(m, format) {
16557        if (!m.isValid()) {
16558            return m.localeData().invalidDate();
16559        }
16560
16561        format = expandFormat(format, m.localeData());
16562        formatFunctions[format] =
16563            formatFunctions[format] || makeFormatFunction(format);
16564
16565        return formatFunctions[format](m);
16566    }
16567
16568    function expandFormat(format, locale) {
16569        var i = 5;
16570
16571        function replaceLongDateFormatTokens(input) {
16572            return locale.longDateFormat(input) || input;
16573        }
16574
16575        localFormattingTokens.lastIndex = 0;
16576        while (i >= 0 && localFormattingTokens.test(format)) {
16577            format = format.replace(
16578                localFormattingTokens,
16579                replaceLongDateFormatTokens
16580            );
16581            localFormattingTokens.lastIndex = 0;
16582            i -= 1;
16583        }
16584
16585        return format;
16586    }
16587
16588    var defaultLongDateFormat = {
16589        LTS: 'h:mm:ss A',
16590        LT: 'h:mm A',
16591        L: 'MM/DD/YYYY',
16592        LL: 'MMMM D, YYYY',
16593        LLL: 'MMMM D, YYYY h:mm A',
16594        LLLL: 'dddd, MMMM D, YYYY h:mm A',
16595    };
16596
16597    function longDateFormat(key) {
16598        var format = this._longDateFormat[key],
16599            formatUpper = this._longDateFormat[key.toUpperCase()];
16600
16601        if (format || !formatUpper) {
16602            return format;
16603        }
16604
16605        this._longDateFormat[key] = formatUpper
16606            .match(formattingTokens)
16607            .map(function (tok) {
16608                if (
16609                    tok === 'MMMM' ||
16610                    tok === 'MM' ||
16611                    tok === 'DD' ||
16612                    tok === 'dddd'
16613                ) {
16614                    return tok.slice(1);
16615                }
16616                return tok;
16617            })
16618            .join('');
16619
16620        return this._longDateFormat[key];
16621    }
16622
16623    var defaultInvalidDate = 'Invalid date';
16624
16625    function invalidDate() {
16626        return this._invalidDate;
16627    }
16628
16629    var defaultOrdinal = '%d',
16630        defaultDayOfMonthOrdinalParse = /\d{1,2}/;
16631
16632    function ordinal(number) {
16633        return this._ordinal.replace('%d', number);
16634    }
16635
16636    var defaultRelativeTime = {
16637        future: 'in %s',
16638        past: '%s ago',
16639        s: 'a few seconds',
16640        ss: '%d seconds',
16641        m: 'a minute',
16642        mm: '%d minutes',
16643        h: 'an hour',
16644        hh: '%d hours',
16645        d: 'a day',
16646        dd: '%d days',
16647        w: 'a week',
16648        ww: '%d weeks',
16649        M: 'a month',
16650        MM: '%d months',
16651        y: 'a year',
16652        yy: '%d years',
16653    };
16654
16655    function relativeTime(number, withoutSuffix, string, isFuture) {
16656        var output = this._relativeTime[string];
16657        return isFunction(output)
16658            ? output(number, withoutSuffix, string, isFuture)
16659            : output.replace(/%d/i, number);
16660    }
16661
16662    function pastFuture(diff, output) {
16663        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
16664        return isFunction(format) ? format(output) : format.replace(/%s/i, output);
16665    }
16666
16667    var aliases = {};
16668
16669    function addUnitAlias(unit, shorthand) {
16670        var lowerCase = unit.toLowerCase();
16671        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;
16672    }
16673
16674    function normalizeUnits(units) {
16675        return typeof units === 'string'
16676            ? aliases[units] || aliases[units.toLowerCase()]
16677            : undefined;
16678    }
16679
16680    function normalizeObjectUnits(inputObject) {
16681        var normalizedInput = {},
16682            normalizedProp,
16683            prop;
16684
16685        for (prop in inputObject) {
16686            if (hasOwnProp(inputObject, prop)) {
16687                normalizedProp = normalizeUnits(prop);
16688                if (normalizedProp) {
16689                    normalizedInput[normalizedProp] = inputObject[prop];
16690                }
16691            }
16692        }
16693
16694        return normalizedInput;
16695    }
16696
16697    var priorities = {};
16698
16699    function addUnitPriority(unit, priority) {
16700        priorities[unit] = priority;
16701    }
16702
16703    function getPrioritizedUnits(unitsObj) {
16704        var units = [],
16705            u;
16706        for (u in unitsObj) {
16707            if (hasOwnProp(unitsObj, u)) {
16708                units.push({ unit: u, priority: priorities[u] });
16709            }
16710        }
16711        units.sort(function (a, b) {
16712            return a.priority - b.priority;
16713        });
16714        return units;
16715    }
16716
16717    function isLeapYear(year) {
16718        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
16719    }
16720
16721    function absFloor(number) {
16722        if (number < 0) {
16723            // -0 -> 0
16724            return Math.ceil(number) || 0;
16725        } else {
16726            return Math.floor(number);
16727        }
16728    }
16729
16730    function toInt(argumentForCoercion) {
16731        var coercedNumber = +argumentForCoercion,
16732            value = 0;
16733
16734        if (coercedNumber !== 0 && isFinite(coercedNumber)) {
16735            value = absFloor(coercedNumber);
16736        }
16737
16738        return value;
16739    }
16740
16741    function makeGetSet(unit, keepTime) {
16742        return function (value) {
16743            if (value != null) {
16744                set$1(this, unit, value);
16745                hooks.updateOffset(this, keepTime);
16746                return this;
16747            } else {
16748                return get(this, unit);
16749            }
16750        };
16751    }
16752
16753    function get(mom, unit) {
16754        return mom.isValid()
16755            ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()
16756            : NaN;
16757    }
16758
16759    function set$1(mom, unit, value) {
16760        if (mom.isValid() && !isNaN(value)) {
16761            if (
16762                unit === 'FullYear' &&
16763                isLeapYear(mom.year()) &&
16764                mom.month() === 1 &&
16765                mom.date() === 29
16766            ) {
16767                value = toInt(value);
16768                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](
16769                    value,
16770                    mom.month(),
16771                    daysInMonth(value, mom.month())
16772                );
16773            } else {
16774                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
16775            }
16776        }
16777    }
16778
16779    // MOMENTS
16780
16781    function stringGet(units) {
16782        units = normalizeUnits(units);
16783        if (isFunction(this[units])) {
16784            return this[units]();
16785        }
16786        return this;
16787    }
16788
16789    function stringSet(units, value) {
16790        if (typeof units === 'object') {
16791            units = normalizeObjectUnits(units);
16792            var prioritized = getPrioritizedUnits(units),
16793                i;
16794            for (i = 0; i < prioritized.length; i++) {
16795                this[prioritized[i].unit](units[prioritized[i].unit]);
16796            }
16797        } else {
16798            units = normalizeUnits(units);
16799            if (isFunction(this[units])) {
16800                return this[units](value);
16801            }
16802        }
16803        return this;
16804    }
16805
16806    var match1 = /\d/, //       0 - 9
16807        match2 = /\d\d/, //      00 - 99
16808        match3 = /\d{3}/, //     000 - 999
16809        match4 = /\d{4}/, //    0000 - 9999
16810        match6 = /[+-]?\d{6}/, // -999999 - 999999
16811        match1to2 = /\d\d?/, //       0 - 99
16812        match3to4 = /\d\d\d\d?/, //     999 - 9999
16813        match5to6 = /\d\d\d\d\d\d?/, //   99999 - 999999
16814        match1to3 = /\d{1,3}/, //       0 - 999
16815        match1to4 = /\d{1,4}/, //       0 - 9999
16816        match1to6 = /[+-]?\d{1,6}/, // -999999 - 999999
16817        matchUnsigned = /\d+/, //       0 - inf
16818        matchSigned = /[+-]?\d+/, //    -inf - inf
16819        matchOffset = /Z|[+-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z
16820        matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z
16821        matchTimestamp = /[+-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123
16822        // any word (or two) characters or numbers including two/three word month in arabic.
16823        // includes scottish gaelic two word and hyphenated months
16824        matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,
16825        regexes;
16826
16827    regexes = {};
16828
16829    function addRegexToken(token, regex, strictRegex) {
16830        regexes[token] = isFunction(regex)
16831            ? regex
16832            : function (isStrict, localeData) {
16833                  return isStrict && strictRegex ? strictRegex : regex;
16834              };
16835    }
16836
16837    function getParseRegexForToken(token, config) {
16838        if (!hasOwnProp(regexes, token)) {
16839            return new RegExp(unescapeFormat(token));
16840        }
16841
16842        return regexes[token](config._strict, config._locale);
16843    }
16844
16845    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
16846    function unescapeFormat(s) {
16847        return regexEscape(
16848            s
16849                .replace('\\', '')
16850                .replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (
16851                    matched,
16852                    p1,
16853                    p2,
16854                    p3,
16855                    p4
16856                ) {
16857                    return p1 || p2 || p3 || p4;
16858                })
16859        );
16860    }
16861
16862    function regexEscape(s) {
16863        return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
16864    }
16865
16866    var tokens = {};
16867
16868    function addParseToken(token, callback) {
16869        var i,
16870            func = callback;
16871        if (typeof token === 'string') {
16872            token = [token];
16873        }
16874        if (isNumber(callback)) {
16875            func = function (input, array) {
16876                array[callback] = toInt(input);
16877            };
16878        }
16879        for (i = 0; i < token.length; i++) {
16880            tokens[token[i]] = func;
16881        }
16882    }
16883
16884    function addWeekParseToken(token, callback) {
16885        addParseToken(token, function (input, array, config, token) {
16886            config._w = config._w || {};
16887            callback(input, config._w, config, token);
16888        });
16889    }
16890
16891    function addTimeToArrayFromToken(token, input, config) {
16892        if (input != null && hasOwnProp(tokens, token)) {
16893            tokens[token](input, config._a, config, token);
16894        }
16895    }
16896
16897    var YEAR = 0,
16898        MONTH = 1,
16899        DATE = 2,
16900        HOUR = 3,
16901        MINUTE = 4,
16902        SECOND = 5,
16903        MILLISECOND = 6,
16904        WEEK = 7,
16905        WEEKDAY = 8;
16906
16907    function mod(n, x) {
16908        return ((n % x) + x) % x;
16909    }
16910
16911    var indexOf;
16912
16913    if (Array.prototype.indexOf) {
16914        indexOf = Array.prototype.indexOf;
16915    } else {
16916        indexOf = function (o) {
16917            // I know
16918            var i;
16919            for (i = 0; i < this.length; ++i) {
16920                if (this[i] === o) {
16921                    return i;
16922                }
16923            }
16924            return -1;
16925        };
16926    }
16927
16928    function daysInMonth(year, month) {
16929        if (isNaN(year) || isNaN(month)) {
16930            return NaN;
16931        }
16932        var modMonth = mod(month, 12);
16933        year += (month - modMonth) / 12;
16934        return modMonth === 1
16935            ? isLeapYear(year)
16936                ? 29
16937                : 28
16938            : 31 - ((modMonth % 7) % 2);
16939    }
16940
16941    // FORMATTING
16942
16943    addFormatToken('M', ['MM', 2], 'Mo', function () {
16944        return this.month() + 1;
16945    });
16946
16947    addFormatToken('MMM', 0, 0, function (format) {
16948        return this.localeData().monthsShort(this, format);
16949    });
16950
16951    addFormatToken('MMMM', 0, 0, function (format) {
16952        return this.localeData().months(this, format);
16953    });
16954
16955    // ALIASES
16956
16957    addUnitAlias('month', 'M');
16958
16959    // PRIORITY
16960
16961    addUnitPriority('month', 8);
16962
16963    // PARSING
16964
16965    addRegexToken('M', match1to2);
16966    addRegexToken('MM', match1to2, match2);
16967    addRegexToken('MMM', function (isStrict, locale) {
16968        return locale.monthsShortRegex(isStrict);
16969    });
16970    addRegexToken('MMMM', function (isStrict, locale) {
16971        return locale.monthsRegex(isStrict);
16972    });
16973
16974    addParseToken(['M', 'MM'], function (input, array) {
16975        array[MONTH] = toInt(input) - 1;
16976    });
16977
16978    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
16979        var month = config._locale.monthsParse(input, token, config._strict);
16980        // if we didn't find a month name, mark the date as invalid.
16981        if (month != null) {
16982            array[MONTH] = month;
16983        } else {
16984            getParsingFlags(config).invalidMonth = input;
16985        }
16986    });
16987
16988    // LOCALES
16989
16990    var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
16991            '_'
16992        ),
16993        defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(
16994            '_'
16995        ),
16996        MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,
16997        defaultMonthsShortRegex = matchWord,
16998        defaultMonthsRegex = matchWord;
16999
17000    function localeMonths(m, format) {
17001        if (!m) {
17002            return isArray(this._months)
17003                ? this._months
17004                : this._months['standalone'];
17005        }
17006        return isArray(this._months)
17007            ? this._months[m.month()]
17008            : this._months[
17009                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)
17010                      ? 'format'
17011                      : 'standalone'
17012              ][m.month()];
17013    }
17014
17015    function localeMonthsShort(m, format) {
17016        if (!m) {
17017            return isArray(this._monthsShort)
17018                ? this._monthsShort
17019                : this._monthsShort['standalone'];
17020        }
17021        return isArray(this._monthsShort)
17022            ? this._monthsShort[m.month()]
17023            : this._monthsShort[
17024                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'
17025              ][m.month()];
17026    }
17027
17028    function handleStrictParse(monthName, format, strict) {
17029        var i,
17030            ii,
17031            mom,
17032            llc = monthName.toLocaleLowerCase();
17033        if (!this._monthsParse) {
17034            // this is not used
17035            this._monthsParse = [];
17036            this._longMonthsParse = [];
17037            this._shortMonthsParse = [];
17038            for (i = 0; i < 12; ++i) {
17039                mom = createUTC([2000, i]);
17040                this._shortMonthsParse[i] = this.monthsShort(
17041                    mom,
17042                    ''
17043                ).toLocaleLowerCase();
17044                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
17045            }
17046        }
17047
17048        if (strict) {
17049            if (format === 'MMM') {
17050                ii = indexOf.call(this._shortMonthsParse, llc);
17051                return ii !== -1 ? ii : null;
17052            } else {
17053                ii = indexOf.call(this._longMonthsParse, llc);
17054                return ii !== -1 ? ii : null;
17055            }
17056        } else {
17057            if (format === 'MMM') {
17058                ii = indexOf.call(this._shortMonthsParse, llc);
17059                if (ii !== -1) {
17060                    return ii;
17061                }
17062                ii = indexOf.call(this._longMonthsParse, llc);
17063                return ii !== -1 ? ii : null;
17064            } else {
17065                ii = indexOf.call(this._longMonthsParse, llc);
17066                if (ii !== -1) {
17067                    return ii;
17068                }
17069                ii = indexOf.call(this._shortMonthsParse, llc);
17070                return ii !== -1 ? ii : null;
17071            }
17072        }
17073    }
17074
17075    function localeMonthsParse(monthName, format, strict) {
17076        var i, mom, regex;
17077
17078        if (this._monthsParseExact) {
17079            return handleStrictParse.call(this, monthName, format, strict);
17080        }
17081
17082        if (!this._monthsParse) {
17083            this._monthsParse = [];
17084            this._longMonthsParse = [];
17085            this._shortMonthsParse = [];
17086        }
17087
17088        // TODO: add sorting
17089        // Sorting makes sure if one month (or abbr) is a prefix of another
17090        // see sorting in computeMonthsParse
17091        for (i = 0; i < 12; i++) {
17092            // make the regex if we don't have it already
17093            mom = createUTC([2000, i]);
17094            if (strict && !this._longMonthsParse[i]) {
17095                this._longMonthsParse[i] = new RegExp(
17096                    '^' + this.months(mom, '').replace('.', '') + '$',
17097                    'i'
17098                );
17099                this._shortMonthsParse[i] = new RegExp(
17100                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',
17101                    'i'
17102                );
17103            }
17104            if (!strict && !this._monthsParse[i]) {
17105                regex =
17106                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
17107                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
17108            }
17109            // test the regex
17110            if (
17111                strict &&
17112                format === 'MMMM' &&
17113                this._longMonthsParse[i].test(monthName)
17114            ) {
17115                return i;
17116            } else if (
17117                strict &&
17118                format === 'MMM' &&
17119                this._shortMonthsParse[i].test(monthName)
17120            ) {
17121                return i;
17122            } else if (!strict && this._monthsParse[i].test(monthName)) {
17123                return i;
17124            }
17125        }
17126    }
17127
17128    // MOMENTS
17129
17130    function setMonth(mom, value) {
17131        var dayOfMonth;
17132
17133        if (!mom.isValid()) {
17134            // No op
17135            return mom;
17136        }
17137
17138        if (typeof value === 'string') {
17139            if (/^\d+$/.test(value)) {
17140                value = toInt(value);
17141            } else {
17142                value = mom.localeData().monthsParse(value);
17143                // TODO: Another silent failure?
17144                if (!isNumber(value)) {
17145                    return mom;
17146                }
17147            }
17148        }
17149
17150        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));
17151        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
17152        return mom;
17153    }
17154
17155    function getSetMonth(value) {
17156        if (value != null) {
17157            setMonth(this, value);
17158            hooks.updateOffset(this, true);
17159            return this;
17160        } else {
17161            return get(this, 'Month');
17162        }
17163    }
17164
17165    function getDaysInMonth() {
17166        return daysInMonth(this.year(), this.month());
17167    }
17168
17169    function monthsShortRegex(isStrict) {
17170        if (this._monthsParseExact) {
17171            if (!hasOwnProp(this, '_monthsRegex')) {
17172                computeMonthsParse.call(this);
17173            }
17174            if (isStrict) {
17175                return this._monthsShortStrictRegex;
17176            } else {
17177                return this._monthsShortRegex;
17178            }
17179        } else {
17180            if (!hasOwnProp(this, '_monthsShortRegex')) {
17181                this._monthsShortRegex = defaultMonthsShortRegex;
17182            }
17183            return this._monthsShortStrictRegex && isStrict
17184                ? this._monthsShortStrictRegex
17185                : this._monthsShortRegex;
17186        }
17187    }
17188
17189    function monthsRegex(isStrict) {
17190        if (this._monthsParseExact) {
17191            if (!hasOwnProp(this, '_monthsRegex')) {
17192                computeMonthsParse.call(this);
17193            }
17194            if (isStrict) {
17195                return this._monthsStrictRegex;
17196            } else {
17197                return this._monthsRegex;
17198            }
17199        } else {
17200            if (!hasOwnProp(this, '_monthsRegex')) {
17201                this._monthsRegex = defaultMonthsRegex;
17202            }
17203            return this._monthsStrictRegex && isStrict
17204                ? this._monthsStrictRegex
17205                : this._monthsRegex;
17206        }
17207    }
17208
17209    function computeMonthsParse() {
17210        function cmpLenRev(a, b) {
17211            return b.length - a.length;
17212        }
17213
17214        var shortPieces = [],
17215            longPieces = [],
17216            mixedPieces = [],
17217            i,
17218            mom;
17219        for (i = 0; i < 12; i++) {
17220            // make the regex if we don't have it already
17221            mom = createUTC([2000, i]);
17222            shortPieces.push(this.monthsShort(mom, ''));
17223            longPieces.push(this.months(mom, ''));
17224            mixedPieces.push(this.months(mom, ''));
17225            mixedPieces.push(this.monthsShort(mom, ''));
17226        }
17227        // Sorting makes sure if one month (or abbr) is a prefix of another it
17228        // will match the longer piece.
17229        shortPieces.sort(cmpLenRev);
17230        longPieces.sort(cmpLenRev);
17231        mixedPieces.sort(cmpLenRev);
17232        for (i = 0; i < 12; i++) {
17233            shortPieces[i] = regexEscape(shortPieces[i]);
17234            longPieces[i] = regexEscape(longPieces[i]);
17235        }
17236        for (i = 0; i < 24; i++) {
17237            mixedPieces[i] = regexEscape(mixedPieces[i]);
17238        }
17239
17240        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
17241        this._monthsShortRegex = this._monthsRegex;
17242        this._monthsStrictRegex = new RegExp(
17243            '^(' + longPieces.join('|') + ')',
17244            'i'
17245        );
17246        this._monthsShortStrictRegex = new RegExp(
17247            '^(' + shortPieces.join('|') + ')',
17248            'i'
17249        );
17250    }
17251
17252    // FORMATTING
17253
17254    addFormatToken('Y', 0, 0, function () {
17255        var y = this.year();
17256        return y <= 9999 ? zeroFill(y, 4) : '+' + y;
17257    });
17258
17259    addFormatToken(0, ['YY', 2], 0, function () {
17260        return this.year() % 100;
17261    });
17262
17263    addFormatToken(0, ['YYYY', 4], 0, 'year');
17264    addFormatToken(0, ['YYYYY', 5], 0, 'year');
17265    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
17266
17267    // ALIASES
17268
17269    addUnitAlias('year', 'y');
17270
17271    // PRIORITIES
17272
17273    addUnitPriority('year', 1);
17274
17275    // PARSING
17276
17277    addRegexToken('Y', matchSigned);
17278    addRegexToken('YY', match1to2, match2);
17279    addRegexToken('YYYY', match1to4, match4);
17280    addRegexToken('YYYYY', match1to6, match6);
17281    addRegexToken('YYYYYY', match1to6, match6);
17282
17283    addParseToken(['YYYYY', 'YYYYYY'], YEAR);
17284    addParseToken('YYYY', function (input, array) {
17285        array[YEAR] =
17286            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);
17287    });
17288    addParseToken('YY', function (input, array) {
17289        array[YEAR] = hooks.parseTwoDigitYear(input);
17290    });
17291    addParseToken('Y', function (input, array) {
17292        array[YEAR] = parseInt(input, 10);
17293    });
17294
17295    // HELPERS
17296
17297    function daysInYear(year) {
17298        return isLeapYear(year) ? 366 : 365;
17299    }
17300
17301    // HOOKS
17302
17303    hooks.parseTwoDigitYear = function (input) {
17304        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
17305    };
17306
17307    // MOMENTS
17308
17309    var getSetYear = makeGetSet('FullYear', true);
17310
17311    function getIsLeapYear() {
17312        return isLeapYear(this.year());
17313    }
17314
17315    function createDate(y, m, d, h, M, s, ms) {
17316        // can't just apply() to create a date:
17317        // https://stackoverflow.com/q/181348
17318        var date;
17319        // the date constructor remaps years 0-99 to 1900-1999
17320        if (y < 100 && y >= 0) {
17321            // preserve leap years using a full 400 year cycle, then reset
17322            date = new Date(y + 400, m, d, h, M, s, ms);
17323            if (isFinite(date.getFullYear())) {
17324                date.setFullYear(y);
17325            }
17326        } else {
17327            date = new Date(y, m, d, h, M, s, ms);
17328        }
17329
17330        return date;
17331    }
17332
17333    function createUTCDate(y) {
17334        var date, args;
17335        // the Date.UTC function remaps years 0-99 to 1900-1999
17336        if (y < 100 && y >= 0) {
17337            args = Array.prototype.slice.call(arguments);
17338            // preserve leap years using a full 400 year cycle, then reset
17339            args[0] = y + 400;
17340            date = new Date(Date.UTC.apply(null, args));
17341            if (isFinite(date.getUTCFullYear())) {
17342                date.setUTCFullYear(y);
17343            }
17344        } else {
17345            date = new Date(Date.UTC.apply(null, arguments));
17346        }
17347
17348        return date;
17349    }
17350
17351    // start-of-first-week - start-of-year
17352    function firstWeekOffset(year, dow, doy) {
17353        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
17354            fwd = 7 + dow - doy,
17355            // first-week day local weekday -- which local weekday is fwd
17356            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
17357
17358        return -fwdlw + fwd - 1;
17359    }
17360
17361    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
17362    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
17363        var localWeekday = (7 + weekday - dow) % 7,
17364            weekOffset = firstWeekOffset(year, dow, doy),
17365            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
17366            resYear,
17367            resDayOfYear;
17368
17369        if (dayOfYear <= 0) {
17370            resYear = year - 1;
17371            resDayOfYear = daysInYear(resYear) + dayOfYear;
17372        } else if (dayOfYear > daysInYear(year)) {
17373            resYear = year + 1;
17374            resDayOfYear = dayOfYear - daysInYear(year);
17375        } else {
17376            resYear = year;
17377            resDayOfYear = dayOfYear;
17378        }
17379
17380        return {
17381            year: resYear,
17382            dayOfYear: resDayOfYear,
17383        };
17384    }
17385
17386    function weekOfYear(mom, dow, doy) {
17387        var weekOffset = firstWeekOffset(mom.year(), dow, doy),
17388            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
17389            resWeek,
17390            resYear;
17391
17392        if (week < 1) {
17393            resYear = mom.year() - 1;
17394            resWeek = week + weeksInYear(resYear, dow, doy);
17395        } else if (week > weeksInYear(mom.year(), dow, doy)) {
17396            resWeek = week - weeksInYear(mom.year(), dow, doy);
17397            resYear = mom.year() + 1;
17398        } else {
17399            resYear = mom.year();
17400            resWeek = week;
17401        }
17402
17403        return {
17404            week: resWeek,
17405            year: resYear,
17406        };
17407    }
17408
17409    function weeksInYear(year, dow, doy) {
17410        var weekOffset = firstWeekOffset(year, dow, doy),
17411            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
17412        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
17413    }
17414
17415    // FORMATTING
17416
17417    addFormatToken('w', ['ww', 2], 'wo', 'week');
17418    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
17419
17420    // ALIASES
17421
17422    addUnitAlias('week', 'w');
17423    addUnitAlias('isoWeek', 'W');
17424
17425    // PRIORITIES
17426
17427    addUnitPriority('week', 5);
17428    addUnitPriority('isoWeek', 5);
17429
17430    // PARSING
17431
17432    addRegexToken('w', match1to2);
17433    addRegexToken('ww', match1to2, match2);
17434    addRegexToken('W', match1to2);
17435    addRegexToken('WW', match1to2, match2);
17436
17437    addWeekParseToken(['w', 'ww', 'W', 'WW'], function (
17438        input,
17439        week,
17440        config,
17441        token
17442    ) {
17443        week[token.substr(0, 1)] = toInt(input);
17444    });
17445
17446    // HELPERS
17447
17448    // LOCALES
17449
17450    function localeWeek(mom) {
17451        return weekOfYear(mom, this._week.dow, this._week.doy).week;
17452    }
17453
17454    var defaultLocaleWeek = {
17455        dow: 0, // Sunday is the first day of the week.
17456        doy: 6, // The week that contains Jan 6th is the first week of the year.
17457    };
17458
17459    function localeFirstDayOfWeek() {
17460        return this._week.dow;
17461    }
17462
17463    function localeFirstDayOfYear() {
17464        return this._week.doy;
17465    }
17466
17467    // MOMENTS
17468
17469    function getSetWeek(input) {
17470        var week = this.localeData().week(this);
17471        return input == null ? week : this.add((input - week) * 7, 'd');
17472    }
17473
17474    function getSetISOWeek(input) {
17475        var week = weekOfYear(this, 1, 4).week;
17476        return input == null ? week : this.add((input - week) * 7, 'd');
17477    }
17478
17479    // FORMATTING
17480
17481    addFormatToken('d', 0, 'do', 'day');
17482
17483    addFormatToken('dd', 0, 0, function (format) {
17484        return this.localeData().weekdaysMin(this, format);
17485    });
17486
17487    addFormatToken('ddd', 0, 0, function (format) {
17488        return this.localeData().weekdaysShort(this, format);
17489    });
17490
17491    addFormatToken('dddd', 0, 0, function (format) {
17492        return this.localeData().weekdays(this, format);
17493    });
17494
17495    addFormatToken('e', 0, 0, 'weekday');
17496    addFormatToken('E', 0, 0, 'isoWeekday');
17497
17498    // ALIASES
17499
17500    addUnitAlias('day', 'd');
17501    addUnitAlias('weekday', 'e');
17502    addUnitAlias('isoWeekday', 'E');
17503
17504    // PRIORITY
17505    addUnitPriority('day', 11);
17506    addUnitPriority('weekday', 11);
17507    addUnitPriority('isoWeekday', 11);
17508
17509    // PARSING
17510
17511    addRegexToken('d', match1to2);
17512    addRegexToken('e', match1to2);
17513    addRegexToken('E', match1to2);
17514    addRegexToken('dd', function (isStrict, locale) {
17515        return locale.weekdaysMinRegex(isStrict);
17516    });
17517    addRegexToken('ddd', function (isStrict, locale) {
17518        return locale.weekdaysShortRegex(isStrict);
17519    });
17520    addRegexToken('dddd', function (isStrict, locale) {
17521        return locale.weekdaysRegex(isStrict);
17522    });
17523
17524    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
17525        var weekday = config._locale.weekdaysParse(input, token, config._strict);
17526        // if we didn't get a weekday name, mark the date as invalid
17527        if (weekday != null) {
17528            week.d = weekday;
17529        } else {
17530            getParsingFlags(config).invalidWeekday = input;
17531        }
17532    });
17533
17534    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
17535        week[token] = toInt(input);
17536    });
17537
17538    // HELPERS
17539
17540    function parseWeekday(input, locale) {
17541        if (typeof input !== 'string') {
17542            return input;
17543        }
17544
17545        if (!isNaN(input)) {
17546            return parseInt(input, 10);
17547        }
17548
17549        input = locale.weekdaysParse(input);
17550        if (typeof input === 'number') {
17551            return input;
17552        }
17553
17554        return null;
17555    }
17556
17557    function parseIsoWeekday(input, locale) {
17558        if (typeof input === 'string') {
17559            return locale.weekdaysParse(input) % 7 || 7;
17560        }
17561        return isNaN(input) ? null : input;
17562    }
17563
17564    // LOCALES
17565    function shiftWeekdays(ws, n) {
17566        return ws.slice(n, 7).concat(ws.slice(0, n));
17567    }
17568
17569    var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
17570            '_'
17571        ),
17572        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
17573        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
17574        defaultWeekdaysRegex = matchWord,
17575        defaultWeekdaysShortRegex = matchWord,
17576        defaultWeekdaysMinRegex = matchWord;
17577
17578    function localeWeekdays(m, format) {
17579        var weekdays = isArray(this._weekdays)
17580            ? this._weekdays
17581            : this._weekdays[
17582                  m && m !== true && this._weekdays.isFormat.test(format)
17583                      ? 'format'
17584                      : 'standalone'
17585              ];
17586        return m === true
17587            ? shiftWeekdays(weekdays, this._week.dow)
17588            : m
17589            ? weekdays[m.day()]
17590            : weekdays;
17591    }
17592
17593    function localeWeekdaysShort(m) {
17594        return m === true
17595            ? shiftWeekdays(this._weekdaysShort, this._week.dow)
17596            : m
17597            ? this._weekdaysShort[m.day()]
17598            : this._weekdaysShort;
17599    }
17600
17601    function localeWeekdaysMin(m) {
17602        return m === true
17603            ? shiftWeekdays(this._weekdaysMin, this._week.dow)
17604            : m
17605            ? this._weekdaysMin[m.day()]
17606            : this._weekdaysMin;
17607    }
17608
17609    function handleStrictParse$1(weekdayName, format, strict) {
17610        var i,
17611            ii,
17612            mom,
17613            llc = weekdayName.toLocaleLowerCase();
17614        if (!this._weekdaysParse) {
17615            this._weekdaysParse = [];
17616            this._shortWeekdaysParse = [];
17617            this._minWeekdaysParse = [];
17618
17619            for (i = 0; i < 7; ++i) {
17620                mom = createUTC([2000, 1]).day(i);
17621                this._minWeekdaysParse[i] = this.weekdaysMin(
17622                    mom,
17623                    ''
17624                ).toLocaleLowerCase();
17625                this._shortWeekdaysParse[i] = this.weekdaysShort(
17626                    mom,
17627                    ''
17628                ).toLocaleLowerCase();
17629                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();
17630            }
17631        }
17632
17633        if (strict) {
17634            if (format === 'dddd') {
17635                ii = indexOf.call(this._weekdaysParse, llc);
17636                return ii !== -1 ? ii : null;
17637            } else if (format === 'ddd') {
17638                ii = indexOf.call(this._shortWeekdaysParse, llc);
17639                return ii !== -1 ? ii : null;
17640            } else {
17641                ii = indexOf.call(this._minWeekdaysParse, llc);
17642                return ii !== -1 ? ii : null;
17643            }
17644        } else {
17645            if (format === 'dddd') {
17646                ii = indexOf.call(this._weekdaysParse, llc);
17647                if (ii !== -1) {
17648                    return ii;
17649                }
17650                ii = indexOf.call(this._shortWeekdaysParse, llc);
17651                if (ii !== -1) {
17652                    return ii;
17653                }
17654                ii = indexOf.call(this._minWeekdaysParse, llc);
17655                return ii !== -1 ? ii : null;
17656            } else if (format === 'ddd') {
17657                ii = indexOf.call(this._shortWeekdaysParse, llc);
17658                if (ii !== -1) {
17659                    return ii;
17660                }
17661                ii = indexOf.call(this._weekdaysParse, llc);
17662                if (ii !== -1) {
17663                    return ii;
17664                }
17665                ii = indexOf.call(this._minWeekdaysParse, llc);
17666                return ii !== -1 ? ii : null;
17667            } else {
17668                ii = indexOf.call(this._minWeekdaysParse, llc);
17669                if (ii !== -1) {
17670                    return ii;
17671                }
17672                ii = indexOf.call(this._weekdaysParse, llc);
17673                if (ii !== -1) {
17674                    return ii;
17675                }
17676                ii = indexOf.call(this._shortWeekdaysParse, llc);
17677                return ii !== -1 ? ii : null;
17678            }
17679        }
17680    }
17681
17682    function localeWeekdaysParse(weekdayName, format, strict) {
17683        var i, mom, regex;
17684
17685        if (this._weekdaysParseExact) {
17686            return handleStrictParse$1.call(this, weekdayName, format, strict);
17687        }
17688
17689        if (!this._weekdaysParse) {
17690            this._weekdaysParse = [];
17691            this._minWeekdaysParse = [];
17692            this._shortWeekdaysParse = [];
17693            this._fullWeekdaysParse = [];
17694        }
17695
17696        for (i = 0; i < 7; i++) {
17697            // make the regex if we don't have it already
17698
17699            mom = createUTC([2000, 1]).day(i);
17700            if (strict && !this._fullWeekdaysParse[i]) {
17701                this._fullWeekdaysParse[i] = new RegExp(
17702                    '^' + this.weekdays(mom, '').replace('.', '\\.?') + '$',
17703                    'i'
17704                );
17705                this._shortWeekdaysParse[i] = new RegExp(
17706                    '^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$',
17707                    'i'
17708                );
17709                this._minWeekdaysParse[i] = new RegExp(
17710                    '^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$',
17711                    'i'
17712                );
17713            }
17714            if (!this._weekdaysParse[i]) {
17715                regex =
17716                    '^' +
17717                    this.weekdays(mom, '') +
17718                    '|^' +
17719                    this.weekdaysShort(mom, '') +
17720                    '|^' +
17721                    this.weekdaysMin(mom, '');
17722                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
17723            }
17724            // test the regex
17725            if (
17726                strict &&
17727                format === 'dddd' &&
17728                this._fullWeekdaysParse[i].test(weekdayName)
17729            ) {
17730                return i;
17731            } else if (
17732                strict &&
17733                format === 'ddd' &&
17734                this._shortWeekdaysParse[i].test(weekdayName)
17735            ) {
17736                return i;
17737            } else if (
17738                strict &&
17739                format === 'dd' &&
17740                this._minWeekdaysParse[i].test(weekdayName)
17741            ) {
17742                return i;
17743            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
17744                return i;
17745            }
17746        }
17747    }
17748
17749    // MOMENTS
17750
17751    function getSetDayOfWeek(input) {
17752        if (!this.isValid()) {
17753            return input != null ? this : NaN;
17754        }
17755        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
17756        if (input != null) {
17757            input = parseWeekday(input, this.localeData());
17758            return this.add(input - day, 'd');
17759        } else {
17760            return day;
17761        }
17762    }
17763
17764    function getSetLocaleDayOfWeek(input) {
17765        if (!this.isValid()) {
17766            return input != null ? this : NaN;
17767        }
17768        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
17769        return input == null ? weekday : this.add(input - weekday, 'd');
17770    }
17771
17772    function getSetISODayOfWeek(input) {
17773        if (!this.isValid()) {
17774            return input != null ? this : NaN;
17775        }
17776
17777        // behaves the same as moment#day except
17778        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
17779        // as a setter, sunday should belong to the previous week.
17780
17781        if (input != null) {
17782            var weekday = parseIsoWeekday(input, this.localeData());
17783            return this.day(this.day() % 7 ? weekday : weekday - 7);
17784        } else {
17785            return this.day() || 7;
17786        }
17787    }
17788
17789    function weekdaysRegex(isStrict) {
17790        if (this._weekdaysParseExact) {
17791            if (!hasOwnProp(this, '_weekdaysRegex')) {
17792                computeWeekdaysParse.call(this);
17793            }
17794            if (isStrict) {
17795                return this._weekdaysStrictRegex;
17796            } else {
17797                return this._weekdaysRegex;
17798            }
17799        } else {
17800            if (!hasOwnProp(this, '_weekdaysRegex')) {
17801                this._weekdaysRegex = defaultWeekdaysRegex;
17802            }
17803            return this._weekdaysStrictRegex && isStrict
17804                ? this._weekdaysStrictRegex
17805                : this._weekdaysRegex;
17806        }
17807    }
17808
17809    function weekdaysShortRegex(isStrict) {
17810        if (this._weekdaysParseExact) {
17811            if (!hasOwnProp(this, '_weekdaysRegex')) {
17812                computeWeekdaysParse.call(this);
17813            }
17814            if (isStrict) {
17815                return this._weekdaysShortStrictRegex;
17816            } else {
17817                return this._weekdaysShortRegex;
17818            }
17819        } else {
17820            if (!hasOwnProp(this, '_weekdaysShortRegex')) {
17821                this._weekdaysShortRegex = defaultWeekdaysShortRegex;
17822            }
17823            return this._weekdaysShortStrictRegex && isStrict
17824                ? this._weekdaysShortStrictRegex
17825                : this._weekdaysShortRegex;
17826        }
17827    }
17828
17829    function weekdaysMinRegex(isStrict) {
17830        if (this._weekdaysParseExact) {
17831            if (!hasOwnProp(this, '_weekdaysRegex')) {
17832                computeWeekdaysParse.call(this);
17833            }
17834            if (isStrict) {
17835                return this._weekdaysMinStrictRegex;
17836            } else {
17837                return this._weekdaysMinRegex;
17838            }
17839        } else {
17840            if (!hasOwnProp(this, '_weekdaysMinRegex')) {
17841                this._weekdaysMinRegex = defaultWeekdaysMinRegex;
17842            }
17843            return this._weekdaysMinStrictRegex && isStrict
17844                ? this._weekdaysMinStrictRegex
17845                : this._weekdaysMinRegex;
17846        }
17847    }
17848
17849    function computeWeekdaysParse() {
17850        function cmpLenRev(a, b) {
17851            return b.length - a.length;
17852        }
17853
17854        var minPieces = [],
17855            shortPieces = [],
17856            longPieces = [],
17857            mixedPieces = [],
17858            i,
17859            mom,
17860            minp,
17861            shortp,
17862            longp;
17863        for (i = 0; i < 7; i++) {
17864            // make the regex if we don't have it already
17865            mom = createUTC([2000, 1]).day(i);
17866            minp = regexEscape(this.weekdaysMin(mom, ''));
17867            shortp = regexEscape(this.weekdaysShort(mom, ''));
17868            longp = regexEscape(this.weekdays(mom, ''));
17869            minPieces.push(minp);
17870            shortPieces.push(shortp);
17871            longPieces.push(longp);
17872            mixedPieces.push(minp);
17873            mixedPieces.push(shortp);
17874            mixedPieces.push(longp);
17875        }
17876        // Sorting makes sure if one weekday (or abbr) is a prefix of another it
17877        // will match the longer piece.
17878        minPieces.sort(cmpLenRev);
17879        shortPieces.sort(cmpLenRev);
17880        longPieces.sort(cmpLenRev);
17881        mixedPieces.sort(cmpLenRev);
17882
17883        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
17884        this._weekdaysShortRegex = this._weekdaysRegex;
17885        this._weekdaysMinRegex = this._weekdaysRegex;
17886
17887        this._weekdaysStrictRegex = new RegExp(
17888            '^(' + longPieces.join('|') + ')',
17889            'i'
17890        );
17891        this._weekdaysShortStrictRegex = new RegExp(
17892            '^(' + shortPieces.join('|') + ')',
17893            'i'
17894        );
17895        this._weekdaysMinStrictRegex = new RegExp(
17896            '^(' + minPieces.join('|') + ')',
17897            'i'
17898        );
17899    }
17900
17901    // FORMATTING
17902
17903    function hFormat() {
17904        return this.hours() % 12 || 12;
17905    }
17906
17907    function kFormat() {
17908        return this.hours() || 24;
17909    }
17910
17911    addFormatToken('H', ['HH', 2], 0, 'hour');
17912    addFormatToken('h', ['hh', 2], 0, hFormat);
17913    addFormatToken('k', ['kk', 2], 0, kFormat);
17914
17915    addFormatToken('hmm', 0, 0, function () {
17916        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
17917    });
17918
17919    addFormatToken('hmmss', 0, 0, function () {
17920        return (
17921            '' +
17922            hFormat.apply(this) +
17923            zeroFill(this.minutes(), 2) +
17924            zeroFill(this.seconds(), 2)
17925        );
17926    });
17927
17928    addFormatToken('Hmm', 0, 0, function () {
17929        return '' + this.hours() + zeroFill(this.minutes(), 2);
17930    });
17931
17932    addFormatToken('Hmmss', 0, 0, function () {
17933        return (
17934            '' +
17935            this.hours() +
17936            zeroFill(this.minutes(), 2) +
17937            zeroFill(this.seconds(), 2)
17938        );
17939    });
17940
17941    function meridiem(token, lowercase) {
17942        addFormatToken(token, 0, 0, function () {
17943            return this.localeData().meridiem(
17944                this.hours(),
17945                this.minutes(),
17946                lowercase
17947            );
17948        });
17949    }
17950
17951    meridiem('a', true);
17952    meridiem('A', false);
17953
17954    // ALIASES
17955
17956    addUnitAlias('hour', 'h');
17957
17958    // PRIORITY
17959    addUnitPriority('hour', 13);
17960
17961    // PARSING
17962
17963    function matchMeridiem(isStrict, locale) {
17964        return locale._meridiemParse;
17965    }
17966
17967    addRegexToken('a', matchMeridiem);
17968    addRegexToken('A', matchMeridiem);
17969    addRegexToken('H', match1to2);
17970    addRegexToken('h', match1to2);
17971    addRegexToken('k', match1to2);
17972    addRegexToken('HH', match1to2, match2);
17973    addRegexToken('hh', match1to2, match2);
17974    addRegexToken('kk', match1to2, match2);
17975
17976    addRegexToken('hmm', match3to4);
17977    addRegexToken('hmmss', match5to6);
17978    addRegexToken('Hmm', match3to4);
17979    addRegexToken('Hmmss', match5to6);
17980
17981    addParseToken(['H', 'HH'], HOUR);
17982    addParseToken(['k', 'kk'], function (input, array, config) {
17983        var kInput = toInt(input);
17984        array[HOUR] = kInput === 24 ? 0 : kInput;
17985    });
17986    addParseToken(['a', 'A'], function (input, array, config) {
17987        config._isPm = config._locale.isPM(input);
17988        config._meridiem = input;
17989    });
17990    addParseToken(['h', 'hh'], function (input, array, config) {
17991        array[HOUR] = toInt(input);
17992        getParsingFlags(config).bigHour = true;
17993    });
17994    addParseToken('hmm', function (input, array, config) {
17995        var pos = input.length - 2;
17996        array[HOUR] = toInt(input.substr(0, pos));
17997        array[MINUTE] = toInt(input.substr(pos));
17998        getParsingFlags(config).bigHour = true;
17999    });
18000    addParseToken('hmmss', function (input, array, config) {
18001        var pos1 = input.length - 4,
18002            pos2 = input.length - 2;
18003        array[HOUR] = toInt(input.substr(0, pos1));
18004        array[MINUTE] = toInt(input.substr(pos1, 2));
18005        array[SECOND] = toInt(input.substr(pos2));
18006        getParsingFlags(config).bigHour = true;
18007    });
18008    addParseToken('Hmm', function (input, array, config) {
18009        var pos = input.length - 2;
18010        array[HOUR] = toInt(input.substr(0, pos));
18011        array[MINUTE] = toInt(input.substr(pos));
18012    });
18013    addParseToken('Hmmss', function (input, array, config) {
18014        var pos1 = input.length - 4,
18015            pos2 = input.length - 2;
18016        array[HOUR] = toInt(input.substr(0, pos1));
18017        array[MINUTE] = toInt(input.substr(pos1, 2));
18018        array[SECOND] = toInt(input.substr(pos2));
18019    });
18020
18021    // LOCALES
18022
18023    function localeIsPM(input) {
18024        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
18025        // Using charAt should be more compatible.
18026        return (input + '').toLowerCase().charAt(0) === 'p';
18027    }
18028
18029    var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i,
18030        // Setting the hour should keep the time, because the user explicitly
18031        // specified which hour they want. So trying to maintain the same hour (in
18032        // a new timezone) makes sense. Adding/subtracting hours does not follow
18033        // this rule.
18034        getSetHour = makeGetSet('Hours', true);
18035
18036    function localeMeridiem(hours, minutes, isLower) {
18037        if (hours > 11) {
18038            return isLower ? 'pm' : 'PM';
18039        } else {
18040            return isLower ? 'am' : 'AM';
18041        }
18042    }
18043
18044    var baseConfig = {
18045        calendar: defaultCalendar,
18046        longDateFormat: defaultLongDateFormat,
18047        invalidDate: defaultInvalidDate,
18048        ordinal: defaultOrdinal,
18049        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,
18050        relativeTime: defaultRelativeTime,
18051
18052        months: defaultLocaleMonths,
18053        monthsShort: defaultLocaleMonthsShort,
18054
18055        week: defaultLocaleWeek,
18056
18057        weekdays: defaultLocaleWeekdays,
18058        weekdaysMin: defaultLocaleWeekdaysMin,
18059        weekdaysShort: defaultLocaleWeekdaysShort,
18060
18061        meridiemParse: defaultLocaleMeridiemParse,
18062    };
18063
18064    // internal storage for locale config files
18065    var locales = {},
18066        localeFamilies = {},
18067        globalLocale;
18068
18069    function commonPrefix(arr1, arr2) {
18070        var i,
18071            minl = Math.min(arr1.length, arr2.length);
18072        for (i = 0; i < minl; i += 1) {
18073            if (arr1[i] !== arr2[i]) {
18074                return i;
18075            }
18076        }
18077        return minl;
18078    }
18079
18080    function normalizeLocale(key) {
18081        return key ? key.toLowerCase().replace('_', '-') : key;
18082    }
18083
18084    // pick the locale from the array
18085    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
18086    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
18087    function chooseLocale(names) {
18088        var i = 0,
18089            j,
18090            next,
18091            locale,
18092            split;
18093
18094        while (i < names.length) {
18095            split = normalizeLocale(names[i]).split('-');
18096            j = split.length;
18097            next = normalizeLocale(names[i + 1]);
18098            next = next ? next.split('-') : null;
18099            while (j > 0) {
18100                locale = loadLocale(split.slice(0, j).join('-'));
18101                if (locale) {
18102                    return locale;
18103                }
18104                if (
18105                    next &&
18106                    next.length >= j &&
18107                    commonPrefix(split, next) >= j - 1
18108                ) {
18109                    //the next array item is better than a shallower substring of this one
18110                    break;
18111                }
18112                j--;
18113            }
18114            i++;
18115        }
18116        return globalLocale;
18117    }
18118
18119    function loadLocale(name) {
18120        var oldLocale = null,
18121            aliasedRequire;
18122        // TODO: Find a better way to register and load all the locales in Node
18123        if (
18124            locales[name] === undefined &&
18125            typeof module !== 'undefined' &&
18126            module &&
18127            module.exports
18128        ) {
18129            try {
18130                oldLocale = globalLocale._abbr;
18131                aliasedRequire = require;
18132                __webpack_require__("../../node_modules/moment/locale sync recursive ^\\.\\/.*$")("./" + name);
18133                getSetGlobalLocale(oldLocale);
18134            } catch (e) {
18135                // mark as not found to avoid repeating expensive file require call causing high CPU
18136                // when trying to find en-US, en_US, en-us for every format call
18137                locales[name] = null; // null means not found
18138            }
18139        }
18140        return locales[name];
18141    }
18142
18143    // This function will load locale and then set the global locale.  If
18144    // no arguments are passed in, it will simply return the current global
18145    // locale key.
18146    function getSetGlobalLocale(key, values) {
18147        var data;
18148        if (key) {
18149            if (isUndefined(values)) {
18150                data = getLocale(key);
18151            } else {
18152                data = defineLocale(key, values);
18153            }
18154
18155            if (data) {
18156                // moment.duration._locale = moment._locale = data;
18157                globalLocale = data;
18158            } else {
18159                if (typeof console !== 'undefined' && console.warn) {
18160                    //warn user if arguments are passed but the locale could not be set
18161                    console.warn(
18162                        'Locale ' + key + ' not found. Did you forget to load it?'
18163                    );
18164                }
18165            }
18166        }
18167
18168        return globalLocale._abbr;
18169    }
18170
18171    function defineLocale(name, config) {
18172        if (config !== null) {
18173            var locale,
18174                parentConfig = baseConfig;
18175            config.abbr = name;
18176            if (locales[name] != null) {
18177                deprecateSimple(
18178                    'defineLocaleOverride',
18179                    'use moment.updateLocale(localeName, config) to change ' +
18180                        'an existing locale. moment.defineLocale(localeName, ' +
18181                        'config) should only be used for creating a new locale ' +
18182                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'
18183                );
18184                parentConfig = locales[name]._config;
18185            } else if (config.parentLocale != null) {
18186                if (locales[config.parentLocale] != null) {
18187                    parentConfig = locales[config.parentLocale]._config;
18188                } else {
18189                    locale = loadLocale(config.parentLocale);
18190                    if (locale != null) {
18191                        parentConfig = locale._config;
18192                    } else {
18193                        if (!localeFamilies[config.parentLocale]) {
18194                            localeFamilies[config.parentLocale] = [];
18195                        }
18196                        localeFamilies[config.parentLocale].push({
18197                            name: name,
18198                            config: config,
18199                        });
18200                        return null;
18201                    }
18202                }
18203            }
18204            locales[name] = new Locale(mergeConfigs(parentConfig, config));
18205
18206            if (localeFamilies[name]) {
18207                localeFamilies[name].forEach(function (x) {
18208                    defineLocale(x.name, x.config);
18209                });
18210            }
18211
18212            // backwards compat for now: also set the locale
18213            // make sure we set the locale AFTER all child locales have been
18214            // created, so we won't end up with the child locale set.
18215            getSetGlobalLocale(name);
18216
18217            return locales[name];
18218        } else {
18219            // useful for testing
18220            delete locales[name];
18221            return null;
18222        }
18223    }
18224
18225    function updateLocale(name, config) {
18226        if (config != null) {
18227            var locale,
18228                tmpLocale,
18229                parentConfig = baseConfig;
18230
18231            if (locales[name] != null && locales[name].parentLocale != null) {
18232                // Update existing child locale in-place to avoid memory-leaks
18233                locales[name].set(mergeConfigs(locales[name]._config, config));
18234            } else {
18235                // MERGE
18236                tmpLocale = loadLocale(name);
18237                if (tmpLocale != null) {
18238                    parentConfig = tmpLocale._config;
18239                }
18240                config = mergeConfigs(parentConfig, config);
18241                if (tmpLocale == null) {
18242                    // updateLocale is called for creating a new locale
18243                    // Set abbr so it will have a name (getters return
18244                    // undefined otherwise).
18245                    config.abbr = name;
18246                }
18247                locale = new Locale(config);
18248                locale.parentLocale = locales[name];
18249                locales[name] = locale;
18250            }
18251
18252            // backwards compat for now: also set the locale
18253            getSetGlobalLocale(name);
18254        } else {
18255            // pass null for config to unupdate, useful for tests
18256            if (locales[name] != null) {
18257                if (locales[name].parentLocale != null) {
18258                    locales[name] = locales[name].parentLocale;
18259                    if (name === getSetGlobalLocale()) {
18260                        getSetGlobalLocale(name);
18261                    }
18262                } else if (locales[name] != null) {
18263                    delete locales[name];
18264                }
18265            }
18266        }
18267        return locales[name];
18268    }
18269
18270    // returns locale data
18271    function getLocale(key) {
18272        var locale;
18273
18274        if (key && key._locale && key._locale._abbr) {
18275            key = key._locale._abbr;
18276        }
18277
18278        if (!key) {
18279            return globalLocale;
18280        }
18281
18282        if (!isArray(key)) {
18283            //short-circuit everything else
18284            locale = loadLocale(key);
18285            if (locale) {
18286                return locale;
18287            }
18288            key = [key];
18289        }
18290
18291        return chooseLocale(key);
18292    }
18293
18294    function listLocales() {
18295        return keys(locales);
18296    }
18297
18298    function checkOverflow(m) {
18299        var overflow,
18300            a = m._a;
18301
18302        if (a && getParsingFlags(m).overflow === -2) {
18303            overflow =
18304                a[MONTH] < 0 || a[MONTH] > 11
18305                    ? MONTH
18306                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])
18307                    ? DATE
18308                    : a[HOUR] < 0 ||
18309                      a[HOUR] > 24 ||
18310                      (a[HOUR] === 24 &&
18311                          (a[MINUTE] !== 0 ||
18312                              a[SECOND] !== 0 ||
18313                              a[MILLISECOND] !== 0))
18314                    ? HOUR
18315                    : a[MINUTE] < 0 || a[MINUTE] > 59
18316                    ? MINUTE
18317                    : a[SECOND] < 0 || a[SECOND] > 59
18318                    ? SECOND
18319                    : a[MILLISECOND] < 0 || a[MILLISECOND] > 999
18320                    ? MILLISECOND
18321                    : -1;
18322
18323            if (
18324                getParsingFlags(m)._overflowDayOfYear &&
18325                (overflow < YEAR || overflow > DATE)
18326            ) {
18327                overflow = DATE;
18328            }
18329            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
18330                overflow = WEEK;
18331            }
18332            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
18333                overflow = WEEKDAY;
18334            }
18335
18336            getParsingFlags(m).overflow = overflow;
18337        }
18338
18339        return m;
18340    }
18341
18342    // iso 8601 regex
18343    // 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)
18344    var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
18345        basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
18346        tzRegex = /Z|[+-]\d\d(?::?\d\d)?/,
18347        isoDates = [
18348            ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
18349            ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
18350            ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
18351            ['GGGG-[W]WW', /\d{4}-W\d\d/, false],
18352            ['YYYY-DDD', /\d{4}-\d{3}/],
18353            ['YYYY-MM', /\d{4}-\d\d/, false],
18354            ['YYYYYYMMDD', /[+-]\d{10}/],
18355            ['YYYYMMDD', /\d{8}/],
18356            ['GGGG[W]WWE', /\d{4}W\d{3}/],
18357            ['GGGG[W]WW', /\d{4}W\d{2}/, false],
18358            ['YYYYDDD', /\d{7}/],
18359            ['YYYYMM', /\d{6}/, false],
18360            ['YYYY', /\d{4}/, false],
18361        ],
18362        // iso time formats and regexes
18363        isoTimes = [
18364            ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
18365            ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
18366            ['HH:mm:ss', /\d\d:\d\d:\d\d/],
18367            ['HH:mm', /\d\d:\d\d/],
18368            ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
18369            ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
18370            ['HHmmss', /\d\d\d\d\d\d/],
18371            ['HHmm', /\d\d\d\d/],
18372            ['HH', /\d\d/],
18373        ],
18374        aspNetJsonRegex = /^\/?Date\((-?\d+)/i,
18375        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3
18376        rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,
18377        obsOffsets = {
18378            UT: 0,
18379            GMT: 0,
18380            EDT: -4 * 60,
18381            EST: -5 * 60,
18382            CDT: -5 * 60,
18383            CST: -6 * 60,
18384            MDT: -6 * 60,
18385            MST: -7 * 60,
18386            PDT: -7 * 60,
18387            PST: -8 * 60,
18388        };
18389
18390    // date from iso format
18391    function configFromISO(config) {
18392        var i,
18393            l,
18394            string = config._i,
18395            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
18396            allowTime,
18397            dateFormat,
18398            timeFormat,
18399            tzFormat;
18400
18401        if (match) {
18402            getParsingFlags(config).iso = true;
18403
18404            for (i = 0, l = isoDates.length; i < l; i++) {
18405                if (isoDates[i][1].exec(match[1])) {
18406                    dateFormat = isoDates[i][0];
18407                    allowTime = isoDates[i][2] !== false;
18408                    break;
18409                }
18410            }
18411            if (dateFormat == null) {
18412                config._isValid = false;
18413                return;
18414            }
18415            if (match[3]) {
18416                for (i = 0, l = isoTimes.length; i < l; i++) {
18417                    if (isoTimes[i][1].exec(match[3])) {
18418                        // match[2] should be 'T' or space
18419                        timeFormat = (match[2] || ' ') + isoTimes[i][0];
18420                        break;
18421                    }
18422                }
18423                if (timeFormat == null) {
18424                    config._isValid = false;
18425                    return;
18426                }
18427            }
18428            if (!allowTime && timeFormat != null) {
18429                config._isValid = false;
18430                return;
18431            }
18432            if (match[4]) {
18433                if (tzRegex.exec(match[4])) {
18434                    tzFormat = 'Z';
18435                } else {
18436                    config._isValid = false;
18437                    return;
18438                }
18439            }
18440            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
18441            configFromStringAndFormat(config);
18442        } else {
18443            config._isValid = false;
18444        }
18445    }
18446
18447    function extractFromRFC2822Strings(
18448        yearStr,
18449        monthStr,
18450        dayStr,
18451        hourStr,
18452        minuteStr,
18453        secondStr
18454    ) {
18455        var result = [
18456            untruncateYear(yearStr),
18457            defaultLocaleMonthsShort.indexOf(monthStr),
18458            parseInt(dayStr, 10),
18459            parseInt(hourStr, 10),
18460            parseInt(minuteStr, 10),
18461        ];
18462
18463        if (secondStr) {
18464            result.push(parseInt(secondStr, 10));
18465        }
18466
18467        return result;
18468    }
18469
18470    function untruncateYear(yearStr) {
18471        var year = parseInt(yearStr, 10);
18472        if (year <= 49) {
18473            return 2000 + year;
18474        } else if (year <= 999) {
18475            return 1900 + year;
18476        }
18477        return year;
18478    }
18479
18480    function preprocessRFC2822(s) {
18481        // Remove comments and folding whitespace and replace multiple-spaces with a single space
18482        return s
18483            .replace(/\([^)]*\)|[\n\t]/g, ' ')
18484            .replace(/(\s\s+)/g, ' ')
18485            .replace(/^\s\s*/, '')
18486            .replace(/\s\s*$/, '');
18487    }
18488
18489    function checkWeekday(weekdayStr, parsedInput, config) {
18490        if (weekdayStr) {
18491            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.
18492            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),
18493                weekdayActual = new Date(
18494                    parsedInput[0],
18495                    parsedInput[1],
18496                    parsedInput[2]
18497                ).getDay();
18498            if (weekdayProvided !== weekdayActual) {
18499                getParsingFlags(config).weekdayMismatch = true;
18500                config._isValid = false;
18501                return false;
18502            }
18503        }
18504        return true;
18505    }
18506
18507    function calculateOffset(obsOffset, militaryOffset, numOffset) {
18508        if (obsOffset) {
18509            return obsOffsets[obsOffset];
18510        } else if (militaryOffset) {
18511            // the only allowed military tz is Z
18512            return 0;
18513        } else {
18514            var hm = parseInt(numOffset, 10),
18515                m = hm % 100,
18516                h = (hm - m) / 100;
18517            return h * 60 + m;
18518        }
18519    }
18520
18521    // date and time from ref 2822 format
18522    function configFromRFC2822(config) {
18523        var match = rfc2822.exec(preprocessRFC2822(config._i)),
18524            parsedArray;
18525        if (match) {
18526            parsedArray = extractFromRFC2822Strings(
18527                match[4],
18528                match[3],
18529                match[2],
18530                match[5],
18531                match[6],
18532                match[7]
18533            );
18534            if (!checkWeekday(match[1], parsedArray, config)) {
18535                return;
18536            }
18537
18538            config._a = parsedArray;
18539            config._tzm = calculateOffset(match[8], match[9], match[10]);
18540
18541            config._d = createUTCDate.apply(null, config._a);
18542            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
18543
18544            getParsingFlags(config).rfc2822 = true;
18545        } else {
18546            config._isValid = false;
18547        }
18548    }
18549
18550    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict
18551    function configFromString(config) {
18552        var matched = aspNetJsonRegex.exec(config._i);
18553        if (matched !== null) {
18554            config._d = new Date(+matched[1]);
18555            return;
18556        }
18557
18558        configFromISO(config);
18559        if (config._isValid === false) {
18560            delete config._isValid;
18561        } else {
18562            return;
18563        }
18564
18565        configFromRFC2822(config);
18566        if (config._isValid === false) {
18567            delete config._isValid;
18568        } else {
18569            return;
18570        }
18571
18572        if (config._strict) {
18573            config._isValid = false;
18574        } else {
18575            // Final attempt, use Input Fallback
18576            hooks.createFromInputFallback(config);
18577        }
18578    }
18579
18580    hooks.createFromInputFallback = deprecate(
18581        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +
18582            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +
18583            'discouraged and will be removed in an upcoming major release. Please refer to ' +
18584            'http://momentjs.com/guides/#/warnings/js-date/ for more info.',
18585        function (config) {
18586            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
18587        }
18588    );
18589
18590    // Pick the first defined of two or three arguments.
18591    function defaults(a, b, c) {
18592        if (a != null) {
18593            return a;
18594        }
18595        if (b != null) {
18596            return b;
18597        }
18598        return c;
18599    }
18600
18601    function currentDateArray(config) {
18602        // hooks is actually the exported moment object
18603        var nowValue = new Date(hooks.now());
18604        if (config._useUTC) {
18605            return [
18606                nowValue.getUTCFullYear(),
18607                nowValue.getUTCMonth(),
18608                nowValue.getUTCDate(),
18609            ];
18610        }
18611        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
18612    }
18613
18614    // convert an array to a date.
18615    // the array should mirror the parameters below
18616    // note: all values past the year are optional and will default to the lowest possible value.
18617    // [year, month, day , hour, minute, second, millisecond]
18618    function configFromArray(config) {
18619        var i,
18620            date,
18621            input = [],
18622            currentDate,
18623            expectedWeekday,
18624            yearToUse;
18625
18626        if (config._d) {
18627            return;
18628        }
18629
18630        currentDate = currentDateArray(config);
18631
18632        //compute day of the year from weeks and weekdays
18633        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
18634            dayOfYearFromWeekInfo(config);
18635        }
18636
18637        //if the day of the year is set, figure out what it is
18638        if (config._dayOfYear != null) {
18639            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
18640
18641            if (
18642                config._dayOfYear > daysInYear(yearToUse) ||
18643                config._dayOfYear === 0
18644            ) {
18645                getParsingFlags(config)._overflowDayOfYear = true;
18646            }
18647
18648            date = createUTCDate(yearToUse, 0, config._dayOfYear);
18649            config._a[MONTH] = date.getUTCMonth();
18650            config._a[DATE] = date.getUTCDate();
18651        }
18652
18653        // Default to current date.
18654        // * if no year, month, day of month are given, default to today
18655        // * if day of month is given, default month and year
18656        // * if month is given, default only year
18657        // * if year is given, don't default anything
18658        for (i = 0; i < 3 && config._a[i] == null; ++i) {
18659            config._a[i] = input[i] = currentDate[i];
18660        }
18661
18662        // Zero out whatever was not defaulted, including time
18663        for (; i < 7; i++) {
18664            config._a[i] = input[i] =
18665                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];
18666        }
18667
18668        // Check for 24:00:00.000
18669        if (
18670            config._a[HOUR] === 24 &&
18671            config._a[MINUTE] === 0 &&
18672            config._a[SECOND] === 0 &&
18673            config._a[MILLISECOND] === 0
18674        ) {
18675            config._nextDay = true;
18676            config._a[HOUR] = 0;
18677        }
18678
18679        config._d = (config._useUTC ? createUTCDate : createDate).apply(
18680            null,
18681            input
18682        );
18683        expectedWeekday = config._useUTC
18684            ? config._d.getUTCDay()
18685            : config._d.getDay();
18686
18687        // Apply timezone offset from input. The actual utcOffset can be changed
18688        // with parseZone.
18689        if (config._tzm != null) {
18690            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
18691        }
18692
18693        if (config._nextDay) {
18694            config._a[HOUR] = 24;
18695        }
18696
18697        // check for mismatching day of week
18698        if (
18699            config._w &&
18700            typeof config._w.d !== 'undefined' &&
18701            config._w.d !== expectedWeekday
18702        ) {
18703            getParsingFlags(config).weekdayMismatch = true;
18704        }
18705    }
18706
18707    function dayOfYearFromWeekInfo(config) {
18708        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;
18709
18710        w = config._w;
18711        if (w.GG != null || w.W != null || w.E != null) {
18712            dow = 1;
18713            doy = 4;
18714
18715            // TODO: We need to take the current isoWeekYear, but that depends on
18716            // how we interpret now (local, utc, fixed offset). So create
18717            // a now version of current config (take local/utc/offset flags, and
18718            // create now).
18719            weekYear = defaults(
18720                w.GG,
18721                config._a[YEAR],
18722                weekOfYear(createLocal(), 1, 4).year
18723            );
18724            week = defaults(w.W, 1);
18725            weekday = defaults(w.E, 1);
18726            if (weekday < 1 || weekday > 7) {
18727                weekdayOverflow = true;
18728            }
18729        } else {
18730            dow = config._locale._week.dow;
18731            doy = config._locale._week.doy;
18732
18733            curWeek = weekOfYear(createLocal(), dow, doy);
18734
18735            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);
18736
18737            // Default to current week.
18738            week = defaults(w.w, curWeek.week);
18739
18740            if (w.d != null) {
18741                // weekday -- low day numbers are considered next week
18742                weekday = w.d;
18743                if (weekday < 0 || weekday > 6) {
18744                    weekdayOverflow = true;
18745                }
18746            } else if (w.e != null) {
18747                // local weekday -- counting starts from beginning of week
18748                weekday = w.e + dow;
18749                if (w.e < 0 || w.e > 6) {
18750                    weekdayOverflow = true;
18751                }
18752            } else {
18753                // default to beginning of week
18754                weekday = dow;
18755            }
18756        }
18757        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
18758            getParsingFlags(config)._overflowWeeks = true;
18759        } else if (weekdayOverflow != null) {
18760            getParsingFlags(config)._overflowWeekday = true;
18761        } else {
18762            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
18763            config._a[YEAR] = temp.year;
18764            config._dayOfYear = temp.dayOfYear;
18765        }
18766    }
18767
18768    // constant that refers to the ISO standard
18769    hooks.ISO_8601 = function () {};
18770
18771    // constant that refers to the RFC 2822 form
18772    hooks.RFC_2822 = function () {};
18773
18774    // date from string and format string
18775    function configFromStringAndFormat(config) {
18776        // TODO: Move this to another part of the creation flow to prevent circular deps
18777        if (config._f === hooks.ISO_8601) {
18778            configFromISO(config);
18779            return;
18780        }
18781        if (config._f === hooks.RFC_2822) {
18782            configFromRFC2822(config);
18783            return;
18784        }
18785        config._a = [];
18786        getParsingFlags(config).empty = true;
18787
18788        // This array is used to make a Date, either with `new Date` or `Date.UTC`
18789        var string = '' + config._i,
18790            i,
18791            parsedInput,
18792            tokens,
18793            token,
18794            skipped,
18795            stringLength = string.length,
18796            totalParsedInputLength = 0,
18797            era;
18798
18799        tokens =
18800            expandFormat(config._f, config._locale).match(formattingTokens) || [];
18801
18802        for (i = 0; i < tokens.length; i++) {
18803            token = tokens[i];
18804            parsedInput = (string.match(getParseRegexForToken(token, config)) ||
18805                [])[0];
18806            if (parsedInput) {
18807                skipped = string.substr(0, string.indexOf(parsedInput));
18808                if (skipped.length > 0) {
18809                    getParsingFlags(config).unusedInput.push(skipped);
18810                }
18811                string = string.slice(
18812                    string.indexOf(parsedInput) + parsedInput.length
18813                );
18814                totalParsedInputLength += parsedInput.length;
18815            }
18816            // don't parse if it's not a known token
18817            if (formatTokenFunctions[token]) {
18818                if (parsedInput) {
18819                    getParsingFlags(config).empty = false;
18820                } else {
18821                    getParsingFlags(config).unusedTokens.push(token);
18822                }
18823                addTimeToArrayFromToken(token, parsedInput, config);
18824            } else if (config._strict && !parsedInput) {
18825                getParsingFlags(config).unusedTokens.push(token);
18826            }
18827        }
18828
18829        // add remaining unparsed input length to the string
18830        getParsingFlags(config).charsLeftOver =
18831            stringLength - totalParsedInputLength;
18832        if (string.length > 0) {
18833            getParsingFlags(config).unusedInput.push(string);
18834        }
18835
18836        // clear _12h flag if hour is <= 12
18837        if (
18838            config._a[HOUR] <= 12 &&
18839            getParsingFlags(config).bigHour === true &&
18840            config._a[HOUR] > 0
18841        ) {
18842            getParsingFlags(config).bigHour = undefined;
18843        }
18844
18845        getParsingFlags(config).parsedDateParts = config._a.slice(0);
18846        getParsingFlags(config).meridiem = config._meridiem;
18847        // handle meridiem
18848        config._a[HOUR] = meridiemFixWrap(
18849            config._locale,
18850            config._a[HOUR],
18851            config._meridiem
18852        );
18853
18854        // handle era
18855        era = getParsingFlags(config).era;
18856        if (era !== null) {
18857            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);
18858        }
18859
18860        configFromArray(config);
18861        checkOverflow(config);
18862    }
18863
18864    function meridiemFixWrap(locale, hour, meridiem) {
18865        var isPm;
18866
18867        if (meridiem == null) {
18868            // nothing to do
18869            return hour;
18870        }
18871        if (locale.meridiemHour != null) {
18872            return locale.meridiemHour(hour, meridiem);
18873        } else if (locale.isPM != null) {
18874            // Fallback
18875            isPm = locale.isPM(meridiem);
18876            if (isPm && hour < 12) {
18877                hour += 12;
18878            }
18879            if (!isPm && hour === 12) {
18880                hour = 0;
18881            }
18882            return hour;
18883        } else {
18884            // this is not supposed to happen
18885            return hour;
18886        }
18887    }
18888
18889    // date from string and array of format strings
18890    function configFromStringAndArray(config) {
18891        var tempConfig,
18892            bestMoment,
18893            scoreToBeat,
18894            i,
18895            currentScore,
18896            validFormatFound,
18897            bestFormatIsValid = false;
18898
18899        if (config._f.length === 0) {
18900            getParsingFlags(config).invalidFormat = true;
18901            config._d = new Date(NaN);
18902            return;
18903        }
18904
18905        for (i = 0; i < config._f.length; i++) {
18906            currentScore = 0;
18907            validFormatFound = false;
18908            tempConfig = copyConfig({}, config);
18909            if (config._useUTC != null) {
18910                tempConfig._useUTC = config._useUTC;
18911            }
18912            tempConfig._f = config._f[i];
18913            configFromStringAndFormat(tempConfig);
18914
18915            if (isValid(tempConfig)) {
18916                validFormatFound = true;
18917            }
18918
18919            // if there is any input that was not parsed add a penalty for that format
18920            currentScore += getParsingFlags(tempConfig).charsLeftOver;
18921
18922            //or tokens
18923            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
18924
18925            getParsingFlags(tempConfig).score = currentScore;
18926
18927            if (!bestFormatIsValid) {
18928                if (
18929                    scoreToBeat == null ||
18930                    currentScore < scoreToBeat ||
18931                    validFormatFound
18932                ) {
18933                    scoreToBeat = currentScore;
18934                    bestMoment = tempConfig;
18935                    if (validFormatFound) {
18936                        bestFormatIsValid = true;
18937                    }
18938                }
18939            } else {
18940                if (currentScore < scoreToBeat) {
18941                    scoreToBeat = currentScore;
18942                    bestMoment = tempConfig;
18943                }
18944            }
18945        }
18946
18947        extend(config, bestMoment || tempConfig);
18948    }
18949
18950    function configFromObject(config) {
18951        if (config._d) {
18952            return;
18953        }
18954
18955        var i = normalizeObjectUnits(config._i),
18956            dayOrDate = i.day === undefined ? i.date : i.day;
18957        config._a = map(
18958            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],
18959            function (obj) {
18960                return obj && parseInt(obj, 10);
18961            }
18962        );
18963
18964        configFromArray(config);
18965    }
18966
18967    function createFromConfig(config) {
18968        var res = new Moment(checkOverflow(prepareConfig(config)));
18969        if (res._nextDay) {
18970            // Adding is smart enough around DST
18971            res.add(1, 'd');
18972            res._nextDay = undefined;
18973        }
18974
18975        return res;
18976    }
18977
18978    function prepareConfig(config) {
18979        var input = config._i,
18980            format = config._f;
18981
18982        config._locale = config._locale || getLocale(config._l);
18983
18984        if (input === null || (format === undefined && input === '')) {
18985            return createInvalid({ nullInput: true });
18986        }
18987
18988        if (typeof input === 'string') {
18989            config._i = input = config._locale.preparse(input);
18990        }
18991
18992        if (isMoment(input)) {
18993            return new Moment(checkOverflow(input));
18994        } else if (isDate(input)) {
18995            config._d = input;
18996        } else if (isArray(format)) {
18997            configFromStringAndArray(config);
18998        } else if (format) {
18999            configFromStringAndFormat(config);
19000        } else {
19001            configFromInput(config);
19002        }
19003
19004        if (!isValid(config)) {
19005            config._d = null;
19006        }
19007
19008        return config;
19009    }
19010
19011    function configFromInput(config) {
19012        var input = config._i;
19013        if (isUndefined(input)) {
19014            config._d = new Date(hooks.now());
19015        } else if (isDate(input)) {
19016            config._d = new Date(input.valueOf());
19017        } else if (typeof input === 'string') {
19018            configFromString(config);
19019        } else if (isArray(input)) {
19020            config._a = map(input.slice(0), function (obj) {
19021                return parseInt(obj, 10);
19022            });
19023            configFromArray(config);
19024        } else if (isObject(input)) {
19025            configFromObject(config);
19026        } else if (isNumber(input)) {
19027            // from milliseconds
19028            config._d = new Date(input);
19029        } else {
19030            hooks.createFromInputFallback(config);
19031        }
19032    }
19033
19034    function createLocalOrUTC(input, format, locale, strict, isUTC) {
19035        var c = {};
19036
19037        if (format === true || format === false) {
19038            strict = format;
19039            format = undefined;
19040        }
19041
19042        if (locale === true || locale === false) {
19043            strict = locale;
19044            locale = undefined;
19045        }
19046
19047        if (
19048            (isObject(input) && isObjectEmpty(input)) ||
19049            (isArray(input) && input.length === 0)
19050        ) {
19051            input = undefined;
19052        }
19053        // object construction must be done this way.
19054        // https://github.com/moment/moment/issues/1423
19055        c._isAMomentObject = true;
19056        c._useUTC = c._isUTC = isUTC;
19057        c._l = locale;
19058        c._i = input;
19059        c._f = format;
19060        c._strict = strict;
19061
19062        return createFromConfig(c);
19063    }
19064
19065    function createLocal(input, format, locale, strict) {
19066        return createLocalOrUTC(input, format, locale, strict, false);
19067    }
19068
19069    var prototypeMin = deprecate(
19070            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',
19071            function () {
19072                var other = createLocal.apply(null, arguments);
19073                if (this.isValid() && other.isValid()) {
19074                    return other < this ? this : other;
19075                } else {
19076                    return createInvalid();
19077                }
19078            }
19079        ),
19080        prototypeMax = deprecate(
19081            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',
19082            function () {
19083                var other = createLocal.apply(null, arguments);
19084                if (this.isValid() && other.isValid()) {
19085                    return other > this ? this : other;
19086                } else {
19087                    return createInvalid();
19088                }
19089            }
19090        );
19091
19092    // Pick a moment m from moments so that m[fn](other) is true for all
19093    // other. This relies on the function fn to be transitive.
19094    //
19095    // moments should either be an array of moment objects or an array, whose
19096    // first element is an array of moment objects.
19097    function pickBy(fn, moments) {
19098        var res, i;
19099        if (moments.length === 1 && isArray(moments[0])) {
19100            moments = moments[0];
19101        }
19102        if (!moments.length) {
19103            return createLocal();
19104        }
19105        res = moments[0];
19106        for (i = 1; i < moments.length; ++i) {
19107            if (!moments[i].isValid() || moments[i][fn](res)) {
19108                res = moments[i];
19109            }
19110        }
19111        return res;
19112    }
19113
19114    // TODO: Use [].sort instead?
19115    function min() {
19116        var args = [].slice.call(arguments, 0);
19117
19118        return pickBy('isBefore', args);
19119    }
19120
19121    function max() {
19122        var args = [].slice.call(arguments, 0);
19123
19124        return pickBy('isAfter', args);
19125    }
19126
19127    var now = function () {
19128        return Date.now ? Date.now() : +new Date();
19129    };
19130
19131    var ordering = [
19132        'year',
19133        'quarter',
19134        'month',
19135        'week',
19136        'day',
19137        'hour',
19138        'minute',
19139        'second',
19140        'millisecond',
19141    ];
19142
19143    function isDurationValid(m) {
19144        var key,
19145            unitHasDecimal = false,
19146            i;
19147        for (key in m) {
19148            if (
19149                hasOwnProp(m, key) &&
19150                !(
19151                    indexOf.call(ordering, key) !== -1 &&
19152                    (m[key] == null || !isNaN(m[key]))
19153                )
19154            ) {
19155                return false;
19156            }
19157        }
19158
19159        for (i = 0; i < ordering.length; ++i) {
19160            if (m[ordering[i]]) {
19161                if (unitHasDecimal) {
19162                    return false; // only allow non-integers for smallest unit
19163                }
19164                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {
19165                    unitHasDecimal = true;
19166                }
19167            }
19168        }
19169
19170        return true;
19171    }
19172
19173    function isValid$1() {
19174        return this._isValid;
19175    }
19176
19177    function createInvalid$1() {
19178        return createDuration(NaN);
19179    }
19180
19181    function Duration(duration) {
19182        var normalizedInput = normalizeObjectUnits(duration),
19183            years = normalizedInput.year || 0,
19184            quarters = normalizedInput.quarter || 0,
19185            months = normalizedInput.month || 0,
19186            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,
19187            days = normalizedInput.day || 0,
19188            hours = normalizedInput.hour || 0,
19189            minutes = normalizedInput.minute || 0,
19190            seconds = normalizedInput.second || 0,
19191            milliseconds = normalizedInput.millisecond || 0;
19192
19193        this._isValid = isDurationValid(normalizedInput);
19194
19195        // representation for dateAddRemove
19196        this._milliseconds =
19197            +milliseconds +
19198            seconds * 1e3 + // 1000
19199            minutes * 6e4 + // 1000 * 60
19200            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
19201        // Because of dateAddRemove treats 24 hours as different from a
19202        // day when working around DST, we need to store them separately
19203        this._days = +days + weeks * 7;
19204        // It is impossible to translate months into days without knowing
19205        // which months you are are talking about, so we have to store
19206        // it separately.
19207        this._months = +months + quarters * 3 + years * 12;
19208
19209        this._data = {};
19210
19211        this._locale = getLocale();
19212
19213        this._bubble();
19214    }
19215
19216    function isDuration(obj) {
19217        return obj instanceof Duration;
19218    }
19219
19220    function absRound(number) {
19221        if (number < 0) {
19222            return Math.round(-1 * number) * -1;
19223        } else {
19224            return Math.round(number);
19225        }
19226    }
19227
19228    // compare two arrays, return the number of differences
19229    function compareArrays(array1, array2, dontConvert) {
19230        var len = Math.min(array1.length, array2.length),
19231            lengthDiff = Math.abs(array1.length - array2.length),
19232            diffs = 0,
19233            i;
19234        for (i = 0; i < len; i++) {
19235            if (
19236                (dontConvert && array1[i] !== array2[i]) ||
19237                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))
19238            ) {
19239                diffs++;
19240            }
19241        }
19242        return diffs + lengthDiff;
19243    }
19244
19245    // FORMATTING
19246
19247    function offset(token, separator) {
19248        addFormatToken(token, 0, 0, function () {
19249            var offset = this.utcOffset(),
19250                sign = '+';
19251            if (offset < 0) {
19252                offset = -offset;
19253                sign = '-';
19254            }
19255            return (
19256                sign +
19257                zeroFill(~~(offset / 60), 2) +
19258                separator +
19259                zeroFill(~~offset % 60, 2)
19260            );
19261        });
19262    }
19263
19264    offset('Z', ':');
19265    offset('ZZ', '');
19266
19267    // PARSING
19268
19269    addRegexToken('Z', matchShortOffset);
19270    addRegexToken('ZZ', matchShortOffset);
19271    addParseToken(['Z', 'ZZ'], function (input, array, config) {
19272        config._useUTC = true;
19273        config._tzm = offsetFromString(matchShortOffset, input);
19274    });
19275
19276    // HELPERS
19277
19278    // timezone chunker
19279    // '+10:00' > ['10',  '00']
19280    // '-1530'  > ['-15', '30']
19281    var chunkOffset = /([\+\-]|\d\d)/gi;
19282
19283    function offsetFromString(matcher, string) {
19284        var matches = (string || '').match(matcher),
19285            chunk,
19286            parts,
19287            minutes;
19288
19289        if (matches === null) {
19290            return null;
19291        }
19292
19293        chunk = matches[matches.length - 1] || [];
19294        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];
19295        minutes = +(parts[1] * 60) + toInt(parts[2]);
19296
19297        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;
19298    }
19299
19300    // Return a moment from input, that is local/utc/zone equivalent to model.
19301    function cloneWithOffset(input, model) {
19302        var res, diff;
19303        if (model._isUTC) {
19304            res = model.clone();
19305            diff =
19306                (isMoment(input) || isDate(input)
19307                    ? input.valueOf()
19308                    : createLocal(input).valueOf()) - res.valueOf();
19309            // Use low-level api, because this fn is low-level api.
19310            res._d.setTime(res._d.valueOf() + diff);
19311            hooks.updateOffset(res, false);
19312            return res;
19313        } else {
19314            return createLocal(input).local();
19315        }
19316    }
19317
19318    function getDateOffset(m) {
19319        // On Firefox.24 Date#getTimezoneOffset returns a floating point.
19320        // https://github.com/moment/moment/pull/1871
19321        return -Math.round(m._d.getTimezoneOffset());
19322    }
19323
19324    // HOOKS
19325
19326    // This function will be called whenever a moment is mutated.
19327    // It is intended to keep the offset in sync with the timezone.
19328    hooks.updateOffset = function () {};
19329
19330    // MOMENTS
19331
19332    // keepLocalTime = true means only change the timezone, without
19333    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
19334    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
19335    // +0200, so we adjust the time as needed, to be valid.
19336    //
19337    // Keeping the time actually adds/subtracts (one hour)
19338    // from the actual represented time. That is why we call updateOffset
19339    // a second time. In case it wants us to change the offset again
19340    // _changeInProgress == true case, then we have to adjust, because
19341    // there is no such time in the given timezone.
19342    function getSetOffset(input, keepLocalTime, keepMinutes) {
19343        var offset = this._offset || 0,
19344            localAdjust;
19345        if (!this.isValid()) {
19346            return input != null ? this : NaN;
19347        }
19348        if (input != null) {
19349            if (typeof input === 'string') {
19350                input = offsetFromString(matchShortOffset, input);
19351                if (input === null) {
19352                    return this;
19353                }
19354            } else if (Math.abs(input) < 16 && !keepMinutes) {
19355                input = input * 60;
19356            }
19357            if (!this._isUTC && keepLocalTime) {
19358                localAdjust = getDateOffset(this);
19359            }
19360            this._offset = input;
19361            this._isUTC = true;
19362            if (localAdjust != null) {
19363                this.add(localAdjust, 'm');
19364            }
19365            if (offset !== input) {
19366                if (!keepLocalTime || this._changeInProgress) {
19367                    addSubtract(
19368                        this,
19369                        createDuration(input - offset, 'm'),
19370                        1,
19371                        false
19372                    );
19373                } else if (!this._changeInProgress) {
19374                    this._changeInProgress = true;
19375                    hooks.updateOffset(this, true);
19376                    this._changeInProgress = null;
19377                }
19378            }
19379            return this;
19380        } else {
19381            return this._isUTC ? offset : getDateOffset(this);
19382        }
19383    }
19384
19385    function getSetZone(input, keepLocalTime) {
19386        if (input != null) {
19387            if (typeof input !== 'string') {
19388                input = -input;
19389            }
19390
19391            this.utcOffset(input, keepLocalTime);
19392
19393            return this;
19394        } else {
19395            return -this.utcOffset();
19396        }
19397    }
19398
19399    function setOffsetToUTC(keepLocalTime) {
19400        return this.utcOffset(0, keepLocalTime);
19401    }
19402
19403    function setOffsetToLocal(keepLocalTime) {
19404        if (this._isUTC) {
19405            this.utcOffset(0, keepLocalTime);
19406            this._isUTC = false;
19407
19408            if (keepLocalTime) {
19409                this.subtract(getDateOffset(this), 'm');
19410            }
19411        }
19412        return this;
19413    }
19414
19415    function setOffsetToParsedOffset() {
19416        if (this._tzm != null) {
19417            this.utcOffset(this._tzm, false, true);
19418        } else if (typeof this._i === 'string') {
19419            var tZone = offsetFromString(matchOffset, this._i);
19420            if (tZone != null) {
19421                this.utcOffset(tZone);
19422            } else {
19423                this.utcOffset(0, true);
19424            }
19425        }
19426        return this;
19427    }
19428
19429    function hasAlignedHourOffset(input) {
19430        if (!this.isValid()) {
19431            return false;
19432        }
19433        input = input ? createLocal(input).utcOffset() : 0;
19434
19435        return (this.utcOffset() - input) % 60 === 0;
19436    }
19437
19438    function isDaylightSavingTime() {
19439        return (
19440            this.utcOffset() > this.clone().month(0).utcOffset() ||
19441            this.utcOffset() > this.clone().month(5).utcOffset()
19442        );
19443    }
19444
19445    function isDaylightSavingTimeShifted() {
19446        if (!isUndefined(this._isDSTShifted)) {
19447            return this._isDSTShifted;
19448        }
19449
19450        var c = {},
19451            other;
19452
19453        copyConfig(c, this);
19454        c = prepareConfig(c);
19455
19456        if (c._a) {
19457            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
19458            this._isDSTShifted =
19459                this.isValid() && compareArrays(c._a, other.toArray()) > 0;
19460        } else {
19461            this._isDSTShifted = false;
19462        }
19463
19464        return this._isDSTShifted;
19465    }
19466
19467    function isLocal() {
19468        return this.isValid() ? !this._isUTC : false;
19469    }
19470
19471    function isUtcOffset() {
19472        return this.isValid() ? this._isUTC : false;
19473    }
19474
19475    function isUtc() {
19476        return this.isValid() ? this._isUTC && this._offset === 0 : false;
19477    }
19478
19479    // ASP.NET json date format regex
19480    var aspNetRegex = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,
19481        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
19482        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
19483        // and further modified to allow for strings containing both week and day
19484        isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
19485
19486    function createDuration(input, key) {
19487        var duration = input,
19488            // matching against regexp is expensive, do it on demand
19489            match = null,
19490            sign,
19491            ret,
19492            diffRes;
19493
19494        if (isDuration(input)) {
19495            duration = {
19496                ms: input._milliseconds,
19497                d: input._days,
19498                M: input._months,
19499            };
19500        } else if (isNumber(input) || !isNaN(+input)) {
19501            duration = {};
19502            if (key) {
19503                duration[key] = +input;
19504            } else {
19505                duration.milliseconds = +input;
19506            }
19507        } else if ((match = aspNetRegex.exec(input))) {
19508            sign = match[1] === '-' ? -1 : 1;
19509            duration = {
19510                y: 0,
19511                d: toInt(match[DATE]) * sign,
19512                h: toInt(match[HOUR]) * sign,
19513                m: toInt(match[MINUTE]) * sign,
19514                s: toInt(match[SECOND]) * sign,
19515                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match
19516            };
19517        } else if ((match = isoRegex.exec(input))) {
19518            sign = match[1] === '-' ? -1 : 1;
19519            duration = {
19520                y: parseIso(match[2], sign),
19521                M: parseIso(match[3], sign),
19522                w: parseIso(match[4], sign),
19523                d: parseIso(match[5], sign),
19524                h: parseIso(match[6], sign),
19525                m: parseIso(match[7], sign),
19526                s: parseIso(match[8], sign),
19527            };
19528        } else if (duration == null) {
19529            // checks for null or undefined
19530            duration = {};
19531        } else if (
19532            typeof duration === 'object' &&
19533            ('from' in duration || 'to' in duration)
19534        ) {
19535            diffRes = momentsDifference(
19536                createLocal(duration.from),
19537                createLocal(duration.to)
19538            );
19539
19540            duration = {};
19541            duration.ms = diffRes.milliseconds;
19542            duration.M = diffRes.months;
19543        }
19544
19545        ret = new Duration(duration);
19546
19547        if (isDuration(input) && hasOwnProp(input, '_locale')) {
19548            ret._locale = input._locale;
19549        }
19550
19551        if (isDuration(input) && hasOwnProp(input, '_isValid')) {
19552            ret._isValid = input._isValid;
19553        }
19554
19555        return ret;
19556    }
19557
19558    createDuration.fn = Duration.prototype;
19559    createDuration.invalid = createInvalid$1;
19560
19561    function parseIso(inp, sign) {
19562        // We'd normally use ~~inp for this, but unfortunately it also
19563        // converts floats to ints.
19564        // inp may be undefined, so careful calling replace on it.
19565        var res = inp && parseFloat(inp.replace(',', '.'));
19566        // apply sign while we're at it
19567        return (isNaN(res) ? 0 : res) * sign;
19568    }
19569
19570    function positiveMomentsDifference(base, other) {
19571        var res = {};
19572
19573        res.months =
19574            other.month() - base.month() + (other.year() - base.year()) * 12;
19575        if (base.clone().add(res.months, 'M').isAfter(other)) {
19576            --res.months;
19577        }
19578
19579        res.milliseconds = +other - +base.clone().add(res.months, 'M');
19580
19581        return res;
19582    }
19583
19584    function momentsDifference(base, other) {
19585        var res;
19586        if (!(base.isValid() && other.isValid())) {
19587            return { milliseconds: 0, months: 0 };
19588        }
19589
19590        other = cloneWithOffset(other, base);
19591        if (base.isBefore(other)) {
19592            res = positiveMomentsDifference(base, other);
19593        } else {
19594            res = positiveMomentsDifference(other, base);
19595            res.milliseconds = -res.milliseconds;
19596            res.months = -res.months;
19597        }
19598
19599        return res;
19600    }
19601
19602    // TODO: remove 'name' arg after deprecation is removed
19603    function createAdder(direction, name) {
19604        return function (val, period) {
19605            var dur, tmp;
19606            //invert the arguments, but complain about it
19607            if (period !== null && !isNaN(+period)) {
19608                deprecateSimple(
19609                    name,
19610                    'moment().' +
19611                        name +
19612                        '(period, number) is deprecated. Please use moment().' +
19613                        name +
19614                        '(number, period). ' +
19615                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'
19616                );
19617                tmp = val;
19618                val = period;
19619                period = tmp;
19620            }
19621
19622            dur = createDuration(val, period);
19623            addSubtract(this, dur, direction);
19624            return this;
19625        };
19626    }
19627
19628    function addSubtract(mom, duration, isAdding, updateOffset) {
19629        var milliseconds = duration._milliseconds,
19630            days = absRound(duration._days),
19631            months = absRound(duration._months);
19632
19633        if (!mom.isValid()) {
19634            // No op
19635            return;
19636        }
19637
19638        updateOffset = updateOffset == null ? true : updateOffset;
19639
19640        if (months) {
19641            setMonth(mom, get(mom, 'Month') + months * isAdding);
19642        }
19643        if (days) {
19644            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);
19645        }
19646        if (milliseconds) {
19647            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
19648        }
19649        if (updateOffset) {
19650            hooks.updateOffset(mom, days || months);
19651        }
19652    }
19653
19654    var add = createAdder(1, 'add'),
19655        subtract = createAdder(-1, 'subtract');
19656
19657    function isString(input) {
19658        return typeof input === 'string' || input instanceof String;
19659    }
19660
19661    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined
19662    function isMomentInput(input) {
19663        return (
19664            isMoment(input) ||
19665            isDate(input) ||
19666            isString(input) ||
19667            isNumber(input) ||
19668            isNumberOrStringArray(input) ||
19669            isMomentInputObject(input) ||
19670            input === null ||
19671            input === undefined
19672        );
19673    }
19674
19675    function isMomentInputObject(input) {
19676        var objectTest = isObject(input) && !isObjectEmpty(input),
19677            propertyTest = false,
19678            properties = [
19679                'years',
19680                'year',
19681                'y',
19682                'months',
19683                'month',
19684                'M',
19685                'days',
19686                'day',
19687                'd',
19688                'dates',
19689                'date',
19690                'D',
19691                'hours',
19692                'hour',
19693                'h',
19694                'minutes',
19695                'minute',
19696                'm',
19697                'seconds',
19698                'second',
19699                's',
19700                'milliseconds',
19701                'millisecond',
19702                'ms',
19703            ],
19704            i,
19705            property;
19706
19707        for (i = 0; i < properties.length; i += 1) {
19708            property = properties[i];
19709            propertyTest = propertyTest || hasOwnProp(input, property);
19710        }
19711
19712        return objectTest && propertyTest;
19713    }
19714
19715    function isNumberOrStringArray(input) {
19716        var arrayTest = isArray(input),
19717            dataTypeTest = false;
19718        if (arrayTest) {
19719            dataTypeTest =
19720                input.filter(function (item) {
19721                    return !isNumber(item) && isString(input);
19722                }).length === 0;
19723        }
19724        return arrayTest && dataTypeTest;
19725    }
19726
19727    function isCalendarSpec(input) {
19728        var objectTest = isObject(input) && !isObjectEmpty(input),
19729            propertyTest = false,
19730            properties = [
19731                'sameDay',
19732                'nextDay',
19733                'lastDay',
19734                'nextWeek',
19735                'lastWeek',
19736                'sameElse',
19737            ],
19738            i,
19739            property;
19740
19741        for (i = 0; i < properties.length; i += 1) {
19742            property = properties[i];
19743            propertyTest = propertyTest || hasOwnProp(input, property);
19744        }
19745
19746        return objectTest && propertyTest;
19747    }
19748
19749    function getCalendarFormat(myMoment, now) {
19750        var diff = myMoment.diff(now, 'days', true);
19751        return diff < -6
19752            ? 'sameElse'
19753            : diff < -1
19754            ? 'lastWeek'
19755            : diff < 0
19756            ? 'lastDay'
19757            : diff < 1
19758            ? 'sameDay'
19759            : diff < 2
19760            ? 'nextDay'
19761            : diff < 7
19762            ? 'nextWeek'
19763            : 'sameElse';
19764    }
19765
19766    function calendar$1(time, formats) {
19767        // Support for single parameter, formats only overload to the calendar function
19768        if (arguments.length === 1) {
19769            if (isMomentInput(arguments[0])) {
19770                time = arguments[0];
19771                formats = undefined;
19772            } else if (isCalendarSpec(arguments[0])) {
19773                formats = arguments[0];
19774                time = undefined;
19775            }
19776        }
19777        // We want to compare the start of today, vs this.
19778        // Getting start-of-today depends on whether we're local/utc/offset or not.
19779        var now = time || createLocal(),
19780            sod = cloneWithOffset(now, this).startOf('day'),
19781            format = hooks.calendarFormat(this, sod) || 'sameElse',
19782            output =
19783                formats &&
19784                (isFunction(formats[format])
19785                    ? formats[format].call(this, now)
19786                    : formats[format]);
19787
19788        return this.format(
19789            output || this.localeData().calendar(format, this, createLocal(now))
19790        );
19791    }
19792
19793    function clone() {
19794        return new Moment(this);
19795    }
19796
19797    function isAfter(input, units) {
19798        var localInput = isMoment(input) ? input : createLocal(input);
19799        if (!(this.isValid() && localInput.isValid())) {
19800            return false;
19801        }
19802        units = normalizeUnits(units) || 'millisecond';
19803        if (units === 'millisecond') {
19804            return this.valueOf() > localInput.valueOf();
19805        } else {
19806            return localInput.valueOf() < this.clone().startOf(units).valueOf();
19807        }
19808    }
19809
19810    function isBefore(input, units) {
19811        var localInput = isMoment(input) ? input : createLocal(input);
19812        if (!(this.isValid() && localInput.isValid())) {
19813            return false;
19814        }
19815        units = normalizeUnits(units) || 'millisecond';
19816        if (units === 'millisecond') {
19817            return this.valueOf() < localInput.valueOf();
19818        } else {
19819            return this.clone().endOf(units).valueOf() < localInput.valueOf();
19820        }
19821    }
19822
19823    function isBetween(from, to, units, inclusivity) {
19824        var localFrom = isMoment(from) ? from : createLocal(from),
19825            localTo = isMoment(to) ? to : createLocal(to);
19826        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {
19827            return false;
19828        }
19829        inclusivity = inclusivity || '()';
19830        return (
19831            (inclusivity[0] === '('
19832                ? this.isAfter(localFrom, units)
19833                : !this.isBefore(localFrom, units)) &&
19834            (inclusivity[1] === ')'
19835                ? this.isBefore(localTo, units)
19836                : !this.isAfter(localTo, units))
19837        );
19838    }
19839
19840    function isSame(input, units) {
19841        var localInput = isMoment(input) ? input : createLocal(input),
19842            inputMs;
19843        if (!(this.isValid() && localInput.isValid())) {
19844            return false;
19845        }
19846        units = normalizeUnits(units) || 'millisecond';
19847        if (units === 'millisecond') {
19848            return this.valueOf() === localInput.valueOf();
19849        } else {
19850            inputMs = localInput.valueOf();
19851            return (
19852                this.clone().startOf(units).valueOf() <= inputMs &&
19853                inputMs <= this.clone().endOf(units).valueOf()
19854            );
19855        }
19856    }
19857
19858    function isSameOrAfter(input, units) {
19859        return this.isSame(input, units) || this.isAfter(input, units);
19860    }
19861
19862    function isSameOrBefore(input, units) {
19863        return this.isSame(input, units) || this.isBefore(input, units);
19864    }
19865
19866    function diff(input, units, asFloat) {
19867        var that, zoneDelta, output;
19868
19869        if (!this.isValid()) {
19870            return NaN;
19871        }
19872
19873        that = cloneWithOffset(input, this);
19874
19875        if (!that.isValid()) {
19876            return NaN;
19877        }
19878
19879        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
19880
19881        units = normalizeUnits(units);
19882
19883        switch (units) {
19884            case 'year':
19885                output = monthDiff(this, that) / 12;
19886                break;
19887            case 'month':
19888                output = monthDiff(this, that);
19889                break;
19890            case 'quarter':
19891                output = monthDiff(this, that) / 3;
19892                break;
19893            case 'second':
19894                output = (this - that) / 1e3;
19895                break; // 1000
19896            case 'minute':
19897                output = (this - that) / 6e4;
19898                break; // 1000 * 60
19899            case 'hour':
19900                output = (this - that) / 36e5;
19901                break; // 1000 * 60 * 60
19902            case 'day':
19903                output = (this - that - zoneDelta) / 864e5;
19904                break; // 1000 * 60 * 60 * 24, negate dst
19905            case 'week':
19906                output = (this - that - zoneDelta) / 6048e5;
19907                break; // 1000 * 60 * 60 * 24 * 7, negate dst
19908            default:
19909                output = this - that;
19910        }
19911
19912        return asFloat ? output : absFloor(output);
19913    }
19914
19915    function monthDiff(a, b) {
19916        if (a.date() < b.date()) {
19917            // end-of-month calculations work correct when the start month has more
19918            // days than the end month.
19919            return -monthDiff(b, a);
19920        }
19921        // difference in months
19922        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),
19923            // b is in (anchor - 1 month, anchor + 1 month)
19924            anchor = a.clone().add(wholeMonthDiff, 'months'),
19925            anchor2,
19926            adjust;
19927
19928        if (b - anchor < 0) {
19929            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
19930            // linear across the month
19931            adjust = (b - anchor) / (anchor - anchor2);
19932        } else {
19933            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
19934            // linear across the month
19935            adjust = (b - anchor) / (anchor2 - anchor);
19936        }
19937
19938        //check for negative zero, return zero if negative zero
19939        return -(wholeMonthDiff + adjust) || 0;
19940    }
19941
19942    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
19943    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';
19944
19945    function toString() {
19946        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
19947    }
19948
19949    function toISOString(keepOffset) {
19950        if (!this.isValid()) {
19951            return null;
19952        }
19953        var utc = keepOffset !== true,
19954            m = utc ? this.clone().utc() : this;
19955        if (m.year() < 0 || m.year() > 9999) {
19956            return formatMoment(
19957                m,
19958                utc
19959                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'
19960                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'
19961            );
19962        }
19963        if (isFunction(Date.prototype.toISOString)) {
19964            // native implementation is ~50x faster, use it when we can
19965            if (utc) {
19966                return this.toDate().toISOString();
19967            } else {
19968                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)
19969                    .toISOString()
19970                    .replace('Z', formatMoment(m, 'Z'));
19971            }
19972        }
19973        return formatMoment(
19974            m,
19975            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'
19976        );
19977    }
19978
19979    /**
19980     * Return a human readable representation of a moment that can
19981     * also be evaluated to get a new moment which is the same
19982     *
19983     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
19984     */
19985    function inspect() {
19986        if (!this.isValid()) {
19987            return 'moment.invalid(/* ' + this._i + ' */)';
19988        }
19989        var func = 'moment',
19990            zone = '',
19991            prefix,
19992            year,
19993            datetime,
19994            suffix;
19995        if (!this.isLocal()) {
19996            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';
19997            zone = 'Z';
19998        }
19999        prefix = '[' + func + '("]';
20000        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';
20001        datetime = '-MM-DD[T]HH:mm:ss.SSS';
20002        suffix = zone + '[")]';
20003
20004        return this.format(prefix + year + datetime + suffix);
20005    }
20006
20007    function format(inputString) {
20008        if (!inputString) {
20009            inputString = this.isUtc()
20010                ? hooks.defaultFormatUtc
20011                : hooks.defaultFormat;
20012        }
20013        var output = formatMoment(this, inputString);
20014        return this.localeData().postformat(output);
20015    }
20016
20017    function from(time, withoutSuffix) {
20018        if (
20019            this.isValid() &&
20020            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
20021        ) {
20022            return createDuration({ to: this, from: time })
20023                .locale(this.locale())
20024                .humanize(!withoutSuffix);
20025        } else {
20026            return this.localeData().invalidDate();
20027        }
20028    }
20029
20030    function fromNow(withoutSuffix) {
20031        return this.from(createLocal(), withoutSuffix);
20032    }
20033
20034    function to(time, withoutSuffix) {
20035        if (
20036            this.isValid() &&
20037            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
20038        ) {
20039            return createDuration({ from: this, to: time })
20040                .locale(this.locale())
20041                .humanize(!withoutSuffix);
20042        } else {
20043            return this.localeData().invalidDate();
20044        }
20045    }
20046
20047    function toNow(withoutSuffix) {
20048        return this.to(createLocal(), withoutSuffix);
20049    }
20050
20051    // If passed a locale key, it will set the locale for this
20052    // instance.  Otherwise, it will return the locale configuration
20053    // variables for this instance.
20054    function locale(key) {
20055        var newLocaleData;
20056
20057        if (key === undefined) {
20058            return this._locale._abbr;
20059        } else {
20060            newLocaleData = getLocale(key);
20061            if (newLocaleData != null) {
20062                this._locale = newLocaleData;
20063            }
20064            return this;
20065        }
20066    }
20067
20068    var lang = deprecate(
20069        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
20070        function (key) {
20071            if (key === undefined) {
20072                return this.localeData();
20073            } else {
20074                return this.locale(key);
20075            }
20076        }
20077    );
20078
20079    function localeData() {
20080        return this._locale;
20081    }
20082
20083    var MS_PER_SECOND = 1000,
20084        MS_PER_MINUTE = 60 * MS_PER_SECOND,
20085        MS_PER_HOUR = 60 * MS_PER_MINUTE,
20086        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;
20087
20088    // actual modulo - handles negative numbers (for dates before 1970):
20089    function mod$1(dividend, divisor) {
20090        return ((dividend % divisor) + divisor) % divisor;
20091    }
20092
20093    function localStartOfDate(y, m, d) {
20094        // the date constructor remaps years 0-99 to 1900-1999
20095        if (y < 100 && y >= 0) {
20096            // preserve leap years using a full 400 year cycle, then reset
20097            return new Date(y + 400, m, d) - MS_PER_400_YEARS;
20098        } else {
20099            return new Date(y, m, d).valueOf();
20100        }
20101    }
20102
20103    function utcStartOfDate(y, m, d) {
20104        // Date.UTC remaps years 0-99 to 1900-1999
20105        if (y < 100 && y >= 0) {
20106            // preserve leap years using a full 400 year cycle, then reset
20107            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;
20108        } else {
20109            return Date.UTC(y, m, d);
20110        }
20111    }
20112
20113    function startOf(units) {
20114        var time, startOfDate;
20115        units = normalizeUnits(units);
20116        if (units === undefined || units === 'millisecond' || !this.isValid()) {
20117            return this;
20118        }
20119
20120        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
20121
20122        switch (units) {
20123            case 'year':
20124                time = startOfDate(this.year(), 0, 1);
20125                break;
20126            case 'quarter':
20127                time = startOfDate(
20128                    this.year(),
20129                    this.month() - (this.month() % 3),
20130                    1
20131                );
20132                break;
20133            case 'month':
20134                time = startOfDate(this.year(), this.month(), 1);
20135                break;
20136            case 'week':
20137                time = startOfDate(
20138                    this.year(),
20139                    this.month(),
20140                    this.date() - this.weekday()
20141                );
20142                break;
20143            case 'isoWeek':
20144                time = startOfDate(
20145                    this.year(),
20146                    this.month(),
20147                    this.date() - (this.isoWeekday() - 1)
20148                );
20149                break;
20150            case 'day':
20151            case 'date':
20152                time = startOfDate(this.year(), this.month(), this.date());
20153                break;
20154            case 'hour':
20155                time = this._d.valueOf();
20156                time -= mod$1(
20157                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
20158                    MS_PER_HOUR
20159                );
20160                break;
20161            case 'minute':
20162                time = this._d.valueOf();
20163                time -= mod$1(time, MS_PER_MINUTE);
20164                break;
20165            case 'second':
20166                time = this._d.valueOf();
20167                time -= mod$1(time, MS_PER_SECOND);
20168                break;
20169        }
20170
20171        this._d.setTime(time);
20172        hooks.updateOffset(this, true);
20173        return this;
20174    }
20175
20176    function endOf(units) {
20177        var time, startOfDate;
20178        units = normalizeUnits(units);
20179        if (units === undefined || units === 'millisecond' || !this.isValid()) {
20180            return this;
20181        }
20182
20183        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
20184
20185        switch (units) {
20186            case 'year':
20187                time = startOfDate(this.year() + 1, 0, 1) - 1;
20188                break;
20189            case 'quarter':
20190                time =
20191                    startOfDate(
20192                        this.year(),
20193                        this.month() - (this.month() % 3) + 3,
20194                        1
20195                    ) - 1;
20196                break;
20197            case 'month':
20198                time = startOfDate(this.year(), this.month() + 1, 1) - 1;
20199                break;
20200            case 'week':
20201                time =
20202                    startOfDate(
20203                        this.year(),
20204                        this.month(),
20205                        this.date() - this.weekday() + 7
20206                    ) - 1;
20207                break;
20208            case 'isoWeek':
20209                time =
20210                    startOfDate(
20211                        this.year(),
20212                        this.month(),
20213                        this.date() - (this.isoWeekday() - 1) + 7
20214                    ) - 1;
20215                break;
20216            case 'day':
20217            case 'date':
20218                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;
20219                break;
20220            case 'hour':
20221                time = this._d.valueOf();
20222                time +=
20223                    MS_PER_HOUR -
20224                    mod$1(
20225                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
20226                        MS_PER_HOUR
20227                    ) -
20228                    1;
20229                break;
20230            case 'minute':
20231                time = this._d.valueOf();
20232                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;
20233                break;
20234            case 'second':
20235                time = this._d.valueOf();
20236                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;
20237                break;
20238        }
20239
20240        this._d.setTime(time);
20241        hooks.updateOffset(this, true);
20242        return this;
20243    }
20244
20245    function valueOf() {
20246        return this._d.valueOf() - (this._offset || 0) * 60000;
20247    }
20248
20249    function unix() {
20250        return Math.floor(this.valueOf() / 1000);
20251    }
20252
20253    function toDate() {
20254        return new Date(this.valueOf());
20255    }
20256
20257    function toArray() {
20258        var m = this;
20259        return [
20260            m.year(),
20261            m.month(),
20262            m.date(),
20263            m.hour(),
20264            m.minute(),
20265            m.second(),
20266            m.millisecond(),
20267        ];
20268    }
20269
20270    function toObject() {
20271        var m = this;
20272        return {
20273            years: m.year(),
20274            months: m.month(),
20275            date: m.date(),
20276            hours: m.hours(),
20277            minutes: m.minutes(),
20278            seconds: m.seconds(),
20279            milliseconds: m.milliseconds(),
20280        };
20281    }
20282
20283    function toJSON() {
20284        // new Date(NaN).toJSON() === null
20285        return this.isValid() ? this.toISOString() : null;
20286    }
20287
20288    function isValid$2() {
20289        return isValid(this);
20290    }
20291
20292    function parsingFlags() {
20293        return extend({}, getParsingFlags(this));
20294    }
20295
20296    function invalidAt() {
20297        return getParsingFlags(this).overflow;
20298    }
20299
20300    function creationData() {
20301        return {
20302            input: this._i,
20303            format: this._f,
20304            locale: this._locale,
20305            isUTC: this._isUTC,
20306            strict: this._strict,
20307        };
20308    }
20309
20310    addFormatToken('N', 0, 0, 'eraAbbr');
20311    addFormatToken('NN', 0, 0, 'eraAbbr');
20312    addFormatToken('NNN', 0, 0, 'eraAbbr');
20313    addFormatToken('NNNN', 0, 0, 'eraName');
20314    addFormatToken('NNNNN', 0, 0, 'eraNarrow');
20315
20316    addFormatToken('y', ['y', 1], 'yo', 'eraYear');
20317    addFormatToken('y', ['yy', 2], 0, 'eraYear');
20318    addFormatToken('y', ['yyy', 3], 0, 'eraYear');
20319    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');
20320
20321    addRegexToken('N', matchEraAbbr);
20322    addRegexToken('NN', matchEraAbbr);
20323    addRegexToken('NNN', matchEraAbbr);
20324    addRegexToken('NNNN', matchEraName);
20325    addRegexToken('NNNNN', matchEraNarrow);
20326
20327    addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (
20328        input,
20329        array,
20330        config,
20331        token
20332    ) {
20333        var era = config._locale.erasParse(input, token, config._strict);
20334        if (era) {
20335            getParsingFlags(config).era = era;
20336        } else {
20337            getParsingFlags(config).invalidEra = input;
20338        }
20339    });
20340
20341    addRegexToken('y', matchUnsigned);
20342    addRegexToken('yy', matchUnsigned);
20343    addRegexToken('yyy', matchUnsigned);
20344    addRegexToken('yyyy', matchUnsigned);
20345    addRegexToken('yo', matchEraYearOrdinal);
20346
20347    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);
20348    addParseToken(['yo'], function (input, array, config, token) {
20349        var match;
20350        if (config._locale._eraYearOrdinalRegex) {
20351            match = input.match(config._locale._eraYearOrdinalRegex);
20352        }
20353
20354        if (config._locale.eraYearOrdinalParse) {
20355            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);
20356        } else {
20357            array[YEAR] = parseInt(input, 10);
20358        }
20359    });
20360
20361    function localeEras(m, format) {
20362        var i,
20363            l,
20364            date,
20365            eras = this._eras || getLocale('en')._eras;
20366        for (i = 0, l = eras.length; i < l; ++i) {
20367            switch (typeof eras[i].since) {
20368                case 'string':
20369                    // truncate time
20370                    date = hooks(eras[i].since).startOf('day');
20371                    eras[i].since = date.valueOf();
20372                    break;
20373            }
20374
20375            switch (typeof eras[i].until) {
20376                case 'undefined':
20377                    eras[i].until = +Infinity;
20378                    break;
20379                case 'string':
20380                    // truncate time
20381                    date = hooks(eras[i].until).startOf('day').valueOf();
20382                    eras[i].until = date.valueOf();
20383                    break;
20384            }
20385        }
20386        return eras;
20387    }
20388
20389    function localeErasParse(eraName, format, strict) {
20390        var i,
20391            l,
20392            eras = this.eras(),
20393            name,
20394            abbr,
20395            narrow;
20396        eraName = eraName.toUpperCase();
20397
20398        for (i = 0, l = eras.length; i < l; ++i) {
20399            name = eras[i].name.toUpperCase();
20400            abbr = eras[i].abbr.toUpperCase();
20401            narrow = eras[i].narrow.toUpperCase();
20402
20403            if (strict) {
20404                switch (format) {
20405                    case 'N':
20406                    case 'NN':
20407                    case 'NNN':
20408                        if (abbr === eraName) {
20409                            return eras[i];
20410                        }
20411                        break;
20412
20413                    case 'NNNN':
20414                        if (name === eraName) {
20415                            return eras[i];
20416                        }
20417                        break;
20418
20419                    case 'NNNNN':
20420                        if (narrow === eraName) {
20421                            return eras[i];
20422                        }
20423                        break;
20424                }
20425            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {
20426                return eras[i];
20427            }
20428        }
20429    }
20430
20431    function localeErasConvertYear(era, year) {
20432        var dir = era.since <= era.until ? +1 : -1;
20433        if (year === undefined) {
20434            return hooks(era.since).year();
20435        } else {
20436            return hooks(era.since).year() + (year - era.offset) * dir;
20437        }
20438    }
20439
20440    function getEraName() {
20441        var i,
20442            l,
20443            val,
20444            eras = this.localeData().eras();
20445        for (i = 0, l = eras.length; i < l; ++i) {
20446            // truncate time
20447            val = this.startOf('day').valueOf();
20448
20449            if (eras[i].since <= val && val <= eras[i].until) {
20450                return eras[i].name;
20451            }
20452            if (eras[i].until <= val && val <= eras[i].since) {
20453                return eras[i].name;
20454            }
20455        }
20456
20457        return '';
20458    }
20459
20460    function getEraNarrow() {
20461        var i,
20462            l,
20463            val,
20464            eras = this.localeData().eras();
20465        for (i = 0, l = eras.length; i < l; ++i) {
20466            // truncate time
20467            val = this.startOf('day').valueOf();
20468
20469            if (eras[i].since <= val && val <= eras[i].until) {
20470                return eras[i].narrow;
20471            }
20472            if (eras[i].until <= val && val <= eras[i].since) {
20473                return eras[i].narrow;
20474            }
20475        }
20476
20477        return '';
20478    }
20479
20480    function getEraAbbr() {
20481        var i,
20482            l,
20483            val,
20484            eras = this.localeData().eras();
20485        for (i = 0, l = eras.length; i < l; ++i) {
20486            // truncate time
20487            val = this.startOf('day').valueOf();
20488
20489            if (eras[i].since <= val && val <= eras[i].until) {
20490                return eras[i].abbr;
20491            }
20492            if (eras[i].until <= val && val <= eras[i].since) {
20493                return eras[i].abbr;
20494            }
20495        }
20496
20497        return '';
20498    }
20499
20500    function getEraYear() {
20501        var i,
20502            l,
20503            dir,
20504            val,
20505            eras = this.localeData().eras();
20506        for (i = 0, l = eras.length; i < l; ++i) {
20507            dir = eras[i].since <= eras[i].until ? +1 : -1;
20508
20509            // truncate time
20510            val = this.startOf('day').valueOf();
20511
20512            if (
20513                (eras[i].since <= val && val <= eras[i].until) ||
20514                (eras[i].until <= val && val <= eras[i].since)
20515            ) {
20516                return (
20517                    (this.year() - hooks(eras[i].since).year()) * dir +
20518                    eras[i].offset
20519                );
20520            }
20521        }
20522
20523        return this.year();
20524    }
20525
20526    function erasNameRegex(isStrict) {
20527        if (!hasOwnProp(this, '_erasNameRegex')) {
20528            computeErasParse.call(this);
20529        }
20530        return isStrict ? this._erasNameRegex : this._erasRegex;
20531    }
20532
20533    function erasAbbrRegex(isStrict) {
20534        if (!hasOwnProp(this, '_erasAbbrRegex')) {
20535            computeErasParse.call(this);
20536        }
20537        return isStrict ? this._erasAbbrRegex : this._erasRegex;
20538    }
20539
20540    function erasNarrowRegex(isStrict) {
20541        if (!hasOwnProp(this, '_erasNarrowRegex')) {
20542            computeErasParse.call(this);
20543        }
20544        return isStrict ? this._erasNarrowRegex : this._erasRegex;
20545    }
20546
20547    function matchEraAbbr(isStrict, locale) {
20548        return locale.erasAbbrRegex(isStrict);
20549    }
20550
20551    function matchEraName(isStrict, locale) {
20552        return locale.erasNameRegex(isStrict);
20553    }
20554
20555    function matchEraNarrow(isStrict, locale) {
20556        return locale.erasNarrowRegex(isStrict);
20557    }
20558
20559    function matchEraYearOrdinal(isStrict, locale) {
20560        return locale._eraYearOrdinalRegex || matchUnsigned;
20561    }
20562
20563    function computeErasParse() {
20564        var abbrPieces = [],
20565            namePieces = [],
20566            narrowPieces = [],
20567            mixedPieces = [],
20568            i,
20569            l,
20570            eras = this.eras();
20571
20572        for (i = 0, l = eras.length; i < l; ++i) {
20573            namePieces.push(regexEscape(eras[i].name));
20574            abbrPieces.push(regexEscape(eras[i].abbr));
20575            narrowPieces.push(regexEscape(eras[i].narrow));
20576
20577            mixedPieces.push(regexEscape(eras[i].name));
20578            mixedPieces.push(regexEscape(eras[i].abbr));
20579            mixedPieces.push(regexEscape(eras[i].narrow));
20580        }
20581
20582        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
20583        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');
20584        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');
20585        this._erasNarrowRegex = new RegExp(
20586            '^(' + narrowPieces.join('|') + ')',
20587            'i'
20588        );
20589    }
20590
20591    // FORMATTING
20592
20593    addFormatToken(0, ['gg', 2], 0, function () {
20594        return this.weekYear() % 100;
20595    });
20596
20597    addFormatToken(0, ['GG', 2], 0, function () {
20598        return this.isoWeekYear() % 100;
20599    });
20600
20601    function addWeekYearFormatToken(token, getter) {
20602        addFormatToken(0, [token, token.length], 0, getter);
20603    }
20604
20605    addWeekYearFormatToken('gggg', 'weekYear');
20606    addWeekYearFormatToken('ggggg', 'weekYear');
20607    addWeekYearFormatToken('GGGG', 'isoWeekYear');
20608    addWeekYearFormatToken('GGGGG', 'isoWeekYear');
20609
20610    // ALIASES
20611
20612    addUnitAlias('weekYear', 'gg');
20613    addUnitAlias('isoWeekYear', 'GG');
20614
20615    // PRIORITY
20616
20617    addUnitPriority('weekYear', 1);
20618    addUnitPriority('isoWeekYear', 1);
20619
20620    // PARSING
20621
20622    addRegexToken('G', matchSigned);
20623    addRegexToken('g', matchSigned);
20624    addRegexToken('GG', match1to2, match2);
20625    addRegexToken('gg', match1to2, match2);
20626    addRegexToken('GGGG', match1to4, match4);
20627    addRegexToken('gggg', match1to4, match4);
20628    addRegexToken('GGGGG', match1to6, match6);
20629    addRegexToken('ggggg', match1to6, match6);
20630
20631    addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (
20632        input,
20633        week,
20634        config,
20635        token
20636    ) {
20637        week[token.substr(0, 2)] = toInt(input);
20638    });
20639
20640    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
20641        week[token] = hooks.parseTwoDigitYear(input);
20642    });
20643
20644    // MOMENTS
20645
20646    function getSetWeekYear(input) {
20647        return getSetWeekYearHelper.call(
20648            this,
20649            input,
20650            this.week(),
20651            this.weekday(),
20652            this.localeData()._week.dow,
20653            this.localeData()._week.doy
20654        );
20655    }
20656
20657    function getSetISOWeekYear(input) {
20658        return getSetWeekYearHelper.call(
20659            this,
20660            input,
20661            this.isoWeek(),
20662            this.isoWeekday(),
20663            1,
20664            4
20665        );
20666    }
20667
20668    function getISOWeeksInYear() {
20669        return weeksInYear(this.year(), 1, 4);
20670    }
20671
20672    function getISOWeeksInISOWeekYear() {
20673        return weeksInYear(this.isoWeekYear(), 1, 4);
20674    }
20675
20676    function getWeeksInYear() {
20677        var weekInfo = this.localeData()._week;
20678        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
20679    }
20680
20681    function getWeeksInWeekYear() {
20682        var weekInfo = this.localeData()._week;
20683        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);
20684    }
20685
20686    function getSetWeekYearHelper(input, week, weekday, dow, doy) {
20687        var weeksTarget;
20688        if (input == null) {
20689            return weekOfYear(this, dow, doy).year;
20690        } else {
20691            weeksTarget = weeksInYear(input, dow, doy);
20692            if (week > weeksTarget) {
20693                week = weeksTarget;
20694            }
20695            return setWeekAll.call(this, input, week, weekday, dow, doy);
20696        }
20697    }
20698
20699    function setWeekAll(weekYear, week, weekday, dow, doy) {
20700        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
20701            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
20702
20703        this.year(date.getUTCFullYear());
20704        this.month(date.getUTCMonth());
20705        this.date(date.getUTCDate());
20706        return this;
20707    }
20708
20709    // FORMATTING
20710
20711    addFormatToken('Q', 0, 'Qo', 'quarter');
20712
20713    // ALIASES
20714
20715    addUnitAlias('quarter', 'Q');
20716
20717    // PRIORITY
20718
20719    addUnitPriority('quarter', 7);
20720
20721    // PARSING
20722
20723    addRegexToken('Q', match1);
20724    addParseToken('Q', function (input, array) {
20725        array[MONTH] = (toInt(input) - 1) * 3;
20726    });
20727
20728    // MOMENTS
20729
20730    function getSetQuarter(input) {
20731        return input == null
20732            ? Math.ceil((this.month() + 1) / 3)
20733            : this.month((input - 1) * 3 + (this.month() % 3));
20734    }
20735
20736    // FORMATTING
20737
20738    addFormatToken('D', ['DD', 2], 'Do', 'date');
20739
20740    // ALIASES
20741
20742    addUnitAlias('date', 'D');
20743
20744    // PRIORITY
20745    addUnitPriority('date', 9);
20746
20747    // PARSING
20748
20749    addRegexToken('D', match1to2);
20750    addRegexToken('DD', match1to2, match2);
20751    addRegexToken('Do', function (isStrict, locale) {
20752        // TODO: Remove "ordinalParse" fallback in next major release.
20753        return isStrict
20754            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse
20755            : locale._dayOfMonthOrdinalParseLenient;
20756    });
20757
20758    addParseToken(['D', 'DD'], DATE);
20759    addParseToken('Do', function (input, array) {
20760        array[DATE] = toInt(input.match(match1to2)[0]);
20761    });
20762
20763    // MOMENTS
20764
20765    var getSetDayOfMonth = makeGetSet('Date', true);
20766
20767    // FORMATTING
20768
20769    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
20770
20771    // ALIASES
20772
20773    addUnitAlias('dayOfYear', 'DDD');
20774
20775    // PRIORITY
20776    addUnitPriority('dayOfYear', 4);
20777
20778    // PARSING
20779
20780    addRegexToken('DDD', match1to3);
20781    addRegexToken('DDDD', match3);
20782    addParseToken(['DDD', 'DDDD'], function (input, array, config) {
20783        config._dayOfYear = toInt(input);
20784    });
20785
20786    // HELPERS
20787
20788    // MOMENTS
20789
20790    function getSetDayOfYear(input) {
20791        var dayOfYear =
20792            Math.round(
20793                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5
20794            ) + 1;
20795        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');
20796    }
20797
20798    // FORMATTING
20799
20800    addFormatToken('m', ['mm', 2], 0, 'minute');
20801
20802    // ALIASES
20803
20804    addUnitAlias('minute', 'm');
20805
20806    // PRIORITY
20807
20808    addUnitPriority('minute', 14);
20809
20810    // PARSING
20811
20812    addRegexToken('m', match1to2);
20813    addRegexToken('mm', match1to2, match2);
20814    addParseToken(['m', 'mm'], MINUTE);
20815
20816    // MOMENTS
20817
20818    var getSetMinute = makeGetSet('Minutes', false);
20819
20820    // FORMATTING
20821
20822    addFormatToken('s', ['ss', 2], 0, 'second');
20823
20824    // ALIASES
20825
20826    addUnitAlias('second', 's');
20827
20828    // PRIORITY
20829
20830    addUnitPriority('second', 15);
20831
20832    // PARSING
20833
20834    addRegexToken('s', match1to2);
20835    addRegexToken('ss', match1to2, match2);
20836    addParseToken(['s', 'ss'], SECOND);
20837
20838    // MOMENTS
20839
20840    var getSetSecond = makeGetSet('Seconds', false);
20841
20842    // FORMATTING
20843
20844    addFormatToken('S', 0, 0, function () {
20845        return ~~(this.millisecond() / 100);
20846    });
20847
20848    addFormatToken(0, ['SS', 2], 0, function () {
20849        return ~~(this.millisecond() / 10);
20850    });
20851
20852    addFormatToken(0, ['SSS', 3], 0, 'millisecond');
20853    addFormatToken(0, ['SSSS', 4], 0, function () {
20854        return this.millisecond() * 10;
20855    });
20856    addFormatToken(0, ['SSSSS', 5], 0, function () {
20857        return this.millisecond() * 100;
20858    });
20859    addFormatToken(0, ['SSSSSS', 6], 0, function () {
20860        return this.millisecond() * 1000;
20861    });
20862    addFormatToken(0, ['SSSSSSS', 7], 0, function () {
20863        return this.millisecond() * 10000;
20864    });
20865    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
20866        return this.millisecond() * 100000;
20867    });
20868    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
20869        return this.millisecond() * 1000000;
20870    });
20871
20872    // ALIASES
20873
20874    addUnitAlias('millisecond', 'ms');
20875
20876    // PRIORITY
20877
20878    addUnitPriority('millisecond', 16);
20879
20880    // PARSING
20881
20882    addRegexToken('S', match1to3, match1);
20883    addRegexToken('SS', match1to3, match2);
20884    addRegexToken('SSS', match1to3, match3);
20885
20886    var token, getSetMillisecond;
20887    for (token = 'SSSS'; token.length <= 9; token += 'S') {
20888        addRegexToken(token, matchUnsigned);
20889    }
20890
20891    function parseMs(input, array) {
20892        array[MILLISECOND] = toInt(('0.' + input) * 1000);
20893    }
20894
20895    for (token = 'S'; token.length <= 9; token += 'S') {
20896        addParseToken(token, parseMs);
20897    }
20898
20899    getSetMillisecond = makeGetSet('Milliseconds', false);
20900
20901    // FORMATTING
20902
20903    addFormatToken('z', 0, 0, 'zoneAbbr');
20904    addFormatToken('zz', 0, 0, 'zoneName');
20905
20906    // MOMENTS
20907
20908    function getZoneAbbr() {
20909        return this._isUTC ? 'UTC' : '';
20910    }
20911
20912    function getZoneName() {
20913        return this._isUTC ? 'Coordinated Universal Time' : '';
20914    }
20915
20916    var proto = Moment.prototype;
20917
20918    proto.add = add;
20919    proto.calendar = calendar$1;
20920    proto.clone = clone;
20921    proto.diff = diff;
20922    proto.endOf = endOf;
20923    proto.format = format;
20924    proto.from = from;
20925    proto.fromNow = fromNow;
20926    proto.to = to;
20927    proto.toNow = toNow;
20928    proto.get = stringGet;
20929    proto.invalidAt = invalidAt;
20930    proto.isAfter = isAfter;
20931    proto.isBefore = isBefore;
20932    proto.isBetween = isBetween;
20933    proto.isSame = isSame;
20934    proto.isSameOrAfter = isSameOrAfter;
20935    proto.isSameOrBefore = isSameOrBefore;
20936    proto.isValid = isValid$2;
20937    proto.lang = lang;
20938    proto.locale = locale;
20939    proto.localeData = localeData;
20940    proto.max = prototypeMax;
20941    proto.min = prototypeMin;
20942    proto.parsingFlags = parsingFlags;
20943    proto.set = stringSet;
20944    proto.startOf = startOf;
20945    proto.subtract = subtract;
20946    proto.toArray = toArray;
20947    proto.toObject = toObject;
20948    proto.toDate = toDate;
20949    proto.toISOString = toISOString;
20950    proto.inspect = inspect;
20951    if (typeof Symbol !== 'undefined' && Symbol.for != null) {
20952        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {
20953            return 'Moment<' + this.format() + '>';
20954        };
20955    }
20956    proto.toJSON = toJSON;
20957    proto.toString = toString;
20958    proto.unix = unix;
20959    proto.valueOf = valueOf;
20960    proto.creationData = creationData;
20961    proto.eraName = getEraName;
20962    proto.eraNarrow = getEraNarrow;
20963    proto.eraAbbr = getEraAbbr;
20964    proto.eraYear = getEraYear;
20965    proto.year = getSetYear;
20966    proto.isLeapYear = getIsLeapYear;
20967    proto.weekYear = getSetWeekYear;
20968    proto.isoWeekYear = getSetISOWeekYear;
20969    proto.quarter = proto.quarters = getSetQuarter;
20970    proto.month = getSetMonth;
20971    proto.daysInMonth = getDaysInMonth;
20972    proto.week = proto.weeks = getSetWeek;
20973    proto.isoWeek = proto.isoWeeks = getSetISOWeek;
20974    proto.weeksInYear = getWeeksInYear;
20975    proto.weeksInWeekYear = getWeeksInWeekYear;
20976    proto.isoWeeksInYear = getISOWeeksInYear;
20977    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;
20978    proto.date = getSetDayOfMonth;
20979    proto.day = proto.days = getSetDayOfWeek;
20980    proto.weekday = getSetLocaleDayOfWeek;
20981    proto.isoWeekday = getSetISODayOfWeek;
20982    proto.dayOfYear = getSetDayOfYear;
20983    proto.hour = proto.hours = getSetHour;
20984    proto.minute = proto.minutes = getSetMinute;
20985    proto.second = proto.seconds = getSetSecond;
20986    proto.millisecond = proto.milliseconds = getSetMillisecond;
20987    proto.utcOffset = getSetOffset;
20988    proto.utc = setOffsetToUTC;
20989    proto.local = setOffsetToLocal;
20990    proto.parseZone = setOffsetToParsedOffset;
20991    proto.hasAlignedHourOffset = hasAlignedHourOffset;
20992    proto.isDST = isDaylightSavingTime;
20993    proto.isLocal = isLocal;
20994    proto.isUtcOffset = isUtcOffset;
20995    proto.isUtc = isUtc;
20996    proto.isUTC = isUtc;
20997    proto.zoneAbbr = getZoneAbbr;
20998    proto.zoneName = getZoneName;
20999    proto.dates = deprecate(
21000        'dates accessor is deprecated. Use date instead.',
21001        getSetDayOfMonth
21002    );
21003    proto.months = deprecate(
21004        'months accessor is deprecated. Use month instead',
21005        getSetMonth
21006    );
21007    proto.years = deprecate(
21008        'years accessor is deprecated. Use year instead',
21009        getSetYear
21010    );
21011    proto.zone = deprecate(
21012        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',
21013        getSetZone
21014    );
21015    proto.isDSTShifted = deprecate(
21016        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',
21017        isDaylightSavingTimeShifted
21018    );
21019
21020    function createUnix(input) {
21021        return createLocal(input * 1000);
21022    }
21023
21024    function createInZone() {
21025        return createLocal.apply(null, arguments).parseZone();
21026    }
21027
21028    function preParsePostFormat(string) {
21029        return string;
21030    }
21031
21032    var proto$1 = Locale.prototype;
21033
21034    proto$1.calendar = calendar;
21035    proto$1.longDateFormat = longDateFormat;
21036    proto$1.invalidDate = invalidDate;
21037    proto$1.ordinal = ordinal;
21038    proto$1.preparse = preParsePostFormat;
21039    proto$1.postformat = preParsePostFormat;
21040    proto$1.relativeTime = relativeTime;
21041    proto$1.pastFuture = pastFuture;
21042    proto$1.set = set;
21043    proto$1.eras = localeEras;
21044    proto$1.erasParse = localeErasParse;
21045    proto$1.erasConvertYear = localeErasConvertYear;
21046    proto$1.erasAbbrRegex = erasAbbrRegex;
21047    proto$1.erasNameRegex = erasNameRegex;
21048    proto$1.erasNarrowRegex = erasNarrowRegex;
21049
21050    proto$1.months = localeMonths;
21051    proto$1.monthsShort = localeMonthsShort;
21052    proto$1.monthsParse = localeMonthsParse;
21053    proto$1.monthsRegex = monthsRegex;
21054    proto$1.monthsShortRegex = monthsShortRegex;
21055    proto$1.week = localeWeek;
21056    proto$1.firstDayOfYear = localeFirstDayOfYear;
21057    proto$1.firstDayOfWeek = localeFirstDayOfWeek;
21058
21059    proto$1.weekdays = localeWeekdays;
21060    proto$1.weekdaysMin = localeWeekdaysMin;
21061    proto$1.weekdaysShort = localeWeekdaysShort;
21062    proto$1.weekdaysParse = localeWeekdaysParse;
21063
21064    proto$1.weekdaysRegex = weekdaysRegex;
21065    proto$1.weekdaysShortRegex = weekdaysShortRegex;
21066    proto$1.weekdaysMinRegex = weekdaysMinRegex;
21067
21068    proto$1.isPM = localeIsPM;
21069    proto$1.meridiem = localeMeridiem;
21070
21071    function get$1(format, index, field, setter) {
21072        var locale = getLocale(),
21073            utc = createUTC().set(setter, index);
21074        return locale[field](utc, format);
21075    }
21076
21077    function listMonthsImpl(format, index, field) {
21078        if (isNumber(format)) {
21079            index = format;
21080            format = undefined;
21081        }
21082
21083        format = format || '';
21084
21085        if (index != null) {
21086            return get$1(format, index, field, 'month');
21087        }
21088
21089        var i,
21090            out = [];
21091        for (i = 0; i < 12; i++) {
21092            out[i] = get$1(format, i, field, 'month');
21093        }
21094        return out;
21095    }
21096
21097    // ()
21098    // (5)
21099    // (fmt, 5)
21100    // (fmt)
21101    // (true)
21102    // (true, 5)
21103    // (true, fmt, 5)
21104    // (true, fmt)
21105    function listWeekdaysImpl(localeSorted, format, index, field) {
21106        if (typeof localeSorted === 'boolean') {
21107            if (isNumber(format)) {
21108                index = format;
21109                format = undefined;
21110            }
21111
21112            format = format || '';
21113        } else {
21114            format = localeSorted;
21115            index = format;
21116            localeSorted = false;
21117
21118            if (isNumber(format)) {
21119                index = format;
21120                format = undefined;
21121            }
21122
21123            format = format || '';
21124        }
21125
21126        var locale = getLocale(),
21127            shift = localeSorted ? locale._week.dow : 0,
21128            i,
21129            out = [];
21130
21131        if (index != null) {
21132            return get$1(format, (index + shift) % 7, field, 'day');
21133        }
21134
21135        for (i = 0; i < 7; i++) {
21136            out[i] = get$1(format, (i + shift) % 7, field, 'day');
21137        }
21138        return out;
21139    }
21140
21141    function listMonths(format, index) {
21142        return listMonthsImpl(format, index, 'months');
21143    }
21144
21145    function listMonthsShort(format, index) {
21146        return listMonthsImpl(format, index, 'monthsShort');
21147    }
21148
21149    function listWeekdays(localeSorted, format, index) {
21150        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');
21151    }
21152
21153    function listWeekdaysShort(localeSorted, format, index) {
21154        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');
21155    }
21156
21157    function listWeekdaysMin(localeSorted, format, index) {
21158        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');
21159    }
21160
21161    getSetGlobalLocale('en', {
21162        eras: [
21163            {
21164                since: '0001-01-01',
21165                until: +Infinity,
21166                offset: 1,
21167                name: 'Anno Domini',
21168                narrow: 'AD',
21169                abbr: 'AD',
21170            },
21171            {
21172                since: '0000-12-31',
21173                until: -Infinity,
21174                offset: 1,
21175                name: 'Before Christ',
21176                narrow: 'BC',
21177                abbr: 'BC',
21178            },
21179        ],
21180        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
21181        ordinal: function (number) {
21182            var b = number % 10,
21183                output =
21184                    toInt((number % 100) / 10) === 1
21185                        ? 'th'
21186                        : b === 1
21187                        ? 'st'
21188                        : b === 2
21189                        ? 'nd'
21190                        : b === 3
21191                        ? 'rd'
21192                        : 'th';
21193            return number + output;
21194        },
21195    });
21196
21197    // Side effect imports
21198
21199    hooks.lang = deprecate(
21200        'moment.lang is deprecated. Use moment.locale instead.',
21201        getSetGlobalLocale
21202    );
21203    hooks.langData = deprecate(
21204        'moment.langData is deprecated. Use moment.localeData instead.',
21205        getLocale
21206    );
21207
21208    var mathAbs = Math.abs;
21209
21210    function abs() {
21211        var data = this._data;
21212
21213        this._milliseconds = mathAbs(this._milliseconds);
21214        this._days = mathAbs(this._days);
21215        this._months = mathAbs(this._months);
21216
21217        data.milliseconds = mathAbs(data.milliseconds);
21218        data.seconds = mathAbs(data.seconds);
21219        data.minutes = mathAbs(data.minutes);
21220        data.hours = mathAbs(data.hours);
21221        data.months = mathAbs(data.months);
21222        data.years = mathAbs(data.years);
21223
21224        return this;
21225    }
21226
21227    function addSubtract$1(duration, input, value, direction) {
21228        var other = createDuration(input, value);
21229
21230        duration._milliseconds += direction * other._milliseconds;
21231        duration._days += direction * other._days;
21232        duration._months += direction * other._months;
21233
21234        return duration._bubble();
21235    }
21236
21237    // supports only 2.0-style add(1, 's') or add(duration)
21238    function add$1(input, value) {
21239        return addSubtract$1(this, input, value, 1);
21240    }
21241
21242    // supports only 2.0-style subtract(1, 's') or subtract(duration)
21243    function subtract$1(input, value) {
21244        return addSubtract$1(this, input, value, -1);
21245    }
21246
21247    function absCeil(number) {
21248        if (number < 0) {
21249            return Math.floor(number);
21250        } else {
21251            return Math.ceil(number);
21252        }
21253    }
21254
21255    function bubble() {
21256        var milliseconds = this._milliseconds,
21257            days = this._days,
21258            months = this._months,
21259            data = this._data,
21260            seconds,
21261            minutes,
21262            hours,
21263            years,
21264            monthsFromDays;
21265
21266        // if we have a mix of positive and negative values, bubble down first
21267        // check: https://github.com/moment/moment/issues/2166
21268        if (
21269            !(
21270                (milliseconds >= 0 && days >= 0 && months >= 0) ||
21271                (milliseconds <= 0 && days <= 0 && months <= 0)
21272            )
21273        ) {
21274            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
21275            days = 0;
21276            months = 0;
21277        }
21278
21279        // The following code bubbles up values, see the tests for
21280        // examples of what that means.
21281        data.milliseconds = milliseconds % 1000;
21282
21283        seconds = absFloor(milliseconds / 1000);
21284        data.seconds = seconds % 60;
21285
21286        minutes = absFloor(seconds / 60);
21287        data.minutes = minutes % 60;
21288
21289        hours = absFloor(minutes / 60);
21290        data.hours = hours % 24;
21291
21292        days += absFloor(hours / 24);
21293
21294        // convert days to months
21295        monthsFromDays = absFloor(daysToMonths(days));
21296        months += monthsFromDays;
21297        days -= absCeil(monthsToDays(monthsFromDays));
21298
21299        // 12 months -> 1 year
21300        years = absFloor(months / 12);
21301        months %= 12;
21302
21303        data.days = days;
21304        data.months = months;
21305        data.years = years;
21306
21307        return this;
21308    }
21309
21310    function daysToMonths(days) {
21311        // 400 years have 146097 days (taking into account leap year rules)
21312        // 400 years have 12 months === 4800
21313        return (days * 4800) / 146097;
21314    }
21315
21316    function monthsToDays(months) {
21317        // the reverse of daysToMonths
21318        return (months * 146097) / 4800;
21319    }
21320
21321    function as(units) {
21322        if (!this.isValid()) {
21323            return NaN;
21324        }
21325        var days,
21326            months,
21327            milliseconds = this._milliseconds;
21328
21329        units = normalizeUnits(units);
21330
21331        if (units === 'month' || units === 'quarter' || units === 'year') {
21332            days = this._days + milliseconds / 864e5;
21333            months = this._months + daysToMonths(days);
21334            switch (units) {
21335                case 'month':
21336                    return months;
21337                case 'quarter':
21338                    return months / 3;
21339                case 'year':
21340                    return months / 12;
21341            }
21342        } else {
21343            // handle milliseconds separately because of floating point math errors (issue #1867)
21344            days = this._days + Math.round(monthsToDays(this._months));
21345            switch (units) {
21346                case 'week':
21347                    return days / 7 + milliseconds / 6048e5;
21348                case 'day':
21349                    return days + milliseconds / 864e5;
21350                case 'hour':
21351                    return days * 24 + milliseconds / 36e5;
21352                case 'minute':
21353                    return days * 1440 + milliseconds / 6e4;
21354                case 'second':
21355                    return days * 86400 + milliseconds / 1000;
21356                // Math.floor prevents floating point math errors here
21357                case 'millisecond':
21358                    return Math.floor(days * 864e5) + milliseconds;
21359                default:
21360                    throw new Error('Unknown unit ' + units);
21361            }
21362        }
21363    }
21364
21365    // TODO: Use this.as('ms')?
21366    function valueOf$1() {
21367        if (!this.isValid()) {
21368            return NaN;
21369        }
21370        return (
21371            this._milliseconds +
21372            this._days * 864e5 +
21373            (this._months % 12) * 2592e6 +
21374            toInt(this._months / 12) * 31536e6
21375        );
21376    }
21377
21378    function makeAs(alias) {
21379        return function () {
21380            return this.as(alias);
21381        };
21382    }
21383
21384    var asMilliseconds = makeAs('ms'),
21385        asSeconds = makeAs('s'),
21386        asMinutes = makeAs('m'),
21387        asHours = makeAs('h'),
21388        asDays = makeAs('d'),
21389        asWeeks = makeAs('w'),
21390        asMonths = makeAs('M'),
21391        asQuarters = makeAs('Q'),
21392        asYears = makeAs('y');
21393
21394    function clone$1() {
21395        return createDuration(this);
21396    }
21397
21398    function get$2(units) {
21399        units = normalizeUnits(units);
21400        return this.isValid() ? this[units + 's']() : NaN;
21401    }
21402
21403    function makeGetter(name) {
21404        return function () {
21405            return this.isValid() ? this._data[name] : NaN;
21406        };
21407    }
21408
21409    var milliseconds = makeGetter('milliseconds'),
21410        seconds = makeGetter('seconds'),
21411        minutes = makeGetter('minutes'),
21412        hours = makeGetter('hours'),
21413        days = makeGetter('days'),
21414        months = makeGetter('months'),
21415        years = makeGetter('years');
21416
21417    function weeks() {
21418        return absFloor(this.days() / 7);
21419    }
21420
21421    var round = Math.round,
21422        thresholds = {
21423            ss: 44, // a few seconds to seconds
21424            s: 45, // seconds to minute
21425            m: 45, // minutes to hour
21426            h: 22, // hours to day
21427            d: 26, // days to month/week
21428            w: null, // weeks to month
21429            M: 11, // months to year
21430        };
21431
21432    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
21433    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
21434        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
21435    }
21436
21437    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {
21438        var duration = createDuration(posNegDuration).abs(),
21439            seconds = round(duration.as('s')),
21440            minutes = round(duration.as('m')),
21441            hours = round(duration.as('h')),
21442            days = round(duration.as('d')),
21443            months = round(duration.as('M')),
21444            weeks = round(duration.as('w')),
21445            years = round(duration.as('y')),
21446            a =
21447                (seconds <= thresholds.ss && ['s', seconds]) ||
21448                (seconds < thresholds.s && ['ss', seconds]) ||
21449                (minutes <= 1 && ['m']) ||
21450                (minutes < thresholds.m && ['mm', minutes]) ||
21451                (hours <= 1 && ['h']) ||
21452                (hours < thresholds.h && ['hh', hours]) ||
21453                (days <= 1 && ['d']) ||
21454                (days < thresholds.d && ['dd', days]);
21455
21456        if (thresholds.w != null) {
21457            a =
21458                a ||
21459                (weeks <= 1 && ['w']) ||
21460                (weeks < thresholds.w && ['ww', weeks]);
21461        }
21462        a = a ||
21463            (months <= 1 && ['M']) ||
21464            (months < thresholds.M && ['MM', months]) ||
21465            (years <= 1 && ['y']) || ['yy', years];
21466
21467        a[2] = withoutSuffix;
21468        a[3] = +posNegDuration > 0;
21469        a[4] = locale;
21470        return substituteTimeAgo.apply(null, a);
21471    }
21472
21473    // This function allows you to set the rounding function for relative time strings
21474    function getSetRelativeTimeRounding(roundingFunction) {
21475        if (roundingFunction === undefined) {
21476            return round;
21477        }
21478        if (typeof roundingFunction === 'function') {
21479            round = roundingFunction;
21480            return true;
21481        }
21482        return false;
21483    }
21484
21485    // This function allows you to set a threshold for relative time strings
21486    function getSetRelativeTimeThreshold(threshold, limit) {
21487        if (thresholds[threshold] === undefined) {
21488            return false;
21489        }
21490        if (limit === undefined) {
21491            return thresholds[threshold];
21492        }
21493        thresholds[threshold] = limit;
21494        if (threshold === 's') {
21495            thresholds.ss = limit - 1;
21496        }
21497        return true;
21498    }
21499
21500    function humanize(argWithSuffix, argThresholds) {
21501        if (!this.isValid()) {
21502            return this.localeData().invalidDate();
21503        }
21504
21505        var withSuffix = false,
21506            th = thresholds,
21507            locale,
21508            output;
21509
21510        if (typeof argWithSuffix === 'object') {
21511            argThresholds = argWithSuffix;
21512            argWithSuffix = false;
21513        }
21514        if (typeof argWithSuffix === 'boolean') {
21515            withSuffix = argWithSuffix;
21516        }
21517        if (typeof argThresholds === 'object') {
21518            th = Object.assign({}, thresholds, argThresholds);
21519            if (argThresholds.s != null && argThresholds.ss == null) {
21520                th.ss = argThresholds.s - 1;
21521            }
21522        }
21523
21524        locale = this.localeData();
21525        output = relativeTime$1(this, !withSuffix, th, locale);
21526
21527        if (withSuffix) {
21528            output = locale.pastFuture(+this, output);
21529        }
21530
21531        return locale.postformat(output);
21532    }
21533
21534    var abs$1 = Math.abs;
21535
21536    function sign(x) {
21537        return (x > 0) - (x < 0) || +x;
21538    }
21539
21540    function toISOString$1() {
21541        // for ISO strings we do not use the normal bubbling rules:
21542        //  * milliseconds bubble up until they become hours
21543        //  * days do not bubble at all
21544        //  * months bubble up until they become years
21545        // This is because there is no context-free conversion between hours and days
21546        // (think of clock changes)
21547        // and also not between days and months (28-31 days per month)
21548        if (!this.isValid()) {
21549            return this.localeData().invalidDate();
21550        }
21551
21552        var seconds = abs$1(this._milliseconds) / 1000,
21553            days = abs$1(this._days),
21554            months = abs$1(this._months),
21555            minutes,
21556            hours,
21557            years,
21558            s,
21559            total = this.asSeconds(),
21560            totalSign,
21561            ymSign,
21562            daysSign,
21563            hmsSign;
21564
21565        if (!total) {
21566            // this is the same as C#'s (Noda) and python (isodate)...
21567            // but not other JS (goog.date)
21568            return 'P0D';
21569        }
21570
21571        // 3600 seconds -> 60 minutes -> 1 hour
21572        minutes = absFloor(seconds / 60);
21573        hours = absFloor(minutes / 60);
21574        seconds %= 60;
21575        minutes %= 60;
21576
21577        // 12 months -> 1 year
21578        years = absFloor(months / 12);
21579        months %= 12;
21580
21581        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
21582        s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : '';
21583
21584        totalSign = total < 0 ? '-' : '';
21585        ymSign = sign(this._months) !== sign(total) ? '-' : '';
21586        daysSign = sign(this._days) !== sign(total) ? '-' : '';
21587        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';
21588
21589        return (
21590            totalSign +
21591            'P' +
21592            (years ? ymSign + years + 'Y' : '') +
21593            (months ? ymSign + months + 'M' : '') +
21594            (days ? daysSign + days + 'D' : '') +
21595            (hours || minutes || seconds ? 'T' : '') +
21596            (hours ? hmsSign + hours + 'H' : '') +
21597            (minutes ? hmsSign + minutes + 'M' : '') +
21598            (seconds ? hmsSign + s + 'S' : '')
21599        );
21600    }
21601
21602    var proto$2 = Duration.prototype;
21603
21604    proto$2.isValid = isValid$1;
21605    proto$2.abs = abs;
21606    proto$2.add = add$1;
21607    proto$2.subtract = subtract$1;
21608    proto$2.as = as;
21609    proto$2.asMilliseconds = asMilliseconds;
21610    proto$2.asSeconds = asSeconds;
21611    proto$2.asMinutes = asMinutes;
21612    proto$2.asHours = asHours;
21613    proto$2.asDays = asDays;
21614    proto$2.asWeeks = asWeeks;
21615    proto$2.asMonths = asMonths;
21616    proto$2.asQuarters = asQuarters;
21617    proto$2.asYears = asYears;
21618    proto$2.valueOf = valueOf$1;
21619    proto$2._bubble = bubble;
21620    proto$2.clone = clone$1;
21621    proto$2.get = get$2;
21622    proto$2.milliseconds = milliseconds;
21623    proto$2.seconds = seconds;
21624    proto$2.minutes = minutes;
21625    proto$2.hours = hours;
21626    proto$2.days = days;
21627    proto$2.weeks = weeks;
21628    proto$2.months = months;
21629    proto$2.years = years;
21630    proto$2.humanize = humanize;
21631    proto$2.toISOString = toISOString$1;
21632    proto$2.toString = toISOString$1;
21633    proto$2.toJSON = toISOString$1;
21634    proto$2.locale = locale;
21635    proto$2.localeData = localeData;
21636
21637    proto$2.toIsoString = deprecate(
21638        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',
21639        toISOString$1
21640    );
21641    proto$2.lang = lang;
21642
21643    // FORMATTING
21644
21645    addFormatToken('X', 0, 0, 'unix');
21646    addFormatToken('x', 0, 0, 'valueOf');
21647
21648    // PARSING
21649
21650    addRegexToken('x', matchSigned);
21651    addRegexToken('X', matchTimestamp);
21652    addParseToken('X', function (input, array, config) {
21653        config._d = new Date(parseFloat(input) * 1000);
21654    });
21655    addParseToken('x', function (input, array, config) {
21656        config._d = new Date(toInt(input));
21657    });
21658
21659    //! moment.js
21660
21661    hooks.version = '2.27.0';
21662
21663    setHookCallback(createLocal);
21664
21665    hooks.fn = proto;
21666    hooks.min = min;
21667    hooks.max = max;
21668    hooks.now = now;
21669    hooks.utc = createUTC;
21670    hooks.unix = createUnix;
21671    hooks.months = listMonths;
21672    hooks.isDate = isDate;
21673    hooks.locale = getSetGlobalLocale;
21674    hooks.invalid = createInvalid;
21675    hooks.duration = createDuration;
21676    hooks.isMoment = isMoment;
21677    hooks.weekdays = listWeekdays;
21678    hooks.parseZone = createInZone;
21679    hooks.localeData = getLocale;
21680    hooks.isDuration = isDuration;
21681    hooks.monthsShort = listMonthsShort;
21682    hooks.weekdaysMin = listWeekdaysMin;
21683    hooks.defineLocale = defineLocale;
21684    hooks.updateLocale = updateLocale;
21685    hooks.locales = listLocales;
21686    hooks.weekdaysShort = listWeekdaysShort;
21687    hooks.normalizeUnits = normalizeUnits;
21688    hooks.relativeTimeRounding = getSetRelativeTimeRounding;
21689    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
21690    hooks.calendarFormat = getCalendarFormat;
21691    hooks.prototype = proto;
21692
21693    // currently HTML5 input type only supports 24-hour formats
21694    hooks.HTML5_FMT = {
21695        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type="datetime-local" />
21696        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type="datetime-local" step="1" />
21697        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type="datetime-local" step="0.001" />
21698        DATE: 'YYYY-MM-DD', // <input type="date" />
21699        TIME: 'HH:mm', // <input type="time" />
21700        TIME_SECONDS: 'HH:mm:ss', // <input type="time" step="1" />
21701        TIME_MS: 'HH:mm:ss.SSS', // <input type="time" step="0.001" />
21702        WEEK: 'GGGG-[W]WW', // <input type="week" />
21703        MONTH: 'YYYY-MM', // <input type="month" />
21704    };
21705
21706    return hooks;
21707
21708})));
21709
21710/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ "../../node_modules/webpack/buildin/module.js")(module)))
21711
21712/***/ }),
21713
vendor: 2,776 bytes, lines 21714-21815
21714/***/ "../../node_modules/object-assign/index.js":
21715/*!************************************************************************************************************************************!*\
21716  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/object-assign/index.js ***!
21717  \************************************************************************************************************************************/
21718/*! no static exports found */
21719/***/ (function(module, exports, __webpack_require__) {
21720
21721"use strict";
21722/*
21723object-assign
21724(c) Sindre Sorhus
21725@license MIT
21726*/
21727
21728
21729/* eslint-disable no-unused-vars */
21730var getOwnPropertySymbols = Object.getOwnPropertySymbols;
21731var hasOwnProperty = Object.prototype.hasOwnProperty;
21732var propIsEnumerable = Object.prototype.propertyIsEnumerable;
21733
21734function toObject(val) {
21735	if (val === null || val === undefined) {
21736		throw new TypeError('Object.assign cannot be called with null or undefined');
21737	}
21738
21739	return Object(val);
21740}
21741
21742function shouldUseNative() {
21743	try {
21744		if (!Object.assign) {
21745			return false;
21746		}
21747
21748		// Detect buggy property enumeration order in older V8 versions.
21749
21750		// https://bugs.chromium.org/p/v8/issues/detail?id=4118
21751		var test1 = new String('abc');  // eslint-disable-line no-new-wrappers
21752		test1[5] = 'de';
21753		if (Object.getOwnPropertyNames(test1)[0] === '5') {
21754			return false;
21755		}
21756
21757		// https://bugs.chromium.org/p/v8/issues/detail?id=3056
21758		var test2 = {};
21759		for (var i = 0; i < 10; i++) {
21760			test2['_' + String.fromCharCode(i)] = i;
21761		}
21762		var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
21763			return test2[n];
21764		});
21765		if (order2.join('') !== '0123456789') {
21766			return false;
21767		}
21768
21769		// https://bugs.chromium.org/p/v8/issues/detail?id=3056
21770		var test3 = {};
21771		'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
21772			test3[letter] = letter;
21773		});
21774		if (Object.keys(Object.assign({}, test3)).join('') !==
21775				'abcdefghijklmnopqrst') {
21776			return false;
21777		}
21778
21779		return true;
21780	} catch (err) {
21781		// We don't expect any of the above to throw, but better to be safe.
21782		return false;
21783	}
21784}
21785
21786module.exports = shouldUseNative() ? Object.assign : function (target, source) {
21787	var from;
21788	var to = toObject(target);
21789	var symbols;
21790
21791	for (var s = 1; s < arguments.length; s++) {
21792		from = Object(arguments[s]);
21793
21794		for (var key in from) {
21795			if (hasOwnProperty.call(from, key)) {
21796				to[key] = from[key];
21797			}
21798		}
21799
21800		if (getOwnPropertySymbols) {
21801			symbols = getOwnPropertySymbols(from);
21802			for (var i = 0; i < symbols.length; i++) {
21803				if (propIsEnumerable.call(from, symbols[i])) {
21804					to[symbols[i]] = from[symbols[i]];
21805				}
21806			}
21807		}
21808	}
21809
21810	return to;
21811};
21812
21813
21814/***/ }),
21815
vendor: 4,463 bytes, lines 21816-21929
21816/***/ "../../node_modules/prop-types/checkPropTypes.js":
21817/*!******************************************************************************************************************************************!*\
21818  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/prop-types/checkPropTypes.js ***!
21819  \******************************************************************************************************************************************/
21820/*! no static exports found */
21821/***/ (function(module, exports, __webpack_require__) {
21822
21823"use strict";
21824/**
21825 * Copyright (c) 2013-present, Facebook, Inc.
21826 *
21827 * This source code is licensed under the MIT license found in the
21828 * LICENSE file in the root directory of this source tree.
21829 */
21830
21831
21832
21833var printWarning = function() {};
21834
21835if (true) {
21836  var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "../../node_modules/prop-types/lib/ReactPropTypesSecret.js");
21837  var loggedTypeFailures = {};
21838  var has = Function.call.bind(Object.prototype.hasOwnProperty);
21839
21840  printWarning = function(text) {
21841    var message = 'Warning: ' + text;
21842    if (typeof console !== 'undefined') {
21843      console.error(message);
21844    }
21845    try {
21846      // --- Welcome to debugging React ---
21847      // This error was thrown as a convenience so that you can use this stack
21848      // to find the callsite that caused this warning to fire.
21849      throw new Error(message);
21850    } catch (x) {}
21851  };
21852}
21853
21854/**
21855 * Assert that the values match with the type specs.
21856 * Error messages are memorized and will only be shown once.
21857 *
21858 * @param {object} typeSpecs Map of name to a ReactPropType
21859 * @param {object} values Runtime values that need to be type-checked
21860 * @param {string} location e.g. "prop", "context", "child context"
21861 * @param {string} componentName Name of the component for error messages.
21862 * @param {?Function} getStack Returns the component stack.
21863 * @private
21864 */
21865function checkPropTypes(typeSpecs, values, location, componentName, getStack) {
21866  if (true) {
21867    for (var typeSpecName in typeSpecs) {
21868      if (has(typeSpecs, typeSpecName)) {
21869        var error;
21870        // Prop type validation may throw. In case they do, we don't want to
21871        // fail the render phase where it didn't fail before. So we log it.
21872        // After these have been cleaned up, we'll let them throw.
21873        try {
21874          // This is intentionally an invariant that gets caught. It's the same
21875          // behavior as without this statement except with a better message.
21876          if (typeof typeSpecs[typeSpecName] !== 'function') {
21877            var err = Error(
21878              (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +
21879              'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'
21880            );
21881            err.name = 'Invariant Violation';
21882            throw err;
21883          }
21884          error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);
21885        } catch (ex) {
21886          error = ex;
21887        }
21888        if (error && !(error instanceof Error)) {
21889          printWarning(
21890            (componentName || 'React class') + ': type specification of ' +
21891            location + ' `' + typeSpecName + '` is invalid; the type checker ' +
21892            'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +
21893            'You may have forgotten to pass an argument to the type checker ' +
21894            'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +
21895            'shape all require an argument).'
21896          );
21897        }
21898        if (error instanceof Error && !(error.message in loggedTypeFailures)) {
21899          // Only monitor this failure once because there tends to be a lot of the
21900          // same error.
21901          loggedTypeFailures[error.message] = true;
21902
21903          var stack = getStack ? getStack() : '';
21904
21905          printWarning(
21906            'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')
21907          );
21908        }
21909      }
21910    }
21911  }
21912}
21913
21914/**
21915 * Resets warning cache when testing.
21916 *
21917 * @private
21918 */
21919checkPropTypes.resetWarningCache = function() {
21920  if (true) {
21921    loggedTypeFailures = {};
21922  }
21923}
21924
21925module.exports = checkPropTypes;
21926
21927
21928/***/ }),
21929
vendor: 968 bytes, lines 21930-21953
21930/***/ "../../node_modules/prop-types/lib/ReactPropTypesSecret.js":
21931/*!****************************************************************************************************************************************************!*\
21932  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/prop-types/lib/ReactPropTypesSecret.js ***!
21933  \****************************************************************************************************************************************************/
21934/*! no static exports found */
21935/***/ (function(module, exports, __webpack_require__) {
21936
21937"use strict";
21938/**
21939 * Copyright (c) 2013-present, Facebook, Inc.
21940 *
21941 * This source code is licensed under the MIT license found in the
21942 * LICENSE file in the root directory of this source tree.
21943 */
21944
21945
21946
21947var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
21948
21949module.exports = ReactPropTypesSecret;
21950
21951
21952/***/ }),
21953
vendor: 884,733 bytes, lines 21954-46977
21954/***/ "../../node_modules/react-dom/cjs/react-dom.development.js":
21955/*!****************************************************************************************************************************************************!*\
21956  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/react-dom/cjs/react-dom.development.js ***!
21957  \****************************************************************************************************************************************************/
21958/*! no static exports found */
21959/***/ (function(module, exports, __webpack_require__) {
21960
21961"use strict";
21962/** @license React v16.13.1
21963 * react-dom.development.js
21964 *
21965 * Copyright (c) Facebook, Inc. and its affiliates.
21966 *
21967 * This source code is licensed under the MIT license found in the
21968 * LICENSE file in the root directory of this source tree.
21969 */
21970
21971
21972
21973
21974
21975if (true) {
21976  (function() {
21977'use strict';
21978
21979var React = __webpack_require__(/*! react */ "../../node_modules/react/index.js");
21980var _assign = __webpack_require__(/*! object-assign */ "../../node_modules/object-assign/index.js");
21981var Scheduler = __webpack_require__(/*! scheduler */ "../../node_modules/scheduler/index.js");
21982var checkPropTypes = __webpack_require__(/*! prop-types/checkPropTypes */ "../../node_modules/prop-types/checkPropTypes.js");
21983var tracing = __webpack_require__(/*! scheduler/tracing */ "../../node_modules/scheduler/tracing.js");
21984
21985var ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; // Prevent newer renderers from RTE when used with older react package versions.
21986// Current owner and dispatcher used to share the same ref,
21987// but PR #14548 split them out to better support the react-debug-tools package.
21988
21989if (!ReactSharedInternals.hasOwnProperty('ReactCurrentDispatcher')) {
21990  ReactSharedInternals.ReactCurrentDispatcher = {
21991    current: null
21992  };
21993}
21994
21995if (!ReactSharedInternals.hasOwnProperty('ReactCurrentBatchConfig')) {
21996  ReactSharedInternals.ReactCurrentBatchConfig = {
21997    suspense: null
21998  };
21999}
22000
22001// by calls to these methods by a Babel plugin.
22002//
22003// In PROD (or in packages without access to React internals),
22004// they are left as they are instead.
22005
22006function warn(format) {
22007  {
22008    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
22009      args[_key - 1] = arguments[_key];
22010    }
22011
22012    printWarning('warn', format, args);
22013  }
22014}
22015function error(format) {
22016  {
22017    for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
22018      args[_key2 - 1] = arguments[_key2];
22019    }
22020
22021    printWarning('error', format, args);
22022  }
22023}
22024
22025function printWarning(level, format, args) {
22026  // When changing this logic, you might want to also
22027  // update consoleWithStackDev.www.js as well.
22028  {
22029    var hasExistingStack = args.length > 0 && typeof args[args.length - 1] === 'string' && args[args.length - 1].indexOf('\n    in') === 0;
22030
22031    if (!hasExistingStack) {
22032      var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;
22033      var stack = ReactDebugCurrentFrame.getStackAddendum();
22034
22035      if (stack !== '') {
22036        format += '%s';
22037        args = args.concat([stack]);
22038      }
22039    }
22040
22041    var argsWithFormat = args.map(function (item) {
22042      return '' + item;
22043    }); // Careful: RN currently depends on this prefix
22044
22045    argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it
22046    // breaks IE9: https://github.com/facebook/react/issues/13610
22047    // eslint-disable-next-line react-internal/no-production-logging
22048
22049    Function.prototype.apply.call(console[level], console, argsWithFormat);
22050
22051    try {
22052      // --- Welcome to debugging React ---
22053      // This error was thrown as a convenience so that you can use this stack
22054      // to find the callsite that caused this warning to fire.
22055      var argIndex = 0;
22056      var message = 'Warning: ' + format.replace(/%s/g, function () {
22057        return args[argIndex++];
22058      });
22059      throw new Error(message);
22060    } catch (x) {}
22061  }
22062}
22063
22064if (!React) {
22065  {
22066    throw Error( "ReactDOM was loaded before React. Make sure you load the React package before loading ReactDOM." );
22067  }
22068}
22069
22070var invokeGuardedCallbackImpl = function (name, func, context, a, b, c, d, e, f) {
22071  var funcArgs = Array.prototype.slice.call(arguments, 3);
22072
22073  try {
22074    func.apply(context, funcArgs);
22075  } catch (error) {
22076    this.onError(error);
22077  }
22078};
22079
22080{
22081  // In DEV mode, we swap out invokeGuardedCallback for a special version
22082  // that plays more nicely with the browser's DevTools. The idea is to preserve
22083  // "Pause on exceptions" behavior. Because React wraps all user-provided
22084  // functions in invokeGuardedCallback, and the production version of
22085  // invokeGuardedCallback uses a try-catch, all user exceptions are treated
22086  // like caught exceptions, and the DevTools won't pause unless the developer
22087  // takes the extra step of enabling pause on caught exceptions. This is
22088  // unintuitive, though, because even though React has caught the error, from
22089  // the developer's perspective, the error is uncaught.
22090  //
22091  // To preserve the expected "Pause on exceptions" behavior, we don't use a
22092  // try-catch in DEV. Instead, we synchronously dispatch a fake event to a fake
22093  // DOM node, and call the user-provided callback from inside an event handler
22094  // for that fake event. If the callback throws, the error is "captured" using
22095  // a global event handler. But because the error happens in a different
22096  // event loop context, it does not interrupt the normal program flow.
22097  // Effectively, this gives us try-catch behavior without actually using
22098  // try-catch. Neat!
22099  // Check that the browser supports the APIs we need to implement our special
22100  // DEV version of invokeGuardedCallback
22101  if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') {
22102    var fakeNode = document.createElement('react');
22103
22104    var invokeGuardedCallbackDev = function (name, func, context, a, b, c, d, e, f) {
22105      // If document doesn't exist we know for sure we will crash in this method
22106      // when we call document.createEvent(). However this can cause confusing
22107      // errors: https://github.com/facebookincubator/create-react-app/issues/3482
22108      // So we preemptively throw with a better message instead.
22109      if (!(typeof document !== 'undefined')) {
22110        {
22111          throw Error( "The `document` global was defined when React was initialized, but is not defined anymore. This can happen in a test environment if a component schedules an update from an asynchronous callback, but the test has already finished running. To solve this, you can either unmount the component at the end of your test (and ensure that any asynchronous operations get canceled in `componentWillUnmount`), or you can change the test itself to be asynchronous." );
22112        }
22113      }
22114
22115      var evt = document.createEvent('Event'); // Keeps track of whether the user-provided callback threw an error. We
22116      // set this to true at the beginning, then set it to false right after
22117      // calling the function. If the function errors, `didError` will never be
22118      // set to false. This strategy works even if the browser is flaky and
22119      // fails to call our global error handler, because it doesn't rely on
22120      // the error event at all.
22121
22122      var didError = true; // Keeps track of the value of window.event so that we can reset it
22123      // during the callback to let user code access window.event in the
22124      // browsers that support it.
22125
22126      var windowEvent = window.event; // Keeps track of the descriptor of window.event to restore it after event
22127      // dispatching: https://github.com/facebook/react/issues/13688
22128
22129      var windowEventDescriptor = Object.getOwnPropertyDescriptor(window, 'event'); // Create an event handler for our fake event. We will synchronously
22130      // dispatch our fake event using `dispatchEvent`. Inside the handler, we
22131      // call the user-provided callback.
22132
22133      var funcArgs = Array.prototype.slice.call(arguments, 3);
22134
22135      function callCallback() {
22136        // We immediately remove the callback from event listeners so that
22137        // nested `invokeGuardedCallback` calls do not clash. Otherwise, a
22138        // nested call would trigger the fake event handlers of any call higher
22139        // in the stack.
22140        fakeNode.removeEventListener(evtType, callCallback, false); // We check for window.hasOwnProperty('event') to prevent the
22141        // window.event assignment in both IE <= 10 as they throw an error
22142        // "Member not found" in strict mode, and in Firefox which does not
22143        // support window.event.
22144
22145        if (typeof window.event !== 'undefined' && window.hasOwnProperty('event')) {
22146          window.event = windowEvent;
22147        }
22148
22149        func.apply(context, funcArgs);
22150        didError = false;
22151      } // Create a global error event handler. We use this to capture the value
22152      // that was thrown. It's possible that this error handler will fire more
22153      // than once; for example, if non-React code also calls `dispatchEvent`
22154      // and a handler for that event throws. We should be resilient to most of
22155      // those cases. Even if our error event handler fires more than once, the
22156      // last error event is always used. If the callback actually does error,
22157      // we know that the last error event is the correct one, because it's not
22158      // possible for anything else to have happened in between our callback
22159      // erroring and the code that follows the `dispatchEvent` call below. If
22160      // the callback doesn't error, but the error event was fired, we know to
22161      // ignore it because `didError` will be false, as described above.
22162
22163
22164      var error; // Use this to track whether the error event is ever called.
22165
22166      var didSetError = false;
22167      var isCrossOriginError = false;
22168
22169      function handleWindowError(event) {
22170        error = event.error;
22171        didSetError = true;
22172
22173        if (error === null && event.colno === 0 && event.lineno === 0) {
22174          isCrossOriginError = true;
22175        }
22176
22177        if (event.defaultPrevented) {
22178          // Some other error handler has prevented default.
22179          // Browsers silence the error report if this happens.
22180          // We'll remember this to later decide whether to log it or not.
22181          if (error != null && typeof error === 'object') {
22182            try {
22183              error._suppressLogging = true;
22184            } catch (inner) {// Ignore.
22185            }
22186          }
22187        }
22188      } // Create a fake event type.
22189
22190
22191      var evtType = "react-" + (name ? name : 'invokeguardedcallback'); // Attach our event handlers
22192
22193      window.addEventListener('error', handleWindowError);
22194      fakeNode.addEventListener(evtType, callCallback, false); // Synchronously dispatch our fake event. If the user-provided function
22195      // errors, it will trigger our global error handler.
22196
22197      evt.initEvent(evtType, false, false);
22198      fakeNode.dispatchEvent(evt);
22199
22200      if (windowEventDescriptor) {
22201        Object.defineProperty(window, 'event', windowEventDescriptor);
22202      }
22203
22204      if (didError) {
22205        if (!didSetError) {
22206          // The callback errored, but the error event never fired.
22207          error = new Error('An error was thrown inside one of your components, but React ' + "doesn't know what it was. This is likely due to browser " + 'flakiness. React does its best to preserve the "Pause on ' + 'exceptions" behavior of the DevTools, which requires some ' + "DEV-mode only tricks. It's possible that these don't work in " + 'your browser. Try triggering the error in production mode, ' + 'or switching to a modern browser. If you suspect that this is ' + 'actually an issue with React, please file an issue.');
22208        } else if (isCrossOriginError) {
22209          error = new Error("A cross-origin error was thrown. React doesn't have access to " + 'the actual error object in development. ' + 'See https://fb.me/react-crossorigin-error for more information.');
22210        }
22211
22212        this.onError(error);
22213      } // Remove our event listeners
22214
22215
22216      window.removeEventListener('error', handleWindowError);
22217    };
22218
22219    invokeGuardedCallbackImpl = invokeGuardedCallbackDev;
22220  }
22221}
22222
22223var invokeGuardedCallbackImpl$1 = invokeGuardedCallbackImpl;
22224
22225var hasError = false;
22226var caughtError = null; // Used by event system to capture/rethrow the first error.
22227
22228var hasRethrowError = false;
22229var rethrowError = null;
22230var reporter = {
22231  onError: function (error) {
22232    hasError = true;
22233    caughtError = error;
22234  }
22235};
22236/**
22237 * Call a function while guarding against errors that happens within it.
22238 * Returns an error if it throws, otherwise null.
22239 *
22240 * In production, this is implemented using a try-catch. The reason we don't
22241 * use a try-catch directly is so that we can swap out a different
22242 * implementation in DEV mode.
22243 *
22244 * @param {String} name of the guard to use for logging or debugging
22245 * @param {Function} func The function to invoke
22246 * @param {*} context The context to use when calling the function
22247 * @param {...*} args Arguments for function
22248 */
22249
22250function invokeGuardedCallback(name, func, context, a, b, c, d, e, f) {
22251  hasError = false;
22252  caughtError = null;
22253  invokeGuardedCallbackImpl$1.apply(reporter, arguments);
22254}
22255/**
22256 * Same as invokeGuardedCallback, but instead of returning an error, it stores
22257 * it in a global so it can be rethrown by `rethrowCaughtError` later.
22258 * TODO: See if caughtError and rethrowError can be unified.
22259 *
22260 * @param {String} name of the guard to use for logging or debugging
22261 * @param {Function} func The function to invoke
22262 * @param {*} context The context to use when calling the function
22263 * @param {...*} args Arguments for function
22264 */
22265
22266function invokeGuardedCallbackAndCatchFirstError(name, func, context, a, b, c, d, e, f) {
22267  invokeGuardedCallback.apply(this, arguments);
22268
22269  if (hasError) {
22270    var error = clearCaughtError();
22271
22272    if (!hasRethrowError) {
22273      hasRethrowError = true;
22274      rethrowError = error;
22275    }
22276  }
22277}
22278/**
22279 * During execution of guarded functions we will capture the first error which
22280 * we will rethrow to be handled by the top level error handler.
22281 */
22282
22283function rethrowCaughtError() {
22284  if (hasRethrowError) {
22285    var error = rethrowError;
22286    hasRethrowError = false;
22287    rethrowError = null;
22288    throw error;
22289  }
22290}
22291function hasCaughtError() {
22292  return hasError;
22293}
22294function clearCaughtError() {
22295  if (hasError) {
22296    var error = caughtError;
22297    hasError = false;
22298    caughtError = null;
22299    return error;
22300  } else {
22301    {
22302      {
22303        throw Error( "clearCaughtError was called but no error was captured. This error is likely caused by a bug in React. Please file an issue." );
22304      }
22305    }
22306  }
22307}
22308
22309var getFiberCurrentPropsFromNode = null;
22310var getInstanceFromNode = null;
22311var getNodeFromInstance = null;
22312function setComponentTree(getFiberCurrentPropsFromNodeImpl, getInstanceFromNodeImpl, getNodeFromInstanceImpl) {
22313  getFiberCurrentPropsFromNode = getFiberCurrentPropsFromNodeImpl;
22314  getInstanceFromNode = getInstanceFromNodeImpl;
22315  getNodeFromInstance = getNodeFromInstanceImpl;
22316
22317  {
22318    if (!getNodeFromInstance || !getInstanceFromNode) {
22319      error('EventPluginUtils.setComponentTree(...): Injected ' + 'module is missing getNodeFromInstance or getInstanceFromNode.');
22320    }
22321  }
22322}
22323var validateEventDispatches;
22324
22325{
22326  validateEventDispatches = function (event) {
22327    var dispatchListeners = event._dispatchListeners;
22328    var dispatchInstances = event._dispatchInstances;
22329    var listenersIsArr = Array.isArray(dispatchListeners);
22330    var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0;
22331    var instancesIsArr = Array.isArray(dispatchInstances);
22332    var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0;
22333
22334    if (instancesIsArr !== listenersIsArr || instancesLen !== listenersLen) {
22335      error('EventPluginUtils: Invalid `event`.');
22336    }
22337  };
22338}
22339/**
22340 * Dispatch the event to the listener.
22341 * @param {SyntheticEvent} event SyntheticEvent to handle
22342 * @param {function} listener Application-level callback
22343 * @param {*} inst Internal component instance
22344 */
22345
22346
22347function executeDispatch(event, listener, inst) {
22348  var type = event.type || 'unknown-event';
22349  event.currentTarget = getNodeFromInstance(inst);
22350  invokeGuardedCallbackAndCatchFirstError(type, listener, undefined, event);
22351  event.currentTarget = null;
22352}
22353/**
22354 * Standard/simple iteration through an event's collected dispatches.
22355 */
22356
22357function executeDispatchesInOrder(event) {
22358  var dispatchListeners = event._dispatchListeners;
22359  var dispatchInstances = event._dispatchInstances;
22360
22361  {
22362    validateEventDispatches(event);
22363  }
22364
22365  if (Array.isArray(dispatchListeners)) {
22366    for (var i = 0; i < dispatchListeners.length; i++) {
22367      if (event.isPropagationStopped()) {
22368        break;
22369      } // Listeners and Instances are two parallel arrays that are always in sync.
22370
22371
22372      executeDispatch(event, dispatchListeners[i], dispatchInstances[i]);
22373    }
22374  } else if (dispatchListeners) {
22375    executeDispatch(event, dispatchListeners, dispatchInstances);
22376  }
22377
22378  event._dispatchListeners = null;
22379  event._dispatchInstances = null;
22380}
22381
22382var FunctionComponent = 0;
22383var ClassComponent = 1;
22384var IndeterminateComponent = 2; // Before we know whether it is function or class
22385
22386var HostRoot = 3; // Root of a host tree. Could be nested inside another node.
22387
22388var HostPortal = 4; // A subtree. Could be an entry point to a different renderer.
22389
22390var HostComponent = 5;
22391var HostText = 6;
22392var Fragment = 7;
22393var Mode = 8;
22394var ContextConsumer = 9;
22395var ContextProvider = 10;
22396var ForwardRef = 11;
22397var Profiler = 12;
22398var SuspenseComponent = 13;
22399var MemoComponent = 14;
22400var SimpleMemoComponent = 15;
22401var LazyComponent = 16;
22402var IncompleteClassComponent = 17;
22403var DehydratedFragment = 18;
22404var SuspenseListComponent = 19;
22405var FundamentalComponent = 20;
22406var ScopeComponent = 21;
22407var Block = 22;
22408
22409/**
22410 * Injectable ordering of event plugins.
22411 */
22412var eventPluginOrder = null;
22413/**
22414 * Injectable mapping from names to event plugin modules.
22415 */
22416
22417var namesToPlugins = {};
22418/**
22419 * Recomputes the plugin list using the injected plugins and plugin ordering.
22420 *
22421 * @private
22422 */
22423
22424function recomputePluginOrdering() {
22425  if (!eventPluginOrder) {
22426    // Wait until an `eventPluginOrder` is injected.
22427    return;
22428  }
22429
22430  for (var pluginName in namesToPlugins) {
22431    var pluginModule = namesToPlugins[pluginName];
22432    var pluginIndex = eventPluginOrder.indexOf(pluginName);
22433
22434    if (!(pluginIndex > -1)) {
22435      {
22436        throw Error( "EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `" + pluginName + "`." );
22437      }
22438    }
22439
22440    if (plugins[pluginIndex]) {
22441      continue;
22442    }
22443
22444    if (!pluginModule.extractEvents) {
22445      {
22446        throw Error( "EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `" + pluginName + "` does not." );
22447      }
22448    }
22449
22450    plugins[pluginIndex] = pluginModule;
22451    var publishedEvents = pluginModule.eventTypes;
22452
22453    for (var eventName in publishedEvents) {
22454      if (!publishEventForPlugin(publishedEvents[eventName], pluginModule, eventName)) {
22455        {
22456          throw Error( "EventPluginRegistry: Failed to publish event `" + eventName + "` for plugin `" + pluginName + "`." );
22457        }
22458      }
22459    }
22460  }
22461}
22462/**
22463 * Publishes an event so that it can be dispatched by the supplied plugin.
22464 *
22465 * @param {object} dispatchConfig Dispatch configuration for the event.
22466 * @param {object} PluginModule Plugin publishing the event.
22467 * @return {boolean} True if the event was successfully published.
22468 * @private
22469 */
22470
22471
22472function publishEventForPlugin(dispatchConfig, pluginModule, eventName) {
22473  if (!!eventNameDispatchConfigs.hasOwnProperty(eventName)) {
22474    {
22475      throw Error( "EventPluginRegistry: More than one plugin attempted to publish the same event name, `" + eventName + "`." );
22476    }
22477  }
22478
22479  eventNameDispatchConfigs[eventName] = dispatchConfig;
22480  var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;
22481
22482  if (phasedRegistrationNames) {
22483    for (var phaseName in phasedRegistrationNames) {
22484      if (phasedRegistrationNames.hasOwnProperty(phaseName)) {
22485        var phasedRegistrationName = phasedRegistrationNames[phaseName];
22486        publishRegistrationName(phasedRegistrationName, pluginModule, eventName);
22487      }
22488    }
22489
22490    return true;
22491  } else if (dispatchConfig.registrationName) {
22492    publishRegistrationName(dispatchConfig.registrationName, pluginModule, eventName);
22493    return true;
22494  }
22495
22496  return false;
22497}
22498/**
22499 * Publishes a registration name that is used to identify dispatched events.
22500 *
22501 * @param {string} registrationName Registration name to add.
22502 * @param {object} PluginModule Plugin publishing the event.
22503 * @private
22504 */
22505
22506
22507function publishRegistrationName(registrationName, pluginModule, eventName) {
22508  if (!!registrationNameModules[registrationName]) {
22509    {
22510      throw Error( "EventPluginRegistry: More than one plugin attempted to publish the same registration name, `" + registrationName + "`." );
22511    }
22512  }
22513
22514  registrationNameModules[registrationName] = pluginModule;
22515  registrationNameDependencies[registrationName] = pluginModule.eventTypes[eventName].dependencies;
22516
22517  {
22518    var lowerCasedName = registrationName.toLowerCase();
22519    possibleRegistrationNames[lowerCasedName] = registrationName;
22520
22521    if (registrationName === 'onDoubleClick') {
22522      possibleRegistrationNames.ondblclick = registrationName;
22523    }
22524  }
22525}
22526/**
22527 * Registers plugins so that they can extract and dispatch events.
22528 */
22529
22530/**
22531 * Ordered list of injected plugins.
22532 */
22533
22534
22535var plugins = [];
22536/**
22537 * Mapping from event name to dispatch config
22538 */
22539
22540var eventNameDispatchConfigs = {};
22541/**
22542 * Mapping from registration name to plugin module
22543 */
22544
22545var registrationNameModules = {};
22546/**
22547 * Mapping from registration name to event name
22548 */
22549
22550var registrationNameDependencies = {};
22551/**
22552 * Mapping from lowercase registration names to the properly cased version,
22553 * used to warn in the case of missing event handlers. Available
22554 * only in true.
22555 * @type {Object}
22556 */
22557
22558var possibleRegistrationNames =  {} ; // Trust the developer to only use possibleRegistrationNames in true
22559
22560/**
22561 * Injects an ordering of plugins (by plugin name). This allows the ordering
22562 * to be decoupled from injection of the actual plugins so that ordering is
22563 * always deterministic regardless of packaging, on-the-fly injection, etc.
22564 *
22565 * @param {array} InjectedEventPluginOrder
22566 * @internal
22567 */
22568
22569function injectEventPluginOrder(injectedEventPluginOrder) {
22570  if (!!eventPluginOrder) {
22571    {
22572      throw Error( "EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React." );
22573    }
22574  } // Clone the ordering so it cannot be dynamically mutated.
22575
22576
22577  eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder);
22578  recomputePluginOrdering();
22579}
22580/**
22581 * Injects plugins to be used by plugin event system. The plugin names must be
22582 * in the ordering injected by `injectEventPluginOrder`.
22583 *
22584 * Plugins can be injected as part of page initialization or on-the-fly.
22585 *
22586 * @param {object} injectedNamesToPlugins Map from names to plugin modules.
22587 * @internal
22588 */
22589
22590function injectEventPluginsByName(injectedNamesToPlugins) {
22591  var isOrderingDirty = false;
22592
22593  for (var pluginName in injectedNamesToPlugins) {
22594    if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) {
22595      continue;
22596    }
22597
22598    var pluginModule = injectedNamesToPlugins[pluginName];
22599
22600    if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) {
22601      if (!!namesToPlugins[pluginName]) {
22602        {
22603          throw Error( "EventPluginRegistry: Cannot inject two different event plugins using the same name, `" + pluginName + "`." );
22604        }
22605      }
22606
22607      namesToPlugins[pluginName] = pluginModule;
22608      isOrderingDirty = true;
22609    }
22610  }
22611
22612  if (isOrderingDirty) {
22613    recomputePluginOrdering();
22614  }
22615}
22616
22617var canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');
22618
22619var PLUGIN_EVENT_SYSTEM = 1;
22620var IS_REPLAYED = 1 << 5;
22621var IS_FIRST_ANCESTOR = 1 << 6;
22622
22623var restoreImpl = null;
22624var restoreTarget = null;
22625var restoreQueue = null;
22626
22627function restoreStateOfTarget(target) {
22628  // We perform this translation at the end of the event loop so that we
22629  // always receive the correct fiber here
22630  var internalInstance = getInstanceFromNode(target);
22631
22632  if (!internalInstance) {
22633    // Unmounted
22634    return;
22635  }
22636
22637  if (!(typeof restoreImpl === 'function')) {
22638    {
22639      throw Error( "setRestoreImplementation() needs to be called to handle a target for controlled events. This error is likely caused by a bug in React. Please file an issue." );
22640    }
22641  }
22642
22643  var stateNode = internalInstance.stateNode; // Guard against Fiber being unmounted.
22644
22645  if (stateNode) {
22646    var _props = getFiberCurrentPropsFromNode(stateNode);
22647
22648    restoreImpl(internalInstance.stateNode, internalInstance.type, _props);
22649  }
22650}
22651
22652function setRestoreImplementation(impl) {
22653  restoreImpl = impl;
22654}
22655function enqueueStateRestore(target) {
22656  if (restoreTarget) {
22657    if (restoreQueue) {
22658      restoreQueue.push(target);
22659    } else {
22660      restoreQueue = [target];
22661    }
22662  } else {
22663    restoreTarget = target;
22664  }
22665}
22666function needsStateRestore() {
22667  return restoreTarget !== null || restoreQueue !== null;
22668}
22669function restoreStateIfNeeded() {
22670  if (!restoreTarget) {
22671    return;
22672  }
22673
22674  var target = restoreTarget;
22675  var queuedTargets = restoreQueue;
22676  restoreTarget = null;
22677  restoreQueue = null;
22678  restoreStateOfTarget(target);
22679
22680  if (queuedTargets) {
22681    for (var i = 0; i < queuedTargets.length; i++) {
22682      restoreStateOfTarget(queuedTargets[i]);
22683    }
22684  }
22685}
22686
22687var enableProfilerTimer = true; // Trace which interactions trigger each commit.
22688
22689var enableDeprecatedFlareAPI = false; // Experimental Host Component support.
22690
22691var enableFundamentalAPI = false; // Experimental Scope support.
22692var warnAboutStringRefs = false;
22693
22694// the renderer. Such as when we're dispatching events or if third party
22695// libraries need to call batchedUpdates. Eventually, this API will go away when
22696// everything is batched by default. We'll then have a similar API to opt-out of
22697// scheduled work and instead do synchronous work.
22698// Defaults
22699
22700var batchedUpdatesImpl = function (fn, bookkeeping) {
22701  return fn(bookkeeping);
22702};
22703
22704var discreteUpdatesImpl = function (fn, a, b, c, d) {
22705  return fn(a, b, c, d);
22706};
22707
22708var flushDiscreteUpdatesImpl = function () {};
22709
22710var batchedEventUpdatesImpl = batchedUpdatesImpl;
22711var isInsideEventHandler = false;
22712var isBatchingEventUpdates = false;
22713
22714function finishEventHandler() {
22715  // Here we wait until all updates have propagated, which is important
22716  // when using controlled components within layers:
22717  // https://github.com/facebook/react/issues/1698
22718  // Then we restore state of any controlled component.
22719  var controlledComponentsHavePendingUpdates = needsStateRestore();
22720
22721  if (controlledComponentsHavePendingUpdates) {
22722    // If a controlled event was fired, we may need to restore the state of
22723    // the DOM node back to the controlled value. This is necessary when React
22724    // bails out of the update without touching the DOM.
22725    flushDiscreteUpdatesImpl();
22726    restoreStateIfNeeded();
22727  }
22728}
22729
22730function batchedUpdates(fn, bookkeeping) {
22731  if (isInsideEventHandler) {
22732    // If we are currently inside another batch, we need to wait until it
22733    // fully completes before restoring state.
22734    return fn(bookkeeping);
22735  }
22736
22737  isInsideEventHandler = true;
22738
22739  try {
22740    return batchedUpdatesImpl(fn, bookkeeping);
22741  } finally {
22742    isInsideEventHandler = false;
22743    finishEventHandler();
22744  }
22745}
22746function batchedEventUpdates(fn, a, b) {
22747  if (isBatchingEventUpdates) {
22748    // If we are currently inside another batch, we need to wait until it
22749    // fully completes before restoring state.
22750    return fn(a, b);
22751  }
22752
22753  isBatchingEventUpdates = true;
22754
22755  try {
22756    return batchedEventUpdatesImpl(fn, a, b);
22757  } finally {
22758    isBatchingEventUpdates = false;
22759    finishEventHandler();
22760  }
22761} // This is for the React Flare event system
22762function discreteUpdates(fn, a, b, c, d) {
22763  var prevIsInsideEventHandler = isInsideEventHandler;
22764  isInsideEventHandler = true;
22765
22766  try {
22767    return discreteUpdatesImpl(fn, a, b, c, d);
22768  } finally {
22769    isInsideEventHandler = prevIsInsideEventHandler;
22770
22771    if (!isInsideEventHandler) {
22772      finishEventHandler();
22773    }
22774  }
22775}
22776function flushDiscreteUpdatesIfNeeded(timeStamp) {
22777  // event.timeStamp isn't overly reliable due to inconsistencies in
22778  // how different browsers have historically provided the time stamp.
22779  // Some browsers provide high-resolution time stamps for all events,
22780  // some provide low-resolution time stamps for all events. FF < 52
22781  // even mixes both time stamps together. Some browsers even report
22782  // negative time stamps or time stamps that are 0 (iOS9) in some cases.
22783  // Given we are only comparing two time stamps with equality (!==),
22784  // we are safe from the resolution differences. If the time stamp is 0
22785  // we bail-out of preventing the flush, which can affect semantics,
22786  // such as if an earlier flush removes or adds event listeners that
22787  // are fired in the subsequent flush. However, this is the same
22788  // behaviour as we had before this change, so the risks are low.
22789  if (!isInsideEventHandler && (!enableDeprecatedFlareAPI  )) {
22790    flushDiscreteUpdatesImpl();
22791  }
22792}
22793function setBatchingImplementation(_batchedUpdatesImpl, _discreteUpdatesImpl, _flushDiscreteUpdatesImpl, _batchedEventUpdatesImpl) {
22794  batchedUpdatesImpl = _batchedUpdatesImpl;
22795  discreteUpdatesImpl = _discreteUpdatesImpl;
22796  flushDiscreteUpdatesImpl = _flushDiscreteUpdatesImpl;
22797  batchedEventUpdatesImpl = _batchedEventUpdatesImpl;
22798}
22799
22800var DiscreteEvent = 0;
22801var UserBlockingEvent = 1;
22802var ContinuousEvent = 2;
22803
22804// A reserved attribute.
22805// It is handled by React separately and shouldn't be written to the DOM.
22806var RESERVED = 0; // A simple string attribute.
22807// Attributes that aren't in the whitelist are presumed to have this type.
22808
22809var STRING = 1; // A string attribute that accepts booleans in React. In HTML, these are called
22810// "enumerated" attributes with "true" and "false" as possible values.
22811// When true, it should be set to a "true" string.
22812// When false, it should be set to a "false" string.
22813
22814var BOOLEANISH_STRING = 2; // A real boolean attribute.
22815// When true, it should be present (set either to an empty string or its name).
22816// When false, it should be omitted.
22817
22818var BOOLEAN = 3; // An attribute that can be used as a flag as well as with a value.
22819// When true, it should be present (set either to an empty string or its name).
22820// When false, it should be omitted.
22821// For any other value, should be present with that value.
22822
22823var OVERLOADED_BOOLEAN = 4; // An attribute that must be numeric or parse as a numeric.
22824// When falsy, it should be removed.
22825
22826var NUMERIC = 5; // An attribute that must be positive numeric or parse as a positive numeric.
22827// When falsy, it should be removed.
22828
22829var POSITIVE_NUMERIC = 6;
22830
22831/* eslint-disable max-len */
22832var ATTRIBUTE_NAME_START_CHAR = ":A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD";
22833/* eslint-enable max-len */
22834
22835var ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + "\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040";
22836var ROOT_ATTRIBUTE_NAME = 'data-reactroot';
22837var VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + ATTRIBUTE_NAME_START_CHAR + '][' + ATTRIBUTE_NAME_CHAR + ']*$');
22838var hasOwnProperty = Object.prototype.hasOwnProperty;
22839var illegalAttributeNameCache = {};
22840var validatedAttributeNameCache = {};
22841function isAttributeNameSafe(attributeName) {
22842  if (hasOwnProperty.call(validatedAttributeNameCache, attributeName)) {
22843    return true;
22844  }
22845
22846  if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) {
22847    return false;
22848  }
22849
22850  if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {
22851    validatedAttributeNameCache[attributeName] = true;
22852    return true;
22853  }
22854
22855  illegalAttributeNameCache[attributeName] = true;
22856
22857  {
22858    error('Invalid attribute name: `%s`', attributeName);
22859  }
22860
22861  return false;
22862}
22863function shouldIgnoreAttribute(name, propertyInfo, isCustomComponentTag) {
22864  if (propertyInfo !== null) {
22865    return propertyInfo.type === RESERVED;
22866  }
22867
22868  if (isCustomComponentTag) {
22869    return false;
22870  }
22871
22872  if (name.length > 2 && (name[0] === 'o' || name[0] === 'O') && (name[1] === 'n' || name[1] === 'N')) {
22873    return true;
22874  }
22875
22876  return false;
22877}
22878function shouldRemoveAttributeWithWarning(name, value, propertyInfo, isCustomComponentTag) {
22879  if (propertyInfo !== null && propertyInfo.type === RESERVED) {
22880    return false;
22881  }
22882
22883  switch (typeof value) {
22884    case 'function': // $FlowIssue symbol is perfectly valid here
22885
22886    case 'symbol':
22887      // eslint-disable-line
22888      return true;
22889
22890    case 'boolean':
22891      {
22892        if (isCustomComponentTag) {
22893          return false;
22894        }
22895
22896        if (propertyInfo !== null) {
22897          return !propertyInfo.acceptsBooleans;
22898        } else {
22899          var prefix = name.toLowerCase().slice(0, 5);
22900          return prefix !== 'data-' && prefix !== 'aria-';
22901        }
22902      }
22903
22904    default:
22905      return false;
22906  }
22907}
22908function shouldRemoveAttribute(name, value, propertyInfo, isCustomComponentTag) {
22909  if (value === null || typeof value === 'undefined') {
22910    return true;
22911  }
22912
22913  if (shouldRemoveAttributeWithWarning(name, value, propertyInfo, isCustomComponentTag)) {
22914    return true;
22915  }
22916
22917  if (isCustomComponentTag) {
22918    return false;
22919  }
22920
22921  if (propertyInfo !== null) {
22922    switch (propertyInfo.type) {
22923      case BOOLEAN:
22924        return !value;
22925
22926      case OVERLOADED_BOOLEAN:
22927        return value === false;
22928
22929      case NUMERIC:
22930        return isNaN(value);
22931
22932      case POSITIVE_NUMERIC:
22933        return isNaN(value) || value < 1;
22934    }
22935  }
22936
22937  return false;
22938}
22939function getPropertyInfo(name) {
22940  return properties.hasOwnProperty(name) ? properties[name] : null;
22941}
22942
22943function PropertyInfoRecord(name, type, mustUseProperty, attributeName, attributeNamespace, sanitizeURL) {
22944  this.acceptsBooleans = type === BOOLEANISH_STRING || type === BOOLEAN || type === OVERLOADED_BOOLEAN;
22945  this.attributeName = attributeName;
22946  this.attributeNamespace = attributeNamespace;
22947  this.mustUseProperty = mustUseProperty;
22948  this.propertyName = name;
22949  this.type = type;
22950  this.sanitizeURL = sanitizeURL;
22951} // When adding attributes to this list, be sure to also add them to
22952// the `possibleStandardNames` module to ensure casing and incorrect
22953// name warnings.
22954
22955
22956var properties = {}; // These props are reserved by React. They shouldn't be written to the DOM.
22957
22958var reservedProps = ['children', 'dangerouslySetInnerHTML', // TODO: This prevents the assignment of defaultValue to regular
22959// elements (not just inputs). Now that ReactDOMInput assigns to the
22960// defaultValue property -- do we need this?
22961'defaultValue', 'defaultChecked', 'innerHTML', 'suppressContentEditableWarning', 'suppressHydrationWarning', 'style'];
22962
22963reservedProps.forEach(function (name) {
22964  properties[name] = new PropertyInfoRecord(name, RESERVED, false, // mustUseProperty
22965  name, // attributeName
22966  null, // attributeNamespace
22967  false);
22968}); // A few React string attributes have a different name.
22969// This is a mapping from React prop names to the attribute names.
22970
22971[['acceptCharset', 'accept-charset'], ['className', 'class'], ['htmlFor', 'for'], ['httpEquiv', 'http-equiv']].forEach(function (_ref) {
22972  var name = _ref[0],
22973      attributeName = _ref[1];
22974  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty
22975  attributeName, // attributeName
22976  null, // attributeNamespace
22977  false);
22978}); // These are "enumerated" HTML attributes that accept "true" and "false".
22979// In React, we let users pass `true` and `false` even though technically
22980// these aren't boolean attributes (they are coerced to strings).
22981
22982['contentEditable', 'draggable', 'spellCheck', 'value'].forEach(function (name) {
22983  properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty
22984  name.toLowerCase(), // attributeName
22985  null, // attributeNamespace
22986  false);
22987}); // These are "enumerated" SVG attributes that accept "true" and "false".
22988// In React, we let users pass `true` and `false` even though technically
22989// these aren't boolean attributes (they are coerced to strings).
22990// Since these are SVG attributes, their attribute names are case-sensitive.
22991
22992['autoReverse', 'externalResourcesRequired', 'focusable', 'preserveAlpha'].forEach(function (name) {
22993  properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty
22994  name, // attributeName
22995  null, // attributeNamespace
22996  false);
22997}); // These are HTML boolean attributes.
22998
22999['allowFullScreen', 'async', // Note: there is a special case that prevents it from being written to the DOM
23000// on the client side because the browsers are inconsistent. Instead we call focus().
23001'autoFocus', 'autoPlay', 'controls', 'default', 'defer', 'disabled', 'disablePictureInPicture', 'formNoValidate', 'hidden', 'loop', 'noModule', 'noValidate', 'open', 'playsInline', 'readOnly', 'required', 'reversed', 'scoped', 'seamless', // Microdata
23002'itemScope'].forEach(function (name) {
23003  properties[name] = new PropertyInfoRecord(name, BOOLEAN, false, // mustUseProperty
23004  name.toLowerCase(), // attributeName
23005  null, // attributeNamespace
23006  false);
23007}); // These are the few React props that we set as DOM properties
23008// rather than attributes. These are all booleans.
23009
23010['checked', // Note: `option.selected` is not updated if `select.multiple` is
23011// disabled with `removeAttribute`. We have special logic for handling this.
23012'multiple', 'muted', 'selected' // NOTE: if you add a camelCased prop to this list,
23013// you'll need to set attributeName to name.toLowerCase()
23014// instead in the assignment below.
23015].forEach(function (name) {
23016  properties[name] = new PropertyInfoRecord(name, BOOLEAN, true, // mustUseProperty
23017  name, // attributeName
23018  null, // attributeNamespace
23019  false);
23020}); // These are HTML attributes that are "overloaded booleans": they behave like
23021// booleans, but can also accept a string value.
23022
23023['capture', 'download' // NOTE: if you add a camelCased prop to this list,
23024// you'll need to set attributeName to name.toLowerCase()
23025// instead in the assignment below.
23026].forEach(function (name) {
23027  properties[name] = new PropertyInfoRecord(name, OVERLOADED_BOOLEAN, false, // mustUseProperty
23028  name, // attributeName
23029  null, // attributeNamespace
23030  false);
23031}); // These are HTML attributes that must be positive numbers.
23032
23033['cols', 'rows', 'size', 'span' // NOTE: if you add a camelCased prop to this list,
23034// you'll need to set attributeName to name.toLowerCase()
23035// instead in the assignment below.
23036].forEach(function (name) {
23037  properties[name] = new PropertyInfoRecord(name, POSITIVE_NUMERIC, false, // mustUseProperty
23038  name, // attributeName
23039  null, // attributeNamespace
23040  false);
23041}); // These are HTML attributes that must be numbers.
23042
23043['rowSpan', 'start'].forEach(function (name) {
23044  properties[name] = new PropertyInfoRecord(name, NUMERIC, false, // mustUseProperty
23045  name.toLowerCase(), // attributeName
23046  null, // attributeNamespace
23047  false);
23048});
23049var CAMELIZE = /[\-\:]([a-z])/g;
23050
23051var capitalize = function (token) {
23052  return token[1].toUpperCase();
23053}; // This is a list of all SVG attributes that need special casing, namespacing,
23054// or boolean value assignment. Regular attributes that just accept strings
23055// and have the same names are omitted, just like in the HTML whitelist.
23056// Some of these attributes can be hard to find. This list was created by
23057// scraping the MDN documentation.
23058
23059
23060['accent-height', 'alignment-baseline', 'arabic-form', 'baseline-shift', 'cap-height', 'clip-path', 'clip-rule', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'dominant-baseline', 'enable-background', 'fill-opacity', 'fill-rule', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'glyph-name', 'glyph-orientation-horizontal', 'glyph-orientation-vertical', 'horiz-adv-x', 'horiz-origin-x', 'image-rendering', 'letter-spacing', 'lighting-color', 'marker-end', 'marker-mid', 'marker-start', 'overline-position', 'overline-thickness', 'paint-order', 'panose-1', 'pointer-events', 'rendering-intent', 'shape-rendering', 'stop-color', 'stop-opacity', 'strikethrough-position', 'strikethrough-thickness', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'text-anchor', 'text-decoration', 'text-rendering', 'underline-position', 'underline-thickness', 'unicode-bidi', 'unicode-range', 'units-per-em', 'v-alphabetic', 'v-hanging', 'v-ideographic', 'v-mathematical', 'vector-effect', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'word-spacing', 'writing-mode', 'xmlns:xlink', 'x-height' // NOTE: if you add a camelCased prop to this list,
23061// you'll need to set attributeName to name.toLowerCase()
23062// instead in the assignment below.
23063].forEach(function (attributeName) {
23064  var name = attributeName.replace(CAMELIZE, capitalize);
23065  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty
23066  attributeName, null, // attributeNamespace
23067  false);
23068}); // String SVG attributes with the xlink namespace.
23069
23070['xlink:actuate', 'xlink:arcrole', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type' // NOTE: if you add a camelCased prop to this list,
23071// you'll need to set attributeName to name.toLowerCase()
23072// instead in the assignment below.
23073].forEach(function (attributeName) {
23074  var name = attributeName.replace(CAMELIZE, capitalize);
23075  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty
23076  attributeName, 'http://www.w3.org/1999/xlink', false);
23077}); // String SVG attributes with the xml namespace.
23078
23079['xml:base', 'xml:lang', 'xml:space' // NOTE: if you add a camelCased prop to this list,
23080// you'll need to set attributeName to name.toLowerCase()
23081// instead in the assignment below.
23082].forEach(function (attributeName) {
23083  var name = attributeName.replace(CAMELIZE, capitalize);
23084  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty
23085  attributeName, 'http://www.w3.org/XML/1998/namespace', false);
23086}); // These attribute exists both in HTML and SVG.
23087// The attribute name is case-sensitive in SVG so we can't just use
23088// the React name like we do for attributes that exist only in HTML.
23089
23090['tabIndex', 'crossOrigin'].forEach(function (attributeName) {
23091  properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty
23092  attributeName.toLowerCase(), // attributeName
23093  null, // attributeNamespace
23094  false);
23095}); // These attributes accept URLs. These must not allow javascript: URLS.
23096// These will also need to accept Trusted Types object in the future.
23097
23098var xlinkHref = 'xlinkHref';
23099properties[xlinkHref] = new PropertyInfoRecord('xlinkHref', STRING, false, // mustUseProperty
23100'xlink:href', 'http://www.w3.org/1999/xlink', true);
23101['src', 'href', 'action', 'formAction'].forEach(function (attributeName) {
23102  properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty
23103  attributeName.toLowerCase(), // attributeName
23104  null, // attributeNamespace
23105  true);
23106});
23107
23108var ReactDebugCurrentFrame = null;
23109
23110{
23111  ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;
23112} // A javascript: URL can contain leading C0 control or \u0020 SPACE,
23113// and any newline or tab are filtered out as if they're not part of the URL.
23114// https://url.spec.whatwg.org/#url-parsing
23115// Tab or newline are defined as \r\n\t:
23116// https://infra.spec.whatwg.org/#ascii-tab-or-newline
23117// A C0 control is a code point in the range \u0000 NULL to \u001F
23118// INFORMATION SEPARATOR ONE, inclusive:
23119// https://infra.spec.whatwg.org/#c0-control-or-space
23120
23121/* eslint-disable max-len */
23122
23123
23124var isJavaScriptProtocol = /^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*\:/i;
23125var didWarn = false;
23126
23127function sanitizeURL(url) {
23128  {
23129    if (!didWarn && isJavaScriptProtocol.test(url)) {
23130      didWarn = true;
23131
23132      error('A future version of React will block javascript: URLs as a security precaution. ' + 'Use event handlers instead if you can. If you need to generate unsafe HTML try ' + 'using dangerouslySetInnerHTML instead. React was passed %s.', JSON.stringify(url));
23133    }
23134  }
23135}
23136
23137/**
23138 * Get the value for a property on a node. Only used in DEV for SSR validation.
23139 * The "expected" argument is used as a hint of what the expected value is.
23140 * Some properties have multiple equivalent values.
23141 */
23142function getValueForProperty(node, name, expected, propertyInfo) {
23143  {
23144    if (propertyInfo.mustUseProperty) {
23145      var propertyName = propertyInfo.propertyName;
23146      return node[propertyName];
23147    } else {
23148      if ( propertyInfo.sanitizeURL) {
23149        // If we haven't fully disabled javascript: URLs, and if
23150        // the hydration is successful of a javascript: URL, we
23151        // still want to warn on the client.
23152        sanitizeURL('' + expected);
23153      }
23154
23155      var attributeName = propertyInfo.attributeName;
23156      var stringValue = null;
23157
23158      if (propertyInfo.type === OVERLOADED_BOOLEAN) {
23159        if (node.hasAttribute(attributeName)) {
23160          var value = node.getAttribute(attributeName);
23161
23162          if (value === '') {
23163            return true;
23164          }
23165
23166          if (shouldRemoveAttribute(name, expected, propertyInfo, false)) {
23167            return value;
23168          }
23169
23170          if (value === '' + expected) {
23171            return expected;
23172          }
23173
23174          return value;
23175        }
23176      } else if (node.hasAttribute(attributeName)) {
23177        if (shouldRemoveAttribute(name, expected, propertyInfo, false)) {
23178          // We had an attribute but shouldn't have had one, so read it
23179          // for the error message.
23180          return node.getAttribute(attributeName);
23181        }
23182
23183        if (propertyInfo.type === BOOLEAN) {
23184          // If this was a boolean, it doesn't matter what the value is
23185          // the fact that we have it is the same as the expected.
23186          return expected;
23187        } // Even if this property uses a namespace we use getAttribute
23188        // because we assume its namespaced name is the same as our config.
23189        // To use getAttributeNS we need the local name which we don't have
23190        // in our config atm.
23191
23192
23193        stringValue = node.getAttribute(attributeName);
23194      }
23195
23196      if (shouldRemoveAttribute(name, expected, propertyInfo, false)) {
23197        return stringValue === null ? expected : stringValue;
23198      } else if (stringValue === '' + expected) {
23199        return expected;
23200      } else {
23201        return stringValue;
23202      }
23203    }
23204  }
23205}
23206/**
23207 * Get the value for a attribute on a node. Only used in DEV for SSR validation.
23208 * The third argument is used as a hint of what the expected value is. Some
23209 * attributes have multiple equivalent values.
23210 */
23211
23212function getValueForAttribute(node, name, expected) {
23213  {
23214    if (!isAttributeNameSafe(name)) {
23215      return;
23216    }
23217
23218    if (!node.hasAttribute(name)) {
23219      return expected === undefined ? undefined : null;
23220    }
23221
23222    var value = node.getAttribute(name);
23223
23224    if (value === '' + expected) {
23225      return expected;
23226    }
23227
23228    return value;
23229  }
23230}
23231/**
23232 * Sets the value for a property on a node.
23233 *
23234 * @param {DOMElement} node
23235 * @param {string} name
23236 * @param {*} value
23237 */
23238
23239function setValueForProperty(node, name, value, isCustomComponentTag) {
23240  var propertyInfo = getPropertyInfo(name);
23241
23242  if (shouldIgnoreAttribute(name, propertyInfo, isCustomComponentTag)) {
23243    return;
23244  }
23245
23246  if (shouldRemoveAttribute(name, value, propertyInfo, isCustomComponentTag)) {
23247    value = null;
23248  } // If the prop isn't in the special list, treat it as a simple attribute.
23249
23250
23251  if (isCustomComponentTag || propertyInfo === null) {
23252    if (isAttributeNameSafe(name)) {
23253      var _attributeName = name;
23254
23255      if (value === null) {
23256        node.removeAttribute(_attributeName);
23257      } else {
23258        node.setAttribute(_attributeName,  '' + value);
23259      }
23260    }
23261
23262    return;
23263  }
23264
23265  var mustUseProperty = propertyInfo.mustUseProperty;
23266
23267  if (mustUseProperty) {
23268    var propertyName = propertyInfo.propertyName;
23269
23270    if (value === null) {
23271      var type = propertyInfo.type;
23272      node[propertyName] = type === BOOLEAN ? false : '';
23273    } else {
23274      // Contrary to `setAttribute`, object properties are properly
23275      // `toString`ed by IE8/9.
23276      node[propertyName] = value;
23277    }
23278
23279    return;
23280  } // The rest are treated as attributes with special cases.
23281
23282
23283  var attributeName = propertyInfo.attributeName,
23284      attributeNamespace = propertyInfo.attributeNamespace;
23285
23286  if (value === null) {
23287    node.removeAttribute(attributeName);
23288  } else {
23289    var _type = propertyInfo.type;
23290    var attributeValue;
23291
23292    if (_type === BOOLEAN || _type === OVERLOADED_BOOLEAN && value === true) {
23293      // If attribute type is boolean, we know for sure it won't be an execution sink
23294      // and we won't require Trusted Type here.
23295      attributeValue = '';
23296    } else {
23297      // `setAttribute` with objects becomes only `[object]` in IE8/9,
23298      // ('' + value) makes it output the correct toString()-value.
23299      {
23300        attributeValue = '' + value;
23301      }
23302
23303      if (propertyInfo.sanitizeURL) {
23304        sanitizeURL(attributeValue.toString());
23305      }
23306    }
23307
23308    if (attributeNamespace) {
23309      node.setAttributeNS(attributeNamespace, attributeName, attributeValue);
23310    } else {
23311      node.setAttribute(attributeName, attributeValue);
23312    }
23313  }
23314}
23315
23316var BEFORE_SLASH_RE = /^(.*)[\\\/]/;
23317function describeComponentFrame (name, source, ownerName) {
23318  var sourceInfo = '';
23319
23320  if (source) {
23321    var path = source.fileName;
23322    var fileName = path.replace(BEFORE_SLASH_RE, '');
23323
23324    {
23325      // In DEV, include code for a common special case:
23326      // prefer "folder/index.js" instead of just "index.js".
23327      if (/^index\./.test(fileName)) {
23328        var match = path.match(BEFORE_SLASH_RE);
23329
23330        if (match) {
23331          var pathBeforeSlash = match[1];
23332
23333          if (pathBeforeSlash) {
23334            var folderName = pathBeforeSlash.replace(BEFORE_SLASH_RE, '');
23335            fileName = folderName + '/' + fileName;
23336          }
23337        }
23338      }
23339    }
23340
23341    sourceInfo = ' (at ' + fileName + ':' + source.lineNumber + ')';
23342  } else if (ownerName) {
23343    sourceInfo = ' (created by ' + ownerName + ')';
23344  }
23345
23346  return '\n    in ' + (name || 'Unknown') + sourceInfo;
23347}
23348
23349// The Symbol used to tag the ReactElement-like types. If there is no native Symbol
23350// nor polyfill, then a plain number is used for performance.
23351var hasSymbol = typeof Symbol === 'function' && Symbol.for;
23352var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;
23353var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;
23354var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;
23355var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;
23356var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;
23357var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;
23358var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary
23359var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;
23360var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;
23361var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;
23362var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;
23363var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;
23364var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;
23365var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;
23366var MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
23367var FAUX_ITERATOR_SYMBOL = '@@iterator';
23368function getIteratorFn(maybeIterable) {
23369  if (maybeIterable === null || typeof maybeIterable !== 'object') {
23370    return null;
23371  }
23372
23373  var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];
23374
23375  if (typeof maybeIterator === 'function') {
23376    return maybeIterator;
23377  }
23378
23379  return null;
23380}
23381
23382var Uninitialized = -1;
23383var Pending = 0;
23384var Resolved = 1;
23385var Rejected = 2;
23386function refineResolvedLazyComponent(lazyComponent) {
23387  return lazyComponent._status === Resolved ? lazyComponent._result : null;
23388}
23389function initializeLazyComponentType(lazyComponent) {
23390  if (lazyComponent._status === Uninitialized) {
23391    lazyComponent._status = Pending;
23392    var ctor = lazyComponent._ctor;
23393    var thenable = ctor();
23394    lazyComponent._result = thenable;
23395    thenable.then(function (moduleObject) {
23396      if (lazyComponent._status === Pending) {
23397        var defaultExport = moduleObject.default;
23398
23399        {
23400          if (defaultExport === undefined) {
23401            error('lazy: Expected the result of a dynamic import() call. ' + 'Instead received: %s\n\nYour code should look like: \n  ' + "const MyComponent = lazy(() => import('./MyComponent'))", moduleObject);
23402          }
23403        }
23404
23405        lazyComponent._status = Resolved;
23406        lazyComponent._result = defaultExport;
23407      }
23408    }, function (error) {
23409      if (lazyComponent._status === Pending) {
23410        lazyComponent._status = Rejected;
23411        lazyComponent._result = error;
23412      }
23413    });
23414  }
23415}
23416
23417function getWrappedName(outerType, innerType, wrapperName) {
23418  var functionName = innerType.displayName || innerType.name || '';
23419  return outerType.displayName || (functionName !== '' ? wrapperName + "(" + functionName + ")" : wrapperName);
23420}
23421
23422function getComponentName(type) {
23423  if (type == null) {
23424    // Host root, text node or just invalid type.
23425    return null;
23426  }
23427
23428  {
23429    if (typeof type.tag === 'number') {
23430      error('Received an unexpected object in getComponentName(). ' + 'This is likely a bug in React. Please file an issue.');
23431    }
23432  }
23433
23434  if (typeof type === 'function') {
23435    return type.displayName || type.name || null;
23436  }
23437
23438  if (typeof type === 'string') {
23439    return type;
23440  }
23441
23442  switch (type) {
23443    case REACT_FRAGMENT_TYPE:
23444      return 'Fragment';
23445
23446    case REACT_PORTAL_TYPE:
23447      return 'Portal';
23448
23449    case REACT_PROFILER_TYPE:
23450      return "Profiler";
23451
23452    case REACT_STRICT_MODE_TYPE:
23453      return 'StrictMode';
23454
23455    case REACT_SUSPENSE_TYPE:
23456      return 'Suspense';
23457
23458    case REACT_SUSPENSE_LIST_TYPE:
23459      return 'SuspenseList';
23460  }
23461
23462  if (typeof type === 'object') {
23463    switch (type.$$typeof) {
23464      case REACT_CONTEXT_TYPE:
23465        return 'Context.Consumer';
23466
23467      case REACT_PROVIDER_TYPE:
23468        return 'Context.Provider';
23469
23470      case REACT_FORWARD_REF_TYPE:
23471        return getWrappedName(type, type.render, 'ForwardRef');
23472
23473      case REACT_MEMO_TYPE:
23474        return getComponentName(type.type);
23475
23476      case REACT_BLOCK_TYPE:
23477        return getComponentName(type.render);
23478
23479      case REACT_LAZY_TYPE:
23480        {
23481          var thenable = type;
23482          var resolvedThenable = refineResolvedLazyComponent(thenable);
23483
23484          if (resolvedThenable) {
23485            return getComponentName(resolvedThenable);
23486          }
23487
23488          break;
23489        }
23490    }
23491  }
23492
23493  return null;
23494}
23495
23496var ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;
23497
23498function describeFiber(fiber) {
23499  switch (fiber.tag) {
23500    case HostRoot:
23501    case HostPortal:
23502    case HostText:
23503    case Fragment:
23504    case ContextProvider:
23505    case ContextConsumer:
23506      return '';
23507
23508    default:
23509      var owner = fiber._debugOwner;
23510      var source = fiber._debugSource;
23511      var name = getComponentName(fiber.type);
23512      var ownerName = null;
23513
23514      if (owner) {
23515        ownerName = getComponentName(owner.type);
23516      }
23517
23518      return describeComponentFrame(name, source, ownerName);
23519  }
23520}
23521
23522function getStackByFiberInDevAndProd(workInProgress) {
23523  var info = '';
23524  var node = workInProgress;
23525
23526  do {
23527    info += describeFiber(node);
23528    node = node.return;
23529  } while (node);
23530
23531  return info;
23532}
23533var current = null;
23534var isRendering = false;
23535function getCurrentFiberOwnerNameInDevOrNull() {
23536  {
23537    if (current === null) {
23538      return null;
23539    }
23540
23541    var owner = current._debugOwner;
23542
23543    if (owner !== null && typeof owner !== 'undefined') {
23544      return getComponentName(owner.type);
23545    }
23546  }
23547
23548  return null;
23549}
23550function getCurrentFiberStackInDev() {
23551  {
23552    if (current === null) {
23553      return '';
23554    } // Safe because if current fiber exists, we are reconciling,
23555    // and it is guaranteed to be the work-in-progress version.
23556
23557
23558    return getStackByFiberInDevAndProd(current);
23559  }
23560}
23561function resetCurrentFiber() {
23562  {
23563    ReactDebugCurrentFrame$1.getCurrentStack = null;
23564    current = null;
23565    isRendering = false;
23566  }
23567}
23568function setCurrentFiber(fiber) {
23569  {
23570    ReactDebugCurrentFrame$1.getCurrentStack = getCurrentFiberStackInDev;
23571    current = fiber;
23572    isRendering = false;
23573  }
23574}
23575function setIsRendering(rendering) {
23576  {
23577    isRendering = rendering;
23578  }
23579}
23580
23581// Flow does not allow string concatenation of most non-string types. To work
23582// around this limitation, we use an opaque type that can only be obtained by
23583// passing the value through getToStringValue first.
23584function toString(value) {
23585  return '' + value;
23586}
23587function getToStringValue(value) {
23588  switch (typeof value) {
23589    case 'boolean':
23590    case 'number':
23591    case 'object':
23592    case 'string':
23593    case 'undefined':
23594      return value;
23595
23596    default:
23597      // function, symbol are assigned as empty strings
23598      return '';
23599  }
23600}
23601
23602var ReactDebugCurrentFrame$2 = null;
23603var ReactControlledValuePropTypes = {
23604  checkPropTypes: null
23605};
23606
23607{
23608  ReactDebugCurrentFrame$2 = ReactSharedInternals.ReactDebugCurrentFrame;
23609  var hasReadOnlyValue = {
23610    button: true,
23611    checkbox: true,
23612    image: true,
23613    hidden: true,
23614    radio: true,
23615    reset: true,
23616    submit: true
23617  };
23618  var propTypes = {
23619    value: function (props, propName, componentName) {
23620      if (hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled || props[propName] == null || enableDeprecatedFlareAPI ) {
23621        return null;
23622      }
23623
23624      return new Error('You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.');
23625    },
23626    checked: function (props, propName, componentName) {
23627      if (props.onChange || props.readOnly || props.disabled || props[propName] == null || enableDeprecatedFlareAPI ) {
23628        return null;
23629      }
23630
23631      return new Error('You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.');
23632    }
23633  };
23634  /**
23635   * Provide a linked `value` attribute for controlled forms. You should not use
23636   * this outside of the ReactDOM controlled form components.
23637   */
23638
23639  ReactControlledValuePropTypes.checkPropTypes = function (tagName, props) {
23640    checkPropTypes(propTypes, props, 'prop', tagName, ReactDebugCurrentFrame$2.getStackAddendum);
23641  };
23642}
23643
23644function isCheckable(elem) {
23645  var type = elem.type;
23646  var nodeName = elem.nodeName;
23647  return nodeName && nodeName.toLowerCase() === 'input' && (type === 'checkbox' || type === 'radio');
23648}
23649
23650function getTracker(node) {
23651  return node._valueTracker;
23652}
23653
23654function detachTracker(node) {
23655  node._valueTracker = null;
23656}
23657
23658function getValueFromNode(node) {
23659  var value = '';
23660
23661  if (!node) {
23662    return value;
23663  }
23664
23665  if (isCheckable(node)) {
23666    value = node.checked ? 'true' : 'false';
23667  } else {
23668    value = node.value;
23669  }
23670
23671  return value;
23672}
23673
23674function trackValueOnNode(node) {
23675  var valueField = isCheckable(node) ? 'checked' : 'value';
23676  var descriptor = Object.getOwnPropertyDescriptor(node.constructor.prototype, valueField);
23677  var currentValue = '' + node[valueField]; // if someone has already defined a value or Safari, then bail
23678  // and don't track value will cause over reporting of changes,
23679  // but it's better then a hard failure
23680  // (needed for certain tests that spyOn input values and Safari)
23681
23682  if (node.hasOwnProperty(valueField) || typeof descriptor === 'undefined' || typeof descriptor.get !== 'function' || typeof descriptor.set !== 'function') {
23683    return;
23684  }
23685
23686  var get = descriptor.get,
23687      set = descriptor.set;
23688  Object.defineProperty(node, valueField, {
23689    configurable: true,
23690    get: function () {
23691      return get.call(this);
23692    },
23693    set: function (value) {
23694      currentValue = '' + value;
23695      set.call(this, value);
23696    }
23697  }); // We could've passed this the first time
23698  // but it triggers a bug in IE11 and Edge 14/15.
23699  // Calling defineProperty() again should be equivalent.
23700  // https://github.com/facebook/react/issues/11768
23701
23702  Object.defineProperty(node, valueField, {
23703    enumerable: descriptor.enumerable
23704  });
23705  var tracker = {
23706    getValue: function () {
23707      return currentValue;
23708    },
23709    setValue: function (value) {
23710      currentValue = '' + value;
23711    },
23712    stopTracking: function () {
23713      detachTracker(node);
23714      delete node[valueField];
23715    }
23716  };
23717  return tracker;
23718}
23719
23720function track(node) {
23721  if (getTracker(node)) {
23722    return;
23723  } // TODO: Once it's just Fiber we can move this to node._wrapperState
23724
23725
23726  node._valueTracker = trackValueOnNode(node);
23727}
23728function updateValueIfChanged(node) {
23729  if (!node) {
23730    return false;
23731  }
23732
23733  var tracker = getTracker(node); // if there is no tracker at this point it's unlikely
23734  // that trying again will succeed
23735
23736  if (!tracker) {
23737    return true;
23738  }
23739
23740  var lastValue = tracker.getValue();
23741  var nextValue = getValueFromNode(node);
23742
23743  if (nextValue !== lastValue) {
23744    tracker.setValue(nextValue);
23745    return true;
23746  }
23747
23748  return false;
23749}
23750
23751var didWarnValueDefaultValue = false;
23752var didWarnCheckedDefaultChecked = false;
23753var didWarnControlledToUncontrolled = false;
23754var didWarnUncontrolledToControlled = false;
23755
23756function isControlled(props) {
23757  var usesChecked = props.type === 'checkbox' || props.type === 'radio';
23758  return usesChecked ? props.checked != null : props.value != null;
23759}
23760/**
23761 * Implements an <input> host component that allows setting these optional
23762 * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.
23763 *
23764 * If `checked` or `value` are not supplied (or null/undefined), user actions
23765 * that affect the checked state or value will trigger updates to the element.
23766 *
23767 * If they are supplied (and not null/undefined), the rendered element will not
23768 * trigger updates to the element. Instead, the props must change in order for
23769 * the rendered element to be updated.
23770 *
23771 * The rendered element will be initialized as unchecked (or `defaultChecked`)
23772 * with an empty value (or `defaultValue`).
23773 *
23774 * See http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html
23775 */
23776
23777
23778function getHostProps(element, props) {
23779  var node = element;
23780  var checked = props.checked;
23781
23782  var hostProps = _assign({}, props, {
23783    defaultChecked: undefined,
23784    defaultValue: undefined,
23785    value: undefined,
23786    checked: checked != null ? checked : node._wrapperState.initialChecked
23787  });
23788
23789  return hostProps;
23790}
23791function initWrapperState(element, props) {
23792  {
23793    ReactControlledValuePropTypes.checkPropTypes('input', props);
23794
23795    if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) {
23796      error('%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', getCurrentFiberOwnerNameInDevOrNull() || 'A component', props.type);
23797
23798      didWarnCheckedDefaultChecked = true;
23799    }
23800
23801    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {
23802      error('%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', getCurrentFiberOwnerNameInDevOrNull() || 'A component', props.type);
23803
23804      didWarnValueDefaultValue = true;
23805    }
23806  }
23807
23808  var node = element;
23809  var defaultValue = props.defaultValue == null ? '' : props.defaultValue;
23810  node._wrapperState = {
23811    initialChecked: props.checked != null ? props.checked : props.defaultChecked,
23812    initialValue: getToStringValue(props.value != null ? props.value : defaultValue),
23813    controlled: isControlled(props)
23814  };
23815}
23816function updateChecked(element, props) {
23817  var node = element;
23818  var checked = props.checked;
23819
23820  if (checked != null) {
23821    setValueForProperty(node, 'checked', checked, false);
23822  }
23823}
23824function updateWrapper(element, props) {
23825  var node = element;
23826
23827  {
23828    var controlled = isControlled(props);
23829
23830    if (!node._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) {
23831      error('A component is changing an uncontrolled input of type %s to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', props.type);
23832
23833      didWarnUncontrolledToControlled = true;
23834    }
23835
23836    if (node._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) {
23837      error('A component is changing a controlled input of type %s to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', props.type);
23838
23839      didWarnControlledToUncontrolled = true;
23840    }
23841  }
23842
23843  updateChecked(element, props);
23844  var value = getToStringValue(props.value);
23845  var type = props.type;
23846
23847  if (value != null) {
23848    if (type === 'number') {
23849      if (value === 0 && node.value === '' || // We explicitly want to coerce to number here if possible.
23850      // eslint-disable-next-line
23851      node.value != value) {
23852        node.value = toString(value);
23853      }
23854    } else if (node.value !== toString(value)) {
23855      node.value = toString(value);
23856    }
23857  } else if (type === 'submit' || type === 'reset') {
23858    // Submit/reset inputs need the attribute removed completely to avoid
23859    // blank-text buttons.
23860    node.removeAttribute('value');
23861    return;
23862  }
23863
23864  {
23865    // When syncing the value attribute, the value comes from a cascade of
23866    // properties:
23867    //  1. The value React property
23868    //  2. The defaultValue React property
23869    //  3. Otherwise there should be no change
23870    if (props.hasOwnProperty('value')) {
23871      setDefaultValue(node, props.type, value);
23872    } else if (props.hasOwnProperty('defaultValue')) {
23873      setDefaultValue(node, props.type, getToStringValue(props.defaultValue));
23874    }
23875  }
23876
23877  {
23878    // When syncing the checked attribute, it only changes when it needs
23879    // to be removed, such as transitioning from a checkbox into a text input
23880    if (props.checked == null && props.defaultChecked != null) {
23881      node.defaultChecked = !!props.defaultChecked;
23882    }
23883  }
23884}
23885function postMountWrapper(element, props, isHydrating) {
23886  var node = element; // Do not assign value if it is already set. This prevents user text input
23887  // from being lost during SSR hydration.
23888
23889  if (props.hasOwnProperty('value') || props.hasOwnProperty('defaultValue')) {
23890    var type = props.type;
23891    var isButton = type === 'submit' || type === 'reset'; // Avoid setting value attribute on submit/reset inputs as it overrides the
23892    // default value provided by the browser. See: #12872
23893
23894    if (isButton && (props.value === undefined || props.value === null)) {
23895      return;
23896    }
23897
23898    var initialValue = toString(node._wrapperState.initialValue); // Do not assign value if it is already set. This prevents user text input
23899    // from being lost during SSR hydration.
23900
23901    if (!isHydrating) {
23902      {
23903        // When syncing the value attribute, the value property should use
23904        // the wrapperState._initialValue property. This uses:
23905        //
23906        //   1. The value React property when present
23907        //   2. The defaultValue React property when present
23908        //   3. An empty string
23909        if (initialValue !== node.value) {
23910          node.value = initialValue;
23911        }
23912      }
23913    }
23914
23915    {
23916      // Otherwise, the value attribute is synchronized to the property,
23917      // so we assign defaultValue to the same thing as the value property
23918      // assignment step above.
23919      node.defaultValue = initialValue;
23920    }
23921  } // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug
23922  // this is needed to work around a chrome bug where setting defaultChecked
23923  // will sometimes influence the value of checked (even after detachment).
23924  // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416
23925  // We need to temporarily unset name to avoid disrupting radio button groups.
23926
23927
23928  var name = node.name;
23929
23930  if (name !== '') {
23931    node.name = '';
23932  }
23933
23934  {
23935    // When syncing the checked attribute, both the checked property and
23936    // attribute are assigned at the same time using defaultChecked. This uses:
23937    //
23938    //   1. The checked React property when present
23939    //   2. The defaultChecked React property when present
23940    //   3. Otherwise, false
23941    node.defaultChecked = !node.defaultChecked;
23942    node.defaultChecked = !!node._wrapperState.initialChecked;
23943  }
23944
23945  if (name !== '') {
23946    node.name = name;
23947  }
23948}
23949function restoreControlledState(element, props) {
23950  var node = element;
23951  updateWrapper(node, props);
23952  updateNamedCousins(node, props);
23953}
23954
23955function updateNamedCousins(rootNode, props) {
23956  var name = props.name;
23957
23958  if (props.type === 'radio' && name != null) {
23959    var queryRoot = rootNode;
23960
23961    while (queryRoot.parentNode) {
23962      queryRoot = queryRoot.parentNode;
23963    } // If `rootNode.form` was non-null, then we could try `form.elements`,
23964    // but that sometimes behaves strangely in IE8. We could also try using
23965    // `form.getElementsByName`, but that will only return direct children
23966    // and won't include inputs that use the HTML5 `form=` attribute. Since
23967    // the input might not even be in a form. It might not even be in the
23968    // document. Let's just use the local `querySelectorAll` to ensure we don't
23969    // miss anything.
23970
23971
23972    var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type="radio"]');
23973
23974    for (var i = 0; i < group.length; i++) {
23975      var otherNode = group[i];
23976
23977      if (otherNode === rootNode || otherNode.form !== rootNode.form) {
23978        continue;
23979      } // This will throw if radio buttons rendered by different copies of React
23980      // and the same name are rendered into the same form (same as #1939).
23981      // That's probably okay; we don't support it just as we don't support
23982      // mixing React radio buttons with non-React ones.
23983
23984
23985      var otherProps = getFiberCurrentPropsFromNode$1(otherNode);
23986
23987      if (!otherProps) {
23988        {
23989          throw Error( "ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported." );
23990        }
23991      } // We need update the tracked value on the named cousin since the value
23992      // was changed but the input saw no event or value set
23993
23994
23995      updateValueIfChanged(otherNode); // If this is a controlled radio button group, forcing the input that
23996      // was previously checked to update will cause it to be come re-checked
23997      // as appropriate.
23998
23999      updateWrapper(otherNode, otherProps);
24000    }
24001  }
24002} // In Chrome, assigning defaultValue to certain input types triggers input validation.
24003// For number inputs, the display value loses trailing decimal points. For email inputs,
24004// Chrome raises "The specified value <x> is not a valid email address".
24005//
24006// Here we check to see if the defaultValue has actually changed, avoiding these problems
24007// when the user is inputting text
24008//
24009// https://github.com/facebook/react/issues/7253
24010
24011
24012function setDefaultValue(node, type, value) {
24013  if ( // Focused number inputs synchronize on blur. See ChangeEventPlugin.js
24014  type !== 'number' || node.ownerDocument.activeElement !== node) {
24015    if (value == null) {
24016      node.defaultValue = toString(node._wrapperState.initialValue);
24017    } else if (node.defaultValue !== toString(value)) {
24018      node.defaultValue = toString(value);
24019    }
24020  }
24021}
24022
24023var didWarnSelectedSetOnOption = false;
24024var didWarnInvalidChild = false;
24025
24026function flattenChildren(children) {
24027  var content = ''; // Flatten children. We'll warn if they are invalid
24028  // during validateProps() which runs for hydration too.
24029  // Note that this would throw on non-element objects.
24030  // Elements are stringified (which is normally irrelevant
24031  // but matters for <fbt>).
24032
24033  React.Children.forEach(children, function (child) {
24034    if (child == null) {
24035      return;
24036    }
24037
24038    content += child; // Note: we don't warn about invalid children here.
24039    // Instead, this is done separately below so that
24040    // it happens during the hydration codepath too.
24041  });
24042  return content;
24043}
24044/**
24045 * Implements an <option> host component that warns when `selected` is set.
24046 */
24047
24048
24049function validateProps(element, props) {
24050  {
24051    // This mirrors the codepath above, but runs for hydration too.
24052    // Warn about invalid children here so that client and hydration are consistent.
24053    // TODO: this seems like it could cause a DEV-only throw for hydration
24054    // if children contains a non-element object. We should try to avoid that.
24055    if (typeof props.children === 'object' && props.children !== null) {
24056      React.Children.forEach(props.children, function (child) {
24057        if (child == null) {
24058          return;
24059        }
24060
24061        if (typeof child === 'string' || typeof child === 'number') {
24062          return;
24063        }
24064
24065        if (typeof child.type !== 'string') {
24066          return;
24067        }
24068
24069        if (!didWarnInvalidChild) {
24070          didWarnInvalidChild = true;
24071
24072          error('Only strings and numbers are supported as <option> children.');
24073        }
24074      });
24075    } // TODO: Remove support for `selected` in <option>.
24076
24077
24078    if (props.selected != null && !didWarnSelectedSetOnOption) {
24079      error('Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.');
24080
24081      didWarnSelectedSetOnOption = true;
24082    }
24083  }
24084}
24085function postMountWrapper$1(element, props) {
24086  // value="" should make a value attribute (#6219)
24087  if (props.value != null) {
24088    element.setAttribute('value', toString(getToStringValue(props.value)));
24089  }
24090}
24091function getHostProps$1(element, props) {
24092  var hostProps = _assign({
24093    children: undefined
24094  }, props);
24095
24096  var content = flattenChildren(props.children);
24097
24098  if (content) {
24099    hostProps.children = content;
24100  }
24101
24102  return hostProps;
24103}
24104
24105var didWarnValueDefaultValue$1;
24106
24107{
24108  didWarnValueDefaultValue$1 = false;
24109}
24110
24111function getDeclarationErrorAddendum() {
24112  var ownerName = getCurrentFiberOwnerNameInDevOrNull();
24113
24114  if (ownerName) {
24115    return '\n\nCheck the render method of `' + ownerName + '`.';
24116  }
24117
24118  return '';
24119}
24120
24121var valuePropNames = ['value', 'defaultValue'];
24122/**
24123 * Validation function for `value` and `defaultValue`.
24124 */
24125
24126function checkSelectPropTypes(props) {
24127  {
24128    ReactControlledValuePropTypes.checkPropTypes('select', props);
24129
24130    for (var i = 0; i < valuePropNames.length; i++) {
24131      var propName = valuePropNames[i];
24132
24133      if (props[propName] == null) {
24134        continue;
24135      }
24136
24137      var isArray = Array.isArray(props[propName]);
24138
24139      if (props.multiple && !isArray) {
24140        error('The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum());
24141      } else if (!props.multiple && isArray) {
24142        error('The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum());
24143      }
24144    }
24145  }
24146}
24147
24148function updateOptions(node, multiple, propValue, setDefaultSelected) {
24149  var options = node.options;
24150
24151  if (multiple) {
24152    var selectedValues = propValue;
24153    var selectedValue = {};
24154
24155    for (var i = 0; i < selectedValues.length; i++) {
24156      // Prefix to avoid chaos with special keys.
24157      selectedValue['$' + selectedValues[i]] = true;
24158    }
24159
24160    for (var _i = 0; _i < options.length; _i++) {
24161      var selected = selectedValue.hasOwnProperty('$' + options[_i].value);
24162
24163      if (options[_i].selected !== selected) {
24164        options[_i].selected = selected;
24165      }
24166
24167      if (selected && setDefaultSelected) {
24168        options[_i].defaultSelected = true;
24169      }
24170    }
24171  } else {
24172    // Do not set `select.value` as exact behavior isn't consistent across all
24173    // browsers for all cases.
24174    var _selectedValue = toString(getToStringValue(propValue));
24175
24176    var defaultSelected = null;
24177
24178    for (var _i2 = 0; _i2 < options.length; _i2++) {
24179      if (options[_i2].value === _selectedValue) {
24180        options[_i2].selected = true;
24181
24182        if (setDefaultSelected) {
24183          options[_i2].defaultSelected = true;
24184        }
24185
24186        return;
24187      }
24188
24189      if (defaultSelected === null && !options[_i2].disabled) {
24190        defaultSelected = options[_i2];
24191      }
24192    }
24193
24194    if (defaultSelected !== null) {
24195      defaultSelected.selected = true;
24196    }
24197  }
24198}
24199/**
24200 * Implements a <select> host component that allows optionally setting the
24201 * props `value` and `defaultValue`. If `multiple` is false, the prop must be a
24202 * stringable. If `multiple` is true, the prop must be an array of stringables.
24203 *
24204 * If `value` is not supplied (or null/undefined), user actions that change the
24205 * selected option will trigger updates to the rendered options.
24206 *
24207 * If it is supplied (and not null/undefined), the rendered options will not
24208 * update in response to user actions. Instead, the `value` prop must change in
24209 * order for the rendered options to update.
24210 *
24211 * If `defaultValue` is provided, any options with the supplied values will be
24212 * selected.
24213 */
24214
24215
24216function getHostProps$2(element, props) {
24217  return _assign({}, props, {
24218    value: undefined
24219  });
24220}
24221function initWrapperState$1(element, props) {
24222  var node = element;
24223
24224  {
24225    checkSelectPropTypes(props);
24226  }
24227
24228  node._wrapperState = {
24229    wasMultiple: !!props.multiple
24230  };
24231
24232  {
24233    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue$1) {
24234      error('Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components');
24235
24236      didWarnValueDefaultValue$1 = true;
24237    }
24238  }
24239}
24240function postMountWrapper$2(element, props) {
24241  var node = element;
24242  node.multiple = !!props.multiple;
24243  var value = props.value;
24244
24245  if (value != null) {
24246    updateOptions(node, !!props.multiple, value, false);
24247  } else if (props.defaultValue != null) {
24248    updateOptions(node, !!props.multiple, props.defaultValue, true);
24249  }
24250}
24251function postUpdateWrapper(element, props) {
24252  var node = element;
24253  var wasMultiple = node._wrapperState.wasMultiple;
24254  node._wrapperState.wasMultiple = !!props.multiple;
24255  var value = props.value;
24256
24257  if (value != null) {
24258    updateOptions(node, !!props.multiple, value, false);
24259  } else if (wasMultiple !== !!props.multiple) {
24260    // For simplicity, reapply `defaultValue` if `multiple` is toggled.
24261    if (props.defaultValue != null) {
24262      updateOptions(node, !!props.multiple, props.defaultValue, true);
24263    } else {
24264      // Revert the select back to its default unselected state.
24265      updateOptions(node, !!props.multiple, props.multiple ? [] : '', false);
24266    }
24267  }
24268}
24269function restoreControlledState$1(element, props) {
24270  var node = element;
24271  var value = props.value;
24272
24273  if (value != null) {
24274    updateOptions(node, !!props.multiple, value, false);
24275  }
24276}
24277
24278var didWarnValDefaultVal = false;
24279
24280/**
24281 * Implements a <textarea> host component that allows setting `value`, and
24282 * `defaultValue`. This differs from the traditional DOM API because value is
24283 * usually set as PCDATA children.
24284 *
24285 * If `value` is not supplied (or null/undefined), user actions that affect the
24286 * value will trigger updates to the element.
24287 *
24288 * If `value` is supplied (and not null/undefined), the rendered element will
24289 * not trigger updates to the element. Instead, the `value` prop must change in
24290 * order for the rendered element to be updated.
24291 *
24292 * The rendered element will be initialized with an empty value, the prop
24293 * `defaultValue` if specified, or the children content (deprecated).
24294 */
24295function getHostProps$3(element, props) {
24296  var node = element;
24297
24298  if (!(props.dangerouslySetInnerHTML == null)) {
24299    {
24300      throw Error( "`dangerouslySetInnerHTML` does not make sense on <textarea>." );
24301    }
24302  } // Always set children to the same thing. In IE9, the selection range will
24303  // get reset if `textContent` is mutated.  We could add a check in setTextContent
24304  // to only set the value if/when the value differs from the node value (which would
24305  // completely solve this IE9 bug), but Sebastian+Sophie seemed to like this
24306  // solution. The value can be a boolean or object so that's why it's forced
24307  // to be a string.
24308
24309
24310  var hostProps = _assign({}, props, {
24311    value: undefined,
24312    defaultValue: undefined,
24313    children: toString(node._wrapperState.initialValue)
24314  });
24315
24316  return hostProps;
24317}
24318function initWrapperState$2(element, props) {
24319  var node = element;
24320
24321  {
24322    ReactControlledValuePropTypes.checkPropTypes('textarea', props);
24323
24324    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) {
24325      error('%s contains a textarea with both value and defaultValue props. ' + 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', getCurrentFiberOwnerNameInDevOrNull() || 'A component');
24326
24327      didWarnValDefaultVal = true;
24328    }
24329  }
24330
24331  var initialValue = props.value; // Only bother fetching default value if we're going to use it
24332
24333  if (initialValue == null) {
24334    var children = props.children,
24335        defaultValue = props.defaultValue;
24336
24337    if (children != null) {
24338      {
24339        error('Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.');
24340      }
24341
24342      {
24343        if (!(defaultValue == null)) {
24344          {
24345            throw Error( "If you supply `defaultValue` on a <textarea>, do not pass children." );
24346          }
24347        }
24348
24349        if (Array.isArray(children)) {
24350          if (!(children.length <= 1)) {
24351            {
24352              throw Error( "<textarea> can only have at most one child." );
24353            }
24354          }
24355
24356          children = children[0];
24357        }
24358
24359        defaultValue = children;
24360      }
24361    }
24362
24363    if (defaultValue == null) {
24364      defaultValue = '';
24365    }
24366
24367    initialValue = defaultValue;
24368  }
24369
24370  node._wrapperState = {
24371    initialValue: getToStringValue(initialValue)
24372  };
24373}
24374function updateWrapper$1(element, props) {
24375  var node = element;
24376  var value = getToStringValue(props.value);
24377  var defaultValue = getToStringValue(props.defaultValue);
24378
24379  if (value != null) {
24380    // Cast `value` to a string to ensure the value is set correctly. While
24381    // browsers typically do this as necessary, jsdom doesn't.
24382    var newValue = toString(value); // To avoid side effects (such as losing text selection), only set value if changed
24383
24384    if (newValue !== node.value) {
24385      node.value = newValue;
24386    }
24387
24388    if (props.defaultValue == null && node.defaultValue !== newValue) {
24389      node.defaultValue = newValue;
24390    }
24391  }
24392
24393  if (defaultValue != null) {
24394    node.defaultValue = toString(defaultValue);
24395  }
24396}
24397function postMountWrapper$3(element, props) {
24398  var node = element; // This is in postMount because we need access to the DOM node, which is not
24399  // available until after the component has mounted.
24400
24401  var textContent = node.textContent; // Only set node.value if textContent is equal to the expected
24402  // initial value. In IE10/IE11 there is a bug where the placeholder attribute
24403  // will populate textContent as well.
24404  // https://developer.microsoft.com/microsoft-edge/platform/issues/101525/
24405
24406  if (textContent === node._wrapperState.initialValue) {
24407    if (textContent !== '' && textContent !== null) {
24408      node.value = textContent;
24409    }
24410  }
24411}
24412function restoreControlledState$2(element, props) {
24413  // DOM component is still mounted; update
24414  updateWrapper$1(element, props);
24415}
24416
24417var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';
24418var MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';
24419var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';
24420var Namespaces = {
24421  html: HTML_NAMESPACE,
24422  mathml: MATH_NAMESPACE,
24423  svg: SVG_NAMESPACE
24424}; // Assumes there is no parent namespace.
24425
24426function getIntrinsicNamespace(type) {
24427  switch (type) {
24428    case 'svg':
24429      return SVG_NAMESPACE;
24430
24431    case 'math':
24432      return MATH_NAMESPACE;
24433
24434    default:
24435      return HTML_NAMESPACE;
24436  }
24437}
24438function getChildNamespace(parentNamespace, type) {
24439  if (parentNamespace == null || parentNamespace === HTML_NAMESPACE) {
24440    // No (or default) parent namespace: potential entry point.
24441    return getIntrinsicNamespace(type);
24442  }
24443
24444  if (parentNamespace === SVG_NAMESPACE && type === 'foreignObject') {
24445    // We're leaving SVG.
24446    return HTML_NAMESPACE;
24447  } // By default, pass namespace below.
24448
24449
24450  return parentNamespace;
24451}
24452
24453/* globals MSApp */
24454
24455/**
24456 * Create a function which has 'unsafe' privileges (required by windows8 apps)
24457 */
24458var createMicrosoftUnsafeLocalFunction = function (func) {
24459  if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {
24460    return function (arg0, arg1, arg2, arg3) {
24461      MSApp.execUnsafeLocalFunction(function () {
24462        return func(arg0, arg1, arg2, arg3);
24463      });
24464    };
24465  } else {
24466    return func;
24467  }
24468};
24469
24470var reusableSVGContainer;
24471/**
24472 * Set the innerHTML property of a node
24473 *
24474 * @param {DOMElement} node
24475 * @param {string} html
24476 * @internal
24477 */
24478
24479var setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) {
24480  if (node.namespaceURI === Namespaces.svg) {
24481
24482    if (!('innerHTML' in node)) {
24483      // IE does not have innerHTML for SVG nodes, so instead we inject the
24484      // new markup in a temp node and then move the child nodes across into
24485      // the target node
24486      reusableSVGContainer = reusableSVGContainer || document.createElement('div');
24487      reusableSVGContainer.innerHTML = '<svg>' + html.valueOf().toString() + '</svg>';
24488      var svgNode = reusableSVGContainer.firstChild;
24489
24490      while (node.firstChild) {
24491        node.removeChild(node.firstChild);
24492      }
24493
24494      while (svgNode.firstChild) {
24495        node.appendChild(svgNode.firstChild);
24496      }
24497
24498      return;
24499    }
24500  }
24501
24502  node.innerHTML = html;
24503});
24504
24505/**
24506 * HTML nodeType values that represent the type of the node
24507 */
24508var ELEMENT_NODE = 1;
24509var TEXT_NODE = 3;
24510var COMMENT_NODE = 8;
24511var DOCUMENT_NODE = 9;
24512var DOCUMENT_FRAGMENT_NODE = 11;
24513
24514/**
24515 * Set the textContent property of a node. For text updates, it's faster
24516 * to set the `nodeValue` of the Text node directly instead of using
24517 * `.textContent` which will remove the existing node and create a new one.
24518 *
24519 * @param {DOMElement} node
24520 * @param {string} text
24521 * @internal
24522 */
24523
24524var setTextContent = function (node, text) {
24525  if (text) {
24526    var firstChild = node.firstChild;
24527
24528    if (firstChild && firstChild === node.lastChild && firstChild.nodeType === TEXT_NODE) {
24529      firstChild.nodeValue = text;
24530      return;
24531    }
24532  }
24533
24534  node.textContent = text;
24535};
24536
24537// Do not use the below two methods directly!
24538// Instead use constants exported from DOMTopLevelEventTypes in ReactDOM.
24539// (It is the only module that is allowed to access these methods.)
24540function unsafeCastStringToDOMTopLevelType(topLevelType) {
24541  return topLevelType;
24542}
24543function unsafeCastDOMTopLevelTypeToString(topLevelType) {
24544  return topLevelType;
24545}
24546
24547/**
24548 * Generate a mapping of standard vendor prefixes using the defined style property and event name.
24549 *
24550 * @param {string} styleProp
24551 * @param {string} eventName
24552 * @returns {object}
24553 */
24554
24555function makePrefixMap(styleProp, eventName) {
24556  var prefixes = {};
24557  prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();
24558  prefixes['Webkit' + styleProp] = 'webkit' + eventName;
24559  prefixes['Moz' + styleProp] = 'moz' + eventName;
24560  return prefixes;
24561}
24562/**
24563 * A list of event names to a configurable list of vendor prefixes.
24564 */
24565
24566
24567var vendorPrefixes = {
24568  animationend: makePrefixMap('Animation', 'AnimationEnd'),
24569  animationiteration: makePrefixMap('Animation', 'AnimationIteration'),
24570  animationstart: makePrefixMap('Animation', 'AnimationStart'),
24571  transitionend: makePrefixMap('Transition', 'TransitionEnd')
24572};
24573/**
24574 * Event names that have already been detected and prefixed (if applicable).
24575 */
24576
24577var prefixedEventNames = {};
24578/**
24579 * Element to check for prefixes on.
24580 */
24581
24582var style = {};
24583/**
24584 * Bootstrap if a DOM exists.
24585 */
24586
24587if (canUseDOM) {
24588  style = document.createElement('div').style; // On some platforms, in particular some releases of Android 4.x,
24589  // the un-prefixed "animation" and "transition" properties are defined on the
24590  // style object but the events that fire will still be prefixed, so we need
24591  // to check if the un-prefixed events are usable, and if not remove them from the map.
24592
24593  if (!('AnimationEvent' in window)) {
24594    delete vendorPrefixes.animationend.animation;
24595    delete vendorPrefixes.animationiteration.animation;
24596    delete vendorPrefixes.animationstart.animation;
24597  } // Same as above
24598
24599
24600  if (!('TransitionEvent' in window)) {
24601    delete vendorPrefixes.transitionend.transition;
24602  }
24603}
24604/**
24605 * Attempts to determine the correct vendor prefixed event name.
24606 *
24607 * @param {string} eventName
24608 * @returns {string}
24609 */
24610
24611
24612function getVendorPrefixedEventName(eventName) {
24613  if (prefixedEventNames[eventName]) {
24614    return prefixedEventNames[eventName];
24615  } else if (!vendorPrefixes[eventName]) {
24616    return eventName;
24617  }
24618
24619  var prefixMap = vendorPrefixes[eventName];
24620
24621  for (var styleProp in prefixMap) {
24622    if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {
24623      return prefixedEventNames[eventName] = prefixMap[styleProp];
24624    }
24625  }
24626
24627  return eventName;
24628}
24629
24630/**
24631 * To identify top level events in ReactDOM, we use constants defined by this
24632 * module. This is the only module that uses the unsafe* methods to express
24633 * that the constants actually correspond to the browser event names. This lets
24634 * us save some bundle size by avoiding a top level type -> event name map.
24635 * The rest of ReactDOM code should import top level types from this file.
24636 */
24637
24638var TOP_ABORT = unsafeCastStringToDOMTopLevelType('abort');
24639var TOP_ANIMATION_END = unsafeCastStringToDOMTopLevelType(getVendorPrefixedEventName('animationend'));
24640var TOP_ANIMATION_ITERATION = unsafeCastStringToDOMTopLevelType(getVendorPrefixedEventName('animationiteration'));
24641var TOP_ANIMATION_START = unsafeCastStringToDOMTopLevelType(getVendorPrefixedEventName('animationstart'));
24642var TOP_BLUR = unsafeCastStringToDOMTopLevelType('blur');
24643var TOP_CAN_PLAY = unsafeCastStringToDOMTopLevelType('canplay');
24644var TOP_CAN_PLAY_THROUGH = unsafeCastStringToDOMTopLevelType('canplaythrough');
24645var TOP_CANCEL = unsafeCastStringToDOMTopLevelType('cancel');
24646var TOP_CHANGE = unsafeCastStringToDOMTopLevelType('change');
24647var TOP_CLICK = unsafeCastStringToDOMTopLevelType('click');
24648var TOP_CLOSE = unsafeCastStringToDOMTopLevelType('close');
24649var TOP_COMPOSITION_END = unsafeCastStringToDOMTopLevelType('compositionend');
24650var TOP_COMPOSITION_START = unsafeCastStringToDOMTopLevelType('compositionstart');
24651var TOP_COMPOSITION_UPDATE = unsafeCastStringToDOMTopLevelType('compositionupdate');
24652var TOP_CONTEXT_MENU = unsafeCastStringToDOMTopLevelType('contextmenu');
24653var TOP_COPY = unsafeCastStringToDOMTopLevelType('copy');
24654var TOP_CUT = unsafeCastStringToDOMTopLevelType('cut');
24655var TOP_DOUBLE_CLICK = unsafeCastStringToDOMTopLevelType('dblclick');
24656var TOP_AUX_CLICK = unsafeCastStringToDOMTopLevelType('auxclick');
24657var TOP_DRAG = unsafeCastStringToDOMTopLevelType('drag');
24658var TOP_DRAG_END = unsafeCastStringToDOMTopLevelType('dragend');
24659var TOP_DRAG_ENTER = unsafeCastStringToDOMTopLevelType('dragenter');
24660var TOP_DRAG_EXIT = unsafeCastStringToDOMTopLevelType('dragexit');
24661var TOP_DRAG_LEAVE = unsafeCastStringToDOMTopLevelType('dragleave');
24662var TOP_DRAG_OVER = unsafeCastStringToDOMTopLevelType('dragover');
24663var TOP_DRAG_START = unsafeCastStringToDOMTopLevelType('dragstart');
24664var TOP_DROP = unsafeCastStringToDOMTopLevelType('drop');
24665var TOP_DURATION_CHANGE = unsafeCastStringToDOMTopLevelType('durationchange');
24666var TOP_EMPTIED = unsafeCastStringToDOMTopLevelType('emptied');
24667var TOP_ENCRYPTED = unsafeCastStringToDOMTopLevelType('encrypted');
24668var TOP_ENDED = unsafeCastStringToDOMTopLevelType('ended');
24669var TOP_ERROR = unsafeCastStringToDOMTopLevelType('error');
24670var TOP_FOCUS = unsafeCastStringToDOMTopLevelType('focus');
24671var TOP_GOT_POINTER_CAPTURE = unsafeCastStringToDOMTopLevelType('gotpointercapture');
24672var TOP_INPUT = unsafeCastStringToDOMTopLevelType('input');
24673var TOP_INVALID = unsafeCastStringToDOMTopLevelType('invalid');
24674var TOP_KEY_DOWN = unsafeCastStringToDOMTopLevelType('keydown');
24675var TOP_KEY_PRESS = unsafeCastStringToDOMTopLevelType('keypress');
24676var TOP_KEY_UP = unsafeCastStringToDOMTopLevelType('keyup');
24677var TOP_LOAD = unsafeCastStringToDOMTopLevelType('load');
24678var TOP_LOAD_START = unsafeCastStringToDOMTopLevelType('loadstart');
24679var TOP_LOADED_DATA = unsafeCastStringToDOMTopLevelType('loadeddata');
24680var TOP_LOADED_METADATA = unsafeCastStringToDOMTopLevelType('loadedmetadata');
24681var TOP_LOST_POINTER_CAPTURE = unsafeCastStringToDOMTopLevelType('lostpointercapture');
24682var TOP_MOUSE_DOWN = unsafeCastStringToDOMTopLevelType('mousedown');
24683var TOP_MOUSE_MOVE = unsafeCastStringToDOMTopLevelType('mousemove');
24684var TOP_MOUSE_OUT = unsafeCastStringToDOMTopLevelType('mouseout');
24685var TOP_MOUSE_OVER = unsafeCastStringToDOMTopLevelType('mouseover');
24686var TOP_MOUSE_UP = unsafeCastStringToDOMTopLevelType('mouseup');
24687var TOP_PASTE = unsafeCastStringToDOMTopLevelType('paste');
24688var TOP_PAUSE = unsafeCastStringToDOMTopLevelType('pause');
24689var TOP_PLAY = unsafeCastStringToDOMTopLevelType('play');
24690var TOP_PLAYING = unsafeCastStringToDOMTopLevelType('playing');
24691var TOP_POINTER_CANCEL = unsafeCastStringToDOMTopLevelType('pointercancel');
24692var TOP_POINTER_DOWN = unsafeCastStringToDOMTopLevelType('pointerdown');
24693var TOP_POINTER_MOVE = unsafeCastStringToDOMTopLevelType('pointermove');
24694var TOP_POINTER_OUT = unsafeCastStringToDOMTopLevelType('pointerout');
24695var TOP_POINTER_OVER = unsafeCastStringToDOMTopLevelType('pointerover');
24696var TOP_POINTER_UP = unsafeCastStringToDOMTopLevelType('pointerup');
24697var TOP_PROGRESS = unsafeCastStringToDOMTopLevelType('progress');
24698var TOP_RATE_CHANGE = unsafeCastStringToDOMTopLevelType('ratechange');
24699var TOP_RESET = unsafeCastStringToDOMTopLevelType('reset');
24700var TOP_SCROLL = unsafeCastStringToDOMTopLevelType('scroll');
24701var TOP_SEEKED = unsafeCastStringToDOMTopLevelType('seeked');
24702var TOP_SEEKING = unsafeCastStringToDOMTopLevelType('seeking');
24703var TOP_SELECTION_CHANGE = unsafeCastStringToDOMTopLevelType('selectionchange');
24704var TOP_STALLED = unsafeCastStringToDOMTopLevelType('stalled');
24705var TOP_SUBMIT = unsafeCastStringToDOMTopLevelType('submit');
24706var TOP_SUSPEND = unsafeCastStringToDOMTopLevelType('suspend');
24707var TOP_TEXT_INPUT = unsafeCastStringToDOMTopLevelType('textInput');
24708var TOP_TIME_UPDATE = unsafeCastStringToDOMTopLevelType('timeupdate');
24709var TOP_TOGGLE = unsafeCastStringToDOMTopLevelType('toggle');
24710var TOP_TOUCH_CANCEL = unsafeCastStringToDOMTopLevelType('touchcancel');
24711var TOP_TOUCH_END = unsafeCastStringToDOMTopLevelType('touchend');
24712var TOP_TOUCH_MOVE = unsafeCastStringToDOMTopLevelType('touchmove');
24713var TOP_TOUCH_START = unsafeCastStringToDOMTopLevelType('touchstart');
24714var TOP_TRANSITION_END = unsafeCastStringToDOMTopLevelType(getVendorPrefixedEventName('transitionend'));
24715var TOP_VOLUME_CHANGE = unsafeCastStringToDOMTopLevelType('volumechange');
24716var TOP_WAITING = unsafeCastStringToDOMTopLevelType('waiting');
24717var TOP_WHEEL = unsafeCastStringToDOMTopLevelType('wheel'); // List of events that need to be individually attached to media elements.
24718// Note that events in this list will *not* be listened to at the top level
24719// unless they're explicitly whitelisted in `ReactBrowserEventEmitter.listenTo`.
24720
24721var mediaEventTypes = [TOP_ABORT, TOP_CAN_PLAY, TOP_CAN_PLAY_THROUGH, TOP_DURATION_CHANGE, TOP_EMPTIED, TOP_ENCRYPTED, TOP_ENDED, TOP_ERROR, TOP_LOADED_DATA, TOP_LOADED_METADATA, TOP_LOAD_START, TOP_PAUSE, TOP_PLAY, TOP_PLAYING, TOP_PROGRESS, TOP_RATE_CHANGE, TOP_SEEKED, TOP_SEEKING, TOP_STALLED, TOP_SUSPEND, TOP_TIME_UPDATE, TOP_VOLUME_CHANGE, TOP_WAITING];
24722function getRawEventName(topLevelType) {
24723  return unsafeCastDOMTopLevelTypeToString(topLevelType);
24724}
24725
24726var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map; // prettier-ignore
24727
24728var elementListenerMap = new PossiblyWeakMap();
24729function getListenerMapForElement(element) {
24730  var listenerMap = elementListenerMap.get(element);
24731
24732  if (listenerMap === undefined) {
24733    listenerMap = new Map();
24734    elementListenerMap.set(element, listenerMap);
24735  }
24736
24737  return listenerMap;
24738}
24739
24740/**
24741 * `ReactInstanceMap` maintains a mapping from a public facing stateful
24742 * instance (key) and the internal representation (value). This allows public
24743 * methods to accept the user facing instance as an argument and map them back
24744 * to internal methods.
24745 *
24746 * Note that this module is currently shared and assumed to be stateless.
24747 * If this becomes an actual Map, that will break.
24748 */
24749function get(key) {
24750  return key._reactInternalFiber;
24751}
24752function has(key) {
24753  return key._reactInternalFiber !== undefined;
24754}
24755function set(key, value) {
24756  key._reactInternalFiber = value;
24757}
24758
24759// Don't change these two values. They're used by React Dev Tools.
24760var NoEffect =
24761/*              */
247620;
24763var PerformedWork =
24764/*         */
247651; // You can change the rest (and add more).
24766
24767var Placement =
24768/*             */
247692;
24770var Update =
24771/*                */
247724;
24773var PlacementAndUpdate =
24774/*    */
247756;
24776var Deletion =
24777/*              */
247788;
24779var ContentReset =
24780/*          */
2478116;
24782var Callback =
24783/*              */
2478432;
24785var DidCapture =
24786/*            */
2478764;
24788var Ref =
24789/*                   */
24790128;
24791var Snapshot =
24792/*              */
24793256;
24794var Passive =
24795/*               */
24796512;
24797var Hydrating =
24798/*             */
247991024;
24800var HydratingAndUpdate =
24801/*    */
248021028; // Passive & Update & Callback & Ref & Snapshot
24803
24804var LifecycleEffectMask =
24805/*   */
24806932; // Union of all host effects
24807
24808var HostEffectMask =
24809/*        */
248102047;
24811var Incomplete =
24812/*            */
248132048;
24814var ShouldCapture =
24815/*         */
248164096;
24817
24818var ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;
24819function getNearestMountedFiber(fiber) {
24820  var node = fiber;
24821  var nearestMounted = fiber;
24822
24823  if (!fiber.alternate) {
24824    // If there is no alternate, this might be a new tree that isn't inserted
24825    // yet. If it is, then it will have a pending insertion effect on it.
24826    var nextNode = node;
24827
24828    do {
24829      node = nextNode;
24830
24831      if ((node.effectTag & (Placement | Hydrating)) !== NoEffect) {
24832        // This is an insertion or in-progress hydration. The nearest possible
24833        // mounted fiber is the parent but we need to continue to figure out
24834        // if that one is still mounted.
24835        nearestMounted = node.return;
24836      }
24837
24838      nextNode = node.return;
24839    } while (nextNode);
24840  } else {
24841    while (node.return) {
24842      node = node.return;
24843    }
24844  }
24845
24846  if (node.tag === HostRoot) {
24847    // TODO: Check if this was a nested HostRoot when used with
24848    // renderContainerIntoSubtree.
24849    return nearestMounted;
24850  } // If we didn't hit the root, that means that we're in an disconnected tree
24851  // that has been unmounted.
24852
24853
24854  return null;
24855}
24856function getSuspenseInstanceFromFiber(fiber) {
24857  if (fiber.tag === SuspenseComponent) {
24858    var suspenseState = fiber.memoizedState;
24859
24860    if (suspenseState === null) {
24861      var current = fiber.alternate;
24862
24863      if (current !== null) {
24864        suspenseState = current.memoizedState;
24865      }
24866    }
24867
24868    if (suspenseState !== null) {
24869      return suspenseState.dehydrated;
24870    }
24871  }
24872
24873  return null;
24874}
24875function getContainerFromFiber(fiber) {
24876  return fiber.tag === HostRoot ? fiber.stateNode.containerInfo : null;
24877}
24878function isFiberMounted(fiber) {
24879  return getNearestMountedFiber(fiber) === fiber;
24880}
24881function isMounted(component) {
24882  {
24883    var owner = ReactCurrentOwner.current;
24884
24885    if (owner !== null && owner.tag === ClassComponent) {
24886      var ownerFiber = owner;
24887      var instance = ownerFiber.stateNode;
24888
24889      if (!instance._warnedAboutRefsInRender) {
24890        error('%s is accessing isMounted inside its render() function. ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', getComponentName(ownerFiber.type) || 'A component');
24891      }
24892
24893      instance._warnedAboutRefsInRender = true;
24894    }
24895  }
24896
24897  var fiber = get(component);
24898
24899  if (!fiber) {
24900    return false;
24901  }
24902
24903  return getNearestMountedFiber(fiber) === fiber;
24904}
24905
24906function assertIsMounted(fiber) {
24907  if (!(getNearestMountedFiber(fiber) === fiber)) {
24908    {
24909      throw Error( "Unable to find node on an unmounted component." );
24910    }
24911  }
24912}
24913
24914function findCurrentFiberUsingSlowPath(fiber) {
24915  var alternate = fiber.alternate;
24916
24917  if (!alternate) {
24918    // If there is no alternate, then we only need to check if it is mounted.
24919    var nearestMounted = getNearestMountedFiber(fiber);
24920
24921    if (!(nearestMounted !== null)) {
24922      {
24923        throw Error( "Unable to find node on an unmounted component." );
24924      }
24925    }
24926
24927    if (nearestMounted !== fiber) {
24928      return null;
24929    }
24930
24931    return fiber;
24932  } // If we have two possible branches, we'll walk backwards up to the root
24933  // to see what path the root points to. On the way we may hit one of the
24934  // special cases and we'll deal with them.
24935
24936
24937  var a = fiber;
24938  var b = alternate;
24939
24940  while (true) {
24941    var parentA = a.return;
24942
24943    if (parentA === null) {
24944      // We're at the root.
24945      break;
24946    }
24947
24948    var parentB = parentA.alternate;
24949
24950    if (parentB === null) {
24951      // There is no alternate. This is an unusual case. Currently, it only
24952      // happens when a Suspense component is hidden. An extra fragment fiber
24953      // is inserted in between the Suspense fiber and its children. Skip
24954      // over this extra fragment fiber and proceed to the next parent.
24955      var nextParent = parentA.return;
24956
24957      if (nextParent !== null) {
24958        a = b = nextParent;
24959        continue;
24960      } // If there's no parent, we're at the root.
24961
24962
24963      break;
24964    } // If both copies of the parent fiber point to the same child, we can
24965    // assume that the child is current. This happens when we bailout on low
24966    // priority: the bailed out fiber's child reuses the current child.
24967
24968
24969    if (parentA.child === parentB.child) {
24970      var child = parentA.child;
24971
24972      while (child) {
24973        if (child === a) {
24974          // We've determined that A is the current branch.
24975          assertIsMounted(parentA);
24976          return fiber;
24977        }
24978
24979        if (child === b) {
24980          // We've determined that B is the current branch.
24981          assertIsMounted(parentA);
24982          return alternate;
24983        }
24984
24985        child = child.sibling;
24986      } // We should never have an alternate for any mounting node. So the only
24987      // way this could possibly happen is if this was unmounted, if at all.
24988
24989
24990      {
24991        {
24992          throw Error( "Unable to find node on an unmounted component." );
24993        }
24994      }
24995    }
24996
24997    if (a.return !== b.return) {
24998      // The return pointer of A and the return pointer of B point to different
24999      // fibers. We assume that return pointers never criss-cross, so A must
25000      // belong to the child set of A.return, and B must belong to the child
25001      // set of B.return.
25002      a = parentA;
25003      b = parentB;
25004    } else {
25005      // The return pointers point to the same fiber. We'll have to use the
25006      // default, slow path: scan the child sets of each parent alternate to see
25007      // which child belongs to which set.
25008      //
25009      // Search parent A's child set
25010      var didFindChild = false;
25011      var _child = parentA.child;
25012
25013      while (_child) {
25014        if (_child === a) {
25015          didFindChild = true;
25016          a = parentA;
25017          b = parentB;
25018          break;
25019        }
25020
25021        if (_child === b) {
25022          didFindChild = true;
25023          b = parentA;
25024          a = parentB;
25025          break;
25026        }
25027
25028        _child = _child.sibling;
25029      }
25030
25031      if (!didFindChild) {
25032        // Search parent B's child set
25033        _child = parentB.child;
25034
25035        while (_child) {
25036          if (_child === a) {
25037            didFindChild = true;
25038            a = parentB;
25039            b = parentA;
25040            break;
25041          }
25042
25043          if (_child === b) {
25044            didFindChild = true;
25045            b = parentB;
25046            a = parentA;
25047            break;
25048          }
25049
25050          _child = _child.sibling;
25051        }
25052
25053        if (!didFindChild) {
25054          {
25055            throw Error( "Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue." );
25056          }
25057        }
25058      }
25059    }
25060
25061    if (!(a.alternate === b)) {
25062      {
25063        throw Error( "Return fibers should always be each others' alternates. This error is likely caused by a bug in React. Please file an issue." );
25064      }
25065    }
25066  } // If the root is not a host container, we're in a disconnected tree. I.e.
25067  // unmounted.
25068
25069
25070  if (!(a.tag === HostRoot)) {
25071    {
25072      throw Error( "Unable to find node on an unmounted component." );
25073    }
25074  }
25075
25076  if (a.stateNode.current === a) {
25077    // We've determined that A is the current branch.
25078    return fiber;
25079  } // Otherwise B has to be current branch.
25080
25081
25082  return alternate;
25083}
25084function findCurrentHostFiber(parent) {
25085  var currentParent = findCurrentFiberUsingSlowPath(parent);
25086
25087  if (!currentParent) {
25088    return null;
25089  } // Next we'll drill down this component to find the first HostComponent/Text.
25090
25091
25092  var node = currentParent;
25093
25094  while (true) {
25095    if (node.tag === HostComponent || node.tag === HostText) {
25096      return node;
25097    } else if (node.child) {
25098      node.child.return = node;
25099      node = node.child;
25100      continue;
25101    }
25102
25103    if (node === currentParent) {
25104      return null;
25105    }
25106
25107    while (!node.sibling) {
25108      if (!node.return || node.return === currentParent) {
25109        return null;
25110      }
25111
25112      node = node.return;
25113    }
25114
25115    node.sibling.return = node.return;
25116    node = node.sibling;
25117  } // Flow needs the return null here, but ESLint complains about it.
25118  // eslint-disable-next-line no-unreachable
25119
25120
25121  return null;
25122}
25123function findCurrentHostFiberWithNoPortals(parent) {
25124  var currentParent = findCurrentFiberUsingSlowPath(parent);
25125
25126  if (!currentParent) {
25127    return null;
25128  } // Next we'll drill down this component to find the first HostComponent/Text.
25129
25130
25131  var node = currentParent;
25132
25133  while (true) {
25134    if (node.tag === HostComponent || node.tag === HostText || enableFundamentalAPI ) {
25135      return node;
25136    } else if (node.child && node.tag !== HostPortal) {
25137      node.child.return = node;
25138      node = node.child;
25139      continue;
25140    }
25141
25142    if (node === currentParent) {
25143      return null;
25144    }
25145
25146    while (!node.sibling) {
25147      if (!node.return || node.return === currentParent) {
25148        return null;
25149      }
25150
25151      node = node.return;
25152    }
25153
25154    node.sibling.return = node.return;
25155    node = node.sibling;
25156  } // Flow needs the return null here, but ESLint complains about it.
25157  // eslint-disable-next-line no-unreachable
25158
25159
25160  return null;
25161}
25162
25163/**
25164 * Accumulates items that must not be null or undefined into the first one. This
25165 * is used to conserve memory by avoiding array allocations, and thus sacrifices
25166 * API cleanness. Since `current` can be null before being passed in and not
25167 * null after this function, make sure to assign it back to `current`:
25168 *
25169 * `a = accumulateInto(a, b);`
25170 *
25171 * This API should be sparingly used. Try `accumulate` for something cleaner.
25172 *
25173 * @return {*|array<*>} An accumulation of items.
25174 */
25175
25176function accumulateInto(current, next) {
25177  if (!(next != null)) {
25178    {
25179      throw Error( "accumulateInto(...): Accumulated items must not be null or undefined." );
25180    }
25181  }
25182
25183  if (current == null) {
25184    return next;
25185  } // Both are not empty. Warning: Never call x.concat(y) when you are not
25186  // certain that x is an Array (x could be a string with concat method).
25187
25188
25189  if (Array.isArray(current)) {
25190    if (Array.isArray(next)) {
25191      current.push.apply(current, next);
25192      return current;
25193    }
25194
25195    current.push(next);
25196    return current;
25197  }
25198
25199  if (Array.isArray(next)) {
25200    // A bit too dangerous to mutate `next`.
25201    return [current].concat(next);
25202  }
25203
25204  return [current, next];
25205}
25206
25207/**
25208 * @param {array} arr an "accumulation" of items which is either an Array or
25209 * a single item. Useful when paired with the `accumulate` module. This is a
25210 * simple utility that allows us to reason about a collection of items, but
25211 * handling the case when there is exactly one item (and we do not need to
25212 * allocate an array).
25213 * @param {function} cb Callback invoked with each element or a collection.
25214 * @param {?} [scope] Scope used as `this` in a callback.
25215 */
25216function forEachAccumulated(arr, cb, scope) {
25217  if (Array.isArray(arr)) {
25218    arr.forEach(cb, scope);
25219  } else if (arr) {
25220    cb.call(scope, arr);
25221  }
25222}
25223
25224/**
25225 * Internal queue of events that have accumulated their dispatches and are
25226 * waiting to have their dispatches executed.
25227 */
25228
25229var eventQueue = null;
25230/**
25231 * Dispatches an event and releases it back into the pool, unless persistent.
25232 *
25233 * @param {?object} event Synthetic event to be dispatched.
25234 * @private
25235 */
25236
25237var executeDispatchesAndRelease = function (event) {
25238  if (event) {
25239    executeDispatchesInOrder(event);
25240
25241    if (!event.isPersistent()) {
25242      event.constructor.release(event);
25243    }
25244  }
25245};
25246
25247var executeDispatchesAndReleaseTopLevel = function (e) {
25248  return executeDispatchesAndRelease(e);
25249};
25250
25251function runEventsInBatch(events) {
25252  if (events !== null) {
25253    eventQueue = accumulateInto(eventQueue, events);
25254  } // Set `eventQueue` to null before processing it so that we can tell if more
25255  // events get enqueued while processing.
25256
25257
25258  var processingEventQueue = eventQueue;
25259  eventQueue = null;
25260
25261  if (!processingEventQueue) {
25262    return;
25263  }
25264
25265  forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel);
25266
25267  if (!!eventQueue) {
25268    {
25269      throw Error( "processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented." );
25270    }
25271  } // This would be a good time to rethrow if any of the event handlers threw.
25272
25273
25274  rethrowCaughtError();
25275}
25276
25277/**
25278 * Gets the target node from a native browser event by accounting for
25279 * inconsistencies in browser DOM APIs.
25280 *
25281 * @param {object} nativeEvent Native browser event.
25282 * @return {DOMEventTarget} Target node.
25283 */
25284
25285function getEventTarget(nativeEvent) {
25286  // Fallback to nativeEvent.srcElement for IE9
25287  // https://github.com/facebook/react/issues/12506
25288  var target = nativeEvent.target || nativeEvent.srcElement || window; // Normalize SVG <use> element events #4963
25289
25290  if (target.correspondingUseElement) {
25291    target = target.correspondingUseElement;
25292  } // Safari may fire events on text nodes (Node.TEXT_NODE is 3).
25293  // @see http://www.quirksmode.org/js/events_properties.html
25294
25295
25296  return target.nodeType === TEXT_NODE ? target.parentNode : target;
25297}
25298
25299/**
25300 * Checks if an event is supported in the current execution environment.
25301 *
25302 * NOTE: This will not work correctly for non-generic events such as `change`,
25303 * `reset`, `load`, `error`, and `select`.
25304 *
25305 * Borrows from Modernizr.
25306 *
25307 * @param {string} eventNameSuffix Event name, e.g. "click".
25308 * @return {boolean} True if the event is supported.
25309 * @internal
25310 * @license Modernizr 3.0.0pre (Custom Build) | MIT
25311 */
25312
25313function isEventSupported(eventNameSuffix) {
25314  if (!canUseDOM) {
25315    return false;
25316  }
25317
25318  var eventName = 'on' + eventNameSuffix;
25319  var isSupported = eventName in document;
25320
25321  if (!isSupported) {
25322    var element = document.createElement('div');
25323    element.setAttribute(eventName, 'return;');
25324    isSupported = typeof element[eventName] === 'function';
25325  }
25326
25327  return isSupported;
25328}
25329
25330/**
25331 * Summary of `DOMEventPluginSystem` event handling:
25332 *
25333 *  - Top-level delegation is used to trap most native browser events. This
25334 *    may only occur in the main thread and is the responsibility of
25335 *    ReactDOMEventListener, which is injected and can therefore support
25336 *    pluggable event sources. This is the only work that occurs in the main
25337 *    thread.
25338 *
25339 *  - We normalize and de-duplicate events to account for browser quirks. This
25340 *    may be done in the worker thread.
25341 *
25342 *  - Forward these native events (with the associated top-level type used to
25343 *    trap it) to `EventPluginRegistry`, which in turn will ask plugins if they want
25344 *    to extract any synthetic events.
25345 *
25346 *  - The `EventPluginRegistry` will then process each event by annotating them with
25347 *    "dispatches", a sequence of listeners and IDs that care about that event.
25348 *
25349 *  - The `EventPluginRegistry` then dispatches the events.
25350 *
25351 * Overview of React and the event system:
25352 *
25353 * +------------+    .
25354 * |    DOM     |    .
25355 * +------------+    .
25356 *       |           .
25357 *       v           .
25358 * +------------+    .
25359 * | ReactEvent |    .
25360 * |  Listener  |    .
25361 * +------------+    .                         +-----------+
25362 *       |           .               +--------+|SimpleEvent|
25363 *       |           .               |         |Plugin     |
25364 * +-----|------+    .               v         +-----------+
25365 * |     |      |    .    +--------------+                    +------------+
25366 * |     +-----------.--->|PluginRegistry|                    |    Event   |
25367 * |            |    .    |              |     +-----------+  | Propagators|
25368 * | ReactEvent |    .    |              |     |TapEvent   |  |------------|
25369 * |  Emitter   |    .    |              |<---+|Plugin     |  |other plugin|
25370 * |            |    .    |              |     +-----------+  |  utilities |
25371 * |     +-----------.--->|              |                    +------------+
25372 * |     |      |    .    +--------------+
25373 * +-----|------+    .                ^        +-----------+
25374 *       |           .                |        |Enter/Leave|
25375 *       +           .                +-------+|Plugin     |
25376 * +-------------+   .                         +-----------+
25377 * | application |   .
25378 * |-------------|   .
25379 * |             |   .
25380 * |             |   .
25381 * +-------------+   .
25382 *                   .
25383 *    React Core     .  General Purpose Event Plugin System
25384 */
25385
25386var CALLBACK_BOOKKEEPING_POOL_SIZE = 10;
25387var callbackBookkeepingPool = [];
25388
25389function releaseTopLevelCallbackBookKeeping(instance) {
25390  instance.topLevelType = null;
25391  instance.nativeEvent = null;
25392  instance.targetInst = null;
25393  instance.ancestors.length = 0;
25394
25395  if (callbackBookkeepingPool.length < CALLBACK_BOOKKEEPING_POOL_SIZE) {
25396    callbackBookkeepingPool.push(instance);
25397  }
25398} // Used to store ancestor hierarchy in top level callback
25399
25400
25401function getTopLevelCallbackBookKeeping(topLevelType, nativeEvent, targetInst, eventSystemFlags) {
25402  if (callbackBookkeepingPool.length) {
25403    var instance = callbackBookkeepingPool.pop();
25404    instance.topLevelType = topLevelType;
25405    instance.eventSystemFlags = eventSystemFlags;
25406    instance.nativeEvent = nativeEvent;
25407    instance.targetInst = targetInst;
25408    return instance;
25409  }
25410
25411  return {
25412    topLevelType: topLevelType,
25413    eventSystemFlags: eventSystemFlags,
25414    nativeEvent: nativeEvent,
25415    targetInst: targetInst,
25416    ancestors: []
25417  };
25418}
25419/**
25420 * Find the deepest React component completely containing the root of the
25421 * passed-in instance (for use when entire React trees are nested within each
25422 * other). If React trees are not nested, returns null.
25423 */
25424
25425
25426function findRootContainerNode(inst) {
25427  if (inst.tag === HostRoot) {
25428    return inst.stateNode.containerInfo;
25429  } // TODO: It may be a good idea to cache this to prevent unnecessary DOM
25430  // traversal, but caching is difficult to do correctly without using a
25431  // mutation observer to listen for all DOM changes.
25432
25433
25434  while (inst.return) {
25435    inst = inst.return;
25436  }
25437
25438  if (inst.tag !== HostRoot) {
25439    // This can happen if we're in a detached tree.
25440    return null;
25441  }
25442
25443  return inst.stateNode.containerInfo;
25444}
25445/**
25446 * Allows registered plugins an opportunity to extract events from top-level
25447 * native browser events.
25448 *
25449 * @return {*} An accumulation of synthetic events.
25450 * @internal
25451 */
25452
25453
25454function extractPluginEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags) {
25455  var events = null;
25456
25457  for (var i = 0; i < plugins.length; i++) {
25458    // Not every plugin in the ordering may be loaded at runtime.
25459    var possiblePlugin = plugins[i];
25460
25461    if (possiblePlugin) {
25462      var extractedEvents = possiblePlugin.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags);
25463
25464      if (extractedEvents) {
25465        events = accumulateInto(events, extractedEvents);
25466      }
25467    }
25468  }
25469
25470  return events;
25471}
25472
25473function runExtractedPluginEventsInBatch(topLevelType, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags) {
25474  var events = extractPluginEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags);
25475  runEventsInBatch(events);
25476}
25477
25478function handleTopLevel(bookKeeping) {
25479  var targetInst = bookKeeping.targetInst; // Loop through the hierarchy, in case there's any nested components.
25480  // It's important that we build the array of ancestors before calling any
25481  // event handlers, because event handlers can modify the DOM, leading to
25482  // inconsistencies with ReactMount's node cache. See #1105.
25483
25484  var ancestor = targetInst;
25485
25486  do {
25487    if (!ancestor) {
25488      var ancestors = bookKeeping.ancestors;
25489      ancestors.push(ancestor);
25490      break;
25491    }
25492
25493    var root = findRootContainerNode(ancestor);
25494
25495    if (!root) {
25496      break;
25497    }
25498
25499    var tag = ancestor.tag;
25500
25501    if (tag === HostComponent || tag === HostText) {
25502      bookKeeping.ancestors.push(ancestor);
25503    }
25504
25505    ancestor = getClosestInstanceFromNode(root);
25506  } while (ancestor);
25507
25508  for (var i = 0; i < bookKeeping.ancestors.length; i++) {
25509    targetInst = bookKeeping.ancestors[i];
25510    var eventTarget = getEventTarget(bookKeeping.nativeEvent);
25511    var topLevelType = bookKeeping.topLevelType;
25512    var nativeEvent = bookKeeping.nativeEvent;
25513    var eventSystemFlags = bookKeeping.eventSystemFlags; // If this is the first ancestor, we mark it on the system flags
25514
25515    if (i === 0) {
25516      eventSystemFlags |= IS_FIRST_ANCESTOR;
25517    }
25518
25519    runExtractedPluginEventsInBatch(topLevelType, targetInst, nativeEvent, eventTarget, eventSystemFlags);
25520  }
25521}
25522
25523function dispatchEventForLegacyPluginEventSystem(topLevelType, eventSystemFlags, nativeEvent, targetInst) {
25524  var bookKeeping = getTopLevelCallbackBookKeeping(topLevelType, nativeEvent, targetInst, eventSystemFlags);
25525
25526  try {
25527    // Event queue being processed in the same cycle allows
25528    // `preventDefault`.
25529    batchedEventUpdates(handleTopLevel, bookKeeping);
25530  } finally {
25531    releaseTopLevelCallbackBookKeeping(bookKeeping);
25532  }
25533}
25534/**
25535 * We listen for bubbled touch events on the document object.
25536 *
25537 * Firefox v8.01 (and possibly others) exhibited strange behavior when
25538 * mounting `onmousemove` events at some node that was not the document
25539 * element. The symptoms were that if your mouse is not moving over something
25540 * contained within that mount point (for example on the background) the
25541 * top-level listeners for `onmousemove` won't be called. However, if you
25542 * register the `mousemove` on the document object, then it will of course
25543 * catch all `mousemove`s. This along with iOS quirks, justifies restricting
25544 * top-level listeners to the document object only, at least for these
25545 * movement types of events and possibly all events.
25546 *
25547 * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html
25548 *
25549 * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but
25550 * they bubble to document.
25551 *
25552 * @param {string} registrationName Name of listener (e.g. `onClick`).
25553 * @param {object} mountAt Container where to mount the listener
25554 */
25555
25556function legacyListenToEvent(registrationName, mountAt) {
25557  var listenerMap = getListenerMapForElement(mountAt);
25558  var dependencies = registrationNameDependencies[registrationName];
25559
25560  for (var i = 0; i < dependencies.length; i++) {
25561    var dependency = dependencies[i];
25562    legacyListenToTopLevelEvent(dependency, mountAt, listenerMap);
25563  }
25564}
25565function legacyListenToTopLevelEvent(topLevelType, mountAt, listenerMap) {
25566  if (!listenerMap.has(topLevelType)) {
25567    switch (topLevelType) {
25568      case TOP_SCROLL:
25569        trapCapturedEvent(TOP_SCROLL, mountAt);
25570        break;
25571
25572      case TOP_FOCUS:
25573      case TOP_BLUR:
25574        trapCapturedEvent(TOP_FOCUS, mountAt);
25575        trapCapturedEvent(TOP_BLUR, mountAt); // We set the flag for a single dependency later in this function,
25576        // but this ensures we mark both as attached rather than just one.
25577
25578        listenerMap.set(TOP_BLUR, null);
25579        listenerMap.set(TOP_FOCUS, null);
25580        break;
25581
25582      case TOP_CANCEL:
25583      case TOP_CLOSE:
25584        if (isEventSupported(getRawEventName(topLevelType))) {
25585          trapCapturedEvent(topLevelType, mountAt);
25586        }
25587
25588        break;
25589
25590      case TOP_INVALID:
25591      case TOP_SUBMIT:
25592      case TOP_RESET:
25593        // We listen to them on the target DOM elements.
25594        // Some of them bubble so we don't want them to fire twice.
25595        break;
25596
25597      default:
25598        // By default, listen on the top level to all non-media events.
25599        // Media events don't bubble so adding the listener wouldn't do anything.
25600        var isMediaEvent = mediaEventTypes.indexOf(topLevelType) !== -1;
25601
25602        if (!isMediaEvent) {
25603          trapBubbledEvent(topLevelType, mountAt);
25604        }
25605
25606        break;
25607    }
25608
25609    listenerMap.set(topLevelType, null);
25610  }
25611}
25612function isListeningToAllDependencies(registrationName, mountAt) {
25613  var listenerMap = getListenerMapForElement(mountAt);
25614  var dependencies = registrationNameDependencies[registrationName];
25615
25616  for (var i = 0; i < dependencies.length; i++) {
25617    var dependency = dependencies[i];
25618
25619    if (!listenerMap.has(dependency)) {
25620      return false;
25621    }
25622  }
25623
25624  return true;
25625}
25626
25627var attemptUserBlockingHydration;
25628function setAttemptUserBlockingHydration(fn) {
25629  attemptUserBlockingHydration = fn;
25630}
25631var attemptContinuousHydration;
25632function setAttemptContinuousHydration(fn) {
25633  attemptContinuousHydration = fn;
25634}
25635var attemptHydrationAtCurrentPriority;
25636function setAttemptHydrationAtCurrentPriority(fn) {
25637  attemptHydrationAtCurrentPriority = fn;
25638} // TODO: Upgrade this definition once we're on a newer version of Flow that
25639var hasScheduledReplayAttempt = false; // The queue of discrete events to be replayed.
25640
25641var queuedDiscreteEvents = []; // Indicates if any continuous event targets are non-null for early bailout.
25642// if the last target was dehydrated.
25643
25644var queuedFocus = null;
25645var queuedDrag = null;
25646var queuedMouse = null; // For pointer events there can be one latest event per pointerId.
25647
25648var queuedPointers = new Map();
25649var queuedPointerCaptures = new Map(); // We could consider replaying selectionchange and touchmoves too.
25650
25651var queuedExplicitHydrationTargets = [];
25652function hasQueuedDiscreteEvents() {
25653  return queuedDiscreteEvents.length > 0;
25654}
25655var discreteReplayableEvents = [TOP_MOUSE_DOWN, TOP_MOUSE_UP, TOP_TOUCH_CANCEL, TOP_TOUCH_END, TOP_TOUCH_START, TOP_AUX_CLICK, TOP_DOUBLE_CLICK, TOP_POINTER_CANCEL, TOP_POINTER_DOWN, TOP_POINTER_UP, TOP_DRAG_END, TOP_DRAG_START, TOP_DROP, TOP_COMPOSITION_END, TOP_COMPOSITION_START, TOP_KEY_DOWN, TOP_KEY_PRESS, TOP_KEY_UP, TOP_INPUT, TOP_TEXT_INPUT, TOP_CLOSE, TOP_CANCEL, TOP_COPY, TOP_CUT, TOP_PASTE, TOP_CLICK, TOP_CHANGE, TOP_CONTEXT_MENU, TOP_RESET, TOP_SUBMIT];
25656var continuousReplayableEvents = [TOP_FOCUS, TOP_BLUR, TOP_DRAG_ENTER, TOP_DRAG_LEAVE, TOP_MOUSE_OVER, TOP_MOUSE_OUT, TOP_POINTER_OVER, TOP_POINTER_OUT, TOP_GOT_POINTER_CAPTURE, TOP_LOST_POINTER_CAPTURE];
25657function isReplayableDiscreteEvent(eventType) {
25658  return discreteReplayableEvents.indexOf(eventType) > -1;
25659}
25660
25661function trapReplayableEventForDocument(topLevelType, document, listenerMap) {
25662  legacyListenToTopLevelEvent(topLevelType, document, listenerMap);
25663}
25664
25665function eagerlyTrapReplayableEvents(container, document) {
25666  var listenerMapForDoc = getListenerMapForElement(document); // Discrete
25667
25668  discreteReplayableEvents.forEach(function (topLevelType) {
25669    trapReplayableEventForDocument(topLevelType, document, listenerMapForDoc);
25670  }); // Continuous
25671
25672  continuousReplayableEvents.forEach(function (topLevelType) {
25673    trapReplayableEventForDocument(topLevelType, document, listenerMapForDoc);
25674  });
25675}
25676
25677function createQueuedReplayableEvent(blockedOn, topLevelType, eventSystemFlags, container, nativeEvent) {
25678  return {
25679    blockedOn: blockedOn,
25680    topLevelType: topLevelType,
25681    eventSystemFlags: eventSystemFlags | IS_REPLAYED,
25682    nativeEvent: nativeEvent,
25683    container: container
25684  };
25685}
25686
25687function queueDiscreteEvent(blockedOn, topLevelType, eventSystemFlags, container, nativeEvent) {
25688  var queuedEvent = createQueuedReplayableEvent(blockedOn, topLevelType, eventSystemFlags, container, nativeEvent);
25689  queuedDiscreteEvents.push(queuedEvent);
25690} // Resets the replaying for this type of continuous event to no event.
25691
25692function clearIfContinuousEvent(topLevelType, nativeEvent) {
25693  switch (topLevelType) {
25694    case TOP_FOCUS:
25695    case TOP_BLUR:
25696      queuedFocus = null;
25697      break;
25698
25699    case TOP_DRAG_ENTER:
25700    case TOP_DRAG_LEAVE:
25701      queuedDrag = null;
25702      break;
25703
25704    case TOP_MOUSE_OVER:
25705    case TOP_MOUSE_OUT:
25706      queuedMouse = null;
25707      break;
25708
25709    case TOP_POINTER_OVER:
25710    case TOP_POINTER_OUT:
25711      {
25712        var pointerId = nativeEvent.pointerId;
25713        queuedPointers.delete(pointerId);
25714        break;
25715      }
25716
25717    case TOP_GOT_POINTER_CAPTURE:
25718    case TOP_LOST_POINTER_CAPTURE:
25719      {
25720        var _pointerId = nativeEvent.pointerId;
25721        queuedPointerCaptures.delete(_pointerId);
25722        break;
25723      }
25724  }
25725}
25726
25727function accumulateOrCreateContinuousQueuedReplayableEvent(existingQueuedEvent, blockedOn, topLevelType, eventSystemFlags, container, nativeEvent) {
25728  if (existingQueuedEvent === null || existingQueuedEvent.nativeEvent !== nativeEvent) {
25729    var queuedEvent = createQueuedReplayableEvent(blockedOn, topLevelType, eventSystemFlags, container, nativeEvent);
25730
25731    if (blockedOn !== null) {
25732      var _fiber2 = getInstanceFromNode$1(blockedOn);
25733
25734      if (_fiber2 !== null) {
25735        // Attempt to increase the priority of this target.
25736        attemptContinuousHydration(_fiber2);
25737      }
25738    }
25739
25740    return queuedEvent;
25741  } // If we have already queued this exact event, then it's because
25742  // the different event systems have different DOM event listeners.
25743  // We can accumulate the flags and store a single event to be
25744  // replayed.
25745
25746
25747  existingQueuedEvent.eventSystemFlags |= eventSystemFlags;
25748  return existingQueuedEvent;
25749}
25750
25751function queueIfContinuousEvent(blockedOn, topLevelType, eventSystemFlags, container, nativeEvent) {
25752  // These set relatedTarget to null because the replayed event will be treated as if we
25753  // moved from outside the window (no target) onto the target once it hydrates.
25754  // Instead of mutating we could clone the event.
25755  switch (topLevelType) {
25756    case TOP_FOCUS:
25757      {
25758        var focusEvent = nativeEvent;
25759        queuedFocus = accumulateOrCreateContinuousQueuedReplayableEvent(queuedFocus, blockedOn, topLevelType, eventSystemFlags, container, focusEvent);
25760        return true;
25761      }
25762
25763    case TOP_DRAG_ENTER:
25764      {
25765        var dragEvent = nativeEvent;
25766        queuedDrag = accumulateOrCreateContinuousQueuedReplayableEvent(queuedDrag, blockedOn, topLevelType, eventSystemFlags, container, dragEvent);
25767        return true;
25768      }
25769
25770    case TOP_MOUSE_OVER:
25771      {
25772        var mouseEvent = nativeEvent;
25773        queuedMouse = accumulateOrCreateContinuousQueuedReplayableEvent(queuedMouse, blockedOn, topLevelType, eventSystemFlags, container, mouseEvent);
25774        return true;
25775      }
25776
25777    case TOP_POINTER_OVER:
25778      {
25779        var pointerEvent = nativeEvent;
25780        var pointerId = pointerEvent.pointerId;
25781        queuedPointers.set(pointerId, accumulateOrCreateContinuousQueuedReplayableEvent(queuedPointers.get(pointerId) || null, blockedOn, topLevelType, eventSystemFlags, container, pointerEvent));
25782        return true;
25783      }
25784
25785    case TOP_GOT_POINTER_CAPTURE:
25786      {
25787        var _pointerEvent = nativeEvent;
25788        var _pointerId2 = _pointerEvent.pointerId;
25789        queuedPointerCaptures.set(_pointerId2, accumulateOrCreateContinuousQueuedReplayableEvent(queuedPointerCaptures.get(_pointerId2) || null, blockedOn, topLevelType, eventSystemFlags, container, _pointerEvent));
25790        return true;
25791      }
25792  }
25793
25794  return false;
25795} // Check if this target is unblocked. Returns true if it's unblocked.
25796
25797function attemptExplicitHydrationTarget(queuedTarget) {
25798  // TODO: This function shares a lot of logic with attemptToDispatchEvent.
25799  // Try to unify them. It's a bit tricky since it would require two return
25800  // values.
25801  var targetInst = getClosestInstanceFromNode(queuedTarget.target);
25802
25803  if (targetInst !== null) {
25804    var nearestMounted = getNearestMountedFiber(targetInst);
25805
25806    if (nearestMounted !== null) {
25807      var tag = nearestMounted.tag;
25808
25809      if (tag === SuspenseComponent) {
25810        var instance = getSuspenseInstanceFromFiber(nearestMounted);
25811
25812        if (instance !== null) {
25813          // We're blocked on hydrating this boundary.
25814          // Increase its priority.
25815          queuedTarget.blockedOn = instance;
25816          Scheduler.unstable_runWithPriority(queuedTarget.priority, function () {
25817            attemptHydrationAtCurrentPriority(nearestMounted);
25818          });
25819          return;
25820        }
25821      } else if (tag === HostRoot) {
25822        var root = nearestMounted.stateNode;
25823
25824        if (root.hydrate) {
25825          queuedTarget.blockedOn = getContainerFromFiber(nearestMounted); // We don't currently have a way to increase the priority of
25826          // a root other than sync.
25827
25828          return;
25829        }
25830      }
25831    }
25832  }
25833
25834  queuedTarget.blockedOn = null;
25835}
25836
25837function attemptReplayContinuousQueuedEvent(queuedEvent) {
25838  if (queuedEvent.blockedOn !== null) {
25839    return false;
25840  }
25841
25842  var nextBlockedOn = attemptToDispatchEvent(queuedEvent.topLevelType, queuedEvent.eventSystemFlags, queuedEvent.container, queuedEvent.nativeEvent);
25843
25844  if (nextBlockedOn !== null) {
25845    // We're still blocked. Try again later.
25846    var _fiber3 = getInstanceFromNode$1(nextBlockedOn);
25847
25848    if (_fiber3 !== null) {
25849      attemptContinuousHydration(_fiber3);
25850    }
25851
25852    queuedEvent.blockedOn = nextBlockedOn;
25853    return false;
25854  }
25855
25856  return true;
25857}
25858
25859function attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) {
25860  if (attemptReplayContinuousQueuedEvent(queuedEvent)) {
25861    map.delete(key);
25862  }
25863}
25864
25865function replayUnblockedEvents() {
25866  hasScheduledReplayAttempt = false; // First replay discrete events.
25867
25868  while (queuedDiscreteEvents.length > 0) {
25869    var nextDiscreteEvent = queuedDiscreteEvents[0];
25870
25871    if (nextDiscreteEvent.blockedOn !== null) {
25872      // We're still blocked.
25873      // Increase the priority of this boundary to unblock
25874      // the next discrete event.
25875      var _fiber4 = getInstanceFromNode$1(nextDiscreteEvent.blockedOn);
25876
25877      if (_fiber4 !== null) {
25878        attemptUserBlockingHydration(_fiber4);
25879      }
25880
25881      break;
25882    }
25883
25884    var nextBlockedOn = attemptToDispatchEvent(nextDiscreteEvent.topLevelType, nextDiscreteEvent.eventSystemFlags, nextDiscreteEvent.container, nextDiscreteEvent.nativeEvent);
25885
25886    if (nextBlockedOn !== null) {
25887      // We're still blocked. Try again later.
25888      nextDiscreteEvent.blockedOn = nextBlockedOn;
25889    } else {
25890      // We've successfully replayed the first event. Let's try the next one.
25891      queuedDiscreteEvents.shift();
25892    }
25893  } // Next replay any continuous events.
25894
25895
25896  if (queuedFocus !== null && attemptReplayContinuousQueuedEvent(queuedFocus)) {
25897    queuedFocus = null;
25898  }
25899
25900  if (queuedDrag !== null && attemptReplayContinuousQueuedEvent(queuedDrag)) {
25901    queuedDrag = null;
25902  }
25903
25904  if (queuedMouse !== null && attemptReplayContinuousQueuedEvent(queuedMouse)) {
25905    queuedMouse = null;
25906  }
25907
25908  queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);
25909  queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);
25910}
25911
25912function scheduleCallbackIfUnblocked(queuedEvent, unblocked) {
25913  if (queuedEvent.blockedOn === unblocked) {
25914    queuedEvent.blockedOn = null;
25915
25916    if (!hasScheduledReplayAttempt) {
25917      hasScheduledReplayAttempt = true; // Schedule a callback to attempt replaying as many events as are
25918      // now unblocked. This first might not actually be unblocked yet.
25919      // We could check it early to avoid scheduling an unnecessary callback.
25920
25921      Scheduler.unstable_scheduleCallback(Scheduler.unstable_NormalPriority, replayUnblockedEvents);
25922    }
25923  }
25924}
25925
25926function retryIfBlockedOn(unblocked) {
25927  // Mark anything that was blocked on this as no longer blocked
25928  // and eligible for a replay.
25929  if (queuedDiscreteEvents.length > 0) {
25930    scheduleCallbackIfUnblocked(queuedDiscreteEvents[0], unblocked); // This is a exponential search for each boundary that commits. I think it's
25931    // worth it because we expect very few discrete events to queue up and once
25932    // we are actually fully unblocked it will be fast to replay them.
25933
25934    for (var i = 1; i < queuedDiscreteEvents.length; i++) {
25935      var queuedEvent = queuedDiscreteEvents[i];
25936
25937      if (queuedEvent.blockedOn === unblocked) {
25938        queuedEvent.blockedOn = null;
25939      }
25940    }
25941  }
25942
25943  if (queuedFocus !== null) {
25944    scheduleCallbackIfUnblocked(queuedFocus, unblocked);
25945  }
25946
25947  if (queuedDrag !== null) {
25948    scheduleCallbackIfUnblocked(queuedDrag, unblocked);
25949  }
25950
25951  if (queuedMouse !== null) {
25952    scheduleCallbackIfUnblocked(queuedMouse, unblocked);
25953  }
25954
25955  var unblock = function (queuedEvent) {
25956    return scheduleCallbackIfUnblocked(queuedEvent, unblocked);
25957  };
25958
25959  queuedPointers.forEach(unblock);
25960  queuedPointerCaptures.forEach(unblock);
25961
25962  for (var _i = 0; _i < queuedExplicitHydrationTargets.length; _i++) {
25963    var queuedTarget = queuedExplicitHydrationTargets[_i];
25964
25965    if (queuedTarget.blockedOn === unblocked) {
25966      queuedTarget.blockedOn = null;
25967    }
25968  }
25969
25970  while (queuedExplicitHydrationTargets.length > 0) {
25971    var nextExplicitTarget = queuedExplicitHydrationTargets[0];
25972
25973    if (nextExplicitTarget.blockedOn !== null) {
25974      // We're still blocked.
25975      break;
25976    } else {
25977      attemptExplicitHydrationTarget(nextExplicitTarget);
25978
25979      if (nextExplicitTarget.blockedOn === null) {
25980        // We're unblocked.
25981        queuedExplicitHydrationTargets.shift();
25982      }
25983    }
25984  }
25985}
25986
25987function addEventBubbleListener(element, eventType, listener) {
25988  element.addEventListener(eventType, listener, false);
25989}
25990function addEventCaptureListener(element, eventType, listener) {
25991  element.addEventListener(eventType, listener, true);
25992}
25993
25994// do it in two places, which duplicates logic
25995// and increases the bundle size, we do it all
25996// here once. If we remove or refactor the
25997// SimpleEventPlugin, we should also remove or
25998// update the below line.
25999
26000var simpleEventPluginEventTypes = {};
26001var topLevelEventsToDispatchConfig = new Map();
26002var eventPriorities = new Map(); // We store most of the events in this module in pairs of two strings so we can re-use
26003// the code required to apply the same logic for event prioritization and that of the
26004// SimpleEventPlugin. This complicates things slightly, but the aim is to reduce code
26005// duplication (for which there would be quite a bit). For the events that are not needed
26006// for the SimpleEventPlugin (otherDiscreteEvents) we process them separately as an
26007// array of top level events.
26008// Lastly, we ignore prettier so we can keep the formatting sane.
26009// prettier-ignore
26010
26011var discreteEventPairsForSimpleEventPlugin = [TOP_BLUR, 'blur', TOP_CANCEL, 'cancel', TOP_CLICK, 'click', TOP_CLOSE, 'close', TOP_CONTEXT_MENU, 'contextMenu', TOP_COPY, 'copy', TOP_CUT, 'cut', TOP_AUX_CLICK, 'auxClick', TOP_DOUBLE_CLICK, 'doubleClick', TOP_DRAG_END, 'dragEnd', TOP_DRAG_START, 'dragStart', TOP_DROP, 'drop', TOP_FOCUS, 'focus', TOP_INPUT, 'input', TOP_INVALID, 'invalid', TOP_KEY_DOWN, 'keyDown', TOP_KEY_PRESS, 'keyPress', TOP_KEY_UP, 'keyUp', TOP_MOUSE_DOWN, 'mouseDown', TOP_MOUSE_UP, 'mouseUp', TOP_PASTE, 'paste', TOP_PAUSE, 'pause', TOP_PLAY, 'play', TOP_POINTER_CANCEL, 'pointerCancel', TOP_POINTER_DOWN, 'pointerDown', TOP_POINTER_UP, 'pointerUp', TOP_RATE_CHANGE, 'rateChange', TOP_RESET, 'reset', TOP_SEEKED, 'seeked', TOP_SUBMIT, 'submit', TOP_TOUCH_CANCEL, 'touchCancel', TOP_TOUCH_END, 'touchEnd', TOP_TOUCH_START, 'touchStart', TOP_VOLUME_CHANGE, 'volumeChange'];
26012var otherDiscreteEvents = [TOP_CHANGE, TOP_SELECTION_CHANGE, TOP_TEXT_INPUT, TOP_COMPOSITION_START, TOP_COMPOSITION_END, TOP_COMPOSITION_UPDATE]; // prettier-ignore
26013
26014var userBlockingPairsForSimpleEventPlugin = [TOP_DRAG, 'drag', TOP_DRAG_ENTER, 'dragEnter', TOP_DRAG_EXIT, 'dragExit', TOP_DRAG_LEAVE, 'dragLeave', TOP_DRAG_OVER, 'dragOver', TOP_MOUSE_MOVE, 'mouseMove', TOP_MOUSE_OUT, 'mouseOut', TOP_MOUSE_OVER, 'mouseOver', TOP_POINTER_MOVE, 'pointerMove', TOP_POINTER_OUT, 'pointerOut', TOP_POINTER_OVER, 'pointerOver', TOP_SCROLL, 'scroll', TOP_TOGGLE, 'toggle', TOP_TOUCH_MOVE, 'touchMove', TOP_WHEEL, 'wheel']; // prettier-ignore
26015
26016var continuousPairsForSimpleEventPlugin = [TOP_ABORT, 'abort', TOP_ANIMATION_END, 'animationEnd', TOP_ANIMATION_ITERATION, 'animationIteration', TOP_ANIMATION_START, 'animationStart', TOP_CAN_PLAY, 'canPlay', TOP_CAN_PLAY_THROUGH, 'canPlayThrough', TOP_DURATION_CHANGE, 'durationChange', TOP_EMPTIED, 'emptied', TOP_ENCRYPTED, 'encrypted', TOP_ENDED, 'ended', TOP_ERROR, 'error', TOP_GOT_POINTER_CAPTURE, 'gotPointerCapture', TOP_LOAD, 'load', TOP_LOADED_DATA, 'loadedData', TOP_LOADED_METADATA, 'loadedMetadata', TOP_LOAD_START, 'loadStart', TOP_LOST_POINTER_CAPTURE, 'lostPointerCapture', TOP_PLAYING, 'playing', TOP_PROGRESS, 'progress', TOP_SEEKING, 'seeking', TOP_STALLED, 'stalled', TOP_SUSPEND, 'suspend', TOP_TIME_UPDATE, 'timeUpdate', TOP_TRANSITION_END, 'transitionEnd', TOP_WAITING, 'waiting'];
26017/**
26018 * Turns
26019 * ['abort', ...]
26020 * into
26021 * eventTypes = {
26022 *   'abort': {
26023 *     phasedRegistrationNames: {
26024 *       bubbled: 'onAbort',
26025 *       captured: 'onAbortCapture',
26026 *     },
26027 *     dependencies: [TOP_ABORT],
26028 *   },
26029 *   ...
26030 * };
26031 * topLevelEventsToDispatchConfig = new Map([
26032 *   [TOP_ABORT, { sameConfig }],
26033 * ]);
26034 */
26035
26036function processSimpleEventPluginPairsByPriority(eventTypes, priority) {
26037  // As the event types are in pairs of two, we need to iterate
26038  // through in twos. The events are in pairs of two to save code
26039  // and improve init perf of processing this array, as it will
26040  // result in far fewer object allocations and property accesses
26041  // if we only use three arrays to process all the categories of
26042  // instead of tuples.
26043  for (var i = 0; i < eventTypes.length; i += 2) {
26044    var topEvent = eventTypes[i];
26045    var event = eventTypes[i + 1];
26046    var capitalizedEvent = event[0].toUpperCase() + event.slice(1);
26047    var onEvent = 'on' + capitalizedEvent;
26048    var config = {
26049      phasedRegistrationNames: {
26050        bubbled: onEvent,
26051        captured: onEvent + 'Capture'
26052      },
26053      dependencies: [topEvent],
26054      eventPriority: priority
26055    };
26056    eventPriorities.set(topEvent, priority);
26057    topLevelEventsToDispatchConfig.set(topEvent, config);
26058    simpleEventPluginEventTypes[event] = config;
26059  }
26060}
26061
26062function processTopEventPairsByPriority(eventTypes, priority) {
26063  for (var i = 0; i < eventTypes.length; i++) {
26064    eventPriorities.set(eventTypes[i], priority);
26065  }
26066} // SimpleEventPlugin
26067
26068
26069processSimpleEventPluginPairsByPriority(discreteEventPairsForSimpleEventPlugin, DiscreteEvent);
26070processSimpleEventPluginPairsByPriority(userBlockingPairsForSimpleEventPlugin, UserBlockingEvent);
26071processSimpleEventPluginPairsByPriority(continuousPairsForSimpleEventPlugin, ContinuousEvent); // Not used by SimpleEventPlugin
26072
26073processTopEventPairsByPriority(otherDiscreteEvents, DiscreteEvent);
26074function getEventPriorityForPluginSystem(topLevelType) {
26075  var priority = eventPriorities.get(topLevelType); // Default to a ContinuousEvent. Note: we might
26076  // want to warn if we can't detect the priority
26077  // for the event.
26078
26079  return priority === undefined ? ContinuousEvent : priority;
26080}
26081
26082// Intentionally not named imports because Rollup would use dynamic dispatch for
26083var UserBlockingPriority = Scheduler.unstable_UserBlockingPriority,
26084    runWithPriority = Scheduler.unstable_runWithPriority; // TODO: can we stop exporting these?
26085
26086var _enabled = true;
26087function setEnabled(enabled) {
26088  _enabled = !!enabled;
26089}
26090function isEnabled() {
26091  return _enabled;
26092}
26093function trapBubbledEvent(topLevelType, element) {
26094  trapEventForPluginEventSystem(element, topLevelType, false);
26095}
26096function trapCapturedEvent(topLevelType, element) {
26097  trapEventForPluginEventSystem(element, topLevelType, true);
26098}
26099
26100function trapEventForPluginEventSystem(container, topLevelType, capture) {
26101  var listener;
26102
26103  switch (getEventPriorityForPluginSystem(topLevelType)) {
26104    case DiscreteEvent:
26105      listener = dispatchDiscreteEvent.bind(null, topLevelType, PLUGIN_EVENT_SYSTEM, container);
26106      break;
26107
26108    case UserBlockingEvent:
26109      listener = dispatchUserBlockingUpdate.bind(null, topLevelType, PLUGIN_EVENT_SYSTEM, container);
26110      break;
26111
26112    case ContinuousEvent:
26113    default:
26114      listener = dispatchEvent.bind(null, topLevelType, PLUGIN_EVENT_SYSTEM, container);
26115      break;
26116  }
26117
26118  var rawEventName = getRawEventName(topLevelType);
26119
26120  if (capture) {
26121    addEventCaptureListener(container, rawEventName, listener);
26122  } else {
26123    addEventBubbleListener(container, rawEventName, listener);
26124  }
26125}
26126
26127function dispatchDiscreteEvent(topLevelType, eventSystemFlags, container, nativeEvent) {
26128  flushDiscreteUpdatesIfNeeded(nativeEvent.timeStamp);
26129  discreteUpdates(dispatchEvent, topLevelType, eventSystemFlags, container, nativeEvent);
26130}
26131
26132function dispatchUserBlockingUpdate(topLevelType, eventSystemFlags, container, nativeEvent) {
26133  runWithPriority(UserBlockingPriority, dispatchEvent.bind(null, topLevelType, eventSystemFlags, container, nativeEvent));
26134}
26135
26136function dispatchEvent(topLevelType, eventSystemFlags, container, nativeEvent) {
26137  if (!_enabled) {
26138    return;
26139  }
26140
26141  if (hasQueuedDiscreteEvents() && isReplayableDiscreteEvent(topLevelType)) {
26142    // If we already have a queue of discrete events, and this is another discrete
26143    // event, then we can't dispatch it regardless of its target, since they
26144    // need to dispatch in order.
26145    queueDiscreteEvent(null, // Flags that we're not actually blocked on anything as far as we know.
26146    topLevelType, eventSystemFlags, container, nativeEvent);
26147    return;
26148  }
26149
26150  var blockedOn = attemptToDispatchEvent(topLevelType, eventSystemFlags, container, nativeEvent);
26151
26152  if (blockedOn === null) {
26153    // We successfully dispatched this event.
26154    clearIfContinuousEvent(topLevelType, nativeEvent);
26155    return;
26156  }
26157
26158  if (isReplayableDiscreteEvent(topLevelType)) {
26159    // This this to be replayed later once the target is available.
26160    queueDiscreteEvent(blockedOn, topLevelType, eventSystemFlags, container, nativeEvent);
26161    return;
26162  }
26163
26164  if (queueIfContinuousEvent(blockedOn, topLevelType, eventSystemFlags, container, nativeEvent)) {
26165    return;
26166  } // We need to clear only if we didn't queue because
26167  // queueing is accummulative.
26168
26169
26170  clearIfContinuousEvent(topLevelType, nativeEvent); // This is not replayable so we'll invoke it but without a target,
26171  // in case the event system needs to trace it.
26172
26173  {
26174    dispatchEventForLegacyPluginEventSystem(topLevelType, eventSystemFlags, nativeEvent, null);
26175  }
26176} // Attempt dispatching an event. Returns a SuspenseInstance or Container if it's blocked.
26177
26178function attemptToDispatchEvent(topLevelType, eventSystemFlags, container, nativeEvent) {
26179  // TODO: Warn if _enabled is false.
26180  var nativeEventTarget = getEventTarget(nativeEvent);
26181  var targetInst = getClosestInstanceFromNode(nativeEventTarget);
26182
26183  if (targetInst !== null) {
26184    var nearestMounted = getNearestMountedFiber(targetInst);
26185
26186    if (nearestMounted === null) {
26187      // This tree has been unmounted already. Dispatch without a target.
26188      targetInst = null;
26189    } else {
26190      var tag = nearestMounted.tag;
26191
26192      if (tag === SuspenseComponent) {
26193        var instance = getSuspenseInstanceFromFiber(nearestMounted);
26194
26195        if (instance !== null) {
26196          // Queue the event to be replayed later. Abort dispatching since we
26197          // don't want this event dispatched twice through the event system.
26198          // TODO: If this is the first discrete event in the queue. Schedule an increased
26199          // priority for this boundary.
26200          return instance;
26201        } // This shouldn't happen, something went wrong but to avoid blocking
26202        // the whole system, dispatch the event without a target.
26203        // TODO: Warn.
26204
26205
26206        targetInst = null;
26207      } else if (tag === HostRoot) {
26208        var root = nearestMounted.stateNode;
26209
26210        if (root.hydrate) {
26211          // If this happens during a replay something went wrong and it might block
26212          // the whole system.
26213          return getContainerFromFiber(nearestMounted);
26214        }
26215
26216        targetInst = null;
26217      } else if (nearestMounted !== targetInst) {
26218        // If we get an event (ex: img onload) before committing that
26219        // component's mount, ignore it for now (that is, treat it as if it was an
26220        // event on a non-React tree). We might also consider queueing events and
26221        // dispatching them after the mount.
26222        targetInst = null;
26223      }
26224    }
26225  }
26226
26227  {
26228    dispatchEventForLegacyPluginEventSystem(topLevelType, eventSystemFlags, nativeEvent, targetInst);
26229  } // We're not blocked on anything.
26230
26231
26232  return null;
26233}
26234
26235// List derived from Gecko source code:
26236// https://github.com/mozilla/gecko-dev/blob/4e638efc71/layout/style/test/property_database.js
26237var shorthandToLonghand = {
26238  animation: ['animationDelay', 'animationDirection', 'animationDuration', 'animationFillMode', 'animationIterationCount', 'animationName', 'animationPlayState', 'animationTimingFunction'],
26239  background: ['backgroundAttachment', 'backgroundClip', 'backgroundColor', 'backgroundImage', 'backgroundOrigin', 'backgroundPositionX', 'backgroundPositionY', 'backgroundRepeat', 'backgroundSize'],
26240  backgroundPosition: ['backgroundPositionX', 'backgroundPositionY'],
26241  border: ['borderBottomColor', 'borderBottomStyle', 'borderBottomWidth', 'borderImageOutset', 'borderImageRepeat', 'borderImageSlice', 'borderImageSource', 'borderImageWidth', 'borderLeftColor', 'borderLeftStyle', 'borderLeftWidth', 'borderRightColor', 'borderRightStyle', 'borderRightWidth', 'borderTopColor', 'borderTopStyle', 'borderTopWidth'],
26242  borderBlockEnd: ['borderBlockEndColor', 'borderBlockEndStyle', 'borderBlockEndWidth'],
26243  borderBlockStart: ['borderBlockStartColor', 'borderBlockStartStyle', 'borderBlockStartWidth'],
26244  borderBottom: ['borderBottomColor', 'borderBottomStyle', 'borderBottomWidth'],
26245  borderColor: ['borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor'],
26246  borderImage: ['borderImageOutset', 'borderImageRepeat', 'borderImageSlice', 'borderImageSource', 'borderImageWidth'],
26247  borderInlineEnd: ['borderInlineEndColor', 'borderInlineEndStyle', 'borderInlineEndWidth'],
26248  borderInlineStart: ['borderInlineStartColor', 'borderInlineStartStyle', 'borderInlineStartWidth'],
26249  borderLeft: ['borderLeftColor', 'borderLeftStyle', 'borderLeftWidth'],
26250  borderRadius: ['borderBottomLeftRadius', 'borderBottomRightRadius', 'borderTopLeftRadius', 'borderTopRightRadius'],
26251  borderRight: ['borderRightColor', 'borderRightStyle', 'borderRightWidth'],
26252  borderStyle: ['borderBottomStyle', 'borderLeftStyle', 'borderRightStyle', 'borderTopStyle'],
26253  borderTop: ['borderTopColor', 'borderTopStyle', 'borderTopWidth'],
26254  borderWidth: ['borderBottomWidth', 'borderLeftWidth', 'borderRightWidth', 'borderTopWidth'],
26255  columnRule: ['columnRuleColor', 'columnRuleStyle', 'columnRuleWidth'],
26256  columns: ['columnCount', 'columnWidth'],
26257  flex: ['flexBasis', 'flexGrow', 'flexShrink'],
26258  flexFlow: ['flexDirection', 'flexWrap'],
26259  font: ['fontFamily', 'fontFeatureSettings', 'fontKerning', 'fontLanguageOverride', 'fontSize', 'fontSizeAdjust', 'fontStretch', 'fontStyle', 'fontVariant', 'fontVariantAlternates', 'fontVariantCaps', 'fontVariantEastAsian', 'fontVariantLigatures', 'fontVariantNumeric', 'fontVariantPosition', 'fontWeight', 'lineHeight'],
26260  fontVariant: ['fontVariantAlternates', 'fontVariantCaps', 'fontVariantEastAsian', 'fontVariantLigatures', 'fontVariantNumeric', 'fontVariantPosition'],
26261  gap: ['columnGap', 'rowGap'],
26262  grid: ['gridAutoColumns', 'gridAutoFlow', 'gridAutoRows', 'gridTemplateAreas', 'gridTemplateColumns', 'gridTemplateRows'],
26263  gridArea: ['gridColumnEnd', 'gridColumnStart', 'gridRowEnd', 'gridRowStart'],
26264  gridColumn: ['gridColumnEnd', 'gridColumnStart'],
26265  gridColumnGap: ['columnGap'],
26266  gridGap: ['columnGap', 'rowGap'],
26267  gridRow: ['gridRowEnd', 'gridRowStart'],
26268  gridRowGap: ['rowGap'],
26269  gridTemplate: ['gridTemplateAreas', 'gridTemplateColumns', 'gridTemplateRows'],
26270  listStyle: ['listStyleImage', 'listStylePosition', 'listStyleType'],
26271  margin: ['marginBottom', 'marginLeft', 'marginRight', 'marginTop'],
26272  marker: ['markerEnd', 'markerMid', 'markerStart'],
26273  mask: ['maskClip', 'maskComposite', 'maskImage', 'maskMode', 'maskOrigin', 'maskPositionX', 'maskPositionY', 'maskRepeat', 'maskSize'],
26274  maskPosition: ['maskPositionX', 'maskPositionY'],
26275  outline: ['outlineColor', 'outlineStyle', 'outlineWidth'],
26276  overflow: ['overflowX', 'overflowY'],
26277  padding: ['paddingBottom', 'paddingLeft', 'paddingRight', 'paddingTop'],
26278  placeContent: ['alignContent', 'justifyContent'],
26279  placeItems: ['alignItems', 'justifyItems'],
26280  placeSelf: ['alignSelf', 'justifySelf'],
26281  textDecoration: ['textDecorationColor', 'textDecorationLine', 'textDecorationStyle'],
26282  textEmphasis: ['textEmphasisColor', 'textEmphasisStyle'],
26283  transition: ['transitionDelay', 'transitionDuration', 'transitionProperty', 'transitionTimingFunction'],
26284  wordWrap: ['overflowWrap']
26285};
26286
26287/**
26288 * CSS properties which accept numbers but are not in units of "px".
26289 */
26290var isUnitlessNumber = {
26291  animationIterationCount: true,
26292  borderImageOutset: true,
26293  borderImageSlice: true,
26294  borderImageWidth: true,
26295  boxFlex: true,
26296  boxFlexGroup: true,
26297  boxOrdinalGroup: true,
26298  columnCount: true,
26299  columns: true,
26300  flex: true,
26301  flexGrow: true,
26302  flexPositive: true,
26303  flexShrink: true,
26304  flexNegative: true,
26305  flexOrder: true,
26306  gridArea: true,
26307  gridRow: true,
26308  gridRowEnd: true,
26309  gridRowSpan: true,
26310  gridRowStart: true,
26311  gridColumn: true,
26312  gridColumnEnd: true,
26313  gridColumnSpan: true,
26314  gridColumnStart: true,
26315  fontWeight: true,
26316  lineClamp: true,
26317  lineHeight: true,
26318  opacity: true,
26319  order: true,
26320  orphans: true,
26321  tabSize: true,
26322  widows: true,
26323  zIndex: true,
26324  zoom: true,
26325  // SVG-related properties
26326  fillOpacity: true,
26327  floodOpacity: true,
26328  stopOpacity: true,
26329  strokeDasharray: true,
26330  strokeDashoffset: true,
26331  strokeMiterlimit: true,
26332  strokeOpacity: true,
26333  strokeWidth: true
26334};
26335/**
26336 * @param {string} prefix vendor-specific prefix, eg: Webkit
26337 * @param {string} key style name, eg: transitionDuration
26338 * @return {string} style name prefixed with `prefix`, properly camelCased, eg:
26339 * WebkitTransitionDuration
26340 */
26341
26342function prefixKey(prefix, key) {
26343  return prefix + key.charAt(0).toUpperCase() + key.substring(1);
26344}
26345/**
26346 * Support style names that may come passed in prefixed by adding permutations
26347 * of vendor prefixes.
26348 */
26349
26350
26351var prefixes = ['Webkit', 'ms', 'Moz', 'O']; // Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an
26352// infinite loop, because it iterates over the newly added props too.
26353
26354Object.keys(isUnitlessNumber).forEach(function (prop) {
26355  prefixes.forEach(function (prefix) {
26356    isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];
26357  });
26358});
26359
26360/**
26361 * Convert a value into the proper css writable value. The style name `name`
26362 * should be logical (no hyphens), as specified
26363 * in `CSSProperty.isUnitlessNumber`.
26364 *
26365 * @param {string} name CSS property name such as `topMargin`.
26366 * @param {*} value CSS property value such as `10px`.
26367 * @return {string} Normalized style value with dimensions applied.
26368 */
26369
26370function dangerousStyleValue(name, value, isCustomProperty) {
26371  // Note that we've removed escapeTextForBrowser() calls here since the
26372  // whole string will be escaped when the attribute is injected into
26373  // the markup. If you provide unsafe user data here they can inject
26374  // arbitrary CSS which may be problematic (I couldn't repro this):
26375  // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
26376  // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/
26377  // This is not an XSS hole but instead a potential CSS injection issue
26378  // which has lead to a greater discussion about how we're going to
26379  // trust URLs moving forward. See #2115901
26380  var isEmpty = value == null || typeof value === 'boolean' || value === '';
26381
26382  if (isEmpty) {
26383    return '';
26384  }
26385
26386  if (!isCustomProperty && typeof value === 'number' && value !== 0 && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name])) {
26387    return value + 'px'; // Presumes implicit 'px' suffix for unitless numbers
26388  }
26389
26390  return ('' + value).trim();
26391}
26392
26393var uppercasePattern = /([A-Z])/g;
26394var msPattern = /^ms-/;
26395/**
26396 * Hyphenates a camelcased CSS property name, for example:
26397 *
26398 *   > hyphenateStyleName('backgroundColor')
26399 *   < "background-color"
26400 *   > hyphenateStyleName('MozTransition')
26401 *   < "-moz-transition"
26402 *   > hyphenateStyleName('msTransition')
26403 *   < "-ms-transition"
26404 *
26405 * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix
26406 * is converted to `-ms-`.
26407 */
26408
26409function hyphenateStyleName(name) {
26410  return name.replace(uppercasePattern, '-$1').toLowerCase().replace(msPattern, '-ms-');
26411}
26412
26413var warnValidStyle = function () {};
26414
26415{
26416  // 'msTransform' is correct, but the other prefixes should be capitalized
26417  var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;
26418  var msPattern$1 = /^-ms-/;
26419  var hyphenPattern = /-(.)/g; // style values shouldn't contain a semicolon
26420
26421  var badStyleValueWithSemicolonPattern = /;\s*$/;
26422  var warnedStyleNames = {};
26423  var warnedStyleValues = {};
26424  var warnedForNaNValue = false;
26425  var warnedForInfinityValue = false;
26426
26427  var camelize = function (string) {
26428    return string.replace(hyphenPattern, function (_, character) {
26429      return character.toUpperCase();
26430    });
26431  };
26432
26433  var warnHyphenatedStyleName = function (name) {
26434    if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {
26435      return;
26436    }
26437
26438    warnedStyleNames[name] = true;
26439
26440    error('Unsupported style property %s. Did you mean %s?', name, // As Andi Smith suggests
26441    // (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix
26442    // is converted to lowercase `ms`.
26443    camelize(name.replace(msPattern$1, 'ms-')));
26444  };
26445
26446  var warnBadVendoredStyleName = function (name) {
26447    if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {
26448      return;
26449    }
26450
26451    warnedStyleNames[name] = true;
26452
26453    error('Unsupported vendor-prefixed style property %s. Did you mean %s?', name, name.charAt(0).toUpperCase() + name.slice(1));
26454  };
26455
26456  var warnStyleValueWithSemicolon = function (name, value) {
26457    if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {
26458      return;
26459    }
26460
26461    warnedStyleValues[value] = true;
26462
26463    error("Style property values shouldn't contain a semicolon. " + 'Try "%s: %s" instead.', name, value.replace(badStyleValueWithSemicolonPattern, ''));
26464  };
26465
26466  var warnStyleValueIsNaN = function (name, value) {
26467    if (warnedForNaNValue) {
26468      return;
26469    }
26470
26471    warnedForNaNValue = true;
26472
26473    error('`NaN` is an invalid value for the `%s` css style property.', name);
26474  };
26475
26476  var warnStyleValueIsInfinity = function (name, value) {
26477    if (warnedForInfinityValue) {
26478      return;
26479    }
26480
26481    warnedForInfinityValue = true;
26482
26483    error('`Infinity` is an invalid value for the `%s` css style property.', name);
26484  };
26485
26486  warnValidStyle = function (name, value) {
26487    if (name.indexOf('-') > -1) {
26488      warnHyphenatedStyleName(name);
26489    } else if (badVendoredStyleNamePattern.test(name)) {
26490      warnBadVendoredStyleName(name);
26491    } else if (badStyleValueWithSemicolonPattern.test(value)) {
26492      warnStyleValueWithSemicolon(name, value);
26493    }
26494
26495    if (typeof value === 'number') {
26496      if (isNaN(value)) {
26497        warnStyleValueIsNaN(name, value);
26498      } else if (!isFinite(value)) {
26499        warnStyleValueIsInfinity(name, value);
26500      }
26501    }
26502  };
26503}
26504
26505var warnValidStyle$1 = warnValidStyle;
26506
26507/**
26508 * Operations for dealing with CSS properties.
26509 */
26510
26511/**
26512 * This creates a string that is expected to be equivalent to the style
26513 * attribute generated by server-side rendering. It by-passes warnings and
26514 * security checks so it's not safe to use this value for anything other than
26515 * comparison. It is only used in DEV for SSR validation.
26516 */
26517
26518function createDangerousStringForStyles(styles) {
26519  {
26520    var serialized = '';
26521    var delimiter = '';
26522
26523    for (var styleName in styles) {
26524      if (!styles.hasOwnProperty(styleName)) {
26525        continue;
26526      }
26527
26528      var styleValue = styles[styleName];
26529
26530      if (styleValue != null) {
26531        var isCustomProperty = styleName.indexOf('--') === 0;
26532        serialized += delimiter + (isCustomProperty ? styleName : hyphenateStyleName(styleName)) + ':';
26533        serialized += dangerousStyleValue(styleName, styleValue, isCustomProperty);
26534        delimiter = ';';
26535      }
26536    }
26537
26538    return serialized || null;
26539  }
26540}
26541/**
26542 * Sets the value for multiple styles on a node.  If a value is specified as
26543 * '' (empty string), the corresponding style property will be unset.
26544 *
26545 * @param {DOMElement} node
26546 * @param {object} styles
26547 */
26548
26549function setValueForStyles(node, styles) {
26550  var style = node.style;
26551
26552  for (var styleName in styles) {
26553    if (!styles.hasOwnProperty(styleName)) {
26554      continue;
26555    }
26556
26557    var isCustomProperty = styleName.indexOf('--') === 0;
26558
26559    {
26560      if (!isCustomProperty) {
26561        warnValidStyle$1(styleName, styles[styleName]);
26562      }
26563    }
26564
26565    var styleValue = dangerousStyleValue(styleName, styles[styleName], isCustomProperty);
26566
26567    if (styleName === 'float') {
26568      styleName = 'cssFloat';
26569    }
26570
26571    if (isCustomProperty) {
26572      style.setProperty(styleName, styleValue);
26573    } else {
26574      style[styleName] = styleValue;
26575    }
26576  }
26577}
26578
26579function isValueEmpty(value) {
26580  return value == null || typeof value === 'boolean' || value === '';
26581}
26582/**
26583 * Given {color: 'red', overflow: 'hidden'} returns {
26584 *   color: 'color',
26585 *   overflowX: 'overflow',
26586 *   overflowY: 'overflow',
26587 * }. This can be read as "the overflowY property was set by the overflow
26588 * shorthand". That is, the values are the property that each was derived from.
26589 */
26590
26591
26592function expandShorthandMap(styles) {
26593  var expanded = {};
26594
26595  for (var key in styles) {
26596    var longhands = shorthandToLonghand[key] || [key];
26597
26598    for (var i = 0; i < longhands.length; i++) {
26599      expanded[longhands[i]] = key;
26600    }
26601  }
26602
26603  return expanded;
26604}
26605/**
26606 * When mixing shorthand and longhand property names, we warn during updates if
26607 * we expect an incorrect result to occur. In particular, we warn for:
26608 *
26609 * Updating a shorthand property (longhand gets overwritten):
26610 *   {font: 'foo', fontVariant: 'bar'} -> {font: 'baz', fontVariant: 'bar'}
26611 *   becomes .style.font = 'baz'
26612 * Removing a shorthand property (longhand gets lost too):
26613 *   {font: 'foo', fontVariant: 'bar'} -> {fontVariant: 'bar'}
26614 *   becomes .style.font = ''
26615 * Removing a longhand property (should revert to shorthand; doesn't):
26616 *   {font: 'foo', fontVariant: 'bar'} -> {font: 'foo'}
26617 *   becomes .style.fontVariant = ''
26618 */
26619
26620
26621function validateShorthandPropertyCollisionInDev(styleUpdates, nextStyles) {
26622  {
26623
26624    if (!nextStyles) {
26625      return;
26626    }
26627
26628    var expandedUpdates = expandShorthandMap(styleUpdates);
26629    var expandedStyles = expandShorthandMap(nextStyles);
26630    var warnedAbout = {};
26631
26632    for (var key in expandedUpdates) {
26633      var originalKey = expandedUpdates[key];
26634      var correctOriginalKey = expandedStyles[key];
26635
26636      if (correctOriginalKey && originalKey !== correctOriginalKey) {
26637        var warningKey = originalKey + ',' + correctOriginalKey;
26638
26639        if (warnedAbout[warningKey]) {
26640          continue;
26641        }
26642
26643        warnedAbout[warningKey] = true;
26644
26645        error('%s a style property during rerender (%s) when a ' + 'conflicting property is set (%s) can lead to styling bugs. To ' + "avoid this, don't mix shorthand and non-shorthand properties " + 'for the same value; instead, replace the shorthand with ' + 'separate values.', isValueEmpty(styleUpdates[originalKey]) ? 'Removing' : 'Updating', originalKey, correctOriginalKey);
26646      }
26647    }
26648  }
26649}
26650
26651// For HTML, certain tags should omit their close tag. We keep a whitelist for
26652// those special-case tags.
26653var omittedCloseTags = {
26654  area: true,
26655  base: true,
26656  br: true,
26657  col: true,
26658  embed: true,
26659  hr: true,
26660  img: true,
26661  input: true,
26662  keygen: true,
26663  link: true,
26664  meta: true,
26665  param: true,
26666  source: true,
26667  track: true,
26668  wbr: true // NOTE: menuitem's close tag should be omitted, but that causes problems.
26669
26670};
26671
26672// `omittedCloseTags` except that `menuitem` should still have its closing tag.
26673
26674var voidElementTags = _assign({
26675  menuitem: true
26676}, omittedCloseTags);
26677
26678var HTML = '__html';
26679var ReactDebugCurrentFrame$3 = null;
26680
26681{
26682  ReactDebugCurrentFrame$3 = ReactSharedInternals.ReactDebugCurrentFrame;
26683}
26684
26685function assertValidProps(tag, props) {
26686  if (!props) {
26687    return;
26688  } // Note the use of `==` which checks for null or undefined.
26689
26690
26691  if (voidElementTags[tag]) {
26692    if (!(props.children == null && props.dangerouslySetInnerHTML == null)) {
26693      {
26694        throw Error( tag + " is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`." + ( ReactDebugCurrentFrame$3.getStackAddendum() ) );
26695      }
26696    }
26697  }
26698
26699  if (props.dangerouslySetInnerHTML != null) {
26700    if (!(props.children == null)) {
26701      {
26702        throw Error( "Can only set one of `children` or `props.dangerouslySetInnerHTML`." );
26703      }
26704    }
26705
26706    if (!(typeof props.dangerouslySetInnerHTML === 'object' && HTML in props.dangerouslySetInnerHTML)) {
26707      {
26708        throw Error( "`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information." );
26709      }
26710    }
26711  }
26712
26713  {
26714    if (!props.suppressContentEditableWarning && props.contentEditable && props.children != null) {
26715      error('A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.');
26716    }
26717  }
26718
26719  if (!(props.style == null || typeof props.style === 'object')) {
26720    {
26721      throw Error( "The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + 'em'}} when using JSX." + ( ReactDebugCurrentFrame$3.getStackAddendum() ) );
26722    }
26723  }
26724}
26725
26726function isCustomComponent(tagName, props) {
26727  if (tagName.indexOf('-') === -1) {
26728    return typeof props.is === 'string';
26729  }
26730
26731  switch (tagName) {
26732    // These are reserved SVG and MathML elements.
26733    // We don't mind this whitelist too much because we expect it to never grow.
26734    // The alternative is to track the namespace in a few places which is convoluted.
26735    // https://w3c.github.io/webcomponents/spec/custom/#custom-elements-core-concepts
26736    case 'annotation-xml':
26737    case 'color-profile':
26738    case 'font-face':
26739    case 'font-face-src':
26740    case 'font-face-uri':
26741    case 'font-face-format':
26742    case 'font-face-name':
26743    case 'missing-glyph':
26744      return false;
26745
26746    default:
26747      return true;
26748  }
26749}
26750
26751// When adding attributes to the HTML or SVG whitelist, be sure to
26752// also add them to this module to ensure casing and incorrect name
26753// warnings.
26754var possibleStandardNames = {
26755  // HTML
26756  accept: 'accept',
26757  acceptcharset: 'acceptCharset',
26758  'accept-charset': 'acceptCharset',
26759  accesskey: 'accessKey',
26760  action: 'action',
26761  allowfullscreen: 'allowFullScreen',
26762  alt: 'alt',
26763  as: 'as',
26764  async: 'async',
26765  autocapitalize: 'autoCapitalize',
26766  autocomplete: 'autoComplete',
26767  autocorrect: 'autoCorrect',
26768  autofocus: 'autoFocus',
26769  autoplay: 'autoPlay',
26770  autosave: 'autoSave',
26771  capture: 'capture',
26772  cellpadding: 'cellPadding',
26773  cellspacing: 'cellSpacing',
26774  challenge: 'challenge',
26775  charset: 'charSet',
26776  checked: 'checked',
26777  children: 'children',
26778  cite: 'cite',
26779  class: 'className',
26780  classid: 'classID',
26781  classname: 'className',
26782  cols: 'cols',
26783  colspan: 'colSpan',
26784  content: 'content',
26785  contenteditable: 'contentEditable',
26786  contextmenu: 'contextMenu',
26787  controls: 'controls',
26788  controlslist: 'controlsList',
26789  coords: 'coords',
26790  crossorigin: 'crossOrigin',
26791  dangerouslysetinnerhtml: 'dangerouslySetInnerHTML',
26792  data: 'data',
26793  datetime: 'dateTime',
26794  default: 'default',
26795  defaultchecked: 'defaultChecked',
26796  defaultvalue: 'defaultValue',
26797  defer: 'defer',
26798  dir: 'dir',
26799  disabled: 'disabled',
26800  disablepictureinpicture: 'disablePictureInPicture',
26801  download: 'download',
26802  draggable: 'draggable',
26803  enctype: 'encType',
26804  for: 'htmlFor',
26805  form: 'form',
26806  formmethod: 'formMethod',
26807  formaction: 'formAction',
26808  formenctype: 'formEncType',
26809  formnovalidate: 'formNoValidate',
26810  formtarget: 'formTarget',
26811  frameborder: 'frameBorder',
26812  headers: 'headers',
26813  height: 'height',
26814  hidden: 'hidden',
26815  high: 'high',
26816  href: 'href',
26817  hreflang: 'hrefLang',
26818  htmlfor: 'htmlFor',
26819  httpequiv: 'httpEquiv',
26820  'http-equiv': 'httpEquiv',
26821  icon: 'icon',
26822  id: 'id',
26823  innerhtml: 'innerHTML',
26824  inputmode: 'inputMode',
26825  integrity: 'integrity',
26826  is: 'is',
26827  itemid: 'itemID',
26828  itemprop: 'itemProp',
26829  itemref: 'itemRef',
26830  itemscope: 'itemScope',
26831  itemtype: 'itemType',
26832  keyparams: 'keyParams',
26833  keytype: 'keyType',
26834  kind: 'kind',
26835  label: 'label',
26836  lang: 'lang',
26837  list: 'list',
26838  loop: 'loop',
26839  low: 'low',
26840  manifest: 'manifest',
26841  marginwidth: 'marginWidth',
26842  marginheight: 'marginHeight',
26843  max: 'max',
26844  maxlength: 'maxLength',
26845  media: 'media',
26846  mediagroup: 'mediaGroup',
26847  method: 'method',
26848  min: 'min',
26849  minlength: 'minLength',
26850  multiple: 'multiple',
26851  muted: 'muted',
26852  name: 'name',
26853  nomodule: 'noModule',
26854  nonce: 'nonce',
26855  novalidate: 'noValidate',
26856  open: 'open',
26857  optimum: 'optimum',
26858  pattern: 'pattern',
26859  placeholder: 'placeholder',
26860  playsinline: 'playsInline',
26861  poster: 'poster',
26862  preload: 'preload',
26863  profile: 'profile',
26864  radiogroup: 'radioGroup',
26865  readonly: 'readOnly',
26866  referrerpolicy: 'referrerPolicy',
26867  rel: 'rel',
26868  required: 'required',
26869  reversed: 'reversed',
26870  role: 'role',
26871  rows: 'rows',
26872  rowspan: 'rowSpan',
26873  sandbox: 'sandbox',
26874  scope: 'scope',
26875  scoped: 'scoped',
26876  scrolling: 'scrolling',
26877  seamless: 'seamless',
26878  selected: 'selected',
26879  shape: 'shape',
26880  size: 'size',
26881  sizes: 'sizes',
26882  span: 'span',
26883  spellcheck: 'spellCheck',
26884  src: 'src',
26885  srcdoc: 'srcDoc',
26886  srclang: 'srcLang',
26887  srcset: 'srcSet',
26888  start: 'start',
26889  step: 'step',
26890  style: 'style',
26891  summary: 'summary',
26892  tabindex: 'tabIndex',
26893  target: 'target',
26894  title: 'title',
26895  type: 'type',
26896  usemap: 'useMap',
26897  value: 'value',
26898  width: 'width',
26899  wmode: 'wmode',
26900  wrap: 'wrap',
26901  // SVG
26902  about: 'about',
26903  accentheight: 'accentHeight',
26904  'accent-height': 'accentHeight',
26905  accumulate: 'accumulate',
26906  additive: 'additive',
26907  alignmentbaseline: 'alignmentBaseline',
26908  'alignment-baseline': 'alignmentBaseline',
26909  allowreorder: 'allowReorder',
26910  alphabetic: 'alphabetic',
26911  amplitude: 'amplitude',
26912  arabicform: 'arabicForm',
26913  'arabic-form': 'arabicForm',
26914  ascent: 'ascent',
26915  attributename: 'attributeName',
26916  attributetype: 'attributeType',
26917  autoreverse: 'autoReverse',
26918  azimuth: 'azimuth',
26919  basefrequency: 'baseFrequency',
26920  baselineshift: 'baselineShift',
26921  'baseline-shift': 'baselineShift',
26922  baseprofile: 'baseProfile',
26923  bbox: 'bbox',
26924  begin: 'begin',
26925  bias: 'bias',
26926  by: 'by',
26927  calcmode: 'calcMode',
26928  capheight: 'capHeight',
26929  'cap-height': 'capHeight',
26930  clip: 'clip',
26931  clippath: 'clipPath',
26932  'clip-path': 'clipPath',
26933  clippathunits: 'clipPathUnits',
26934  cliprule: 'clipRule',
26935  'clip-rule': 'clipRule',
26936  color: 'color',
26937  colorinterpolation: 'colorInterpolation',
26938  'color-interpolation': 'colorInterpolation',
26939  colorinterpolationfilters: 'colorInterpolationFilters',
26940  'color-interpolation-filters': 'colorInterpolationFilters',
26941  colorprofile: 'colorProfile',
26942  'color-profile': 'colorProfile',
26943  colorrendering: 'colorRendering',
26944  'color-rendering': 'colorRendering',
26945  contentscripttype: 'contentScriptType',
26946  contentstyletype: 'contentStyleType',
26947  cursor: 'cursor',
26948  cx: 'cx',
26949  cy: 'cy',
26950  d: 'd',
26951  datatype: 'datatype',
26952  decelerate: 'decelerate',
26953  descent: 'descent',
26954  diffuseconstant: 'diffuseConstant',
26955  direction: 'direction',
26956  display: 'display',
26957  divisor: 'divisor',
26958  dominantbaseline: 'dominantBaseline',
26959  'dominant-baseline': 'dominantBaseline',
26960  dur: 'dur',
26961  dx: 'dx',
26962  dy: 'dy',
26963  edgemode: 'edgeMode',
26964  elevation: 'elevation',
26965  enablebackground: 'enableBackground',
26966  'enable-background': 'enableBackground',
26967  end: 'end',
26968  exponent: 'exponent',
26969  externalresourcesrequired: 'externalResourcesRequired',
26970  fill: 'fill',
26971  fillopacity: 'fillOpacity',
26972  'fill-opacity': 'fillOpacity',
26973  fillrule: 'fillRule',
26974  'fill-rule': 'fillRule',
26975  filter: 'filter',
26976  filterres: 'filterRes',
26977  filterunits: 'filterUnits',
26978  floodopacity: 'floodOpacity',
26979  'flood-opacity': 'floodOpacity',
26980  floodcolor: 'floodColor',
26981  'flood-color': 'floodColor',
26982  focusable: 'focusable',
26983  fontfamily: 'fontFamily',
26984  'font-family': 'fontFamily',
26985  fontsize: 'fontSize',
26986  'font-size': 'fontSize',
26987  fontsizeadjust: 'fontSizeAdjust',
26988  'font-size-adjust': 'fontSizeAdjust',
26989  fontstretch: 'fontStretch',
26990  'font-stretch': 'fontStretch',
26991  fontstyle: 'fontStyle',
26992  'font-style': 'fontStyle',
26993  fontvariant: 'fontVariant',
26994  'font-variant': 'fontVariant',
26995  fontweight: 'fontWeight',
26996  'font-weight': 'fontWeight',
26997  format: 'format',
26998  from: 'from',
26999  fx: 'fx',
27000  fy: 'fy',
27001  g1: 'g1',
27002  g2: 'g2',
27003  glyphname: 'glyphName',
27004  'glyph-name': 'glyphName',
27005  glyphorientationhorizontal: 'glyphOrientationHorizontal',
27006  'glyph-orientation-horizontal': 'glyphOrientationHorizontal',
27007  glyphorientationvertical: 'glyphOrientationVertical',
27008  'glyph-orientation-vertical': 'glyphOrientationVertical',
27009  glyphref: 'glyphRef',
27010  gradienttransform: 'gradientTransform',
27011  gradientunits: 'gradientUnits',
27012  hanging: 'hanging',
27013  horizadvx: 'horizAdvX',
27014  'horiz-adv-x': 'horizAdvX',
27015  horizoriginx: 'horizOriginX',
27016  'horiz-origin-x': 'horizOriginX',
27017  ideographic: 'ideographic',
27018  imagerendering: 'imageRendering',
27019  'image-rendering': 'imageRendering',
27020  in2: 'in2',
27021  in: 'in',
27022  inlist: 'inlist',
27023  intercept: 'intercept',
27024  k1: 'k1',
27025  k2: 'k2',
27026  k3: 'k3',
27027  k4: 'k4',
27028  k: 'k',
27029  kernelmatrix: 'kernelMatrix',
27030  kernelunitlength: 'kernelUnitLength',
27031  kerning: 'kerning',
27032  keypoints: 'keyPoints',
27033  keysplines: 'keySplines',
27034  keytimes: 'keyTimes',
27035  lengthadjust: 'lengthAdjust',
27036  letterspacing: 'letterSpacing',
27037  'letter-spacing': 'letterSpacing',
27038  lightingcolor: 'lightingColor',
27039  'lighting-color': 'lightingColor',
27040  limitingconeangle: 'limitingConeAngle',
27041  local: 'local',
27042  markerend: 'markerEnd',
27043  'marker-end': 'markerEnd',
27044  markerheight: 'markerHeight',
27045  markermid: 'markerMid',
27046  'marker-mid': 'markerMid',
27047  markerstart: 'markerStart',
27048  'marker-start': 'markerStart',
27049  markerunits: 'markerUnits',
27050  markerwidth: 'markerWidth',
27051  mask: 'mask',
27052  maskcontentunits: 'maskContentUnits',
27053  maskunits: 'maskUnits',
27054  mathematical: 'mathematical',
27055  mode: 'mode',
27056  numoctaves: 'numOctaves',
27057  offset: 'offset',
27058  opacity: 'opacity',
27059  operator: 'operator',
27060  order: 'order',
27061  orient: 'orient',
27062  orientation: 'orientation',
27063  origin: 'origin',
27064  overflow: 'overflow',
27065  overlineposition: 'overlinePosition',
27066  'overline-position': 'overlinePosition',
27067  overlinethickness: 'overlineThickness',
27068  'overline-thickness': 'overlineThickness',
27069  paintorder: 'paintOrder',
27070  'paint-order': 'paintOrder',
27071  panose1: 'panose1',
27072  'panose-1': 'panose1',
27073  pathlength: 'pathLength',
27074  patterncontentunits: 'patternContentUnits',
27075  patterntransform: 'patternTransform',
27076  patternunits: 'patternUnits',
27077  pointerevents: 'pointerEvents',
27078  'pointer-events': 'pointerEvents',
27079  points: 'points',
27080  pointsatx: 'pointsAtX',
27081  pointsaty: 'pointsAtY',
27082  pointsatz: 'pointsAtZ',
27083  prefix: 'prefix',
27084  preservealpha: 'preserveAlpha',
27085  preserveaspectratio: 'preserveAspectRatio',
27086  primitiveunits: 'primitiveUnits',
27087  property: 'property',
27088  r: 'r',
27089  radius: 'radius',
27090  refx: 'refX',
27091  refy: 'refY',
27092  renderingintent: 'renderingIntent',
27093  'rendering-intent': 'renderingIntent',
27094  repeatcount: 'repeatCount',
27095  repeatdur: 'repeatDur',
27096  requiredextensions: 'requiredExtensions',
27097  requiredfeatures: 'requiredFeatures',
27098  resource: 'resource',
27099  restart: 'restart',
27100  result: 'result',
27101  results: 'results',
27102  rotate: 'rotate',
27103  rx: 'rx',
27104  ry: 'ry',
27105  scale: 'scale',
27106  security: 'security',
27107  seed: 'seed',
27108  shaperendering: 'shapeRendering',
27109  'shape-rendering': 'shapeRendering',
27110  slope: 'slope',
27111  spacing: 'spacing',
27112  specularconstant: 'specularConstant',
27113  specularexponent: 'specularExponent',
27114  speed: 'speed',
27115  spreadmethod: 'spreadMethod',
27116  startoffset: 'startOffset',
27117  stddeviation: 'stdDeviation',
27118  stemh: 'stemh',
27119  stemv: 'stemv',
27120  stitchtiles: 'stitchTiles',
27121  stopcolor: 'stopColor',
27122  'stop-color': 'stopColor',
27123  stopopacity: 'stopOpacity',
27124  'stop-opacity': 'stopOpacity',
27125  strikethroughposition: 'strikethroughPosition',
27126  'strikethrough-position': 'strikethroughPosition',
27127  strikethroughthickness: 'strikethroughThickness',
27128  'strikethrough-thickness': 'strikethroughThickness',
27129  string: 'string',
27130  stroke: 'stroke',
27131  strokedasharray: 'strokeDasharray',
27132  'stroke-dasharray': 'strokeDasharray',
27133  strokedashoffset: 'strokeDashoffset',
27134  'stroke-dashoffset': 'strokeDashoffset',
27135  strokelinecap: 'strokeLinecap',
27136  'stroke-linecap': 'strokeLinecap',
27137  strokelinejoin: 'strokeLinejoin',
27138  'stroke-linejoin': 'strokeLinejoin',
27139  strokemiterlimit: 'strokeMiterlimit',
27140  'stroke-miterlimit': 'strokeMiterlimit',
27141  strokewidth: 'strokeWidth',
27142  'stroke-width': 'strokeWidth',
27143  strokeopacity: 'strokeOpacity',
27144  'stroke-opacity': 'strokeOpacity',
27145  suppresscontenteditablewarning: 'suppressContentEditableWarning',
27146  suppresshydrationwarning: 'suppressHydrationWarning',
27147  surfacescale: 'surfaceScale',
27148  systemlanguage: 'systemLanguage',
27149  tablevalues: 'tableValues',
27150  targetx: 'targetX',
27151  targety: 'targetY',
27152  textanchor: 'textAnchor',
27153  'text-anchor': 'textAnchor',
27154  textdecoration: 'textDecoration',
27155  'text-decoration': 'textDecoration',
27156  textlength: 'textLength',
27157  textrendering: 'textRendering',
27158  'text-rendering': 'textRendering',
27159  to: 'to',
27160  transform: 'transform',
27161  typeof: 'typeof',
27162  u1: 'u1',
27163  u2: 'u2',
27164  underlineposition: 'underlinePosition',
27165  'underline-position': 'underlinePosition',
27166  underlinethickness: 'underlineThickness',
27167  'underline-thickness': 'underlineThickness',
27168  unicode: 'unicode',
27169  unicodebidi: 'unicodeBidi',
27170  'unicode-bidi': 'unicodeBidi',
27171  unicoderange: 'unicodeRange',
27172  'unicode-range': 'unicodeRange',
27173  unitsperem: 'unitsPerEm',
27174  'units-per-em': 'unitsPerEm',
27175  unselectable: 'unselectable',
27176  valphabetic: 'vAlphabetic',
27177  'v-alphabetic': 'vAlphabetic',
27178  values: 'values',
27179  vectoreffect: 'vectorEffect',
27180  'vector-effect': 'vectorEffect',
27181  version: 'version',
27182  vertadvy: 'vertAdvY',
27183  'vert-adv-y': 'vertAdvY',
27184  vertoriginx: 'vertOriginX',
27185  'vert-origin-x': 'vertOriginX',
27186  vertoriginy: 'vertOriginY',
27187  'vert-origin-y': 'vertOriginY',
27188  vhanging: 'vHanging',
27189  'v-hanging': 'vHanging',
27190  videographic: 'vIdeographic',
27191  'v-ideographic': 'vIdeographic',
27192  viewbox: 'viewBox',
27193  viewtarget: 'viewTarget',
27194  visibility: 'visibility',
27195  vmathematical: 'vMathematical',
27196  'v-mathematical': 'vMathematical',
27197  vocab: 'vocab',
27198  widths: 'widths',
27199  wordspacing: 'wordSpacing',
27200  'word-spacing': 'wordSpacing',
27201  writingmode: 'writingMode',
27202  'writing-mode': 'writingMode',
27203  x1: 'x1',
27204  x2: 'x2',
27205  x: 'x',
27206  xchannelselector: 'xChannelSelector',
27207  xheight: 'xHeight',
27208  'x-height': 'xHeight',
27209  xlinkactuate: 'xlinkActuate',
27210  'xlink:actuate': 'xlinkActuate',
27211  xlinkarcrole: 'xlinkArcrole',
27212  'xlink:arcrole': 'xlinkArcrole',
27213  xlinkhref: 'xlinkHref',
27214  'xlink:href': 'xlinkHref',
27215  xlinkrole: 'xlinkRole',
27216  'xlink:role': 'xlinkRole',
27217  xlinkshow: 'xlinkShow',
27218  'xlink:show': 'xlinkShow',
27219  xlinktitle: 'xlinkTitle',
27220  'xlink:title': 'xlinkTitle',
27221  xlinktype: 'xlinkType',
27222  'xlink:type': 'xlinkType',
27223  xmlbase: 'xmlBase',
27224  'xml:base': 'xmlBase',
27225  xmllang: 'xmlLang',
27226  'xml:lang': 'xmlLang',
27227  xmlns: 'xmlns',
27228  'xml:space': 'xmlSpace',
27229  xmlnsxlink: 'xmlnsXlink',
27230  'xmlns:xlink': 'xmlnsXlink',
27231  xmlspace: 'xmlSpace',
27232  y1: 'y1',
27233  y2: 'y2',
27234  y: 'y',
27235  ychannelselector: 'yChannelSelector',
27236  z: 'z',
27237  zoomandpan: 'zoomAndPan'
27238};
27239
27240var ariaProperties = {
27241  'aria-current': 0,
27242  // state
27243  'aria-details': 0,
27244  'aria-disabled': 0,
27245  // state
27246  'aria-hidden': 0,
27247  // state
27248  'aria-invalid': 0,
27249  // state
27250  'aria-keyshortcuts': 0,
27251  'aria-label': 0,
27252  'aria-roledescription': 0,
27253  // Widget Attributes
27254  'aria-autocomplete': 0,
27255  'aria-checked': 0,
27256  'aria-expanded': 0,
27257  'aria-haspopup': 0,
27258  'aria-level': 0,
27259  'aria-modal': 0,
27260  'aria-multiline': 0,
27261  'aria-multiselectable': 0,
27262  'aria-orientation': 0,
27263  'aria-placeholder': 0,
27264  'aria-pressed': 0,
27265  'aria-readonly': 0,
27266  'aria-required': 0,
27267  'aria-selected': 0,
27268  'aria-sort': 0,
27269  'aria-valuemax': 0,
27270  'aria-valuemin': 0,
27271  'aria-valuenow': 0,
27272  'aria-valuetext': 0,
27273  // Live Region Attributes
27274  'aria-atomic': 0,
27275  'aria-busy': 0,
27276  'aria-live': 0,
27277  'aria-relevant': 0,
27278  // Drag-and-Drop Attributes
27279  'aria-dropeffect': 0,
27280  'aria-grabbed': 0,
27281  // Relationship Attributes
27282  'aria-activedescendant': 0,
27283  'aria-colcount': 0,
27284  'aria-colindex': 0,
27285  'aria-colspan': 0,
27286  'aria-controls': 0,
27287  'aria-describedby': 0,
27288  'aria-errormessage': 0,
27289  'aria-flowto': 0,
27290  'aria-labelledby': 0,
27291  'aria-owns': 0,
27292  'aria-posinset': 0,
27293  'aria-rowcount': 0,
27294  'aria-rowindex': 0,
27295  'aria-rowspan': 0,
27296  'aria-setsize': 0
27297};
27298
27299var warnedProperties = {};
27300var rARIA = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$');
27301var rARIACamel = new RegExp('^(aria)[A-Z][' + ATTRIBUTE_NAME_CHAR + ']*$');
27302var hasOwnProperty$1 = Object.prototype.hasOwnProperty;
27303
27304function validateProperty(tagName, name) {
27305  {
27306    if (hasOwnProperty$1.call(warnedProperties, name) && warnedProperties[name]) {
27307      return true;
27308    }
27309
27310    if (rARIACamel.test(name)) {
27311      var ariaName = 'aria-' + name.slice(4).toLowerCase();
27312      var correctName = ariaProperties.hasOwnProperty(ariaName) ? ariaName : null; // If this is an aria-* attribute, but is not listed in the known DOM
27313      // DOM properties, then it is an invalid aria-* attribute.
27314
27315      if (correctName == null) {
27316        error('Invalid ARIA attribute `%s`. ARIA attributes follow the pattern aria-* and must be lowercase.', name);
27317
27318        warnedProperties[name] = true;
27319        return true;
27320      } // aria-* attributes should be lowercase; suggest the lowercase version.
27321
27322
27323      if (name !== correctName) {
27324        error('Invalid ARIA attribute `%s`. Did you mean `%s`?', name, correctName);
27325
27326        warnedProperties[name] = true;
27327        return true;
27328      }
27329    }
27330
27331    if (rARIA.test(name)) {
27332      var lowerCasedName = name.toLowerCase();
27333      var standardName = ariaProperties.hasOwnProperty(lowerCasedName) ? lowerCasedName : null; // If this is an aria-* attribute, but is not listed in the known DOM
27334      // DOM properties, then it is an invalid aria-* attribute.
27335
27336      if (standardName == null) {
27337        warnedProperties[name] = true;
27338        return false;
27339      } // aria-* attributes should be lowercase; suggest the lowercase version.
27340
27341
27342      if (name !== standardName) {
27343        error('Unknown ARIA attribute `%s`. Did you mean `%s`?', name, standardName);
27344
27345        warnedProperties[name] = true;
27346        return true;
27347      }
27348    }
27349  }
27350
27351  return true;
27352}
27353
27354function warnInvalidARIAProps(type, props) {
27355  {
27356    var invalidProps = [];
27357
27358    for (var key in props) {
27359      var isValid = validateProperty(type, key);
27360
27361      if (!isValid) {
27362        invalidProps.push(key);
27363      }
27364    }
27365
27366    var unknownPropString = invalidProps.map(function (prop) {
27367      return '`' + prop + '`';
27368    }).join(', ');
27369
27370    if (invalidProps.length === 1) {
27371      error('Invalid aria prop %s on <%s> tag. ' + 'For details, see https://fb.me/invalid-aria-prop', unknownPropString, type);
27372    } else if (invalidProps.length > 1) {
27373      error('Invalid aria props %s on <%s> tag. ' + 'For details, see https://fb.me/invalid-aria-prop', unknownPropString, type);
27374    }
27375  }
27376}
27377
27378function validateProperties(type, props) {
27379  if (isCustomComponent(type, props)) {
27380    return;
27381  }
27382
27383  warnInvalidARIAProps(type, props);
27384}
27385
27386var didWarnValueNull = false;
27387function validateProperties$1(type, props) {
27388  {
27389    if (type !== 'input' && type !== 'textarea' && type !== 'select') {
27390      return;
27391    }
27392
27393    if (props != null && props.value === null && !didWarnValueNull) {
27394      didWarnValueNull = true;
27395
27396      if (type === 'select' && props.multiple) {
27397        error('`value` prop on `%s` should not be null. ' + 'Consider using an empty array when `multiple` is set to `true` ' + 'to clear the component or `undefined` for uncontrolled components.', type);
27398      } else {
27399        error('`value` prop on `%s` should not be null. ' + 'Consider using an empty string to clear the component or `undefined` ' + 'for uncontrolled components.', type);
27400      }
27401    }
27402  }
27403}
27404
27405var validateProperty$1 = function () {};
27406
27407{
27408  var warnedProperties$1 = {};
27409  var _hasOwnProperty = Object.prototype.hasOwnProperty;
27410  var EVENT_NAME_REGEX = /^on./;
27411  var INVALID_EVENT_NAME_REGEX = /^on[^A-Z]/;
27412  var rARIA$1 = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$');
27413  var rARIACamel$1 = new RegExp('^(aria)[A-Z][' + ATTRIBUTE_NAME_CHAR + ']*$');
27414
27415  validateProperty$1 = function (tagName, name, value, canUseEventSystem) {
27416    if (_hasOwnProperty.call(warnedProperties$1, name) && warnedProperties$1[name]) {
27417      return true;
27418    }
27419
27420    var lowerCasedName = name.toLowerCase();
27421
27422    if (lowerCasedName === 'onfocusin' || lowerCasedName === 'onfocusout') {
27423      error('React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.');
27424
27425      warnedProperties$1[name] = true;
27426      return true;
27427    } // We can't rely on the event system being injected on the server.
27428
27429
27430    if (canUseEventSystem) {
27431      if (registrationNameModules.hasOwnProperty(name)) {
27432        return true;
27433      }
27434
27435      var registrationName = possibleRegistrationNames.hasOwnProperty(lowerCasedName) ? possibleRegistrationNames[lowerCasedName] : null;
27436
27437      if (registrationName != null) {
27438        error('Invalid event handler property `%s`. Did you mean `%s`?', name, registrationName);
27439
27440        warnedProperties$1[name] = true;
27441        return true;
27442      }
27443
27444      if (EVENT_NAME_REGEX.test(name)) {
27445        error('Unknown event handler property `%s`. It will be ignored.', name);
27446
27447        warnedProperties$1[name] = true;
27448        return true;
27449      }
27450    } else if (EVENT_NAME_REGEX.test(name)) {
27451      // If no event plugins have been injected, we are in a server environment.
27452      // So we can't tell if the event name is correct for sure, but we can filter
27453      // out known bad ones like `onclick`. We can't suggest a specific replacement though.
27454      if (INVALID_EVENT_NAME_REGEX.test(name)) {
27455        error('Invalid event handler property `%s`. ' + 'React events use the camelCase naming convention, for example `onClick`.', name);
27456      }
27457
27458      warnedProperties$1[name] = true;
27459      return true;
27460    } // Let the ARIA attribute hook validate ARIA attributes
27461
27462
27463    if (rARIA$1.test(name) || rARIACamel$1.test(name)) {
27464      return true;
27465    }
27466
27467    if (lowerCasedName === 'innerhtml') {
27468      error('Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.');
27469
27470      warnedProperties$1[name] = true;
27471      return true;
27472    }
27473
27474    if (lowerCasedName === 'aria') {
27475      error('The `aria` attribute is reserved for future use in React. ' + 'Pass individual `aria-` attributes instead.');
27476
27477      warnedProperties$1[name] = true;
27478      return true;
27479    }
27480
27481    if (lowerCasedName === 'is' && value !== null && value !== undefined && typeof value !== 'string') {
27482      error('Received a `%s` for a string attribute `is`. If this is expected, cast ' + 'the value to a string.', typeof value);
27483
27484      warnedProperties$1[name] = true;
27485      return true;
27486    }
27487
27488    if (typeof value === 'number' && isNaN(value)) {
27489      error('Received NaN for the `%s` attribute. If this is expected, cast ' + 'the value to a string.', name);
27490
27491      warnedProperties$1[name] = true;
27492      return true;
27493    }
27494
27495    var propertyInfo = getPropertyInfo(name);
27496    var isReserved = propertyInfo !== null && propertyInfo.type === RESERVED; // Known attributes should match the casing specified in the property config.
27497
27498    if (possibleStandardNames.hasOwnProperty(lowerCasedName)) {
27499      var standardName = possibleStandardNames[lowerCasedName];
27500
27501      if (standardName !== name) {
27502        error('Invalid DOM property `%s`. Did you mean `%s`?', name, standardName);
27503
27504        warnedProperties$1[name] = true;
27505        return true;
27506      }
27507    } else if (!isReserved && name !== lowerCasedName) {
27508      // Unknown attributes should have lowercase casing since that's how they
27509      // will be cased anyway with server rendering.
27510      error('React does not recognize the `%s` prop on a DOM element. If you ' + 'intentionally want it to appear in the DOM as a custom ' + 'attribute, spell it as lowercase `%s` instead. ' + 'If you accidentally passed it from a parent component, remove ' + 'it from the DOM element.', name, lowerCasedName);
27511
27512      warnedProperties$1[name] = true;
27513      return true;
27514    }
27515
27516    if (typeof value === 'boolean' && shouldRemoveAttributeWithWarning(name, value, propertyInfo, false)) {
27517      if (value) {
27518        error('Received `%s` for a non-boolean attribute `%s`.\n\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s="%s" or %s={value.toString()}.', value, name, name, value, name);
27519      } else {
27520        error('Received `%s` for a non-boolean attribute `%s`.\n\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s="%s" or %s={value.toString()}.\n\n' + 'If you used to conditionally omit it with %s={condition && value}, ' + 'pass %s={condition ? value : undefined} instead.', value, name, name, value, name, name, name);
27521      }
27522
27523      warnedProperties$1[name] = true;
27524      return true;
27525    } // Now that we've validated casing, do not validate
27526    // data types for reserved props
27527
27528
27529    if (isReserved) {
27530      return true;
27531    } // Warn when a known attribute is a bad type
27532
27533
27534    if (shouldRemoveAttributeWithWarning(name, value, propertyInfo, false)) {
27535      warnedProperties$1[name] = true;
27536      return false;
27537    } // Warn when passing the strings 'false' or 'true' into a boolean prop
27538
27539
27540    if ((value === 'false' || value === 'true') && propertyInfo !== null && propertyInfo.type === BOOLEAN) {
27541      error('Received the string `%s` for the boolean attribute `%s`. ' + '%s ' + 'Did you mean %s={%s}?', value, name, value === 'false' ? 'The browser will interpret it as a truthy value.' : 'Although this works, it will not work as expected if you pass the string "false".', name, value);
27542
27543      warnedProperties$1[name] = true;
27544      return true;
27545    }
27546
27547    return true;
27548  };
27549}
27550
27551var warnUnknownProperties = function (type, props, canUseEventSystem) {
27552  {
27553    var unknownProps = [];
27554
27555    for (var key in props) {
27556      var isValid = validateProperty$1(type, key, props[key], canUseEventSystem);
27557
27558      if (!isValid) {
27559        unknownProps.push(key);
27560      }
27561    }
27562
27563    var unknownPropString = unknownProps.map(function (prop) {
27564      return '`' + prop + '`';
27565    }).join(', ');
27566
27567    if (unknownProps.length === 1) {
27568      error('Invalid value for prop %s on <%s> tag. Either remove it from the element, ' + 'or pass a string or number value to keep it in the DOM. ' + 'For details, see https://fb.me/react-attribute-behavior', unknownPropString, type);
27569    } else if (unknownProps.length > 1) {
27570      error('Invalid values for props %s on <%s> tag. Either remove them from the element, ' + 'or pass a string or number value to keep them in the DOM. ' + 'For details, see https://fb.me/react-attribute-behavior', unknownPropString, type);
27571    }
27572  }
27573};
27574
27575function validateProperties$2(type, props, canUseEventSystem) {
27576  if (isCustomComponent(type, props)) {
27577    return;
27578  }
27579
27580  warnUnknownProperties(type, props, canUseEventSystem);
27581}
27582
27583var didWarnInvalidHydration = false;
27584var DANGEROUSLY_SET_INNER_HTML = 'dangerouslySetInnerHTML';
27585var SUPPRESS_CONTENT_EDITABLE_WARNING = 'suppressContentEditableWarning';
27586var SUPPRESS_HYDRATION_WARNING = 'suppressHydrationWarning';
27587var AUTOFOCUS = 'autoFocus';
27588var CHILDREN = 'children';
27589var STYLE = 'style';
27590var HTML$1 = '__html';
27591var HTML_NAMESPACE$1 = Namespaces.html;
27592var warnedUnknownTags;
27593var suppressHydrationWarning;
27594var validatePropertiesInDevelopment;
27595var warnForTextDifference;
27596var warnForPropDifference;
27597var warnForExtraAttributes;
27598var warnForInvalidEventListener;
27599var canDiffStyleForHydrationWarning;
27600var normalizeMarkupForTextOrAttribute;
27601var normalizeHTML;
27602
27603{
27604  warnedUnknownTags = {
27605    // Chrome is the only major browser not shipping <time>. But as of July
27606    // 2017 it intends to ship it due to widespread usage. We intentionally
27607    // *don't* warn for <time> even if it's unrecognized by Chrome because
27608    // it soon will be, and many apps have been using it anyway.
27609    time: true,
27610    // There are working polyfills for <dialog>. Let people use it.
27611    dialog: true,
27612    // Electron ships a custom <webview> tag to display external web content in
27613    // an isolated frame and process.
27614    // This tag is not present in non Electron environments such as JSDom which
27615    // is often used for testing purposes.
27616    // @see https://electronjs.org/docs/api/webview-tag
27617    webview: true
27618  };
27619
27620  validatePropertiesInDevelopment = function (type, props) {
27621    validateProperties(type, props);
27622    validateProperties$1(type, props);
27623    validateProperties$2(type, props,
27624    /* canUseEventSystem */
27625    true);
27626  }; // IE 11 parses & normalizes the style attribute as opposed to other
27627  // browsers. It adds spaces and sorts the properties in some
27628  // non-alphabetical order. Handling that would require sorting CSS
27629  // properties in the client & server versions or applying
27630  // `expectedStyle` to a temporary DOM node to read its `style` attribute
27631  // normalized. Since it only affects IE, we're skipping style warnings
27632  // in that browser completely in favor of doing all that work.
27633  // See https://github.com/facebook/react/issues/11807
27634
27635
27636  canDiffStyleForHydrationWarning = canUseDOM && !document.documentMode; // HTML parsing normalizes CR and CRLF to LF.
27637  // It also can turn \u0000 into \uFFFD inside attributes.
27638  // https://www.w3.org/TR/html5/single-page.html#preprocessing-the-input-stream
27639  // If we have a mismatch, it might be caused by that.
27640  // We will still patch up in this case but not fire the warning.
27641
27642  var NORMALIZE_NEWLINES_REGEX = /\r\n?/g;
27643  var NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\u0000|\uFFFD/g;
27644
27645  normalizeMarkupForTextOrAttribute = function (markup) {
27646    var markupString = typeof markup === 'string' ? markup : '' + markup;
27647    return markupString.replace(NORMALIZE_NEWLINES_REGEX, '\n').replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, '');
27648  };
27649
27650  warnForTextDifference = function (serverText, clientText) {
27651    if (didWarnInvalidHydration) {
27652      return;
27653    }
27654
27655    var normalizedClientText = normalizeMarkupForTextOrAttribute(clientText);
27656    var normalizedServerText = normalizeMarkupForTextOrAttribute(serverText);
27657
27658    if (normalizedServerText === normalizedClientText) {
27659      return;
27660    }
27661
27662    didWarnInvalidHydration = true;
27663
27664    error('Text content did not match. Server: "%s" Client: "%s"', normalizedServerText, normalizedClientText);
27665  };
27666
27667  warnForPropDifference = function (propName, serverValue, clientValue) {
27668    if (didWarnInvalidHydration) {
27669      return;
27670    }
27671
27672    var normalizedClientValue = normalizeMarkupForTextOrAttribute(clientValue);
27673    var normalizedServerValue = normalizeMarkupForTextOrAttribute(serverValue);
27674
27675    if (normalizedServerValue === normalizedClientValue) {
27676      return;
27677    }
27678
27679    didWarnInvalidHydration = true;
27680
27681    error('Prop `%s` did not match. Server: %s Client: %s', propName, JSON.stringify(normalizedServerValue), JSON.stringify(normalizedClientValue));
27682  };
27683
27684  warnForExtraAttributes = function (attributeNames) {
27685    if (didWarnInvalidHydration) {
27686      return;
27687    }
27688
27689    didWarnInvalidHydration = true;
27690    var names = [];
27691    attributeNames.forEach(function (name) {
27692      names.push(name);
27693    });
27694
27695    error('Extra attributes from the server: %s', names);
27696  };
27697
27698  warnForInvalidEventListener = function (registrationName, listener) {
27699    if (listener === false) {
27700      error('Expected `%s` listener to be a function, instead got `false`.\n\n' + 'If you used to conditionally omit it with %s={condition && value}, ' + 'pass %s={condition ? value : undefined} instead.', registrationName, registrationName, registrationName);
27701    } else {
27702      error('Expected `%s` listener to be a function, instead got a value of `%s` type.', registrationName, typeof listener);
27703    }
27704  }; // Parse the HTML and read it back to normalize the HTML string so that it
27705  // can be used for comparison.
27706
27707
27708  normalizeHTML = function (parent, html) {
27709    // We could have created a separate document here to avoid
27710    // re-initializing custom elements if they exist. But this breaks
27711    // how <noscript> is being handled. So we use the same document.
27712    // See the discussion in https://github.com/facebook/react/pull/11157.
27713    var testElement = parent.namespaceURI === HTML_NAMESPACE$1 ? parent.ownerDocument.createElement(parent.tagName) : parent.ownerDocument.createElementNS(parent.namespaceURI, parent.tagName);
27714    testElement.innerHTML = html;
27715    return testElement.innerHTML;
27716  };
27717}
27718
27719function ensureListeningTo(rootContainerElement, registrationName) {
27720  var isDocumentOrFragment = rootContainerElement.nodeType === DOCUMENT_NODE || rootContainerElement.nodeType === DOCUMENT_FRAGMENT_NODE;
27721  var doc = isDocumentOrFragment ? rootContainerElement : rootContainerElement.ownerDocument;
27722  legacyListenToEvent(registrationName, doc);
27723}
27724
27725function getOwnerDocumentFromRootContainer(rootContainerElement) {
27726  return rootContainerElement.nodeType === DOCUMENT_NODE ? rootContainerElement : rootContainerElement.ownerDocument;
27727}
27728
27729function noop() {}
27730
27731function trapClickOnNonInteractiveElement(node) {
27732  // Mobile Safari does not fire properly bubble click events on
27733  // non-interactive elements, which means delegated click listeners do not
27734  // fire. The workaround for this bug involves attaching an empty click
27735  // listener on the target node.
27736  // http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html
27737  // Just set it using the onclick property so that we don't have to manage any
27738  // bookkeeping for it. Not sure if we need to clear it when the listener is
27739  // removed.
27740  // TODO: Only do this for the relevant Safaris maybe?
27741  node.onclick = noop;
27742}
27743
27744function setInitialDOMProperties(tag, domElement, rootContainerElement, nextProps, isCustomComponentTag) {
27745  for (var propKey in nextProps) {
27746    if (!nextProps.hasOwnProperty(propKey)) {
27747      continue;
27748    }
27749
27750    var nextProp = nextProps[propKey];
27751
27752    if (propKey === STYLE) {
27753      {
27754        if (nextProp) {
27755          // Freeze the next style object so that we can assume it won't be
27756          // mutated. We have already warned for this in the past.
27757          Object.freeze(nextProp);
27758        }
27759      } // Relies on `updateStylesByID` not mutating `styleUpdates`.
27760
27761
27762      setValueForStyles(domElement, nextProp);
27763    } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {
27764      var nextHtml = nextProp ? nextProp[HTML$1] : undefined;
27765
27766      if (nextHtml != null) {
27767        setInnerHTML(domElement, nextHtml);
27768      }
27769    } else if (propKey === CHILDREN) {
27770      if (typeof nextProp === 'string') {
27771        // Avoid setting initial textContent when the text is empty. In IE11 setting
27772        // textContent on a <textarea> will cause the placeholder to not
27773        // show within the <textarea> until it has been focused and blurred again.
27774        // https://github.com/facebook/react/issues/6731#issuecomment-254874553
27775        var canSetTextContent = tag !== 'textarea' || nextProp !== '';
27776
27777        if (canSetTextContent) {
27778          setTextContent(domElement, nextProp);
27779        }
27780      } else if (typeof nextProp === 'number') {
27781        setTextContent(domElement, '' + nextProp);
27782      }
27783    } else if ( propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING) ; else if (propKey === AUTOFOCUS) ; else if (registrationNameModules.hasOwnProperty(propKey)) {
27784      if (nextProp != null) {
27785        if ( typeof nextProp !== 'function') {
27786          warnForInvalidEventListener(propKey, nextProp);
27787        }
27788
27789        ensureListeningTo(rootContainerElement, propKey);
27790      }
27791    } else if (nextProp != null) {
27792      setValueForProperty(domElement, propKey, nextProp, isCustomComponentTag);
27793    }
27794  }
27795}
27796
27797function updateDOMProperties(domElement, updatePayload, wasCustomComponentTag, isCustomComponentTag) {
27798  // TODO: Handle wasCustomComponentTag
27799  for (var i = 0; i < updatePayload.length; i += 2) {
27800    var propKey = updatePayload[i];
27801    var propValue = updatePayload[i + 1];
27802
27803    if (propKey === STYLE) {
27804      setValueForStyles(domElement, propValue);
27805    } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {
27806      setInnerHTML(domElement, propValue);
27807    } else if (propKey === CHILDREN) {
27808      setTextContent(domElement, propValue);
27809    } else {
27810      setValueForProperty(domElement, propKey, propValue, isCustomComponentTag);
27811    }
27812  }
27813}
27814
27815function createElement(type, props, rootContainerElement, parentNamespace) {
27816  var isCustomComponentTag; // We create tags in the namespace of their parent container, except HTML
27817  // tags get no namespace.
27818
27819  var ownerDocument = getOwnerDocumentFromRootContainer(rootContainerElement);
27820  var domElement;
27821  var namespaceURI = parentNamespace;
27822
27823  if (namespaceURI === HTML_NAMESPACE$1) {
27824    namespaceURI = getIntrinsicNamespace(type);
27825  }
27826
27827  if (namespaceURI === HTML_NAMESPACE$1) {
27828    {
27829      isCustomComponentTag = isCustomComponent(type, props); // Should this check be gated by parent namespace? Not sure we want to
27830      // allow <SVG> or <mATH>.
27831
27832      if (!isCustomComponentTag && type !== type.toLowerCase()) {
27833        error('<%s /> is using incorrect casing. ' + 'Use PascalCase for React components, ' + 'or lowercase for HTML elements.', type);
27834      }
27835    }
27836
27837    if (type === 'script') {
27838      // Create the script via .innerHTML so its "parser-inserted" flag is
27839      // set to true and it does not execute
27840      var div = ownerDocument.createElement('div');
27841
27842      div.innerHTML = '<script><' + '/script>'; // eslint-disable-line
27843      // This is guaranteed to yield a script element.
27844
27845      var firstChild = div.firstChild;
27846      domElement = div.removeChild(firstChild);
27847    } else if (typeof props.is === 'string') {
27848      // $FlowIssue `createElement` should be updated for Web Components
27849      domElement = ownerDocument.createElement(type, {
27850        is: props.is
27851      });
27852    } else {
27853      // Separate else branch instead of using `props.is || undefined` above because of a Firefox bug.
27854      // See discussion in https://github.com/facebook/react/pull/6896
27855      // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240
27856      domElement = ownerDocument.createElement(type); // Normally attributes are assigned in `setInitialDOMProperties`, however the `multiple` and `size`
27857      // attributes on `select`s needs to be added before `option`s are inserted.
27858      // This prevents:
27859      // - a bug where the `select` does not scroll to the correct option because singular
27860      //  `select` elements automatically pick the first item #13222
27861      // - a bug where the `select` set the first item as selected despite the `size` attribute #14239
27862      // See https://github.com/facebook/react/issues/13222
27863      // and https://github.com/facebook/react/issues/14239
27864
27865      if (type === 'select') {
27866        var node = domElement;
27867
27868        if (props.multiple) {
27869          node.multiple = true;
27870        } else if (props.size) {
27871          // Setting a size greater than 1 causes a select to behave like `multiple=true`, where
27872          // it is possible that no option is selected.
27873          //
27874          // This is only necessary when a select in "single selection mode".
27875          node.size = props.size;
27876        }
27877      }
27878    }
27879  } else {
27880    domElement = ownerDocument.createElementNS(namespaceURI, type);
27881  }
27882
27883  {
27884    if (namespaceURI === HTML_NAMESPACE$1) {
27885      if (!isCustomComponentTag && Object.prototype.toString.call(domElement) === '[object HTMLUnknownElement]' && !Object.prototype.hasOwnProperty.call(warnedUnknownTags, type)) {
27886        warnedUnknownTags[type] = true;
27887
27888        error('The tag <%s> is unrecognized in this browser. ' + 'If you meant to render a React component, start its name with ' + 'an uppercase letter.', type);
27889      }
27890    }
27891  }
27892
27893  return domElement;
27894}
27895function createTextNode(text, rootContainerElement) {
27896  return getOwnerDocumentFromRootContainer(rootContainerElement).createTextNode(text);
27897}
27898function setInitialProperties(domElement, tag, rawProps, rootContainerElement) {
27899  var isCustomComponentTag = isCustomComponent(tag, rawProps);
27900
27901  {
27902    validatePropertiesInDevelopment(tag, rawProps);
27903  } // TODO: Make sure that we check isMounted before firing any of these events.
27904
27905
27906  var props;
27907
27908  switch (tag) {
27909    case 'iframe':
27910    case 'object':
27911    case 'embed':
27912      trapBubbledEvent(TOP_LOAD, domElement);
27913      props = rawProps;
27914      break;
27915
27916    case 'video':
27917    case 'audio':
27918      // Create listener for each media event
27919      for (var i = 0; i < mediaEventTypes.length; i++) {
27920        trapBubbledEvent(mediaEventTypes[i], domElement);
27921      }
27922
27923      props = rawProps;
27924      break;
27925
27926    case 'source':
27927      trapBubbledEvent(TOP_ERROR, domElement);
27928      props = rawProps;
27929      break;
27930
27931    case 'img':
27932    case 'image':
27933    case 'link':
27934      trapBubbledEvent(TOP_ERROR, domElement);
27935      trapBubbledEvent(TOP_LOAD, domElement);
27936      props = rawProps;
27937      break;
27938
27939    case 'form':
27940      trapBubbledEvent(TOP_RESET, domElement);
27941      trapBubbledEvent(TOP_SUBMIT, domElement);
27942      props = rawProps;
27943      break;
27944
27945    case 'details':
27946      trapBubbledEvent(TOP_TOGGLE, domElement);
27947      props = rawProps;
27948      break;
27949
27950    case 'input':
27951      initWrapperState(domElement, rawProps);
27952      props = getHostProps(domElement, rawProps);
27953      trapBubbledEvent(TOP_INVALID, domElement); // For controlled components we always need to ensure we're listening
27954      // to onChange. Even if there is no listener.
27955
27956      ensureListeningTo(rootContainerElement, 'onChange');
27957      break;
27958
27959    case 'option':
27960      validateProps(domElement, rawProps);
27961      props = getHostProps$1(domElement, rawProps);
27962      break;
27963
27964    case 'select':
27965      initWrapperState$1(domElement, rawProps);
27966      props = getHostProps$2(domElement, rawProps);
27967      trapBubbledEvent(TOP_INVALID, domElement); // For controlled components we always need to ensure we're listening
27968      // to onChange. Even if there is no listener.
27969
27970      ensureListeningTo(rootContainerElement, 'onChange');
27971      break;
27972
27973    case 'textarea':
27974      initWrapperState$2(domElement, rawProps);
27975      props = getHostProps$3(domElement, rawProps);
27976      trapBubbledEvent(TOP_INVALID, domElement); // For controlled components we always need to ensure we're listening
27977      // to onChange. Even if there is no listener.
27978
27979      ensureListeningTo(rootContainerElement, 'onChange');
27980      break;
27981
27982    default:
27983      props = rawProps;
27984  }
27985
27986  assertValidProps(tag, props);
27987  setInitialDOMProperties(tag, domElement, rootContainerElement, props, isCustomComponentTag);
27988
27989  switch (tag) {
27990    case 'input':
27991      // TODO: Make sure we check if this is still unmounted or do any clean
27992      // up necessary since we never stop tracking anymore.
27993      track(domElement);
27994      postMountWrapper(domElement, rawProps, false);
27995      break;
27996
27997    case 'textarea':
27998      // TODO: Make sure we check if this is still unmounted or do any clean
27999      // up necessary since we never stop tracking anymore.
28000      track(domElement);
28001      postMountWrapper$3(domElement);
28002      break;
28003
28004    case 'option':
28005      postMountWrapper$1(domElement, rawProps);
28006      break;
28007
28008    case 'select':
28009      postMountWrapper$2(domElement, rawProps);
28010      break;
28011
28012    default:
28013      if (typeof props.onClick === 'function') {
28014        // TODO: This cast may not be sound for SVG, MathML or custom elements.
28015        trapClickOnNonInteractiveElement(domElement);
28016      }
28017
28018      break;
28019  }
28020} // Calculate the diff between the two objects.
28021
28022function diffProperties(domElement, tag, lastRawProps, nextRawProps, rootContainerElement) {
28023  {
28024    validatePropertiesInDevelopment(tag, nextRawProps);
28025  }
28026
28027  var updatePayload = null;
28028  var lastProps;
28029  var nextProps;
28030
28031  switch (tag) {
28032    case 'input':
28033      lastProps = getHostProps(domElement, lastRawProps);
28034      nextProps = getHostProps(domElement, nextRawProps);
28035      updatePayload = [];
28036      break;
28037
28038    case 'option':
28039      lastProps = getHostProps$1(domElement, lastRawProps);
28040      nextProps = getHostProps$1(domElement, nextRawProps);
28041      updatePayload = [];
28042      break;
28043
28044    case 'select':
28045      lastProps = getHostProps$2(domElement, lastRawProps);
28046      nextProps = getHostProps$2(domElement, nextRawProps);
28047      updatePayload = [];
28048      break;
28049
28050    case 'textarea':
28051      lastProps = getHostProps$3(domElement, lastRawProps);
28052      nextProps = getHostProps$3(domElement, nextRawProps);
28053      updatePayload = [];
28054      break;
28055
28056    default:
28057      lastProps = lastRawProps;
28058      nextProps = nextRawProps;
28059
28060      if (typeof lastProps.onClick !== 'function' && typeof nextProps.onClick === 'function') {
28061        // TODO: This cast may not be sound for SVG, MathML or custom elements.
28062        trapClickOnNonInteractiveElement(domElement);
28063      }
28064
28065      break;
28066  }
28067
28068  assertValidProps(tag, nextProps);
28069  var propKey;
28070  var styleName;
28071  var styleUpdates = null;
28072
28073  for (propKey in lastProps) {
28074    if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {
28075      continue;
28076    }
28077
28078    if (propKey === STYLE) {
28079      var lastStyle = lastProps[propKey];
28080
28081      for (styleName in lastStyle) {
28082        if (lastStyle.hasOwnProperty(styleName)) {
28083          if (!styleUpdates) {
28084            styleUpdates = {};
28085          }
28086
28087          styleUpdates[styleName] = '';
28088        }
28089      }
28090    } else if (propKey === DANGEROUSLY_SET_INNER_HTML || propKey === CHILDREN) ; else if ( propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING) ; else if (propKey === AUTOFOCUS) ; else if (registrationNameModules.hasOwnProperty(propKey)) {
28091      // This is a special case. If any listener updates we need to ensure
28092      // that the "current" fiber pointer gets updated so we need a commit
28093      // to update this element.
28094      if (!updatePayload) {
28095        updatePayload = [];
28096      }
28097    } else {
28098      // For all other deleted properties we add it to the queue. We use
28099      // the whitelist in the commit phase instead.
28100      (updatePayload = updatePayload || []).push(propKey, null);
28101    }
28102  }
28103
28104  for (propKey in nextProps) {
28105    var nextProp = nextProps[propKey];
28106    var lastProp = lastProps != null ? lastProps[propKey] : undefined;
28107
28108    if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) {
28109      continue;
28110    }
28111
28112    if (propKey === STYLE) {
28113      {
28114        if (nextProp) {
28115          // Freeze the next style object so that we can assume it won't be
28116          // mutated. We have already warned for this in the past.
28117          Object.freeze(nextProp);
28118        }
28119      }
28120
28121      if (lastProp) {
28122        // Unset styles on `lastProp` but not on `nextProp`.
28123        for (styleName in lastProp) {
28124          if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {
28125            if (!styleUpdates) {
28126              styleUpdates = {};
28127            }
28128
28129            styleUpdates[styleName] = '';
28130          }
28131        } // Update styles that changed since `lastProp`.
28132
28133
28134        for (styleName in nextProp) {
28135          if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {
28136            if (!styleUpdates) {
28137              styleUpdates = {};
28138            }
28139
28140            styleUpdates[styleName] = nextProp[styleName];
28141          }
28142        }
28143      } else {
28144        // Relies on `updateStylesByID` not mutating `styleUpdates`.
28145        if (!styleUpdates) {
28146          if (!updatePayload) {
28147            updatePayload = [];
28148          }
28149
28150          updatePayload.push(propKey, styleUpdates);
28151        }
28152
28153        styleUpdates = nextProp;
28154      }
28155    } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {
28156      var nextHtml = nextProp ? nextProp[HTML$1] : undefined;
28157      var lastHtml = lastProp ? lastProp[HTML$1] : undefined;
28158
28159      if (nextHtml != null) {
28160        if (lastHtml !== nextHtml) {
28161          (updatePayload = updatePayload || []).push(propKey, nextHtml);
28162        }
28163      }
28164    } else if (propKey === CHILDREN) {
28165      if (lastProp !== nextProp && (typeof nextProp === 'string' || typeof nextProp === 'number')) {
28166        (updatePayload = updatePayload || []).push(propKey, '' + nextProp);
28167      }
28168    } else if ( propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING) ; else if (registrationNameModules.hasOwnProperty(propKey)) {
28169      if (nextProp != null) {
28170        // We eagerly listen to this even though we haven't committed yet.
28171        if ( typeof nextProp !== 'function') {
28172          warnForInvalidEventListener(propKey, nextProp);
28173        }
28174
28175        ensureListeningTo(rootContainerElement, propKey);
28176      }
28177
28178      if (!updatePayload && lastProp !== nextProp) {
28179        // This is a special case. If any listener updates we need to ensure
28180        // that the "current" props pointer gets updated so we need a commit
28181        // to update this element.
28182        updatePayload = [];
28183      }
28184    } else {
28185      // For any other property we always add it to the queue and then we
28186      // filter it out using the whitelist during the commit.
28187      (updatePayload = updatePayload || []).push(propKey, nextProp);
28188    }
28189  }
28190
28191  if (styleUpdates) {
28192    {
28193      validateShorthandPropertyCollisionInDev(styleUpdates, nextProps[STYLE]);
28194    }
28195
28196    (updatePayload = updatePayload || []).push(STYLE, styleUpdates);
28197  }
28198
28199  return updatePayload;
28200} // Apply the diff.
28201
28202function updateProperties(domElement, updatePayload, tag, lastRawProps, nextRawProps) {
28203  // Update checked *before* name.
28204  // In the middle of an update, it is possible to have multiple checked.
28205  // When a checked radio tries to change name, browser makes another radio's checked false.
28206  if (tag === 'input' && nextRawProps.type === 'radio' && nextRawProps.name != null) {
28207    updateChecked(domElement, nextRawProps);
28208  }
28209
28210  var wasCustomComponentTag = isCustomComponent(tag, lastRawProps);
28211  var isCustomComponentTag = isCustomComponent(tag, nextRawProps); // Apply the diff.
28212
28213  updateDOMProperties(domElement, updatePayload, wasCustomComponentTag, isCustomComponentTag); // TODO: Ensure that an update gets scheduled if any of the special props
28214  // changed.
28215
28216  switch (tag) {
28217    case 'input':
28218      // Update the wrapper around inputs *after* updating props. This has to
28219      // happen after `updateDOMProperties`. Otherwise HTML5 input validations
28220      // raise warnings and prevent the new value from being assigned.
28221      updateWrapper(domElement, nextRawProps);
28222      break;
28223
28224    case 'textarea':
28225      updateWrapper$1(domElement, nextRawProps);
28226      break;
28227
28228    case 'select':
28229      // <select> value update needs to occur after <option> children
28230      // reconciliation
28231      postUpdateWrapper(domElement, nextRawProps);
28232      break;
28233  }
28234}
28235
28236function getPossibleStandardName(propName) {
28237  {
28238    var lowerCasedName = propName.toLowerCase();
28239
28240    if (!possibleStandardNames.hasOwnProperty(lowerCasedName)) {
28241      return null;
28242    }
28243
28244    return possibleStandardNames[lowerCasedName] || null;
28245  }
28246}
28247
28248function diffHydratedProperties(domElement, tag, rawProps, parentNamespace, rootContainerElement) {
28249  var isCustomComponentTag;
28250  var extraAttributeNames;
28251
28252  {
28253    suppressHydrationWarning = rawProps[SUPPRESS_HYDRATION_WARNING] === true;
28254    isCustomComponentTag = isCustomComponent(tag, rawProps);
28255    validatePropertiesInDevelopment(tag, rawProps);
28256  } // TODO: Make sure that we check isMounted before firing any of these events.
28257
28258
28259  switch (tag) {
28260    case 'iframe':
28261    case 'object':
28262    case 'embed':
28263      trapBubbledEvent(TOP_LOAD, domElement);
28264      break;
28265
28266    case 'video':
28267    case 'audio':
28268      // Create listener for each media event
28269      for (var i = 0; i < mediaEventTypes.length; i++) {
28270        trapBubbledEvent(mediaEventTypes[i], domElement);
28271      }
28272
28273      break;
28274
28275    case 'source':
28276      trapBubbledEvent(TOP_ERROR, domElement);
28277      break;
28278
28279    case 'img':
28280    case 'image':
28281    case 'link':
28282      trapBubbledEvent(TOP_ERROR, domElement);
28283      trapBubbledEvent(TOP_LOAD, domElement);
28284      break;
28285
28286    case 'form':
28287      trapBubbledEvent(TOP_RESET, domElement);
28288      trapBubbledEvent(TOP_SUBMIT, domElement);
28289      break;
28290
28291    case 'details':
28292      trapBubbledEvent(TOP_TOGGLE, domElement);
28293      break;
28294
28295    case 'input':
28296      initWrapperState(domElement, rawProps);
28297      trapBubbledEvent(TOP_INVALID, domElement); // For controlled components we always need to ensure we're listening
28298      // to onChange. Even if there is no listener.
28299
28300      ensureListeningTo(rootContainerElement, 'onChange');
28301      break;
28302
28303    case 'option':
28304      validateProps(domElement, rawProps);
28305      break;
28306
28307    case 'select':
28308      initWrapperState$1(domElement, rawProps);
28309      trapBubbledEvent(TOP_INVALID, domElement); // For controlled components we always need to ensure we're listening
28310      // to onChange. Even if there is no listener.
28311
28312      ensureListeningTo(rootContainerElement, 'onChange');
28313      break;
28314
28315    case 'textarea':
28316      initWrapperState$2(domElement, rawProps);
28317      trapBubbledEvent(TOP_INVALID, domElement); // For controlled components we always need to ensure we're listening
28318      // to onChange. Even if there is no listener.
28319
28320      ensureListeningTo(rootContainerElement, 'onChange');
28321      break;
28322  }
28323
28324  assertValidProps(tag, rawProps);
28325
28326  {
28327    extraAttributeNames = new Set();
28328    var attributes = domElement.attributes;
28329
28330    for (var _i = 0; _i < attributes.length; _i++) {
28331      var name = attributes[_i].name.toLowerCase();
28332
28333      switch (name) {
28334        // Built-in SSR attribute is whitelisted
28335        case 'data-reactroot':
28336          break;
28337        // Controlled attributes are not validated
28338        // TODO: Only ignore them on controlled tags.
28339
28340        case 'value':
28341          break;
28342
28343        case 'checked':
28344          break;
28345
28346        case 'selected':
28347          break;
28348
28349        default:
28350          // Intentionally use the original name.
28351          // See discussion in https://github.com/facebook/react/pull/10676.
28352          extraAttributeNames.add(attributes[_i].name);
28353      }
28354    }
28355  }
28356
28357  var updatePayload = null;
28358
28359  for (var propKey in rawProps) {
28360    if (!rawProps.hasOwnProperty(propKey)) {
28361      continue;
28362    }
28363
28364    var nextProp = rawProps[propKey];
28365
28366    if (propKey === CHILDREN) {
28367      // For text content children we compare against textContent. This
28368      // might match additional HTML that is hidden when we read it using
28369      // textContent. E.g. "foo" will match "f<span>oo</span>" but that still
28370      // satisfies our requirement. Our requirement is not to produce perfect
28371      // HTML and attributes. Ideally we should preserve structure but it's
28372      // ok not to if the visible content is still enough to indicate what
28373      // even listeners these nodes might be wired up to.
28374      // TODO: Warn if there is more than a single textNode as a child.
28375      // TODO: Should we use domElement.firstChild.nodeValue to compare?
28376      if (typeof nextProp === 'string') {
28377        if (domElement.textContent !== nextProp) {
28378          if ( !suppressHydrationWarning) {
28379            warnForTextDifference(domElement.textContent, nextProp);
28380          }
28381
28382          updatePayload = [CHILDREN, nextProp];
28383        }
28384      } else if (typeof nextProp === 'number') {
28385        if (domElement.textContent !== '' + nextProp) {
28386          if ( !suppressHydrationWarning) {
28387            warnForTextDifference(domElement.textContent, nextProp);
28388          }
28389
28390          updatePayload = [CHILDREN, '' + nextProp];
28391        }
28392      }
28393    } else if (registrationNameModules.hasOwnProperty(propKey)) {
28394      if (nextProp != null) {
28395        if ( typeof nextProp !== 'function') {
28396          warnForInvalidEventListener(propKey, nextProp);
28397        }
28398
28399        ensureListeningTo(rootContainerElement, propKey);
28400      }
28401    } else if ( // Convince Flow we've calculated it (it's DEV-only in this method.)
28402    typeof isCustomComponentTag === 'boolean') {
28403      // Validate that the properties correspond to their expected values.
28404      var serverValue = void 0;
28405      var propertyInfo = getPropertyInfo(propKey);
28406
28407      if (suppressHydrationWarning) ; else if ( propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING || // Controlled attributes are not validated
28408      // TODO: Only ignore them on controlled tags.
28409      propKey === 'value' || propKey === 'checked' || propKey === 'selected') ; else if (propKey === DANGEROUSLY_SET_INNER_HTML) {
28410        var serverHTML = domElement.innerHTML;
28411        var nextHtml = nextProp ? nextProp[HTML$1] : undefined;
28412        var expectedHTML = normalizeHTML(domElement, nextHtml != null ? nextHtml : '');
28413
28414        if (expectedHTML !== serverHTML) {
28415          warnForPropDifference(propKey, serverHTML, expectedHTML);
28416        }
28417      } else if (propKey === STYLE) {
28418        // $FlowFixMe - Should be inferred as not undefined.
28419        extraAttributeNames.delete(propKey);
28420
28421        if (canDiffStyleForHydrationWarning) {
28422          var expectedStyle = createDangerousStringForStyles(nextProp);
28423          serverValue = domElement.getAttribute('style');
28424
28425          if (expectedStyle !== serverValue) {
28426            warnForPropDifference(propKey, serverValue, expectedStyle);
28427          }
28428        }
28429      } else if (isCustomComponentTag) {
28430        // $FlowFixMe - Should be inferred as not undefined.
28431        extraAttributeNames.delete(propKey.toLowerCase());
28432        serverValue = getValueForAttribute(domElement, propKey, nextProp);
28433
28434        if (nextProp !== serverValue) {
28435          warnForPropDifference(propKey, serverValue, nextProp);
28436        }
28437      } else if (!shouldIgnoreAttribute(propKey, propertyInfo, isCustomComponentTag) && !shouldRemoveAttribute(propKey, nextProp, propertyInfo, isCustomComponentTag)) {
28438        var isMismatchDueToBadCasing = false;
28439
28440        if (propertyInfo !== null) {
28441          // $FlowFixMe - Should be inferred as not undefined.
28442          extraAttributeNames.delete(propertyInfo.attributeName);
28443          serverValue = getValueForProperty(domElement, propKey, nextProp, propertyInfo);
28444        } else {
28445          var ownNamespace = parentNamespace;
28446
28447          if (ownNamespace === HTML_NAMESPACE$1) {
28448            ownNamespace = getIntrinsicNamespace(tag);
28449          }
28450
28451          if (ownNamespace === HTML_NAMESPACE$1) {
28452            // $FlowFixMe - Should be inferred as not undefined.
28453            extraAttributeNames.delete(propKey.toLowerCase());
28454          } else {
28455            var standardName = getPossibleStandardName(propKey);
28456
28457            if (standardName !== null && standardName !== propKey) {
28458              // If an SVG prop is supplied with bad casing, it will
28459              // be successfully parsed from HTML, but will produce a mismatch
28460              // (and would be incorrectly rendered on the client).
28461              // However, we already warn about bad casing elsewhere.
28462              // So we'll skip the misleading extra mismatch warning in this case.
28463              isMismatchDueToBadCasing = true; // $FlowFixMe - Should be inferred as not undefined.
28464
28465              extraAttributeNames.delete(standardName);
28466            } // $FlowFixMe - Should be inferred as not undefined.
28467
28468
28469            extraAttributeNames.delete(propKey);
28470          }
28471
28472          serverValue = getValueForAttribute(domElement, propKey, nextProp);
28473        }
28474
28475        if (nextProp !== serverValue && !isMismatchDueToBadCasing) {
28476          warnForPropDifference(propKey, serverValue, nextProp);
28477        }
28478      }
28479    }
28480  }
28481
28482  {
28483    // $FlowFixMe - Should be inferred as not undefined.
28484    if (extraAttributeNames.size > 0 && !suppressHydrationWarning) {
28485      // $FlowFixMe - Should be inferred as not undefined.
28486      warnForExtraAttributes(extraAttributeNames);
28487    }
28488  }
28489
28490  switch (tag) {
28491    case 'input':
28492      // TODO: Make sure we check if this is still unmounted or do any clean
28493      // up necessary since we never stop tracking anymore.
28494      track(domElement);
28495      postMountWrapper(domElement, rawProps, true);
28496      break;
28497
28498    case 'textarea':
28499      // TODO: Make sure we check if this is still unmounted or do any clean
28500      // up necessary since we never stop tracking anymore.
28501      track(domElement);
28502      postMountWrapper$3(domElement);
28503      break;
28504
28505    case 'select':
28506    case 'option':
28507      // For input and textarea we current always set the value property at
28508      // post mount to force it to diverge from attributes. However, for
28509      // option and select we don't quite do the same thing and select
28510      // is not resilient to the DOM state changing so we don't do that here.
28511      // TODO: Consider not doing this for input and textarea.
28512      break;
28513
28514    default:
28515      if (typeof rawProps.onClick === 'function') {
28516        // TODO: This cast may not be sound for SVG, MathML or custom elements.
28517        trapClickOnNonInteractiveElement(domElement);
28518      }
28519
28520      break;
28521  }
28522
28523  return updatePayload;
28524}
28525function diffHydratedText(textNode, text) {
28526  var isDifferent = textNode.nodeValue !== text;
28527  return isDifferent;
28528}
28529function warnForUnmatchedText(textNode, text) {
28530  {
28531    warnForTextDifference(textNode.nodeValue, text);
28532  }
28533}
28534function warnForDeletedHydratableElement(parentNode, child) {
28535  {
28536    if (didWarnInvalidHydration) {
28537      return;
28538    }
28539
28540    didWarnInvalidHydration = true;
28541
28542    error('Did not expect server HTML to contain a <%s> in <%s>.', child.nodeName.toLowerCase(), parentNode.nodeName.toLowerCase());
28543  }
28544}
28545function warnForDeletedHydratableText(parentNode, child) {
28546  {
28547    if (didWarnInvalidHydration) {
28548      return;
28549    }
28550
28551    didWarnInvalidHydration = true;
28552
28553    error('Did not expect server HTML to contain the text node "%s" in <%s>.', child.nodeValue, parentNode.nodeName.toLowerCase());
28554  }
28555}
28556function warnForInsertedHydratedElement(parentNode, tag, props) {
28557  {
28558    if (didWarnInvalidHydration) {
28559      return;
28560    }
28561
28562    didWarnInvalidHydration = true;
28563
28564    error('Expected server HTML to contain a matching <%s> in <%s>.', tag, parentNode.nodeName.toLowerCase());
28565  }
28566}
28567function warnForInsertedHydratedText(parentNode, text) {
28568  {
28569    if (text === '') {
28570      // We expect to insert empty text nodes since they're not represented in
28571      // the HTML.
28572      // TODO: Remove this special case if we can just avoid inserting empty
28573      // text nodes.
28574      return;
28575    }
28576
28577    if (didWarnInvalidHydration) {
28578      return;
28579    }
28580
28581    didWarnInvalidHydration = true;
28582
28583    error('Expected server HTML to contain a matching text node for "%s" in <%s>.', text, parentNode.nodeName.toLowerCase());
28584  }
28585}
28586function restoreControlledState$3(domElement, tag, props) {
28587  switch (tag) {
28588    case 'input':
28589      restoreControlledState(domElement, props);
28590      return;
28591
28592    case 'textarea':
28593      restoreControlledState$2(domElement, props);
28594      return;
28595
28596    case 'select':
28597      restoreControlledState$1(domElement, props);
28598      return;
28599  }
28600}
28601
28602function getActiveElement(doc) {
28603  doc = doc || (typeof document !== 'undefined' ? document : undefined);
28604
28605  if (typeof doc === 'undefined') {
28606    return null;
28607  }
28608
28609  try {
28610    return doc.activeElement || doc.body;
28611  } catch (e) {
28612    return doc.body;
28613  }
28614}
28615
28616/**
28617 * Given any node return the first leaf node without children.
28618 *
28619 * @param {DOMElement|DOMTextNode} node
28620 * @return {DOMElement|DOMTextNode}
28621 */
28622
28623function getLeafNode(node) {
28624  while (node && node.firstChild) {
28625    node = node.firstChild;
28626  }
28627
28628  return node;
28629}
28630/**
28631 * Get the next sibling within a container. This will walk up the
28632 * DOM if a node's siblings have been exhausted.
28633 *
28634 * @param {DOMElement|DOMTextNode} node
28635 * @return {?DOMElement|DOMTextNode}
28636 */
28637
28638
28639function getSiblingNode(node) {
28640  while (node) {
28641    if (node.nextSibling) {
28642      return node.nextSibling;
28643    }
28644
28645    node = node.parentNode;
28646  }
28647}
28648/**
28649 * Get object describing the nodes which contain characters at offset.
28650 *
28651 * @param {DOMElement|DOMTextNode} root
28652 * @param {number} offset
28653 * @return {?object}
28654 */
28655
28656
28657function getNodeForCharacterOffset(root, offset) {
28658  var node = getLeafNode(root);
28659  var nodeStart = 0;
28660  var nodeEnd = 0;
28661
28662  while (node) {
28663    if (node.nodeType === TEXT_NODE) {
28664      nodeEnd = nodeStart + node.textContent.length;
28665
28666      if (nodeStart <= offset && nodeEnd >= offset) {
28667        return {
28668          node: node,
28669          offset: offset - nodeStart
28670        };
28671      }
28672
28673      nodeStart = nodeEnd;
28674    }
28675
28676    node = getLeafNode(getSiblingNode(node));
28677  }
28678}
28679
28680/**
28681 * @param {DOMElement} outerNode
28682 * @return {?object}
28683 */
28684
28685function getOffsets(outerNode) {
28686  var ownerDocument = outerNode.ownerDocument;
28687  var win = ownerDocument && ownerDocument.defaultView || window;
28688  var selection = win.getSelection && win.getSelection();
28689
28690  if (!selection || selection.rangeCount === 0) {
28691    return null;
28692  }
28693
28694  var anchorNode = selection.anchorNode,
28695      anchorOffset = selection.anchorOffset,
28696      focusNode = selection.focusNode,
28697      focusOffset = selection.focusOffset; // In Firefox, anchorNode and focusNode can be "anonymous divs", e.g. the
28698  // up/down buttons on an <input type="number">. Anonymous divs do not seem to
28699  // expose properties, triggering a "Permission denied error" if any of its
28700  // properties are accessed. The only seemingly possible way to avoid erroring
28701  // is to access a property that typically works for non-anonymous divs and
28702  // catch any error that may otherwise arise. See
28703  // https://bugzilla.mozilla.org/show_bug.cgi?id=208427
28704
28705  try {
28706    /* eslint-disable no-unused-expressions */
28707    anchorNode.nodeType;
28708    focusNode.nodeType;
28709    /* eslint-enable no-unused-expressions */
28710  } catch (e) {
28711    return null;
28712  }
28713
28714  return getModernOffsetsFromPoints(outerNode, anchorNode, anchorOffset, focusNode, focusOffset);
28715}
28716/**
28717 * Returns {start, end} where `start` is the character/codepoint index of
28718 * (anchorNode, anchorOffset) within the textContent of `outerNode`, and
28719 * `end` is the index of (focusNode, focusOffset).
28720 *
28721 * Returns null if you pass in garbage input but we should probably just crash.
28722 *
28723 * Exported only for testing.
28724 */
28725
28726function getModernOffsetsFromPoints(outerNode, anchorNode, anchorOffset, focusNode, focusOffset) {
28727  var length = 0;
28728  var start = -1;
28729  var end = -1;
28730  var indexWithinAnchor = 0;
28731  var indexWithinFocus = 0;
28732  var node = outerNode;
28733  var parentNode = null;
28734
28735  outer: while (true) {
28736    var next = null;
28737
28738    while (true) {
28739      if (node === anchorNode && (anchorOffset === 0 || node.nodeType === TEXT_NODE)) {
28740        start = length + anchorOffset;
28741      }
28742
28743      if (node === focusNode && (focusOffset === 0 || node.nodeType === TEXT_NODE)) {
28744        end = length + focusOffset;
28745      }
28746
28747      if (node.nodeType === TEXT_NODE) {
28748        length += node.nodeValue.length;
28749      }
28750
28751      if ((next = node.firstChild) === null) {
28752        break;
28753      } // Moving from `node` to its first child `next`.
28754
28755
28756      parentNode = node;
28757      node = next;
28758    }
28759
28760    while (true) {
28761      if (node === outerNode) {
28762        // If `outerNode` has children, this is always the second time visiting
28763        // it. If it has no children, this is still the first loop, and the only
28764        // valid selection is anchorNode and focusNode both equal to this node
28765        // and both offsets 0, in which case we will have handled above.
28766        break outer;
28767      }
28768
28769      if (parentNode === anchorNode && ++indexWithinAnchor === anchorOffset) {
28770        start = length;
28771      }
28772
28773      if (parentNode === focusNode && ++indexWithinFocus === focusOffset) {
28774        end = length;
28775      }
28776
28777      if ((next = node.nextSibling) !== null) {
28778        break;
28779      }
28780
28781      node = parentNode;
28782      parentNode = node.parentNode;
28783    } // Moving from `node` to its next sibling `next`.
28784
28785
28786    node = next;
28787  }
28788
28789  if (start === -1 || end === -1) {
28790    // This should never happen. (Would happen if the anchor/focus nodes aren't
28791    // actually inside the passed-in node.)
28792    return null;
28793  }
28794
28795  return {
28796    start: start,
28797    end: end
28798  };
28799}
28800/**
28801 * In modern non-IE browsers, we can support both forward and backward
28802 * selections.
28803 *
28804 * Note: IE10+ supports the Selection object, but it does not support
28805 * the `extend` method, which means that even in modern IE, it's not possible
28806 * to programmatically create a backward selection. Thus, for all IE
28807 * versions, we use the old IE API to create our selections.
28808 *
28809 * @param {DOMElement|DOMTextNode} node
28810 * @param {object} offsets
28811 */
28812
28813function setOffsets(node, offsets) {
28814  var doc = node.ownerDocument || document;
28815  var win = doc && doc.defaultView || window; // Edge fails with "Object expected" in some scenarios.
28816  // (For instance: TinyMCE editor used in a list component that supports pasting to add more,
28817  // fails when pasting 100+ items)
28818
28819  if (!win.getSelection) {
28820    return;
28821  }
28822
28823  var selection = win.getSelection();
28824  var length = node.textContent.length;
28825  var start = Math.min(offsets.start, length);
28826  var end = offsets.end === undefined ? start : Math.min(offsets.end, length); // IE 11 uses modern selection, but doesn't support the extend method.
28827  // Flip backward selections, so we can set with a single range.
28828
28829  if (!selection.extend && start > end) {
28830    var temp = end;
28831    end = start;
28832    start = temp;
28833  }
28834
28835  var startMarker = getNodeForCharacterOffset(node, start);
28836  var endMarker = getNodeForCharacterOffset(node, end);
28837
28838  if (startMarker && endMarker) {
28839    if (selection.rangeCount === 1 && selection.anchorNode === startMarker.node && selection.anchorOffset === startMarker.offset && selection.focusNode === endMarker.node && selection.focusOffset === endMarker.offset) {
28840      return;
28841    }
28842
28843    var range = doc.createRange();
28844    range.setStart(startMarker.node, startMarker.offset);
28845    selection.removeAllRanges();
28846
28847    if (start > end) {
28848      selection.addRange(range);
28849      selection.extend(endMarker.node, endMarker.offset);
28850    } else {
28851      range.setEnd(endMarker.node, endMarker.offset);
28852      selection.addRange(range);
28853    }
28854  }
28855}
28856
28857function isTextNode(node) {
28858  return node && node.nodeType === TEXT_NODE;
28859}
28860
28861function containsNode(outerNode, innerNode) {
28862  if (!outerNode || !innerNode) {
28863    return false;
28864  } else if (outerNode === innerNode) {
28865    return true;
28866  } else if (isTextNode(outerNode)) {
28867    return false;
28868  } else if (isTextNode(innerNode)) {
28869    return containsNode(outerNode, innerNode.parentNode);
28870  } else if ('contains' in outerNode) {
28871    return outerNode.contains(innerNode);
28872  } else if (outerNode.compareDocumentPosition) {
28873    return !!(outerNode.compareDocumentPosition(innerNode) & 16);
28874  } else {
28875    return false;
28876  }
28877}
28878
28879function isInDocument(node) {
28880  return node && node.ownerDocument && containsNode(node.ownerDocument.documentElement, node);
28881}
28882
28883function isSameOriginFrame(iframe) {
28884  try {
28885    // Accessing the contentDocument of a HTMLIframeElement can cause the browser
28886    // to throw, e.g. if it has a cross-origin src attribute.
28887    // Safari will show an error in the console when the access results in "Blocked a frame with origin". e.g:
28888    // iframe.contentDocument.defaultView;
28889    // A safety way is to access one of the cross origin properties: Window or Location
28890    // Which might result in "SecurityError" DOM Exception and it is compatible to Safari.
28891    // https://html.spec.whatwg.org/multipage/browsers.html#integration-with-idl
28892    return typeof iframe.contentWindow.location.href === 'string';
28893  } catch (err) {
28894    return false;
28895  }
28896}
28897
28898function getActiveElementDeep() {
28899  var win = window;
28900  var element = getActiveElement();
28901
28902  while (element instanceof win.HTMLIFrameElement) {
28903    if (isSameOriginFrame(element)) {
28904      win = element.contentWindow;
28905    } else {
28906      return element;
28907    }
28908
28909    element = getActiveElement(win.document);
28910  }
28911
28912  return element;
28913}
28914/**
28915 * @ReactInputSelection: React input selection module. Based on Selection.js,
28916 * but modified to be suitable for react and has a couple of bug fixes (doesn't
28917 * assume buttons have range selections allowed).
28918 * Input selection module for React.
28919 */
28920
28921/**
28922 * @hasSelectionCapabilities: we get the element types that support selection
28923 * from https://html.spec.whatwg.org/#do-not-apply, looking at `selectionStart`
28924 * and `selectionEnd` rows.
28925 */
28926
28927
28928function hasSelectionCapabilities(elem) {
28929  var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();
28930  return nodeName && (nodeName === 'input' && (elem.type === 'text' || elem.type === 'search' || elem.type === 'tel' || elem.type === 'url' || elem.type === 'password') || nodeName === 'textarea' || elem.contentEditable === 'true');
28931}
28932function getSelectionInformation() {
28933  var focusedElem = getActiveElementDeep();
28934  return {
28935    // Used by Flare
28936    activeElementDetached: null,
28937    focusedElem: focusedElem,
28938    selectionRange: hasSelectionCapabilities(focusedElem) ? getSelection(focusedElem) : null
28939  };
28940}
28941/**
28942 * @restoreSelection: If any selection information was potentially lost,
28943 * restore it. This is useful when performing operations that could remove dom
28944 * nodes and place them back in, resulting in focus being lost.
28945 */
28946
28947function restoreSelection(priorSelectionInformation) {
28948  var curFocusedElem = getActiveElementDeep();
28949  var priorFocusedElem = priorSelectionInformation.focusedElem;
28950  var priorSelectionRange = priorSelectionInformation.selectionRange;
28951
28952  if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {
28953    if (priorSelectionRange !== null && hasSelectionCapabilities(priorFocusedElem)) {
28954      setSelection(priorFocusedElem, priorSelectionRange);
28955    } // Focusing a node can change the scroll position, which is undesirable
28956
28957
28958    var ancestors = [];
28959    var ancestor = priorFocusedElem;
28960
28961    while (ancestor = ancestor.parentNode) {
28962      if (ancestor.nodeType === ELEMENT_NODE) {
28963        ancestors.push({
28964          element: ancestor,
28965          left: ancestor.scrollLeft,
28966          top: ancestor.scrollTop
28967        });
28968      }
28969    }
28970
28971    if (typeof priorFocusedElem.focus === 'function') {
28972      priorFocusedElem.focus();
28973    }
28974
28975    for (var i = 0; i < ancestors.length; i++) {
28976      var info = ancestors[i];
28977      info.element.scrollLeft = info.left;
28978      info.element.scrollTop = info.top;
28979    }
28980  }
28981}
28982/**
28983 * @getSelection: Gets the selection bounds of a focused textarea, input or
28984 * contentEditable node.
28985 * -@input: Look up selection bounds of this input
28986 * -@return {start: selectionStart, end: selectionEnd}
28987 */
28988
28989function getSelection(input) {
28990  var selection;
28991
28992  if ('selectionStart' in input) {
28993    // Modern browser with input or textarea.
28994    selection = {
28995      start: input.selectionStart,
28996      end: input.selectionEnd
28997    };
28998  } else {
28999    // Content editable or old IE textarea.
29000    selection = getOffsets(input);
29001  }
29002
29003  return selection || {
29004    start: 0,
29005    end: 0
29006  };
29007}
29008/**
29009 * @setSelection: Sets the selection bounds of a textarea or input and focuses
29010 * the input.
29011 * -@input     Set selection bounds of this input or textarea
29012 * -@offsets   Object of same form that is returned from get*
29013 */
29014
29015function setSelection(input, offsets) {
29016  var start = offsets.start,
29017      end = offsets.end;
29018
29019  if (end === undefined) {
29020    end = start;
29021  }
29022
29023  if ('selectionStart' in input) {
29024    input.selectionStart = start;
29025    input.selectionEnd = Math.min(end, input.value.length);
29026  } else {
29027    setOffsets(input, offsets);
29028  }
29029}
29030
29031var validateDOMNesting = function () {};
29032
29033var updatedAncestorInfo = function () {};
29034
29035{
29036  // This validation code was written based on the HTML5 parsing spec:
29037  // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope
29038  //
29039  // Note: this does not catch all invalid nesting, nor does it try to (as it's
29040  // not clear what practical benefit doing so provides); instead, we warn only
29041  // for cases where the parser will give a parse tree differing from what React
29042  // intended. For example, <b><div></div></b> is invalid but we don't warn
29043  // because it still parses correctly; we do warn for other cases like nested
29044  // <p> tags where the beginning of the second element implicitly closes the
29045  // first, causing a confusing mess.
29046  // https://html.spec.whatwg.org/multipage/syntax.html#special
29047  var specialTags = ['address', 'applet', 'area', 'article', 'aside', 'base', 'basefont', 'bgsound', 'blockquote', 'body', 'br', 'button', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dir', 'div', 'dl', 'dt', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'iframe', 'img', 'input', 'isindex', 'li', 'link', 'listing', 'main', 'marquee', 'menu', 'menuitem', 'meta', 'nav', 'noembed', 'noframes', 'noscript', 'object', 'ol', 'p', 'param', 'plaintext', 'pre', 'script', 'section', 'select', 'source', 'style', 'summary', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul', 'wbr', 'xmp']; // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope
29048
29049  var inScopeTags = ['applet', 'caption', 'html', 'table', 'td', 'th', 'marquee', 'object', 'template', // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point
29050  // TODO: Distinguish by namespace here -- for <title>, including it here
29051  // errs on the side of fewer warnings
29052  'foreignObject', 'desc', 'title']; // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope
29053
29054  var buttonScopeTags = inScopeTags.concat(['button']); // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags
29055
29056  var impliedEndTags = ['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt'];
29057  var emptyAncestorInfo = {
29058    current: null,
29059    formTag: null,
29060    aTagInScope: null,
29061    buttonTagInScope: null,
29062    nobrTagInScope: null,
29063    pTagInButtonScope: null,
29064    listItemTagAutoclosing: null,
29065    dlItemTagAutoclosing: null
29066  };
29067
29068  updatedAncestorInfo = function (oldInfo, tag) {
29069    var ancestorInfo = _assign({}, oldInfo || emptyAncestorInfo);
29070
29071    var info = {
29072      tag: tag
29073    };
29074
29075    if (inScopeTags.indexOf(tag) !== -1) {
29076      ancestorInfo.aTagInScope = null;
29077      ancestorInfo.buttonTagInScope = null;
29078      ancestorInfo.nobrTagInScope = null;
29079    }
29080
29081    if (buttonScopeTags.indexOf(tag) !== -1) {
29082      ancestorInfo.pTagInButtonScope = null;
29083    } // See rules for 'li', 'dd', 'dt' start tags in
29084    // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody
29085
29086
29087    if (specialTags.indexOf(tag) !== -1 && tag !== 'address' && tag !== 'div' && tag !== 'p') {
29088      ancestorInfo.listItemTagAutoclosing = null;
29089      ancestorInfo.dlItemTagAutoclosing = null;
29090    }
29091
29092    ancestorInfo.current = info;
29093
29094    if (tag === 'form') {
29095      ancestorInfo.formTag = info;
29096    }
29097
29098    if (tag === 'a') {
29099      ancestorInfo.aTagInScope = info;
29100    }
29101
29102    if (tag === 'button') {
29103      ancestorInfo.buttonTagInScope = info;
29104    }
29105
29106    if (tag === 'nobr') {
29107      ancestorInfo.nobrTagInScope = info;
29108    }
29109
29110    if (tag === 'p') {
29111      ancestorInfo.pTagInButtonScope = info;
29112    }
29113
29114    if (tag === 'li') {
29115      ancestorInfo.listItemTagAutoclosing = info;
29116    }
29117
29118    if (tag === 'dd' || tag === 'dt') {
29119      ancestorInfo.dlItemTagAutoclosing = info;
29120    }
29121
29122    return ancestorInfo;
29123  };
29124  /**
29125   * Returns whether
29126   */
29127
29128
29129  var isTagValidWithParent = function (tag, parentTag) {
29130    // First, let's check if we're in an unusual parsing mode...
29131    switch (parentTag) {
29132      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect
29133      case 'select':
29134        return tag === 'option' || tag === 'optgroup' || tag === '#text';
29135
29136      case 'optgroup':
29137        return tag === 'option' || tag === '#text';
29138      // Strictly speaking, seeing an <option> doesn't mean we're in a <select>
29139      // but
29140
29141      case 'option':
29142        return tag === '#text';
29143      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd
29144      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption
29145      // No special behavior since these rules fall back to "in body" mode for
29146      // all except special table nodes which cause bad parsing behavior anyway.
29147      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr
29148
29149      case 'tr':
29150        return tag === 'th' || tag === 'td' || tag === 'style' || tag === 'script' || tag === 'template';
29151      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody
29152
29153      case 'tbody':
29154      case 'thead':
29155      case 'tfoot':
29156        return tag === 'tr' || tag === 'style' || tag === 'script' || tag === 'template';
29157      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup
29158
29159      case 'colgroup':
29160        return tag === 'col' || tag === 'template';
29161      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable
29162
29163      case 'table':
29164        return tag === 'caption' || tag === 'colgroup' || tag === 'tbody' || tag === 'tfoot' || tag === 'thead' || tag === 'style' || tag === 'script' || tag === 'template';
29165      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead
29166
29167      case 'head':
29168        return tag === 'base' || tag === 'basefont' || tag === 'bgsound' || tag === 'link' || tag === 'meta' || tag === 'title' || tag === 'noscript' || tag === 'noframes' || tag === 'style' || tag === 'script' || tag === 'template';
29169      // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element
29170
29171      case 'html':
29172        return tag === 'head' || tag === 'body' || tag === 'frameset';
29173
29174      case 'frameset':
29175        return tag === 'frame';
29176
29177      case '#document':
29178        return tag === 'html';
29179    } // Probably in the "in body" parsing mode, so we outlaw only tag combos
29180    // where the parsing rules cause implicit opens or closes to be added.
29181    // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody
29182
29183
29184    switch (tag) {
29185      case 'h1':
29186      case 'h2':
29187      case 'h3':
29188      case 'h4':
29189      case 'h5':
29190      case 'h6':
29191        return parentTag !== 'h1' && parentTag !== 'h2' && parentTag !== 'h3' && parentTag !== 'h4' && parentTag !== 'h5' && parentTag !== 'h6';
29192
29193      case 'rp':
29194      case 'rt':
29195        return impliedEndTags.indexOf(parentTag) === -1;
29196
29197      case 'body':
29198      case 'caption':
29199      case 'col':
29200      case 'colgroup':
29201      case 'frameset':
29202      case 'frame':
29203      case 'head':
29204      case 'html':
29205      case 'tbody':
29206      case 'td':
29207      case 'tfoot':
29208      case 'th':
29209      case 'thead':
29210      case 'tr':
29211        // These tags are only valid with a few parents that have special child
29212        // parsing rules -- if we're down here, then none of those matched and
29213        // so we allow it only if we don't know what the parent is, as all other
29214        // cases are invalid.
29215        return parentTag == null;
29216    }
29217
29218    return true;
29219  };
29220  /**
29221   * Returns whether
29222   */
29223
29224
29225  var findInvalidAncestorForTag = function (tag, ancestorInfo) {
29226    switch (tag) {
29227      case 'address':
29228      case 'article':
29229      case 'aside':
29230      case 'blockquote':
29231      case 'center':
29232      case 'details':
29233      case 'dialog':
29234      case 'dir':
29235      case 'div':
29236      case 'dl':
29237      case 'fieldset':
29238      case 'figcaption':
29239      case 'figure':
29240      case 'footer':
29241      case 'header':
29242      case 'hgroup':
29243      case 'main':
29244      case 'menu':
29245      case 'nav':
29246      case 'ol':
29247      case 'p':
29248      case 'section':
29249      case 'summary':
29250      case 'ul':
29251      case 'pre':
29252      case 'listing':
29253      case 'table':
29254      case 'hr':
29255      case 'xmp':
29256      case 'h1':
29257      case 'h2':
29258      case 'h3':
29259      case 'h4':
29260      case 'h5':
29261      case 'h6':
29262        return ancestorInfo.pTagInButtonScope;
29263
29264      case 'form':
29265        return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;
29266
29267      case 'li':
29268        return ancestorInfo.listItemTagAutoclosing;
29269
29270      case 'dd':
29271      case 'dt':
29272        return ancestorInfo.dlItemTagAutoclosing;
29273
29274      case 'button':
29275        return ancestorInfo.buttonTagInScope;
29276
29277      case 'a':
29278        // Spec says something about storing a list of markers, but it sounds
29279        // equivalent to this check.
29280        return ancestorInfo.aTagInScope;
29281
29282      case 'nobr':
29283        return ancestorInfo.nobrTagInScope;
29284    }
29285
29286    return null;
29287  };
29288
29289  var didWarn$1 = {};
29290
29291  validateDOMNesting = function (childTag, childText, ancestorInfo) {
29292    ancestorInfo = ancestorInfo || emptyAncestorInfo;
29293    var parentInfo = ancestorInfo.current;
29294    var parentTag = parentInfo && parentInfo.tag;
29295
29296    if (childText != null) {
29297      if (childTag != null) {
29298        error('validateDOMNesting: when childText is passed, childTag should be null');
29299      }
29300
29301      childTag = '#text';
29302    }
29303
29304    var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo;
29305    var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo);
29306    var invalidParentOrAncestor = invalidParent || invalidAncestor;
29307
29308    if (!invalidParentOrAncestor) {
29309      return;
29310    }
29311
29312    var ancestorTag = invalidParentOrAncestor.tag;
29313    var addendum = getCurrentFiberStackInDev();
29314    var warnKey = !!invalidParent + '|' + childTag + '|' + ancestorTag + '|' + addendum;
29315
29316    if (didWarn$1[warnKey]) {
29317      return;
29318    }
29319
29320    didWarn$1[warnKey] = true;
29321    var tagDisplayName = childTag;
29322    var whitespaceInfo = '';
29323
29324    if (childTag === '#text') {
29325      if (/\S/.test(childText)) {
29326        tagDisplayName = 'Text nodes';
29327      } else {
29328        tagDisplayName = 'Whitespace text nodes';
29329        whitespaceInfo = " Make sure you don't have any extra whitespace between tags on " + 'each line of your source code.';
29330      }
29331    } else {
29332      tagDisplayName = '<' + childTag + '>';
29333    }
29334
29335    if (invalidParent) {
29336      var info = '';
29337
29338      if (ancestorTag === 'table' && childTag === 'tr') {
29339        info += ' Add a <tbody>, <thead> or <tfoot> to your code to match the DOM tree generated by ' + 'the browser.';
29340      }
29341
29342      error('validateDOMNesting(...): %s cannot appear as a child of <%s>.%s%s', tagDisplayName, ancestorTag, whitespaceInfo, info);
29343    } else {
29344      error('validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>.', tagDisplayName, ancestorTag);
29345    }
29346  };
29347}
29348
29349var SUPPRESS_HYDRATION_WARNING$1;
29350
29351{
29352  SUPPRESS_HYDRATION_WARNING$1 = 'suppressHydrationWarning';
29353}
29354
29355var SUSPENSE_START_DATA = '$';
29356var SUSPENSE_END_DATA = '/$';
29357var SUSPENSE_PENDING_START_DATA = '$?';
29358var SUSPENSE_FALLBACK_START_DATA = '$!';
29359var STYLE$1 = 'style';
29360var eventsEnabled = null;
29361var selectionInformation = null;
29362
29363function shouldAutoFocusHostComponent(type, props) {
29364  switch (type) {
29365    case 'button':
29366    case 'input':
29367    case 'select':
29368    case 'textarea':
29369      return !!props.autoFocus;
29370  }
29371
29372  return false;
29373}
29374function getRootHostContext(rootContainerInstance) {
29375  var type;
29376  var namespace;
29377  var nodeType = rootContainerInstance.nodeType;
29378
29379  switch (nodeType) {
29380    case DOCUMENT_NODE:
29381    case DOCUMENT_FRAGMENT_NODE:
29382      {
29383        type = nodeType === DOCUMENT_NODE ? '#document' : '#fragment';
29384        var root = rootContainerInstance.documentElement;
29385        namespace = root ? root.namespaceURI : getChildNamespace(null, '');
29386        break;
29387      }
29388
29389    default:
29390      {
29391        var container = nodeType === COMMENT_NODE ? rootContainerInstance.parentNode : rootContainerInstance;
29392        var ownNamespace = container.namespaceURI || null;
29393        type = container.tagName;
29394        namespace = getChildNamespace(ownNamespace, type);
29395        break;
29396      }
29397  }
29398
29399  {
29400    var validatedTag = type.toLowerCase();
29401    var ancestorInfo = updatedAncestorInfo(null, validatedTag);
29402    return {
29403      namespace: namespace,
29404      ancestorInfo: ancestorInfo
29405    };
29406  }
29407}
29408function getChildHostContext(parentHostContext, type, rootContainerInstance) {
29409  {
29410    var parentHostContextDev = parentHostContext;
29411    var namespace = getChildNamespace(parentHostContextDev.namespace, type);
29412    var ancestorInfo = updatedAncestorInfo(parentHostContextDev.ancestorInfo, type);
29413    return {
29414      namespace: namespace,
29415      ancestorInfo: ancestorInfo
29416    };
29417  }
29418}
29419function getPublicInstance(instance) {
29420  return instance;
29421}
29422function prepareForCommit(containerInfo) {
29423  eventsEnabled = isEnabled();
29424  selectionInformation = getSelectionInformation();
29425  setEnabled(false);
29426}
29427function resetAfterCommit(containerInfo) {
29428  restoreSelection(selectionInformation);
29429  setEnabled(eventsEnabled);
29430  eventsEnabled = null;
29431
29432  selectionInformation = null;
29433}
29434function createInstance(type, props, rootContainerInstance, hostContext, internalInstanceHandle) {
29435  var parentNamespace;
29436
29437  {
29438    // TODO: take namespace into account when validating.
29439    var hostContextDev = hostContext;
29440    validateDOMNesting(type, null, hostContextDev.ancestorInfo);
29441
29442    if (typeof props.children === 'string' || typeof props.children === 'number') {
29443      var string = '' + props.children;
29444      var ownAncestorInfo = updatedAncestorInfo(hostContextDev.ancestorInfo, type);
29445      validateDOMNesting(null, string, ownAncestorInfo);
29446    }
29447
29448    parentNamespace = hostContextDev.namespace;
29449  }
29450
29451  var domElement = createElement(type, props, rootContainerInstance, parentNamespace);
29452  precacheFiberNode(internalInstanceHandle, domElement);
29453  updateFiberProps(domElement, props);
29454  return domElement;
29455}
29456function appendInitialChild(parentInstance, child) {
29457  parentInstance.appendChild(child);
29458}
29459function finalizeInitialChildren(domElement, type, props, rootContainerInstance, hostContext) {
29460  setInitialProperties(domElement, type, props, rootContainerInstance);
29461  return shouldAutoFocusHostComponent(type, props);
29462}
29463function prepareUpdate(domElement, type, oldProps, newProps, rootContainerInstance, hostContext) {
29464  {
29465    var hostContextDev = hostContext;
29466
29467    if (typeof newProps.children !== typeof oldProps.children && (typeof newProps.children === 'string' || typeof newProps.children === 'number')) {
29468      var string = '' + newProps.children;
29469      var ownAncestorInfo = updatedAncestorInfo(hostContextDev.ancestorInfo, type);
29470      validateDOMNesting(null, string, ownAncestorInfo);
29471    }
29472  }
29473
29474  return diffProperties(domElement, type, oldProps, newProps, rootContainerInstance);
29475}
29476function shouldSetTextContent(type, props) {
29477  return type === 'textarea' || type === 'option' || type === 'noscript' || typeof props.children === 'string' || typeof props.children === 'number' || typeof props.dangerouslySetInnerHTML === 'object' && props.dangerouslySetInnerHTML !== null && props.dangerouslySetInnerHTML.__html != null;
29478}
29479function shouldDeprioritizeSubtree(type, props) {
29480  return !!props.hidden;
29481}
29482function createTextInstance(text, rootContainerInstance, hostContext, internalInstanceHandle) {
29483  {
29484    var hostContextDev = hostContext;
29485    validateDOMNesting(null, text, hostContextDev.ancestorInfo);
29486  }
29487
29488  var textNode = createTextNode(text, rootContainerInstance);
29489  precacheFiberNode(internalInstanceHandle, textNode);
29490  return textNode;
29491}
29492// if a component just imports ReactDOM (e.g. for findDOMNode).
29493// Some environments might not have setTimeout or clearTimeout.
29494
29495var scheduleTimeout = typeof setTimeout === 'function' ? setTimeout : undefined;
29496var cancelTimeout = typeof clearTimeout === 'function' ? clearTimeout : undefined;
29497var noTimeout = -1; // -------------------
29498function commitMount(domElement, type, newProps, internalInstanceHandle) {
29499  // Despite the naming that might imply otherwise, this method only
29500  // fires if there is an `Update` effect scheduled during mounting.
29501  // This happens if `finalizeInitialChildren` returns `true` (which it
29502  // does to implement the `autoFocus` attribute on the client). But
29503  // there are also other cases when this might happen (such as patching
29504  // up text content during hydration mismatch). So we'll check this again.
29505  if (shouldAutoFocusHostComponent(type, newProps)) {
29506    domElement.focus();
29507  }
29508}
29509function commitUpdate(domElement, updatePayload, type, oldProps, newProps, internalInstanceHandle) {
29510  // Update the props handle so that we know which props are the ones with
29511  // with current event handlers.
29512  updateFiberProps(domElement, newProps); // Apply the diff to the DOM node.
29513
29514  updateProperties(domElement, updatePayload, type, oldProps, newProps);
29515}
29516function resetTextContent(domElement) {
29517  setTextContent(domElement, '');
29518}
29519function commitTextUpdate(textInstance, oldText, newText) {
29520  textInstance.nodeValue = newText;
29521}
29522function appendChild(parentInstance, child) {
29523  parentInstance.appendChild(child);
29524}
29525function appendChildToContainer(container, child) {
29526  var parentNode;
29527
29528  if (container.nodeType === COMMENT_NODE) {
29529    parentNode = container.parentNode;
29530    parentNode.insertBefore(child, container);
29531  } else {
29532    parentNode = container;
29533    parentNode.appendChild(child);
29534  } // This container might be used for a portal.
29535  // If something inside a portal is clicked, that click should bubble
29536  // through the React tree. However, on Mobile Safari the click would
29537  // never bubble through the *DOM* tree unless an ancestor with onclick
29538  // event exists. So we wouldn't see it and dispatch it.
29539  // This is why we ensure that non React root containers have inline onclick
29540  // defined.
29541  // https://github.com/facebook/react/issues/11918
29542
29543
29544  var reactRootContainer = container._reactRootContainer;
29545
29546  if ((reactRootContainer === null || reactRootContainer === undefined) && parentNode.onclick === null) {
29547    // TODO: This cast may not be sound for SVG, MathML or custom elements.
29548    trapClickOnNonInteractiveElement(parentNode);
29549  }
29550}
29551function insertBefore(parentInstance, child, beforeChild) {
29552  parentInstance.insertBefore(child, beforeChild);
29553}
29554function insertInContainerBefore(container, child, beforeChild) {
29555  if (container.nodeType === COMMENT_NODE) {
29556    container.parentNode.insertBefore(child, beforeChild);
29557  } else {
29558    container.insertBefore(child, beforeChild);
29559  }
29560}
29561function removeChild(parentInstance, child) {
29562  parentInstance.removeChild(child);
29563}
29564function removeChildFromContainer(container, child) {
29565  if (container.nodeType === COMMENT_NODE) {
29566    container.parentNode.removeChild(child);
29567  } else {
29568    container.removeChild(child);
29569  }
29570}
29571
29572function hideInstance(instance) {
29573  // pass host context to this method?
29574
29575
29576  instance = instance;
29577  var style = instance.style;
29578
29579  if (typeof style.setProperty === 'function') {
29580    style.setProperty('display', 'none', 'important');
29581  } else {
29582    style.display = 'none';
29583  }
29584}
29585function hideTextInstance(textInstance) {
29586  textInstance.nodeValue = '';
29587}
29588function unhideInstance(instance, props) {
29589  instance = instance;
29590  var styleProp = props[STYLE$1];
29591  var display = styleProp !== undefined && styleProp !== null && styleProp.hasOwnProperty('display') ? styleProp.display : null;
29592  instance.style.display = dangerousStyleValue('display', display);
29593}
29594function unhideTextInstance(textInstance, text) {
29595  textInstance.nodeValue = text;
29596} // -------------------
29597function canHydrateInstance(instance, type, props) {
29598  if (instance.nodeType !== ELEMENT_NODE || type.toLowerCase() !== instance.nodeName.toLowerCase()) {
29599    return null;
29600  } // This has now been refined to an element node.
29601
29602
29603  return instance;
29604}
29605function canHydrateTextInstance(instance, text) {
29606  if (text === '' || instance.nodeType !== TEXT_NODE) {
29607    // Empty strings are not parsed by HTML so there won't be a correct match here.
29608    return null;
29609  } // This has now been refined to a text node.
29610
29611
29612  return instance;
29613}
29614function isSuspenseInstancePending(instance) {
29615  return instance.data === SUSPENSE_PENDING_START_DATA;
29616}
29617function isSuspenseInstanceFallback(instance) {
29618  return instance.data === SUSPENSE_FALLBACK_START_DATA;
29619}
29620
29621function getNextHydratable(node) {
29622  // Skip non-hydratable nodes.
29623  for (; node != null; node = node.nextSibling) {
29624    var nodeType = node.nodeType;
29625
29626    if (nodeType === ELEMENT_NODE || nodeType === TEXT_NODE) {
29627      break;
29628    }
29629  }
29630
29631  return node;
29632}
29633
29634function getNextHydratableSibling(instance) {
29635  return getNextHydratable(instance.nextSibling);
29636}
29637function getFirstHydratableChild(parentInstance) {
29638  return getNextHydratable(parentInstance.firstChild);
29639}
29640function hydrateInstance(instance, type, props, rootContainerInstance, hostContext, internalInstanceHandle) {
29641  precacheFiberNode(internalInstanceHandle, instance); // TODO: Possibly defer this until the commit phase where all the events
29642  // get attached.
29643
29644  updateFiberProps(instance, props);
29645  var parentNamespace;
29646
29647  {
29648    var hostContextDev = hostContext;
29649    parentNamespace = hostContextDev.namespace;
29650  }
29651
29652  return diffHydratedProperties(instance, type, props, parentNamespace, rootContainerInstance);
29653}
29654function hydrateTextInstance(textInstance, text, internalInstanceHandle) {
29655  precacheFiberNode(internalInstanceHandle, textInstance);
29656  return diffHydratedText(textInstance, text);
29657}
29658function getNextHydratableInstanceAfterSuspenseInstance(suspenseInstance) {
29659  var node = suspenseInstance.nextSibling; // Skip past all nodes within this suspense boundary.
29660  // There might be nested nodes so we need to keep track of how
29661  // deep we are and only break out when we're back on top.
29662
29663  var depth = 0;
29664
29665  while (node) {
29666    if (node.nodeType === COMMENT_NODE) {
29667      var data = node.data;
29668
29669      if (data === SUSPENSE_END_DATA) {
29670        if (depth === 0) {
29671          return getNextHydratableSibling(node);
29672        } else {
29673          depth--;
29674        }
29675      } else if (data === SUSPENSE_START_DATA || data === SUSPENSE_FALLBACK_START_DATA || data === SUSPENSE_PENDING_START_DATA) {
29676        depth++;
29677      }
29678    }
29679
29680    node = node.nextSibling;
29681  } // TODO: Warn, we didn't find the end comment boundary.
29682
29683
29684  return null;
29685} // Returns the SuspenseInstance if this node is a direct child of a
29686// SuspenseInstance. I.e. if its previous sibling is a Comment with
29687// SUSPENSE_x_START_DATA. Otherwise, null.
29688
29689function getParentSuspenseInstance(targetInstance) {
29690  var node = targetInstance.previousSibling; // Skip past all nodes within this suspense boundary.
29691  // There might be nested nodes so we need to keep track of how
29692  // deep we are and only break out when we're back on top.
29693
29694  var depth = 0;
29695
29696  while (node) {
29697    if (node.nodeType === COMMENT_NODE) {
29698      var data = node.data;
29699
29700      if (data === SUSPENSE_START_DATA || data === SUSPENSE_FALLBACK_START_DATA || data === SUSPENSE_PENDING_START_DATA) {
29701        if (depth === 0) {
29702          return node;
29703        } else {
29704          depth--;
29705        }
29706      } else if (data === SUSPENSE_END_DATA) {
29707        depth++;
29708      }
29709    }
29710
29711    node = node.previousSibling;
29712  }
29713
29714  return null;
29715}
29716function commitHydratedContainer(container) {
29717  // Retry if any event replaying was blocked on this.
29718  retryIfBlockedOn(container);
29719}
29720function commitHydratedSuspenseInstance(suspenseInstance) {
29721  // Retry if any event replaying was blocked on this.
29722  retryIfBlockedOn(suspenseInstance);
29723}
29724function didNotMatchHydratedContainerTextInstance(parentContainer, textInstance, text) {
29725  {
29726    warnForUnmatchedText(textInstance, text);
29727  }
29728}
29729function didNotMatchHydratedTextInstance(parentType, parentProps, parentInstance, textInstance, text) {
29730  if ( parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {
29731    warnForUnmatchedText(textInstance, text);
29732  }
29733}
29734function didNotHydrateContainerInstance(parentContainer, instance) {
29735  {
29736    if (instance.nodeType === ELEMENT_NODE) {
29737      warnForDeletedHydratableElement(parentContainer, instance);
29738    } else if (instance.nodeType === COMMENT_NODE) ; else {
29739      warnForDeletedHydratableText(parentContainer, instance);
29740    }
29741  }
29742}
29743function didNotHydrateInstance(parentType, parentProps, parentInstance, instance) {
29744  if ( parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {
29745    if (instance.nodeType === ELEMENT_NODE) {
29746      warnForDeletedHydratableElement(parentInstance, instance);
29747    } else if (instance.nodeType === COMMENT_NODE) ; else {
29748      warnForDeletedHydratableText(parentInstance, instance);
29749    }
29750  }
29751}
29752function didNotFindHydratableContainerInstance(parentContainer, type, props) {
29753  {
29754    warnForInsertedHydratedElement(parentContainer, type);
29755  }
29756}
29757function didNotFindHydratableContainerTextInstance(parentContainer, text) {
29758  {
29759    warnForInsertedHydratedText(parentContainer, text);
29760  }
29761}
29762function didNotFindHydratableInstance(parentType, parentProps, parentInstance, type, props) {
29763  if ( parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {
29764    warnForInsertedHydratedElement(parentInstance, type);
29765  }
29766}
29767function didNotFindHydratableTextInstance(parentType, parentProps, parentInstance, text) {
29768  if ( parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {
29769    warnForInsertedHydratedText(parentInstance, text);
29770  }
29771}
29772function didNotFindHydratableSuspenseInstance(parentType, parentProps, parentInstance) {
29773  if ( parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) ;
29774}
29775
29776var randomKey = Math.random().toString(36).slice(2);
29777var internalInstanceKey = '__reactInternalInstance$' + randomKey;
29778var internalEventHandlersKey = '__reactEventHandlers$' + randomKey;
29779var internalContainerInstanceKey = '__reactContainere$' + randomKey;
29780function precacheFiberNode(hostInst, node) {
29781  node[internalInstanceKey] = hostInst;
29782}
29783function markContainerAsRoot(hostRoot, node) {
29784  node[internalContainerInstanceKey] = hostRoot;
29785}
29786function unmarkContainerAsRoot(node) {
29787  node[internalContainerInstanceKey] = null;
29788}
29789function isContainerMarkedAsRoot(node) {
29790  return !!node[internalContainerInstanceKey];
29791} // Given a DOM node, return the closest HostComponent or HostText fiber ancestor.
29792// If the target node is part of a hydrated or not yet rendered subtree, then
29793// this may also return a SuspenseComponent or HostRoot to indicate that.
29794// Conceptually the HostRoot fiber is a child of the Container node. So if you
29795// pass the Container node as the targetNode, you will not actually get the
29796// HostRoot back. To get to the HostRoot, you need to pass a child of it.
29797// The same thing applies to Suspense boundaries.
29798
29799function getClosestInstanceFromNode(targetNode) {
29800  var targetInst = targetNode[internalInstanceKey];
29801
29802  if (targetInst) {
29803    // Don't return HostRoot or SuspenseComponent here.
29804    return targetInst;
29805  } // If the direct event target isn't a React owned DOM node, we need to look
29806  // to see if one of its parents is a React owned DOM node.
29807
29808
29809  var parentNode = targetNode.parentNode;
29810
29811  while (parentNode) {
29812    // We'll check if this is a container root that could include
29813    // React nodes in the future. We need to check this first because
29814    // if we're a child of a dehydrated container, we need to first
29815    // find that inner container before moving on to finding the parent
29816    // instance. Note that we don't check this field on  the targetNode
29817    // itself because the fibers are conceptually between the container
29818    // node and the first child. It isn't surrounding the container node.
29819    // If it's not a container, we check if it's an instance.
29820    targetInst = parentNode[internalContainerInstanceKey] || parentNode[internalInstanceKey];
29821
29822    if (targetInst) {
29823      // Since this wasn't the direct target of the event, we might have
29824      // stepped past dehydrated DOM nodes to get here. However they could
29825      // also have been non-React nodes. We need to answer which one.
29826      // If we the instance doesn't have any children, then there can't be
29827      // a nested suspense boundary within it. So we can use this as a fast
29828      // bailout. Most of the time, when people add non-React children to
29829      // the tree, it is using a ref to a child-less DOM node.
29830      // Normally we'd only need to check one of the fibers because if it
29831      // has ever gone from having children to deleting them or vice versa
29832      // it would have deleted the dehydrated boundary nested inside already.
29833      // However, since the HostRoot starts out with an alternate it might
29834      // have one on the alternate so we need to check in case this was a
29835      // root.
29836      var alternate = targetInst.alternate;
29837
29838      if (targetInst.child !== null || alternate !== null && alternate.child !== null) {
29839        // Next we need to figure out if the node that skipped past is
29840        // nested within a dehydrated boundary and if so, which one.
29841        var suspenseInstance = getParentSuspenseInstance(targetNode);
29842
29843        while (suspenseInstance !== null) {
29844          // We found a suspense instance. That means that we haven't
29845          // hydrated it yet. Even though we leave the comments in the
29846          // DOM after hydrating, and there are boundaries in the DOM
29847          // that could already be hydrated, we wouldn't have found them
29848          // through this pass since if the target is hydrated it would
29849          // have had an internalInstanceKey on it.
29850          // Let's get the fiber associated with the SuspenseComponent
29851          // as the deepest instance.
29852          var targetSuspenseInst = suspenseInstance[internalInstanceKey];
29853
29854          if (targetSuspenseInst) {
29855            return targetSuspenseInst;
29856          } // If we don't find a Fiber on the comment, it might be because
29857          // we haven't gotten to hydrate it yet. There might still be a
29858          // parent boundary that hasn't above this one so we need to find
29859          // the outer most that is known.
29860
29861
29862          suspenseInstance = getParentSuspenseInstance(suspenseInstance); // If we don't find one, then that should mean that the parent
29863          // host component also hasn't hydrated yet. We can return it
29864          // below since it will bail out on the isMounted check later.
29865        }
29866      }
29867
29868      return targetInst;
29869    }
29870
29871    targetNode = parentNode;
29872    parentNode = targetNode.parentNode;
29873  }
29874
29875  return null;
29876}
29877/**
29878 * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent
29879 * instance, or null if the node was not rendered by this React.
29880 */
29881
29882function getInstanceFromNode$1(node) {
29883  var inst = node[internalInstanceKey] || node[internalContainerInstanceKey];
29884
29885  if (inst) {
29886    if (inst.tag === HostComponent || inst.tag === HostText || inst.tag === SuspenseComponent || inst.tag === HostRoot) {
29887      return inst;
29888    } else {
29889      return null;
29890    }
29891  }
29892
29893  return null;
29894}
29895/**
29896 * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding
29897 * DOM node.
29898 */
29899
29900function getNodeFromInstance$1(inst) {
29901  if (inst.tag === HostComponent || inst.tag === HostText) {
29902    // In Fiber this, is just the state node right now. We assume it will be
29903    // a host component or host text.
29904    return inst.stateNode;
29905  } // Without this first invariant, passing a non-DOM-component triggers the next
29906  // invariant for a missing parent, which is super confusing.
29907
29908
29909  {
29910    {
29911      throw Error( "getNodeFromInstance: Invalid argument." );
29912    }
29913  }
29914}
29915function getFiberCurrentPropsFromNode$1(node) {
29916  return node[internalEventHandlersKey] || null;
29917}
29918function updateFiberProps(node, props) {
29919  node[internalEventHandlersKey] = props;
29920}
29921
29922function getParent(inst) {
29923  do {
29924    inst = inst.return; // TODO: If this is a HostRoot we might want to bail out.
29925    // That is depending on if we want nested subtrees (layers) to bubble
29926    // events to their parent. We could also go through parentNode on the
29927    // host node but that wouldn't work for React Native and doesn't let us
29928    // do the portal feature.
29929  } while (inst && inst.tag !== HostComponent);
29930
29931  if (inst) {
29932    return inst;
29933  }
29934
29935  return null;
29936}
29937/**
29938 * Return the lowest common ancestor of A and B, or null if they are in
29939 * different trees.
29940 */
29941
29942
29943function getLowestCommonAncestor(instA, instB) {
29944  var depthA = 0;
29945
29946  for (var tempA = instA; tempA; tempA = getParent(tempA)) {
29947    depthA++;
29948  }
29949
29950  var depthB = 0;
29951
29952  for (var tempB = instB; tempB; tempB = getParent(tempB)) {
29953    depthB++;
29954  } // If A is deeper, crawl up.
29955
29956
29957  while (depthA - depthB > 0) {
29958    instA = getParent(instA);
29959    depthA--;
29960  } // If B is deeper, crawl up.
29961
29962
29963  while (depthB - depthA > 0) {
29964    instB = getParent(instB);
29965    depthB--;
29966  } // Walk in lockstep until we find a match.
29967
29968
29969  var depth = depthA;
29970
29971  while (depth--) {
29972    if (instA === instB || instA === instB.alternate) {
29973      return instA;
29974    }
29975
29976    instA = getParent(instA);
29977    instB = getParent(instB);
29978  }
29979
29980  return null;
29981}
29982/**
29983 * Simulates the traversal of a two-phase, capture/bubble event dispatch.
29984 */
29985
29986function traverseTwoPhase(inst, fn, arg) {
29987  var path = [];
29988
29989  while (inst) {
29990    path.push(inst);
29991    inst = getParent(inst);
29992  }
29993
29994  var i;
29995
29996  for (i = path.length; i-- > 0;) {
29997    fn(path[i], 'captured', arg);
29998  }
29999
30000  for (i = 0; i < path.length; i++) {
30001    fn(path[i], 'bubbled', arg);
30002  }
30003}
30004/**
30005 * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that
30006 * should would receive a `mouseEnter` or `mouseLeave` event.
30007 *
30008 * Does not invoke the callback on the nearest common ancestor because nothing
30009 * "entered" or "left" that element.
30010 */
30011
30012function traverseEnterLeave(from, to, fn, argFrom, argTo) {
30013  var common = from && to ? getLowestCommonAncestor(from, to) : null;
30014  var pathFrom = [];
30015
30016  while (true) {
30017    if (!from) {
30018      break;
30019    }
30020
30021    if (from === common) {
30022      break;
30023    }
30024
30025    var alternate = from.alternate;
30026
30027    if (alternate !== null && alternate === common) {
30028      break;
30029    }
30030
30031    pathFrom.push(from);
30032    from = getParent(from);
30033  }
30034
30035  var pathTo = [];
30036
30037  while (true) {
30038    if (!to) {
30039      break;
30040    }
30041
30042    if (to === common) {
30043      break;
30044    }
30045
30046    var _alternate = to.alternate;
30047
30048    if (_alternate !== null && _alternate === common) {
30049      break;
30050    }
30051
30052    pathTo.push(to);
30053    to = getParent(to);
30054  }
30055
30056  for (var i = 0; i < pathFrom.length; i++) {
30057    fn(pathFrom[i], 'bubbled', argFrom);
30058  }
30059
30060  for (var _i = pathTo.length; _i-- > 0;) {
30061    fn(pathTo[_i], 'captured', argTo);
30062  }
30063}
30064
30065function isInteractive(tag) {
30066  return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';
30067}
30068
30069function shouldPreventMouseEvent(name, type, props) {
30070  switch (name) {
30071    case 'onClick':
30072    case 'onClickCapture':
30073    case 'onDoubleClick':
30074    case 'onDoubleClickCapture':
30075    case 'onMouseDown':
30076    case 'onMouseDownCapture':
30077    case 'onMouseMove':
30078    case 'onMouseMoveCapture':
30079    case 'onMouseUp':
30080    case 'onMouseUpCapture':
30081    case 'onMouseEnter':
30082      return !!(props.disabled && isInteractive(type));
30083
30084    default:
30085      return false;
30086  }
30087}
30088/**
30089 * @param {object} inst The instance, which is the source of events.
30090 * @param {string} registrationName Name of listener (e.g. `onClick`).
30091 * @return {?function} The stored callback.
30092 */
30093
30094
30095function getListener(inst, registrationName) {
30096  var listener; // TODO: shouldPreventMouseEvent is DOM-specific and definitely should not
30097  // live here; needs to be moved to a better place soon
30098
30099  var stateNode = inst.stateNode;
30100
30101  if (!stateNode) {
30102    // Work in progress (ex: onload events in incremental mode).
30103    return null;
30104  }
30105
30106  var props = getFiberCurrentPropsFromNode(stateNode);
30107
30108  if (!props) {
30109    // Work in progress.
30110    return null;
30111  }
30112
30113  listener = props[registrationName];
30114
30115  if (shouldPreventMouseEvent(registrationName, inst.type, props)) {
30116    return null;
30117  }
30118
30119  if (!(!listener || typeof listener === 'function')) {
30120    {
30121      throw Error( "Expected `" + registrationName + "` listener to be a function, instead got a value of `" + typeof listener + "` type." );
30122    }
30123  }
30124
30125  return listener;
30126}
30127
30128/**
30129 * Some event types have a notion of different registration names for different
30130 * "phases" of propagation. This finds listeners by a given phase.
30131 */
30132function listenerAtPhase(inst, event, propagationPhase) {
30133  var registrationName = event.dispatchConfig.phasedRegistrationNames[propagationPhase];
30134  return getListener(inst, registrationName);
30135}
30136/**
30137 * A small set of propagation patterns, each of which will accept a small amount
30138 * of information, and generate a set of "dispatch ready event objects" - which
30139 * are sets of events that have already been annotated with a set of dispatched
30140 * listener functions/ids. The API is designed this way to discourage these
30141 * propagation strategies from actually executing the dispatches, since we
30142 * always want to collect the entire set of dispatches before executing even a
30143 * single one.
30144 */
30145
30146/**
30147 * Tags a `SyntheticEvent` with dispatched listeners. Creating this function
30148 * here, allows us to not have to bind or create functions for each event.
30149 * Mutating the event's members allows us to not have to create a wrapping
30150 * "dispatch" object that pairs the event with the listener.
30151 */
30152
30153
30154function accumulateDirectionalDispatches(inst, phase, event) {
30155  {
30156    if (!inst) {
30157      error('Dispatching inst must not be null');
30158    }
30159  }
30160
30161  var listener = listenerAtPhase(inst, event, phase);
30162
30163  if (listener) {
30164    event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);
30165    event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);
30166  }
30167}
30168/**
30169 * Collect dispatches (must be entirely collected before dispatching - see unit
30170 * tests). Lazily allocate the array to conserve memory.  We must loop through
30171 * each event and perform the traversal for each one. We cannot perform a
30172 * single traversal for the entire collection of events because each event may
30173 * have a different target.
30174 */
30175
30176
30177function accumulateTwoPhaseDispatchesSingle(event) {
30178  if (event && event.dispatchConfig.phasedRegistrationNames) {
30179    traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event);
30180  }
30181}
30182/**
30183 * Accumulates without regard to direction, does not look for phased
30184 * registration names. Same as `accumulateDirectDispatchesSingle` but without
30185 * requiring that the `dispatchMarker` be the same as the dispatched ID.
30186 */
30187
30188
30189function accumulateDispatches(inst, ignoredDirection, event) {
30190  if (inst && event && event.dispatchConfig.registrationName) {
30191    var registrationName = event.dispatchConfig.registrationName;
30192    var listener = getListener(inst, registrationName);
30193
30194    if (listener) {
30195      event._dispatchListeners = accumulateInto(event._dispatchListeners, listener);
30196      event._dispatchInstances = accumulateInto(event._dispatchInstances, inst);
30197    }
30198  }
30199}
30200/**
30201 * Accumulates dispatches on an `SyntheticEvent`, but only for the
30202 * `dispatchMarker`.
30203 * @param {SyntheticEvent} event
30204 */
30205
30206
30207function accumulateDirectDispatchesSingle(event) {
30208  if (event && event.dispatchConfig.registrationName) {
30209    accumulateDispatches(event._targetInst, null, event);
30210  }
30211}
30212
30213function accumulateTwoPhaseDispatches(events) {
30214  forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle);
30215}
30216function accumulateEnterLeaveDispatches(leave, enter, from, to) {
30217  traverseEnterLeave(from, to, accumulateDispatches, leave, enter);
30218}
30219function accumulateDirectDispatches(events) {
30220  forEachAccumulated(events, accumulateDirectDispatchesSingle);
30221}
30222
30223/**
30224 * These variables store information about text content of a target node,
30225 * allowing comparison of content before and after a given event.
30226 *
30227 * Identify the node where selection currently begins, then observe
30228 * both its text content and its current position in the DOM. Since the
30229 * browser may natively replace the target node during composition, we can
30230 * use its position to find its replacement.
30231 *
30232 *
30233 */
30234var root = null;
30235var startText = null;
30236var fallbackText = null;
30237function initialize(nativeEventTarget) {
30238  root = nativeEventTarget;
30239  startText = getText();
30240  return true;
30241}
30242function reset() {
30243  root = null;
30244  startText = null;
30245  fallbackText = null;
30246}
30247function getData() {
30248  if (fallbackText) {
30249    return fallbackText;
30250  }
30251
30252  var start;
30253  var startValue = startText;
30254  var startLength = startValue.length;
30255  var end;
30256  var endValue = getText();
30257  var endLength = endValue.length;
30258
30259  for (start = 0; start < startLength; start++) {
30260    if (startValue[start] !== endValue[start]) {
30261      break;
30262    }
30263  }
30264
30265  var minEnd = startLength - start;
30266
30267  for (end = 1; end <= minEnd; end++) {
30268    if (startValue[startLength - end] !== endValue[endLength - end]) {
30269      break;
30270    }
30271  }
30272
30273  var sliceTail = end > 1 ? 1 - end : undefined;
30274  fallbackText = endValue.slice(start, sliceTail);
30275  return fallbackText;
30276}
30277function getText() {
30278  if ('value' in root) {
30279    return root.value;
30280  }
30281
30282  return root.textContent;
30283}
30284
30285var EVENT_POOL_SIZE = 10;
30286/**
30287 * @interface Event
30288 * @see http://www.w3.org/TR/DOM-Level-3-Events/
30289 */
30290
30291var EventInterface = {
30292  type: null,
30293  target: null,
30294  // currentTarget is set when dispatching; no use in copying it here
30295  currentTarget: function () {
30296    return null;
30297  },
30298  eventPhase: null,
30299  bubbles: null,
30300  cancelable: null,
30301  timeStamp: function (event) {
30302    return event.timeStamp || Date.now();
30303  },
30304  defaultPrevented: null,
30305  isTrusted: null
30306};
30307
30308function functionThatReturnsTrue() {
30309  return true;
30310}
30311
30312function functionThatReturnsFalse() {
30313  return false;
30314}
30315/**
30316 * Synthetic events are dispatched by event plugins, typically in response to a
30317 * top-level event delegation handler.
30318 *
30319 * These systems should generally use pooling to reduce the frequency of garbage
30320 * collection. The system should check `isPersistent` to determine whether the
30321 * event should be released into the pool after being dispatched. Users that
30322 * need a persisted event should invoke `persist`.
30323 *
30324 * Synthetic events (and subclasses) implement the DOM Level 3 Events API by
30325 * normalizing browser quirks. Subclasses do not necessarily have to implement a
30326 * DOM interface; custom application-specific events can also subclass this.
30327 *
30328 * @param {object} dispatchConfig Configuration used to dispatch this event.
30329 * @param {*} targetInst Marker identifying the event target.
30330 * @param {object} nativeEvent Native browser event.
30331 * @param {DOMEventTarget} nativeEventTarget Target node.
30332 */
30333
30334
30335function SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) {
30336  {
30337    // these have a getter/setter for warnings
30338    delete this.nativeEvent;
30339    delete this.preventDefault;
30340    delete this.stopPropagation;
30341    delete this.isDefaultPrevented;
30342    delete this.isPropagationStopped;
30343  }
30344
30345  this.dispatchConfig = dispatchConfig;
30346  this._targetInst = targetInst;
30347  this.nativeEvent = nativeEvent;
30348  var Interface = this.constructor.Interface;
30349
30350  for (var propName in Interface) {
30351    if (!Interface.hasOwnProperty(propName)) {
30352      continue;
30353    }
30354
30355    {
30356      delete this[propName]; // this has a getter/setter for warnings
30357    }
30358
30359    var normalize = Interface[propName];
30360
30361    if (normalize) {
30362      this[propName] = normalize(nativeEvent);
30363    } else {
30364      if (propName === 'target') {
30365        this.target = nativeEventTarget;
30366      } else {
30367        this[propName] = nativeEvent[propName];
30368      }
30369    }
30370  }
30371
30372  var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;
30373
30374  if (defaultPrevented) {
30375    this.isDefaultPrevented = functionThatReturnsTrue;
30376  } else {
30377    this.isDefaultPrevented = functionThatReturnsFalse;
30378  }
30379
30380  this.isPropagationStopped = functionThatReturnsFalse;
30381  return this;
30382}
30383
30384_assign(SyntheticEvent.prototype, {
30385  preventDefault: function () {
30386    this.defaultPrevented = true;
30387    var event = this.nativeEvent;
30388
30389    if (!event) {
30390      return;
30391    }
30392
30393    if (event.preventDefault) {
30394      event.preventDefault();
30395    } else if (typeof event.returnValue !== 'unknown') {
30396      event.returnValue = false;
30397    }
30398
30399    this.isDefaultPrevented = functionThatReturnsTrue;
30400  },
30401  stopPropagation: function () {
30402    var event = this.nativeEvent;
30403
30404    if (!event) {
30405      return;
30406    }
30407
30408    if (event.stopPropagation) {
30409      event.stopPropagation();
30410    } else if (typeof event.cancelBubble !== 'unknown') {
30411      // The ChangeEventPlugin registers a "propertychange" event for
30412      // IE. This event does not support bubbling or cancelling, and
30413      // any references to cancelBubble throw "Member not found".  A
30414      // typeof check of "unknown" circumvents this issue (and is also
30415      // IE specific).
30416      event.cancelBubble = true;
30417    }
30418
30419    this.isPropagationStopped = functionThatReturnsTrue;
30420  },
30421
30422  /**
30423   * We release all dispatched `SyntheticEvent`s after each event loop, adding
30424   * them back into the pool. This allows a way to hold onto a reference that
30425   * won't be added back into the pool.
30426   */
30427  persist: function () {
30428    this.isPersistent = functionThatReturnsTrue;
30429  },
30430
30431  /**
30432   * Checks if this event should be released back into the pool.
30433   *
30434   * @return {boolean} True if this should not be released, false otherwise.
30435   */
30436  isPersistent: functionThatReturnsFalse,
30437
30438  /**
30439   * `PooledClass` looks for `destructor` on each instance it releases.
30440   */
30441  destructor: function () {
30442    var Interface = this.constructor.Interface;
30443
30444    for (var propName in Interface) {
30445      {
30446        Object.defineProperty(this, propName, getPooledWarningPropertyDefinition(propName, Interface[propName]));
30447      }
30448    }
30449
30450    this.dispatchConfig = null;
30451    this._targetInst = null;
30452    this.nativeEvent = null;
30453    this.isDefaultPrevented = functionThatReturnsFalse;
30454    this.isPropagationStopped = functionThatReturnsFalse;
30455    this._dispatchListeners = null;
30456    this._dispatchInstances = null;
30457
30458    {
30459      Object.defineProperty(this, 'nativeEvent', getPooledWarningPropertyDefinition('nativeEvent', null));
30460      Object.defineProperty(this, 'isDefaultPrevented', getPooledWarningPropertyDefinition('isDefaultPrevented', functionThatReturnsFalse));
30461      Object.defineProperty(this, 'isPropagationStopped', getPooledWarningPropertyDefinition('isPropagationStopped', functionThatReturnsFalse));
30462      Object.defineProperty(this, 'preventDefault', getPooledWarningPropertyDefinition('preventDefault', function () {}));
30463      Object.defineProperty(this, 'stopPropagation', getPooledWarningPropertyDefinition('stopPropagation', function () {}));
30464    }
30465  }
30466});
30467
30468SyntheticEvent.Interface = EventInterface;
30469/**
30470 * Helper to reduce boilerplate when creating subclasses.
30471 */
30472
30473SyntheticEvent.extend = function (Interface) {
30474  var Super = this;
30475
30476  var E = function () {};
30477
30478  E.prototype = Super.prototype;
30479  var prototype = new E();
30480
30481  function Class() {
30482    return Super.apply(this, arguments);
30483  }
30484
30485  _assign(prototype, Class.prototype);
30486
30487  Class.prototype = prototype;
30488  Class.prototype.constructor = Class;
30489  Class.Interface = _assign({}, Super.Interface, Interface);
30490  Class.extend = Super.extend;
30491  addEventPoolingTo(Class);
30492  return Class;
30493};
30494
30495addEventPoolingTo(SyntheticEvent);
30496/**
30497 * Helper to nullify syntheticEvent instance properties when destructing
30498 *
30499 * @param {String} propName
30500 * @param {?object} getVal
30501 * @return {object} defineProperty object
30502 */
30503
30504function getPooledWarningPropertyDefinition(propName, getVal) {
30505  var isFunction = typeof getVal === 'function';
30506  return {
30507    configurable: true,
30508    set: set,
30509    get: get
30510  };
30511
30512  function set(val) {
30513    var action = isFunction ? 'setting the method' : 'setting the property';
30514    warn(action, 'This is effectively a no-op');
30515    return val;
30516  }
30517
30518  function get() {
30519    var action = isFunction ? 'accessing the method' : 'accessing the property';
30520    var result = isFunction ? 'This is a no-op function' : 'This is set to null';
30521    warn(action, result);
30522    return getVal;
30523  }
30524
30525  function warn(action, result) {
30526    {
30527      error("This synthetic event is reused for performance reasons. If you're seeing this, " + "you're %s `%s` on a released/nullified synthetic event. %s. " + 'If you must keep the original synthetic event around, use event.persist(). ' + 'See https://fb.me/react-event-pooling for more information.', action, propName, result);
30528    }
30529  }
30530}
30531
30532function getPooledEvent(dispatchConfig, targetInst, nativeEvent, nativeInst) {
30533  var EventConstructor = this;
30534
30535  if (EventConstructor.eventPool.length) {
30536    var instance = EventConstructor.eventPool.pop();
30537    EventConstructor.call(instance, dispatchConfig, targetInst, nativeEvent, nativeInst);
30538    return instance;
30539  }
30540
30541  return new EventConstructor(dispatchConfig, targetInst, nativeEvent, nativeInst);
30542}
30543
30544function releasePooledEvent(event) {
30545  var EventConstructor = this;
30546
30547  if (!(event instanceof EventConstructor)) {
30548    {
30549      throw Error( "Trying to release an event instance into a pool of a different type." );
30550    }
30551  }
30552
30553  event.destructor();
30554
30555  if (EventConstructor.eventPool.length < EVENT_POOL_SIZE) {
30556    EventConstructor.eventPool.push(event);
30557  }
30558}
30559
30560function addEventPoolingTo(EventConstructor) {
30561  EventConstructor.eventPool = [];
30562  EventConstructor.getPooled = getPooledEvent;
30563  EventConstructor.release = releasePooledEvent;
30564}
30565
30566/**
30567 * @interface Event
30568 * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents
30569 */
30570
30571var SyntheticCompositionEvent = SyntheticEvent.extend({
30572  data: null
30573});
30574
30575/**
30576 * @interface Event
30577 * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105
30578 *      /#events-inputevents
30579 */
30580
30581var SyntheticInputEvent = SyntheticEvent.extend({
30582  data: null
30583});
30584
30585var END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space
30586
30587var START_KEYCODE = 229;
30588var canUseCompositionEvent = canUseDOM && 'CompositionEvent' in window;
30589var documentMode = null;
30590
30591if (canUseDOM && 'documentMode' in document) {
30592  documentMode = document.documentMode;
30593} // Webkit offers a very useful `textInput` event that can be used to
30594// directly represent `beforeInput`. The IE `textinput` event is not as
30595// useful, so we don't use it.
30596
30597
30598var canUseTextInputEvent = canUseDOM && 'TextEvent' in window && !documentMode; // In IE9+, we have access to composition events, but the data supplied
30599// by the native compositionend event may be incorrect. Japanese ideographic
30600// spaces, for instance (\u3000) are not recorded correctly.
30601
30602var useFallbackCompositionData = canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);
30603var SPACEBAR_CODE = 32;
30604var SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE); // Events and their corresponding property names.
30605
30606var eventTypes = {
30607  beforeInput: {
30608    phasedRegistrationNames: {
30609      bubbled: 'onBeforeInput',
30610      captured: 'onBeforeInputCapture'
30611    },
30612    dependencies: [TOP_COMPOSITION_END, TOP_KEY_PRESS, TOP_TEXT_INPUT, TOP_PASTE]
30613  },
30614  compositionEnd: {
30615    phasedRegistrationNames: {
30616      bubbled: 'onCompositionEnd',
30617      captured: 'onCompositionEndCapture'
30618    },
30619    dependencies: [TOP_BLUR, TOP_COMPOSITION_END, TOP_KEY_DOWN, TOP_KEY_PRESS, TOP_KEY_UP, TOP_MOUSE_DOWN]
30620  },
30621  compositionStart: {
30622    phasedRegistrationNames: {
30623      bubbled: 'onCompositionStart',
30624      captured: 'onCompositionStartCapture'
30625    },
30626    dependencies: [TOP_BLUR, TOP_COMPOSITION_START, TOP_KEY_DOWN, TOP_KEY_PRESS, TOP_KEY_UP, TOP_MOUSE_DOWN]
30627  },
30628  compositionUpdate: {
30629    phasedRegistrationNames: {
30630      bubbled: 'onCompositionUpdate',
30631      captured: 'onCompositionUpdateCapture'
30632    },
30633    dependencies: [TOP_BLUR, TOP_COMPOSITION_UPDATE, TOP_KEY_DOWN, TOP_KEY_PRESS, TOP_KEY_UP, TOP_MOUSE_DOWN]
30634  }
30635}; // Track whether we've ever handled a keypress on the space key.
30636
30637var hasSpaceKeypress = false;
30638/**
30639 * Return whether a native keypress event is assumed to be a command.
30640 * This is required because Firefox fires `keypress` events for key commands
30641 * (cut, copy, select-all, etc.) even though no character is inserted.
30642 */
30643
30644function isKeypressCommand(nativeEvent) {
30645  return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) && // ctrlKey && altKey is equivalent to AltGr, and is not a command.
30646  !(nativeEvent.ctrlKey && nativeEvent.altKey);
30647}
30648/**
30649 * Translate native top level events into event types.
30650 *
30651 * @param {string} topLevelType
30652 * @return {object}
30653 */
30654
30655
30656function getCompositionEventType(topLevelType) {
30657  switch (topLevelType) {
30658    case TOP_COMPOSITION_START:
30659      return eventTypes.compositionStart;
30660
30661    case TOP_COMPOSITION_END:
30662      return eventTypes.compositionEnd;
30663
30664    case TOP_COMPOSITION_UPDATE:
30665      return eventTypes.compositionUpdate;
30666  }
30667}
30668/**
30669 * Does our fallback best-guess model think this event signifies that
30670 * composition has begun?
30671 *
30672 * @param {string} topLevelType
30673 * @param {object} nativeEvent
30674 * @return {boolean}
30675 */
30676
30677
30678function isFallbackCompositionStart(topLevelType, nativeEvent) {
30679  return topLevelType === TOP_KEY_DOWN && nativeEvent.keyCode === START_KEYCODE;
30680}
30681/**
30682 * Does our fallback mode think that this event is the end of composition?
30683 *
30684 * @param {string} topLevelType
30685 * @param {object} nativeEvent
30686 * @return {boolean}
30687 */
30688
30689
30690function isFallbackCompositionEnd(topLevelType, nativeEvent) {
30691  switch (topLevelType) {
30692    case TOP_KEY_UP:
30693      // Command keys insert or clear IME input.
30694      return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;
30695
30696    case TOP_KEY_DOWN:
30697      // Expect IME keyCode on each keydown. If we get any other
30698      // code we must have exited earlier.
30699      return nativeEvent.keyCode !== START_KEYCODE;
30700
30701    case TOP_KEY_PRESS:
30702    case TOP_MOUSE_DOWN:
30703    case TOP_BLUR:
30704      // Events are not possible without cancelling IME.
30705      return true;
30706
30707    default:
30708      return false;
30709  }
30710}
30711/**
30712 * Google Input Tools provides composition data via a CustomEvent,
30713 * with the `data` property populated in the `detail` object. If this
30714 * is available on the event object, use it. If not, this is a plain
30715 * composition event and we have nothing special to extract.
30716 *
30717 * @param {object} nativeEvent
30718 * @return {?string}
30719 */
30720
30721
30722function getDataFromCustomEvent(nativeEvent) {
30723  var detail = nativeEvent.detail;
30724
30725  if (typeof detail === 'object' && 'data' in detail) {
30726    return detail.data;
30727  }
30728
30729  return null;
30730}
30731/**
30732 * Check if a composition event was triggered by Korean IME.
30733 * Our fallback mode does not work well with IE's Korean IME,
30734 * so just use native composition events when Korean IME is used.
30735 * Although CompositionEvent.locale property is deprecated,
30736 * it is available in IE, where our fallback mode is enabled.
30737 *
30738 * @param {object} nativeEvent
30739 * @return {boolean}
30740 */
30741
30742
30743function isUsingKoreanIME(nativeEvent) {
30744  return nativeEvent.locale === 'ko';
30745} // Track the current IME composition status, if any.
30746
30747
30748var isComposing = false;
30749/**
30750 * @return {?object} A SyntheticCompositionEvent.
30751 */
30752
30753function extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {
30754  var eventType;
30755  var fallbackData;
30756
30757  if (canUseCompositionEvent) {
30758    eventType = getCompositionEventType(topLevelType);
30759  } else if (!isComposing) {
30760    if (isFallbackCompositionStart(topLevelType, nativeEvent)) {
30761      eventType = eventTypes.compositionStart;
30762    }
30763  } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) {
30764    eventType = eventTypes.compositionEnd;
30765  }
30766
30767  if (!eventType) {
30768    return null;
30769  }
30770
30771  if (useFallbackCompositionData && !isUsingKoreanIME(nativeEvent)) {
30772    // The current composition is stored statically and must not be
30773    // overwritten while composition continues.
30774    if (!isComposing && eventType === eventTypes.compositionStart) {
30775      isComposing = initialize(nativeEventTarget);
30776    } else if (eventType === eventTypes.compositionEnd) {
30777      if (isComposing) {
30778        fallbackData = getData();
30779      }
30780    }
30781  }
30782
30783  var event = SyntheticCompositionEvent.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget);
30784
30785  if (fallbackData) {
30786    // Inject data generated from fallback path into the synthetic event.
30787    // This matches the property of native CompositionEventInterface.
30788    event.data = fallbackData;
30789  } else {
30790    var customData = getDataFromCustomEvent(nativeEvent);
30791
30792    if (customData !== null) {
30793      event.data = customData;
30794    }
30795  }
30796
30797  accumulateTwoPhaseDispatches(event);
30798  return event;
30799}
30800/**
30801 * @param {TopLevelType} topLevelType Number from `TopLevelType`.
30802 * @param {object} nativeEvent Native browser event.
30803 * @return {?string} The string corresponding to this `beforeInput` event.
30804 */
30805
30806
30807function getNativeBeforeInputChars(topLevelType, nativeEvent) {
30808  switch (topLevelType) {
30809    case TOP_COMPOSITION_END:
30810      return getDataFromCustomEvent(nativeEvent);
30811
30812    case TOP_KEY_PRESS:
30813      /**
30814       * If native `textInput` events are available, our goal is to make
30815       * use of them. However, there is a special case: the spacebar key.
30816       * In Webkit, preventing default on a spacebar `textInput` event
30817       * cancels character insertion, but it *also* causes the browser
30818       * to fall back to its default spacebar behavior of scrolling the
30819       * page.
30820       *
30821       * Tracking at:
30822       * https://code.google.com/p/chromium/issues/detail?id=355103
30823       *
30824       * To avoid this issue, use the keypress event as if no `textInput`
30825       * event is available.
30826       */
30827      var which = nativeEvent.which;
30828
30829      if (which !== SPACEBAR_CODE) {
30830        return null;
30831      }
30832
30833      hasSpaceKeypress = true;
30834      return SPACEBAR_CHAR;
30835
30836    case TOP_TEXT_INPUT:
30837      // Record the characters to be added to the DOM.
30838      var chars = nativeEvent.data; // If it's a spacebar character, assume that we have already handled
30839      // it at the keypress level and bail immediately. Android Chrome
30840      // doesn't give us keycodes, so we need to ignore it.
30841
30842      if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {
30843        return null;
30844      }
30845
30846      return chars;
30847
30848    default:
30849      // For other native event types, do nothing.
30850      return null;
30851  }
30852}
30853/**
30854 * For browsers that do not provide the `textInput` event, extract the
30855 * appropriate string to use for SyntheticInputEvent.
30856 *
30857 * @param {number} topLevelType Number from `TopLevelEventTypes`.
30858 * @param {object} nativeEvent Native browser event.
30859 * @return {?string} The fallback string for this `beforeInput` event.
30860 */
30861
30862
30863function getFallbackBeforeInputChars(topLevelType, nativeEvent) {
30864  // If we are currently composing (IME) and using a fallback to do so,
30865  // try to extract the composed characters from the fallback object.
30866  // If composition event is available, we extract a string only at
30867  // compositionevent, otherwise extract it at fallback events.
30868  if (isComposing) {
30869    if (topLevelType === TOP_COMPOSITION_END || !canUseCompositionEvent && isFallbackCompositionEnd(topLevelType, nativeEvent)) {
30870      var chars = getData();
30871      reset();
30872      isComposing = false;
30873      return chars;
30874    }
30875
30876    return null;
30877  }
30878
30879  switch (topLevelType) {
30880    case TOP_PASTE:
30881      // If a paste event occurs after a keypress, throw out the input
30882      // chars. Paste events should not lead to BeforeInput events.
30883      return null;
30884
30885    case TOP_KEY_PRESS:
30886      /**
30887       * As of v27, Firefox may fire keypress events even when no character
30888       * will be inserted. A few possibilities:
30889       *
30890       * - `which` is `0`. Arrow keys, Esc key, etc.
30891       *
30892       * - `which` is the pressed key code, but no char is available.
30893       *   Ex: 'AltGr + d` in Polish. There is no modified character for
30894       *   this key combination and no character is inserted into the
30895       *   document, but FF fires the keypress for char code `100` anyway.
30896       *   No `input` event will occur.
30897       *
30898       * - `which` is the pressed key code, but a command combination is
30899       *   being used. Ex: `Cmd+C`. No character is inserted, and no
30900       *   `input` event will occur.
30901       */
30902      if (!isKeypressCommand(nativeEvent)) {
30903        // IE fires the `keypress` event when a user types an emoji via
30904        // Touch keyboard of Windows.  In such a case, the `char` property
30905        // holds an emoji character like `\uD83D\uDE0A`.  Because its length
30906        // is 2, the property `which` does not represent an emoji correctly.
30907        // In such a case, we directly return the `char` property instead of
30908        // using `which`.
30909        if (nativeEvent.char && nativeEvent.char.length > 1) {
30910          return nativeEvent.char;
30911        } else if (nativeEvent.which) {
30912          return String.fromCharCode(nativeEvent.which);
30913        }
30914      }
30915
30916      return null;
30917
30918    case TOP_COMPOSITION_END:
30919      return useFallbackCompositionData && !isUsingKoreanIME(nativeEvent) ? null : nativeEvent.data;
30920
30921    default:
30922      return null;
30923  }
30924}
30925/**
30926 * Extract a SyntheticInputEvent for `beforeInput`, based on either native
30927 * `textInput` or fallback behavior.
30928 *
30929 * @return {?object} A SyntheticInputEvent.
30930 */
30931
30932
30933function extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) {
30934  var chars;
30935
30936  if (canUseTextInputEvent) {
30937    chars = getNativeBeforeInputChars(topLevelType, nativeEvent);
30938  } else {
30939    chars = getFallbackBeforeInputChars(topLevelType, nativeEvent);
30940  } // If no characters are being inserted, no BeforeInput event should
30941  // be fired.
30942
30943
30944  if (!chars) {
30945    return null;
30946  }
30947
30948  var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, targetInst, nativeEvent, nativeEventTarget);
30949  event.data = chars;
30950  accumulateTwoPhaseDispatches(event);
30951  return event;
30952}
30953/**
30954 * Create an `onBeforeInput` event to match
30955 * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.
30956 *
30957 * This event plugin is based on the native `textInput` event
30958 * available in Chrome, Safari, Opera, and IE. This event fires after
30959 * `onKeyPress` and `onCompositionEnd`, but before `onInput`.
30960 *
30961 * `beforeInput` is spec'd but not implemented in any browsers, and
30962 * the `input` event does not provide any useful information about what has
30963 * actually been added, contrary to the spec. Thus, `textInput` is the best
30964 * available event to identify the characters that have actually been inserted
30965 * into the target node.
30966 *
30967 * This plugin is also responsible for emitting `composition` events, thus
30968 * allowing us to share composition fallback code for both `beforeInput` and
30969 * `composition` event types.
30970 */
30971
30972
30973var BeforeInputEventPlugin = {
30974  eventTypes: eventTypes,
30975  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags) {
30976    var composition = extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget);
30977    var beforeInput = extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget);
30978
30979    if (composition === null) {
30980      return beforeInput;
30981    }
30982
30983    if (beforeInput === null) {
30984      return composition;
30985    }
30986
30987    return [composition, beforeInput];
30988  }
30989};
30990
30991/**
30992 * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary
30993 */
30994var supportedInputTypes = {
30995  color: true,
30996  date: true,
30997  datetime: true,
30998  'datetime-local': true,
30999  email: true,
31000  month: true,
31001  number: true,
31002  password: true,
31003  range: true,
31004  search: true,
31005  tel: true,
31006  text: true,
31007  time: true,
31008  url: true,
31009  week: true
31010};
31011
31012function isTextInputElement(elem) {
31013  var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();
31014
31015  if (nodeName === 'input') {
31016    return !!supportedInputTypes[elem.type];
31017  }
31018
31019  if (nodeName === 'textarea') {
31020    return true;
31021  }
31022
31023  return false;
31024}
31025
31026var eventTypes$1 = {
31027  change: {
31028    phasedRegistrationNames: {
31029      bubbled: 'onChange',
31030      captured: 'onChangeCapture'
31031    },
31032    dependencies: [TOP_BLUR, TOP_CHANGE, TOP_CLICK, TOP_FOCUS, TOP_INPUT, TOP_KEY_DOWN, TOP_KEY_UP, TOP_SELECTION_CHANGE]
31033  }
31034};
31035
31036function createAndAccumulateChangeEvent(inst, nativeEvent, target) {
31037  var event = SyntheticEvent.getPooled(eventTypes$1.change, inst, nativeEvent, target);
31038  event.type = 'change'; // Flag this event loop as needing state restore.
31039
31040  enqueueStateRestore(target);
31041  accumulateTwoPhaseDispatches(event);
31042  return event;
31043}
31044/**
31045 * For IE shims
31046 */
31047
31048
31049var activeElement = null;
31050var activeElementInst = null;
31051/**
31052 * SECTION: handle `change` event
31053 */
31054
31055function shouldUseChangeEvent(elem) {
31056  var nodeName = elem.nodeName && elem.nodeName.toLowerCase();
31057  return nodeName === 'select' || nodeName === 'input' && elem.type === 'file';
31058}
31059
31060function manualDispatchChangeEvent(nativeEvent) {
31061  var event = createAndAccumulateChangeEvent(activeElementInst, nativeEvent, getEventTarget(nativeEvent)); // If change and propertychange bubbled, we'd just bind to it like all the
31062  // other events and have it go through ReactBrowserEventEmitter. Since it
31063  // doesn't, we manually listen for the events and so we have to enqueue and
31064  // process the abstract event manually.
31065  //
31066  // Batching is necessary here in order to ensure that all event handlers run
31067  // before the next rerender (including event handlers attached to ancestor
31068  // elements instead of directly on the input). Without this, controlled
31069  // components don't work properly in conjunction with event bubbling because
31070  // the component is rerendered and the value reverted before all the event
31071  // handlers can run. See https://github.com/facebook/react/issues/708.
31072
31073  batchedUpdates(runEventInBatch, event);
31074}
31075
31076function runEventInBatch(event) {
31077  runEventsInBatch(event);
31078}
31079
31080function getInstIfValueChanged(targetInst) {
31081  var targetNode = getNodeFromInstance$1(targetInst);
31082
31083  if (updateValueIfChanged(targetNode)) {
31084    return targetInst;
31085  }
31086}
31087
31088function getTargetInstForChangeEvent(topLevelType, targetInst) {
31089  if (topLevelType === TOP_CHANGE) {
31090    return targetInst;
31091  }
31092}
31093/**
31094 * SECTION: handle `input` event
31095 */
31096
31097
31098var isInputEventSupported = false;
31099
31100if (canUseDOM) {
31101  // IE9 claims to support the input event but fails to trigger it when
31102  // deleting text, so we ignore its input events.
31103  isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 9);
31104}
31105/**
31106 * (For IE <=9) Starts tracking propertychange events on the passed-in element
31107 * and override the value property so that we can distinguish user events from
31108 * value changes in JS.
31109 */
31110
31111
31112function startWatchingForValueChange(target, targetInst) {
31113  activeElement = target;
31114  activeElementInst = targetInst;
31115  activeElement.attachEvent('onpropertychange', handlePropertyChange);
31116}
31117/**
31118 * (For IE <=9) Removes the event listeners from the currently-tracked element,
31119 * if any exists.
31120 */
31121
31122
31123function stopWatchingForValueChange() {
31124  if (!activeElement) {
31125    return;
31126  }
31127
31128  activeElement.detachEvent('onpropertychange', handlePropertyChange);
31129  activeElement = null;
31130  activeElementInst = null;
31131}
31132/**
31133 * (For IE <=9) Handles a propertychange event, sending a `change` event if
31134 * the value of the active element has changed.
31135 */
31136
31137
31138function handlePropertyChange(nativeEvent) {
31139  if (nativeEvent.propertyName !== 'value') {
31140    return;
31141  }
31142
31143  if (getInstIfValueChanged(activeElementInst)) {
31144    manualDispatchChangeEvent(nativeEvent);
31145  }
31146}
31147
31148function handleEventsForInputEventPolyfill(topLevelType, target, targetInst) {
31149  if (topLevelType === TOP_FOCUS) {
31150    // In IE9, propertychange fires for most input events but is buggy and
31151    // doesn't fire when text is deleted, but conveniently, selectionchange
31152    // appears to fire in all of the remaining cases so we catch those and
31153    // forward the event if the value has changed
31154    // In either case, we don't want to call the event handler if the value
31155    // is changed from JS so we redefine a setter for `.value` that updates
31156    // our activeElementValue variable, allowing us to ignore those changes
31157    //
31158    // stopWatching() should be a noop here but we call it just in case we
31159    // missed a blur event somehow.
31160    stopWatchingForValueChange();
31161    startWatchingForValueChange(target, targetInst);
31162  } else if (topLevelType === TOP_BLUR) {
31163    stopWatchingForValueChange();
31164  }
31165} // For IE8 and IE9.
31166
31167
31168function getTargetInstForInputEventPolyfill(topLevelType, targetInst) {
31169  if (topLevelType === TOP_SELECTION_CHANGE || topLevelType === TOP_KEY_UP || topLevelType === TOP_KEY_DOWN) {
31170    // On the selectionchange event, the target is just document which isn't
31171    // helpful for us so just check activeElement instead.
31172    //
31173    // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire
31174    // propertychange on the first input event after setting `value` from a
31175    // script and fires only keydown, keypress, keyup. Catching keyup usually
31176    // gets it and catching keydown lets us fire an event for the first
31177    // keystroke if user does a key repeat (it'll be a little delayed: right
31178    // before the second keystroke). Other input methods (e.g., paste) seem to
31179    // fire selectionchange normally.
31180    return getInstIfValueChanged(activeElementInst);
31181  }
31182}
31183/**
31184 * SECTION: handle `click` event
31185 */
31186
31187
31188function shouldUseClickEvent(elem) {
31189  // Use the `click` event to detect changes to checkbox and radio inputs.
31190  // This approach works across all browsers, whereas `change` does not fire
31191  // until `blur` in IE8.
31192  var nodeName = elem.nodeName;
31193  return nodeName && nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');
31194}
31195
31196function getTargetInstForClickEvent(topLevelType, targetInst) {
31197  if (topLevelType === TOP_CLICK) {
31198    return getInstIfValueChanged(targetInst);
31199  }
31200}
31201
31202function getTargetInstForInputOrChangeEvent(topLevelType, targetInst) {
31203  if (topLevelType === TOP_INPUT || topLevelType === TOP_CHANGE) {
31204    return getInstIfValueChanged(targetInst);
31205  }
31206}
31207
31208function handleControlledInputBlur(node) {
31209  var state = node._wrapperState;
31210
31211  if (!state || !state.controlled || node.type !== 'number') {
31212    return;
31213  }
31214
31215  {
31216    // If controlled, assign the value attribute to the current value on blur
31217    setDefaultValue(node, 'number', node.value);
31218  }
31219}
31220/**
31221 * This plugin creates an `onChange` event that normalizes change events
31222 * across form elements. This event fires at a time when it's possible to
31223 * change the element's value without seeing a flicker.
31224 *
31225 * Supported elements are:
31226 * - input (see `isTextInputElement`)
31227 * - textarea
31228 * - select
31229 */
31230
31231
31232var ChangeEventPlugin = {
31233  eventTypes: eventTypes$1,
31234  _isInputEventSupported: isInputEventSupported,
31235  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags) {
31236    var targetNode = targetInst ? getNodeFromInstance$1(targetInst) : window;
31237    var getTargetInstFunc, handleEventFunc;
31238
31239    if (shouldUseChangeEvent(targetNode)) {
31240      getTargetInstFunc = getTargetInstForChangeEvent;
31241    } else if (isTextInputElement(targetNode)) {
31242      if (isInputEventSupported) {
31243        getTargetInstFunc = getTargetInstForInputOrChangeEvent;
31244      } else {
31245        getTargetInstFunc = getTargetInstForInputEventPolyfill;
31246        handleEventFunc = handleEventsForInputEventPolyfill;
31247      }
31248    } else if (shouldUseClickEvent(targetNode)) {
31249      getTargetInstFunc = getTargetInstForClickEvent;
31250    }
31251
31252    if (getTargetInstFunc) {
31253      var inst = getTargetInstFunc(topLevelType, targetInst);
31254
31255      if (inst) {
31256        var event = createAndAccumulateChangeEvent(inst, nativeEvent, nativeEventTarget);
31257        return event;
31258      }
31259    }
31260
31261    if (handleEventFunc) {
31262      handleEventFunc(topLevelType, targetNode, targetInst);
31263    } // When blurring, set the value attribute for number inputs
31264
31265
31266    if (topLevelType === TOP_BLUR) {
31267      handleControlledInputBlur(targetNode);
31268    }
31269  }
31270};
31271
31272var SyntheticUIEvent = SyntheticEvent.extend({
31273  view: null,
31274  detail: null
31275});
31276
31277/**
31278 * Translation from modifier key to the associated property in the event.
31279 * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers
31280 */
31281var modifierKeyToProp = {
31282  Alt: 'altKey',
31283  Control: 'ctrlKey',
31284  Meta: 'metaKey',
31285  Shift: 'shiftKey'
31286}; // Older browsers (Safari <= 10, iOS Safari <= 10.2) do not support
31287// getModifierState. If getModifierState is not supported, we map it to a set of
31288// modifier keys exposed by the event. In this case, Lock-keys are not supported.
31289
31290function modifierStateGetter(keyArg) {
31291  var syntheticEvent = this;
31292  var nativeEvent = syntheticEvent.nativeEvent;
31293
31294  if (nativeEvent.getModifierState) {
31295    return nativeEvent.getModifierState(keyArg);
31296  }
31297
31298  var keyProp = modifierKeyToProp[keyArg];
31299  return keyProp ? !!nativeEvent[keyProp] : false;
31300}
31301
31302function getEventModifierState(nativeEvent) {
31303  return modifierStateGetter;
31304}
31305
31306var previousScreenX = 0;
31307var previousScreenY = 0; // Use flags to signal movementX/Y has already been set
31308
31309var isMovementXSet = false;
31310var isMovementYSet = false;
31311/**
31312 * @interface MouseEvent
31313 * @see http://www.w3.org/TR/DOM-Level-3-Events/
31314 */
31315
31316var SyntheticMouseEvent = SyntheticUIEvent.extend({
31317  screenX: null,
31318  screenY: null,
31319  clientX: null,
31320  clientY: null,
31321  pageX: null,
31322  pageY: null,
31323  ctrlKey: null,
31324  shiftKey: null,
31325  altKey: null,
31326  metaKey: null,
31327  getModifierState: getEventModifierState,
31328  button: null,
31329  buttons: null,
31330  relatedTarget: function (event) {
31331    return event.relatedTarget || (event.fromElement === event.srcElement ? event.toElement : event.fromElement);
31332  },
31333  movementX: function (event) {
31334    if ('movementX' in event) {
31335      return event.movementX;
31336    }
31337
31338    var screenX = previousScreenX;
31339    previousScreenX = event.screenX;
31340
31341    if (!isMovementXSet) {
31342      isMovementXSet = true;
31343      return 0;
31344    }
31345
31346    return event.type === 'mousemove' ? event.screenX - screenX : 0;
31347  },
31348  movementY: function (event) {
31349    if ('movementY' in event) {
31350      return event.movementY;
31351    }
31352
31353    var screenY = previousScreenY;
31354    previousScreenY = event.screenY;
31355
31356    if (!isMovementYSet) {
31357      isMovementYSet = true;
31358      return 0;
31359    }
31360
31361    return event.type === 'mousemove' ? event.screenY - screenY : 0;
31362  }
31363});
31364
31365/**
31366 * @interface PointerEvent
31367 * @see http://www.w3.org/TR/pointerevents/
31368 */
31369
31370var SyntheticPointerEvent = SyntheticMouseEvent.extend({
31371  pointerId: null,
31372  width: null,
31373  height: null,
31374  pressure: null,
31375  tangentialPressure: null,
31376  tiltX: null,
31377  tiltY: null,
31378  twist: null,
31379  pointerType: null,
31380  isPrimary: null
31381});
31382
31383var eventTypes$2 = {
31384  mouseEnter: {
31385    registrationName: 'onMouseEnter',
31386    dependencies: [TOP_MOUSE_OUT, TOP_MOUSE_OVER]
31387  },
31388  mouseLeave: {
31389    registrationName: 'onMouseLeave',
31390    dependencies: [TOP_MOUSE_OUT, TOP_MOUSE_OVER]
31391  },
31392  pointerEnter: {
31393    registrationName: 'onPointerEnter',
31394    dependencies: [TOP_POINTER_OUT, TOP_POINTER_OVER]
31395  },
31396  pointerLeave: {
31397    registrationName: 'onPointerLeave',
31398    dependencies: [TOP_POINTER_OUT, TOP_POINTER_OVER]
31399  }
31400};
31401var EnterLeaveEventPlugin = {
31402  eventTypes: eventTypes$2,
31403
31404  /**
31405   * For almost every interaction we care about, there will be both a top-level
31406   * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that
31407   * we do not extract duplicate events. However, moving the mouse into the
31408   * browser from outside will not fire a `mouseout` event. In this case, we use
31409   * the `mouseover` top-level event.
31410   */
31411  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags) {
31412    var isOverEvent = topLevelType === TOP_MOUSE_OVER || topLevelType === TOP_POINTER_OVER;
31413    var isOutEvent = topLevelType === TOP_MOUSE_OUT || topLevelType === TOP_POINTER_OUT;
31414
31415    if (isOverEvent && (eventSystemFlags & IS_REPLAYED) === 0 && (nativeEvent.relatedTarget || nativeEvent.fromElement)) {
31416      // If this is an over event with a target, then we've already dispatched
31417      // the event in the out event of the other target. If this is replayed,
31418      // then it's because we couldn't dispatch against this target previously
31419      // so we have to do it now instead.
31420      return null;
31421    }
31422
31423    if (!isOutEvent && !isOverEvent) {
31424      // Must not be a mouse or pointer in or out - ignoring.
31425      return null;
31426    }
31427
31428    var win;
31429
31430    if (nativeEventTarget.window === nativeEventTarget) {
31431      // `nativeEventTarget` is probably a window object.
31432      win = nativeEventTarget;
31433    } else {
31434      // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.
31435      var doc = nativeEventTarget.ownerDocument;
31436
31437      if (doc) {
31438        win = doc.defaultView || doc.parentWindow;
31439      } else {
31440        win = window;
31441      }
31442    }
31443
31444    var from;
31445    var to;
31446
31447    if (isOutEvent) {
31448      from = targetInst;
31449      var related = nativeEvent.relatedTarget || nativeEvent.toElement;
31450      to = related ? getClosestInstanceFromNode(related) : null;
31451
31452      if (to !== null) {
31453        var nearestMounted = getNearestMountedFiber(to);
31454
31455        if (to !== nearestMounted || to.tag !== HostComponent && to.tag !== HostText) {
31456          to = null;
31457        }
31458      }
31459    } else {
31460      // Moving to a node from outside the window.
31461      from = null;
31462      to = targetInst;
31463    }
31464
31465    if (from === to) {
31466      // Nothing pertains to our managed components.
31467      return null;
31468    }
31469
31470    var eventInterface, leaveEventType, enterEventType, eventTypePrefix;
31471
31472    if (topLevelType === TOP_MOUSE_OUT || topLevelType === TOP_MOUSE_OVER) {
31473      eventInterface = SyntheticMouseEvent;
31474      leaveEventType = eventTypes$2.mouseLeave;
31475      enterEventType = eventTypes$2.mouseEnter;
31476      eventTypePrefix = 'mouse';
31477    } else if (topLevelType === TOP_POINTER_OUT || topLevelType === TOP_POINTER_OVER) {
31478      eventInterface = SyntheticPointerEvent;
31479      leaveEventType = eventTypes$2.pointerLeave;
31480      enterEventType = eventTypes$2.pointerEnter;
31481      eventTypePrefix = 'pointer';
31482    }
31483
31484    var fromNode = from == null ? win : getNodeFromInstance$1(from);
31485    var toNode = to == null ? win : getNodeFromInstance$1(to);
31486    var leave = eventInterface.getPooled(leaveEventType, from, nativeEvent, nativeEventTarget);
31487    leave.type = eventTypePrefix + 'leave';
31488    leave.target = fromNode;
31489    leave.relatedTarget = toNode;
31490    var enter = eventInterface.getPooled(enterEventType, to, nativeEvent, nativeEventTarget);
31491    enter.type = eventTypePrefix + 'enter';
31492    enter.target = toNode;
31493    enter.relatedTarget = fromNode;
31494    accumulateEnterLeaveDispatches(leave, enter, from, to); // If we are not processing the first ancestor, then we
31495    // should not process the same nativeEvent again, as we
31496    // will have already processed it in the first ancestor.
31497
31498    if ((eventSystemFlags & IS_FIRST_ANCESTOR) === 0) {
31499      return [leave];
31500    }
31501
31502    return [leave, enter];
31503  }
31504};
31505
31506/**
31507 * inlined Object.is polyfill to avoid requiring consumers ship their own
31508 * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
31509 */
31510function is(x, y) {
31511  return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare
31512  ;
31513}
31514
31515var objectIs = typeof Object.is === 'function' ? Object.is : is;
31516
31517var hasOwnProperty$2 = Object.prototype.hasOwnProperty;
31518/**
31519 * Performs equality by iterating through keys on an object and returning false
31520 * when any key has values which are not strictly equal between the arguments.
31521 * Returns true when the values of all keys are strictly equal.
31522 */
31523
31524function shallowEqual(objA, objB) {
31525  if (objectIs(objA, objB)) {
31526    return true;
31527  }
31528
31529  if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {
31530    return false;
31531  }
31532
31533  var keysA = Object.keys(objA);
31534  var keysB = Object.keys(objB);
31535
31536  if (keysA.length !== keysB.length) {
31537    return false;
31538  } // Test for A's keys different from B.
31539
31540
31541  for (var i = 0; i < keysA.length; i++) {
31542    if (!hasOwnProperty$2.call(objB, keysA[i]) || !objectIs(objA[keysA[i]], objB[keysA[i]])) {
31543      return false;
31544    }
31545  }
31546
31547  return true;
31548}
31549
31550var skipSelectionChangeEvent = canUseDOM && 'documentMode' in document && document.documentMode <= 11;
31551var eventTypes$3 = {
31552  select: {
31553    phasedRegistrationNames: {
31554      bubbled: 'onSelect',
31555      captured: 'onSelectCapture'
31556    },
31557    dependencies: [TOP_BLUR, TOP_CONTEXT_MENU, TOP_DRAG_END, TOP_FOCUS, TOP_KEY_DOWN, TOP_KEY_UP, TOP_MOUSE_DOWN, TOP_MOUSE_UP, TOP_SELECTION_CHANGE]
31558  }
31559};
31560var activeElement$1 = null;
31561var activeElementInst$1 = null;
31562var lastSelection = null;
31563var mouseDown = false;
31564/**
31565 * Get an object which is a unique representation of the current selection.
31566 *
31567 * The return value will not be consistent across nodes or browsers, but
31568 * two identical selections on the same node will return identical objects.
31569 *
31570 * @param {DOMElement} node
31571 * @return {object}
31572 */
31573
31574function getSelection$1(node) {
31575  if ('selectionStart' in node && hasSelectionCapabilities(node)) {
31576    return {
31577      start: node.selectionStart,
31578      end: node.selectionEnd
31579    };
31580  } else {
31581    var win = node.ownerDocument && node.ownerDocument.defaultView || window;
31582    var selection = win.getSelection();
31583    return {
31584      anchorNode: selection.anchorNode,
31585      anchorOffset: selection.anchorOffset,
31586      focusNode: selection.focusNode,
31587      focusOffset: selection.focusOffset
31588    };
31589  }
31590}
31591/**
31592 * Get document associated with the event target.
31593 *
31594 * @param {object} nativeEventTarget
31595 * @return {Document}
31596 */
31597
31598
31599function getEventTargetDocument(eventTarget) {
31600  return eventTarget.window === eventTarget ? eventTarget.document : eventTarget.nodeType === DOCUMENT_NODE ? eventTarget : eventTarget.ownerDocument;
31601}
31602/**
31603 * Poll selection to see whether it's changed.
31604 *
31605 * @param {object} nativeEvent
31606 * @param {object} nativeEventTarget
31607 * @return {?SyntheticEvent}
31608 */
31609
31610
31611function constructSelectEvent(nativeEvent, nativeEventTarget) {
31612  // Ensure we have the right element, and that the user is not dragging a
31613  // selection (this matches native `select` event behavior). In HTML5, select
31614  // fires only on input and textarea thus if there's no focused element we
31615  // won't dispatch.
31616  var doc = getEventTargetDocument(nativeEventTarget);
31617
31618  if (mouseDown || activeElement$1 == null || activeElement$1 !== getActiveElement(doc)) {
31619    return null;
31620  } // Only fire when selection has actually changed.
31621
31622
31623  var currentSelection = getSelection$1(activeElement$1);
31624
31625  if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {
31626    lastSelection = currentSelection;
31627    var syntheticEvent = SyntheticEvent.getPooled(eventTypes$3.select, activeElementInst$1, nativeEvent, nativeEventTarget);
31628    syntheticEvent.type = 'select';
31629    syntheticEvent.target = activeElement$1;
31630    accumulateTwoPhaseDispatches(syntheticEvent);
31631    return syntheticEvent;
31632  }
31633
31634  return null;
31635}
31636/**
31637 * This plugin creates an `onSelect` event that normalizes select events
31638 * across form elements.
31639 *
31640 * Supported elements are:
31641 * - input (see `isTextInputElement`)
31642 * - textarea
31643 * - contentEditable
31644 *
31645 * This differs from native browser implementations in the following ways:
31646 * - Fires on contentEditable fields as well as inputs.
31647 * - Fires for collapsed selection.
31648 * - Fires after user input.
31649 */
31650
31651
31652var SelectEventPlugin = {
31653  eventTypes: eventTypes$3,
31654  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, container) {
31655    var containerOrDoc = container || getEventTargetDocument(nativeEventTarget); // Track whether all listeners exists for this plugin. If none exist, we do
31656    // not extract events. See #3639.
31657
31658    if (!containerOrDoc || !isListeningToAllDependencies('onSelect', containerOrDoc)) {
31659      return null;
31660    }
31661
31662    var targetNode = targetInst ? getNodeFromInstance$1(targetInst) : window;
31663
31664    switch (topLevelType) {
31665      // Track the input node that has focus.
31666      case TOP_FOCUS:
31667        if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') {
31668          activeElement$1 = targetNode;
31669          activeElementInst$1 = targetInst;
31670          lastSelection = null;
31671        }
31672
31673        break;
31674
31675      case TOP_BLUR:
31676        activeElement$1 = null;
31677        activeElementInst$1 = null;
31678        lastSelection = null;
31679        break;
31680      // Don't fire the event while the user is dragging. This matches the
31681      // semantics of the native select event.
31682
31683      case TOP_MOUSE_DOWN:
31684        mouseDown = true;
31685        break;
31686
31687      case TOP_CONTEXT_MENU:
31688      case TOP_MOUSE_UP:
31689      case TOP_DRAG_END:
31690        mouseDown = false;
31691        return constructSelectEvent(nativeEvent, nativeEventTarget);
31692      // Chrome and IE fire non-standard event when selection is changed (and
31693      // sometimes when it hasn't). IE's event fires out of order with respect
31694      // to key and input events on deletion, so we discard it.
31695      //
31696      // Firefox doesn't support selectionchange, so check selection status
31697      // after each key entry. The selection changes after keydown and before
31698      // keyup, but we check on keydown as well in the case of holding down a
31699      // key, when multiple keydown events are fired but only one keyup is.
31700      // This is also our approach for IE handling, for the reason above.
31701
31702      case TOP_SELECTION_CHANGE:
31703        if (skipSelectionChangeEvent) {
31704          break;
31705        }
31706
31707      // falls through
31708
31709      case TOP_KEY_DOWN:
31710      case TOP_KEY_UP:
31711        return constructSelectEvent(nativeEvent, nativeEventTarget);
31712    }
31713
31714    return null;
31715  }
31716};
31717
31718/**
31719 * @interface Event
31720 * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface
31721 * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent
31722 */
31723
31724var SyntheticAnimationEvent = SyntheticEvent.extend({
31725  animationName: null,
31726  elapsedTime: null,
31727  pseudoElement: null
31728});
31729
31730/**
31731 * @interface Event
31732 * @see http://www.w3.org/TR/clipboard-apis/
31733 */
31734
31735var SyntheticClipboardEvent = SyntheticEvent.extend({
31736  clipboardData: function (event) {
31737    return 'clipboardData' in event ? event.clipboardData : window.clipboardData;
31738  }
31739});
31740
31741/**
31742 * @interface FocusEvent
31743 * @see http://www.w3.org/TR/DOM-Level-3-Events/
31744 */
31745
31746var SyntheticFocusEvent = SyntheticUIEvent.extend({
31747  relatedTarget: null
31748});
31749
31750/**
31751 * `charCode` represents the actual "character code" and is safe to use with
31752 * `String.fromCharCode`. As such, only keys that correspond to printable
31753 * characters produce a valid `charCode`, the only exception to this is Enter.
31754 * The Tab-key is considered non-printable and does not have a `charCode`,
31755 * presumably because it does not produce a tab-character in browsers.
31756 *
31757 * @param {object} nativeEvent Native browser event.
31758 * @return {number} Normalized `charCode` property.
31759 */
31760function getEventCharCode(nativeEvent) {
31761  var charCode;
31762  var keyCode = nativeEvent.keyCode;
31763
31764  if ('charCode' in nativeEvent) {
31765    charCode = nativeEvent.charCode; // FF does not set `charCode` for the Enter-key, check against `keyCode`.
31766
31767    if (charCode === 0 && keyCode === 13) {
31768      charCode = 13;
31769    }
31770  } else {
31771    // IE8 does not implement `charCode`, but `keyCode` has the correct value.
31772    charCode = keyCode;
31773  } // IE and Edge (on Windows) and Chrome / Safari (on Windows and Linux)
31774  // report Enter as charCode 10 when ctrl is pressed.
31775
31776
31777  if (charCode === 10) {
31778    charCode = 13;
31779  } // Some non-printable keys are reported in `charCode`/`keyCode`, discard them.
31780  // Must not discard the (non-)printable Enter-key.
31781
31782
31783  if (charCode >= 32 || charCode === 13) {
31784    return charCode;
31785  }
31786
31787  return 0;
31788}
31789
31790/**
31791 * Normalization of deprecated HTML5 `key` values
31792 * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names
31793 */
31794
31795var normalizeKey = {
31796  Esc: 'Escape',
31797  Spacebar: ' ',
31798  Left: 'ArrowLeft',
31799  Up: 'ArrowUp',
31800  Right: 'ArrowRight',
31801  Down: 'ArrowDown',
31802  Del: 'Delete',
31803  Win: 'OS',
31804  Menu: 'ContextMenu',
31805  Apps: 'ContextMenu',
31806  Scroll: 'ScrollLock',
31807  MozPrintableKey: 'Unidentified'
31808};
31809/**
31810 * Translation from legacy `keyCode` to HTML5 `key`
31811 * Only special keys supported, all others depend on keyboard layout or browser
31812 * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names
31813 */
31814
31815var translateToKey = {
31816  '8': 'Backspace',
31817  '9': 'Tab',
31818  '12': 'Clear',
31819  '13': 'Enter',
31820  '16': 'Shift',
31821  '17': 'Control',
31822  '18': 'Alt',
31823  '19': 'Pause',
31824  '20': 'CapsLock',
31825  '27': 'Escape',
31826  '32': ' ',
31827  '33': 'PageUp',
31828  '34': 'PageDown',
31829  '35': 'End',
31830  '36': 'Home',
31831  '37': 'ArrowLeft',
31832  '38': 'ArrowUp',
31833  '39': 'ArrowRight',
31834  '40': 'ArrowDown',
31835  '45': 'Insert',
31836  '46': 'Delete',
31837  '112': 'F1',
31838  '113': 'F2',
31839  '114': 'F3',
31840  '115': 'F4',
31841  '116': 'F5',
31842  '117': 'F6',
31843  '118': 'F7',
31844  '119': 'F8',
31845  '120': 'F9',
31846  '121': 'F10',
31847  '122': 'F11',
31848  '123': 'F12',
31849  '144': 'NumLock',
31850  '145': 'ScrollLock',
31851  '224': 'Meta'
31852};
31853/**
31854 * @param {object} nativeEvent Native browser event.
31855 * @return {string} Normalized `key` property.
31856 */
31857
31858function getEventKey(nativeEvent) {
31859  if (nativeEvent.key) {
31860    // Normalize inconsistent values reported by browsers due to
31861    // implementations of a working draft specification.
31862    // FireFox implements `key` but returns `MozPrintableKey` for all
31863    // printable characters (normalized to `Unidentified`), ignore it.
31864    var key = normalizeKey[nativeEvent.key] || nativeEvent.key;
31865
31866    if (key !== 'Unidentified') {
31867      return key;
31868    }
31869  } // Browser does not implement `key`, polyfill as much of it as we can.
31870
31871
31872  if (nativeEvent.type === 'keypress') {
31873    var charCode = getEventCharCode(nativeEvent); // The enter-key is technically both printable and non-printable and can
31874    // thus be captured by `keypress`, no other non-printable key should.
31875
31876    return charCode === 13 ? 'Enter' : String.fromCharCode(charCode);
31877  }
31878
31879  if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') {
31880    // While user keyboard layout determines the actual meaning of each
31881    // `keyCode` value, almost all function keys have a universal value.
31882    return translateToKey[nativeEvent.keyCode] || 'Unidentified';
31883  }
31884
31885  return '';
31886}
31887
31888/**
31889 * @interface KeyboardEvent
31890 * @see http://www.w3.org/TR/DOM-Level-3-Events/
31891 */
31892
31893var SyntheticKeyboardEvent = SyntheticUIEvent.extend({
31894  key: getEventKey,
31895  location: null,
31896  ctrlKey: null,
31897  shiftKey: null,
31898  altKey: null,
31899  metaKey: null,
31900  repeat: null,
31901  locale: null,
31902  getModifierState: getEventModifierState,
31903  // Legacy Interface
31904  charCode: function (event) {
31905    // `charCode` is the result of a KeyPress event and represents the value of
31906    // the actual printable character.
31907    // KeyPress is deprecated, but its replacement is not yet final and not
31908    // implemented in any major browser. Only KeyPress has charCode.
31909    if (event.type === 'keypress') {
31910      return getEventCharCode(event);
31911    }
31912
31913    return 0;
31914  },
31915  keyCode: function (event) {
31916    // `keyCode` is the result of a KeyDown/Up event and represents the value of
31917    // physical keyboard key.
31918    // The actual meaning of the value depends on the users' keyboard layout
31919    // which cannot be detected. Assuming that it is a US keyboard layout
31920    // provides a surprisingly accurate mapping for US and European users.
31921    // Due to this, it is left to the user to implement at this time.
31922    if (event.type === 'keydown' || event.type === 'keyup') {
31923      return event.keyCode;
31924    }
31925
31926    return 0;
31927  },
31928  which: function (event) {
31929    // `which` is an alias for either `keyCode` or `charCode` depending on the
31930    // type of the event.
31931    if (event.type === 'keypress') {
31932      return getEventCharCode(event);
31933    }
31934
31935    if (event.type === 'keydown' || event.type === 'keyup') {
31936      return event.keyCode;
31937    }
31938
31939    return 0;
31940  }
31941});
31942
31943/**
31944 * @interface DragEvent
31945 * @see http://www.w3.org/TR/DOM-Level-3-Events/
31946 */
31947
31948var SyntheticDragEvent = SyntheticMouseEvent.extend({
31949  dataTransfer: null
31950});
31951
31952/**
31953 * @interface TouchEvent
31954 * @see http://www.w3.org/TR/touch-events/
31955 */
31956
31957var SyntheticTouchEvent = SyntheticUIEvent.extend({
31958  touches: null,
31959  targetTouches: null,
31960  changedTouches: null,
31961  altKey: null,
31962  metaKey: null,
31963  ctrlKey: null,
31964  shiftKey: null,
31965  getModifierState: getEventModifierState
31966});
31967
31968/**
31969 * @interface Event
31970 * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events-
31971 * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent
31972 */
31973
31974var SyntheticTransitionEvent = SyntheticEvent.extend({
31975  propertyName: null,
31976  elapsedTime: null,
31977  pseudoElement: null
31978});
31979
31980/**
31981 * @interface WheelEvent
31982 * @see http://www.w3.org/TR/DOM-Level-3-Events/
31983 */
31984
31985var SyntheticWheelEvent = SyntheticMouseEvent.extend({
31986  deltaX: function (event) {
31987    return 'deltaX' in event ? event.deltaX : // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).
31988    'wheelDeltaX' in event ? -event.wheelDeltaX : 0;
31989  },
31990  deltaY: function (event) {
31991    return 'deltaY' in event ? event.deltaY : // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).
31992    'wheelDeltaY' in event ? -event.wheelDeltaY : // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).
31993    'wheelDelta' in event ? -event.wheelDelta : 0;
31994  },
31995  deltaZ: null,
31996  // Browsers without "deltaMode" is reporting in raw wheel delta where one
31997  // notch on the scroll is always +/- 120, roughly equivalent to pixels.
31998  // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or
31999  // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.
32000  deltaMode: null
32001});
32002
32003var knownHTMLTopLevelTypes = [TOP_ABORT, TOP_CANCEL, TOP_CAN_PLAY, TOP_CAN_PLAY_THROUGH, TOP_CLOSE, TOP_DURATION_CHANGE, TOP_EMPTIED, TOP_ENCRYPTED, TOP_ENDED, TOP_ERROR, TOP_INPUT, TOP_INVALID, TOP_LOAD, TOP_LOADED_DATA, TOP_LOADED_METADATA, TOP_LOAD_START, TOP_PAUSE, TOP_PLAY, TOP_PLAYING, TOP_PROGRESS, TOP_RATE_CHANGE, TOP_RESET, TOP_SEEKED, TOP_SEEKING, TOP_STALLED, TOP_SUBMIT, TOP_SUSPEND, TOP_TIME_UPDATE, TOP_TOGGLE, TOP_VOLUME_CHANGE, TOP_WAITING];
32004var SimpleEventPlugin = {
32005  // simpleEventPluginEventTypes gets populated from
32006  // the DOMEventProperties module.
32007  eventTypes: simpleEventPluginEventTypes,
32008  extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags) {
32009    var dispatchConfig = topLevelEventsToDispatchConfig.get(topLevelType);
32010
32011    if (!dispatchConfig) {
32012      return null;
32013    }
32014
32015    var EventConstructor;
32016
32017    switch (topLevelType) {
32018      case TOP_KEY_PRESS:
32019        // Firefox creates a keypress event for function keys too. This removes
32020        // the unwanted keypress events. Enter is however both printable and
32021        // non-printable. One would expect Tab to be as well (but it isn't).
32022        if (getEventCharCode(nativeEvent) === 0) {
32023          return null;
32024        }
32025
32026      /* falls through */
32027
32028      case TOP_KEY_DOWN:
32029      case TOP_KEY_UP:
32030        EventConstructor = SyntheticKeyboardEvent;
32031        break;
32032
32033      case TOP_BLUR:
32034      case TOP_FOCUS:
32035        EventConstructor = SyntheticFocusEvent;
32036        break;
32037
32038      case TOP_CLICK:
32039        // Firefox creates a click event on right mouse clicks. This removes the
32040        // unwanted click events.
32041        if (nativeEvent.button === 2) {
32042          return null;
32043        }
32044
32045      /* falls through */
32046
32047      case TOP_AUX_CLICK:
32048      case TOP_DOUBLE_CLICK:
32049      case TOP_MOUSE_DOWN:
32050      case TOP_MOUSE_MOVE:
32051      case TOP_MOUSE_UP: // TODO: Disabled elements should not respond to mouse events
32052
32053      /* falls through */
32054
32055      case TOP_MOUSE_OUT:
32056      case TOP_MOUSE_OVER:
32057      case TOP_CONTEXT_MENU:
32058        EventConstructor = SyntheticMouseEvent;
32059        break;
32060
32061      case TOP_DRAG:
32062      case TOP_DRAG_END:
32063      case TOP_DRAG_ENTER:
32064      case TOP_DRAG_EXIT:
32065      case TOP_DRAG_LEAVE:
32066      case TOP_DRAG_OVER:
32067      case TOP_DRAG_START:
32068      case TOP_DROP:
32069        EventConstructor = SyntheticDragEvent;
32070        break;
32071
32072      case TOP_TOUCH_CANCEL:
32073      case TOP_TOUCH_END:
32074      case TOP_TOUCH_MOVE:
32075      case TOP_TOUCH_START:
32076        EventConstructor = SyntheticTouchEvent;
32077        break;
32078
32079      case TOP_ANIMATION_END:
32080      case TOP_ANIMATION_ITERATION:
32081      case TOP_ANIMATION_START:
32082        EventConstructor = SyntheticAnimationEvent;
32083        break;
32084
32085      case TOP_TRANSITION_END:
32086        EventConstructor = SyntheticTransitionEvent;
32087        break;
32088
32089      case TOP_SCROLL:
32090        EventConstructor = SyntheticUIEvent;
32091        break;
32092
32093      case TOP_WHEEL:
32094        EventConstructor = SyntheticWheelEvent;
32095        break;
32096
32097      case TOP_COPY:
32098      case TOP_CUT:
32099      case TOP_PASTE:
32100        EventConstructor = SyntheticClipboardEvent;
32101        break;
32102
32103      case TOP_GOT_POINTER_CAPTURE:
32104      case TOP_LOST_POINTER_CAPTURE:
32105      case TOP_POINTER_CANCEL:
32106      case TOP_POINTER_DOWN:
32107      case TOP_POINTER_MOVE:
32108      case TOP_POINTER_OUT:
32109      case TOP_POINTER_OVER:
32110      case TOP_POINTER_UP:
32111        EventConstructor = SyntheticPointerEvent;
32112        break;
32113
32114      default:
32115        {
32116          if (knownHTMLTopLevelTypes.indexOf(topLevelType) === -1) {
32117            error('SimpleEventPlugin: Unhandled event type, `%s`. This warning ' + 'is likely caused by a bug in React. Please file an issue.', topLevelType);
32118          }
32119        } // HTML Events
32120        // @see http://www.w3.org/TR/html5/index.html#events-0
32121
32122
32123        EventConstructor = SyntheticEvent;
32124        break;
32125    }
32126
32127    var event = EventConstructor.getPooled(dispatchConfig, targetInst, nativeEvent, nativeEventTarget);
32128    accumulateTwoPhaseDispatches(event);
32129    return event;
32130  }
32131};
32132
32133/**
32134 * Specifies a deterministic ordering of `EventPlugin`s. A convenient way to
32135 * reason about plugins, without having to package every one of them. This
32136 * is better than having plugins be ordered in the same order that they
32137 * are injected because that ordering would be influenced by the packaging order.
32138 * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that
32139 * preventing default on events is convenient in `SimpleEventPlugin` handlers.
32140 */
32141
32142var DOMEventPluginOrder = ['ResponderEventPlugin', 'SimpleEventPlugin', 'EnterLeaveEventPlugin', 'ChangeEventPlugin', 'SelectEventPlugin', 'BeforeInputEventPlugin'];
32143/**
32144 * Inject modules for resolving DOM hierarchy and plugin ordering.
32145 */
32146
32147injectEventPluginOrder(DOMEventPluginOrder);
32148setComponentTree(getFiberCurrentPropsFromNode$1, getInstanceFromNode$1, getNodeFromInstance$1);
32149/**
32150 * Some important event plugins included by default (without having to require
32151 * them).
32152 */
32153
32154injectEventPluginsByName({
32155  SimpleEventPlugin: SimpleEventPlugin,
32156  EnterLeaveEventPlugin: EnterLeaveEventPlugin,
32157  ChangeEventPlugin: ChangeEventPlugin,
32158  SelectEventPlugin: SelectEventPlugin,
32159  BeforeInputEventPlugin: BeforeInputEventPlugin
32160});
32161
32162// Prefix measurements so that it's possible to filter them.
32163// Longer prefixes are hard to read in DevTools.
32164var reactEmoji = "\u269B";
32165var warningEmoji = "\u26D4";
32166var supportsUserTiming = typeof performance !== 'undefined' && typeof performance.mark === 'function' && typeof performance.clearMarks === 'function' && typeof performance.measure === 'function' && typeof performance.clearMeasures === 'function'; // Keep track of current fiber so that we know the path to unwind on pause.
32167// TODO: this looks the same as nextUnitOfWork in scheduler. Can we unify them?
32168
32169var currentFiber = null; // If we're in the middle of user code, which fiber and method is it?
32170// Reusing `currentFiber` would be confusing for this because user code fiber
32171// can change during commit phase too, but we don't need to unwind it (since
32172// lifecycles in the commit phase don't resemble a tree).
32173
32174var currentPhase = null;
32175var currentPhaseFiber = null; // Did lifecycle hook schedule an update? This is often a performance problem,
32176// so we will keep track of it, and include it in the report.
32177// Track commits caused by cascading updates.
32178
32179var isCommitting = false;
32180var hasScheduledUpdateInCurrentCommit = false;
32181var hasScheduledUpdateInCurrentPhase = false;
32182var commitCountInCurrentWorkLoop = 0;
32183var effectCountInCurrentCommit = 0;
32184// to avoid stretch the commit phase with measurement overhead.
32185
32186var labelsInCurrentCommit = new Set();
32187
32188var formatMarkName = function (markName) {
32189  return reactEmoji + " " + markName;
32190};
32191
32192var formatLabel = function (label, warning) {
32193  var prefix = warning ? warningEmoji + " " : reactEmoji + " ";
32194  var suffix = warning ? " Warning: " + warning : '';
32195  return "" + prefix + label + suffix;
32196};
32197
32198var beginMark = function (markName) {
32199  performance.mark(formatMarkName(markName));
32200};
32201
32202var clearMark = function (markName) {
32203  performance.clearMarks(formatMarkName(markName));
32204};
32205
32206var endMark = function (label, markName, warning) {
32207  var formattedMarkName = formatMarkName(markName);
32208  var formattedLabel = formatLabel(label, warning);
32209
32210  try {
32211    performance.measure(formattedLabel, formattedMarkName);
32212  } catch (err) {} // If previous mark was missing for some reason, this will throw.
32213  // This could only happen if React crashed in an unexpected place earlier.
32214  // Don't pile on with more errors.
32215  // Clear marks immediately to avoid growing buffer.
32216
32217
32218  performance.clearMarks(formattedMarkName);
32219  performance.clearMeasures(formattedLabel);
32220};
32221
32222var getFiberMarkName = function (label, debugID) {
32223  return label + " (#" + debugID + ")";
32224};
32225
32226var getFiberLabel = function (componentName, isMounted, phase) {
32227  if (phase === null) {
32228    // These are composite component total time measurements.
32229    return componentName + " [" + (isMounted ? 'update' : 'mount') + "]";
32230  } else {
32231    // Composite component methods.
32232    return componentName + "." + phase;
32233  }
32234};
32235
32236var beginFiberMark = function (fiber, phase) {
32237  var componentName = getComponentName(fiber.type) || 'Unknown';
32238  var debugID = fiber._debugID;
32239  var isMounted = fiber.alternate !== null;
32240  var label = getFiberLabel(componentName, isMounted, phase);
32241
32242  if (isCommitting && labelsInCurrentCommit.has(label)) {
32243    // During the commit phase, we don't show duplicate labels because
32244    // there is a fixed overhead for every measurement, and we don't
32245    // want to stretch the commit phase beyond necessary.
32246    return false;
32247  }
32248
32249  labelsInCurrentCommit.add(label);
32250  var markName = getFiberMarkName(label, debugID);
32251  beginMark(markName);
32252  return true;
32253};
32254
32255var clearFiberMark = function (fiber, phase) {
32256  var componentName = getComponentName(fiber.type) || 'Unknown';
32257  var debugID = fiber._debugID;
32258  var isMounted = fiber.alternate !== null;
32259  var label = getFiberLabel(componentName, isMounted, phase);
32260  var markName = getFiberMarkName(label, debugID);
32261  clearMark(markName);
32262};
32263
32264var endFiberMark = function (fiber, phase, warning) {
32265  var componentName = getComponentName(fiber.type) || 'Unknown';
32266  var debugID = fiber._debugID;
32267  var isMounted = fiber.alternate !== null;
32268  var label = getFiberLabel(componentName, isMounted, phase);
32269  var markName = getFiberMarkName(label, debugID);
32270  endMark(label, markName, warning);
32271};
32272
32273var shouldIgnoreFiber = function (fiber) {
32274  // Host components should be skipped in the timeline.
32275  // We could check typeof fiber.type, but does this work with RN?
32276  switch (fiber.tag) {
32277    case HostRoot:
32278    case HostComponent:
32279    case HostText:
32280    case HostPortal:
32281    case Fragment:
32282    case ContextProvider:
32283    case ContextConsumer:
32284    case Mode:
32285      return true;
32286
32287    default:
32288      return false;
32289  }
32290};
32291
32292var clearPendingPhaseMeasurement = function () {
32293  if (currentPhase !== null && currentPhaseFiber !== null) {
32294    clearFiberMark(currentPhaseFiber, currentPhase);
32295  }
32296
32297  currentPhaseFiber = null;
32298  currentPhase = null;
32299  hasScheduledUpdateInCurrentPhase = false;
32300};
32301
32302var pauseTimers = function () {
32303  // Stops all currently active measurements so that they can be resumed
32304  // if we continue in a later deferred loop from the same unit of work.
32305  var fiber = currentFiber;
32306
32307  while (fiber) {
32308    if (fiber._debugIsCurrentlyTiming) {
32309      endFiberMark(fiber, null, null);
32310    }
32311
32312    fiber = fiber.return;
32313  }
32314};
32315
32316var resumeTimersRecursively = function (fiber) {
32317  if (fiber.return !== null) {
32318    resumeTimersRecursively(fiber.return);
32319  }
32320
32321  if (fiber._debugIsCurrentlyTiming) {
32322    beginFiberMark(fiber, null);
32323  }
32324};
32325
32326var resumeTimers = function () {
32327  // Resumes all measurements that were active during the last deferred loop.
32328  if (currentFiber !== null) {
32329    resumeTimersRecursively(currentFiber);
32330  }
32331};
32332
32333function recordEffect() {
32334  {
32335    effectCountInCurrentCommit++;
32336  }
32337}
32338function recordScheduleUpdate() {
32339  {
32340    if (isCommitting) {
32341      hasScheduledUpdateInCurrentCommit = true;
32342    }
32343
32344    if (currentPhase !== null && currentPhase !== 'componentWillMount' && currentPhase !== 'componentWillReceiveProps') {
32345      hasScheduledUpdateInCurrentPhase = true;
32346    }
32347  }
32348}
32349function startWorkTimer(fiber) {
32350  {
32351    if (!supportsUserTiming || shouldIgnoreFiber(fiber)) {
32352      return;
32353    } // If we pause, this is the fiber to unwind from.
32354
32355
32356    currentFiber = fiber;
32357
32358    if (!beginFiberMark(fiber, null)) {
32359      return;
32360    }
32361
32362    fiber._debugIsCurrentlyTiming = true;
32363  }
32364}
32365function cancelWorkTimer(fiber) {
32366  {
32367    if (!supportsUserTiming || shouldIgnoreFiber(fiber)) {
32368      return;
32369    } // Remember we shouldn't complete measurement for this fiber.
32370    // Otherwise flamechart will be deep even for small updates.
32371
32372
32373    fiber._debugIsCurrentlyTiming = false;
32374    clearFiberMark(fiber, null);
32375  }
32376}
32377function stopWorkTimer(fiber) {
32378  {
32379    if (!supportsUserTiming || shouldIgnoreFiber(fiber)) {
32380      return;
32381    } // If we pause, its parent is the fiber to unwind from.
32382
32383
32384    currentFiber = fiber.return;
32385
32386    if (!fiber._debugIsCurrentlyTiming) {
32387      return;
32388    }
32389
32390    fiber._debugIsCurrentlyTiming = false;
32391    endFiberMark(fiber, null, null);
32392  }
32393}
32394function stopFailedWorkTimer(fiber) {
32395  {
32396    if (!supportsUserTiming || shouldIgnoreFiber(fiber)) {
32397      return;
32398    } // If we pause, its parent is the fiber to unwind from.
32399
32400
32401    currentFiber = fiber.return;
32402
32403    if (!fiber._debugIsCurrentlyTiming) {
32404      return;
32405    }
32406
32407    fiber._debugIsCurrentlyTiming = false;
32408    var warning = fiber.tag === SuspenseComponent ? 'Rendering was suspended' : 'An error was thrown inside this error boundary';
32409    endFiberMark(fiber, null, warning);
32410  }
32411}
32412function startPhaseTimer(fiber, phase) {
32413  {
32414    if (!supportsUserTiming) {
32415      return;
32416    }
32417
32418    clearPendingPhaseMeasurement();
32419
32420    if (!beginFiberMark(fiber, phase)) {
32421      return;
32422    }
32423
32424    currentPhaseFiber = fiber;
32425    currentPhase = phase;
32426  }
32427}
32428function stopPhaseTimer() {
32429  {
32430    if (!supportsUserTiming) {
32431      return;
32432    }
32433
32434    if (currentPhase !== null && currentPhaseFiber !== null) {
32435      var warning = hasScheduledUpdateInCurrentPhase ? 'Scheduled a cascading update' : null;
32436      endFiberMark(currentPhaseFiber, currentPhase, warning);
32437    }
32438
32439    currentPhase = null;
32440    currentPhaseFiber = null;
32441  }
32442}
32443function startWorkLoopTimer(nextUnitOfWork) {
32444  {
32445    currentFiber = nextUnitOfWork;
32446
32447    if (!supportsUserTiming) {
32448      return;
32449    }
32450
32451    commitCountInCurrentWorkLoop = 0; // This is top level call.
32452    // Any other measurements are performed within.
32453
32454    beginMark('(React Tree Reconciliation)'); // Resume any measurements that were in progress during the last loop.
32455
32456    resumeTimers();
32457  }
32458}
32459function stopWorkLoopTimer(interruptedBy, didCompleteRoot) {
32460  {
32461    if (!supportsUserTiming) {
32462      return;
32463    }
32464
32465    var warning = null;
32466
32467    if (interruptedBy !== null) {
32468      if (interruptedBy.tag === HostRoot) {
32469        warning = 'A top-level update interrupted the previous render';
32470      } else {
32471        var componentName = getComponentName(interruptedBy.type) || 'Unknown';
32472        warning = "An update to " + componentName + " interrupted the previous render";
32473      }
32474    } else if (commitCountInCurrentWorkLoop > 1) {
32475      warning = 'There were cascading updates';
32476    }
32477
32478    commitCountInCurrentWorkLoop = 0;
32479    var label = didCompleteRoot ? '(React Tree Reconciliation: Completed Root)' : '(React Tree Reconciliation: Yielded)'; // Pause any measurements until the next loop.
32480
32481    pauseTimers();
32482    endMark(label, '(React Tree Reconciliation)', warning);
32483  }
32484}
32485function startCommitTimer() {
32486  {
32487    if (!supportsUserTiming) {
32488      return;
32489    }
32490
32491    isCommitting = true;
32492    hasScheduledUpdateInCurrentCommit = false;
32493    labelsInCurrentCommit.clear();
32494    beginMark('(Committing Changes)');
32495  }
32496}
32497function stopCommitTimer() {
32498  {
32499    if (!supportsUserTiming) {
32500      return;
32501    }
32502
32503    var warning = null;
32504
32505    if (hasScheduledUpdateInCurrentCommit) {
32506      warning = 'Lifecycle hook scheduled a cascading update';
32507    } else if (commitCountInCurrentWorkLoop > 0) {
32508      warning = 'Caused by a cascading update in earlier commit';
32509    }
32510
32511    hasScheduledUpdateInCurrentCommit = false;
32512    commitCountInCurrentWorkLoop++;
32513    isCommitting = false;
32514    labelsInCurrentCommit.clear();
32515    endMark('(Committing Changes)', '(Committing Changes)', warning);
32516  }
32517}
32518function startCommitSnapshotEffectsTimer() {
32519  {
32520    if (!supportsUserTiming) {
32521      return;
32522    }
32523
32524    effectCountInCurrentCommit = 0;
32525    beginMark('(Committing Snapshot Effects)');
32526  }
32527}
32528function stopCommitSnapshotEffectsTimer() {
32529  {
32530    if (!supportsUserTiming) {
32531      return;
32532    }
32533
32534    var count = effectCountInCurrentCommit;
32535    effectCountInCurrentCommit = 0;
32536    endMark("(Committing Snapshot Effects: " + count + " Total)", '(Committing Snapshot Effects)', null);
32537  }
32538}
32539function startCommitHostEffectsTimer() {
32540  {
32541    if (!supportsUserTiming) {
32542      return;
32543    }
32544
32545    effectCountInCurrentCommit = 0;
32546    beginMark('(Committing Host Effects)');
32547  }
32548}
32549function stopCommitHostEffectsTimer() {
32550  {
32551    if (!supportsUserTiming) {
32552      return;
32553    }
32554
32555    var count = effectCountInCurrentCommit;
32556    effectCountInCurrentCommit = 0;
32557    endMark("(Committing Host Effects: " + count + " Total)", '(Committing Host Effects)', null);
32558  }
32559}
32560function startCommitLifeCyclesTimer() {
32561  {
32562    if (!supportsUserTiming) {
32563      return;
32564    }
32565
32566    effectCountInCurrentCommit = 0;
32567    beginMark('(Calling Lifecycle Methods)');
32568  }
32569}
32570function stopCommitLifeCyclesTimer() {
32571  {
32572    if (!supportsUserTiming) {
32573      return;
32574    }
32575
32576    var count = effectCountInCurrentCommit;
32577    effectCountInCurrentCommit = 0;
32578    endMark("(Calling Lifecycle Methods: " + count + " Total)", '(Calling Lifecycle Methods)', null);
32579  }
32580}
32581
32582var valueStack = [];
32583var fiberStack;
32584
32585{
32586  fiberStack = [];
32587}
32588
32589var index = -1;
32590
32591function createCursor(defaultValue) {
32592  return {
32593    current: defaultValue
32594  };
32595}
32596
32597function pop(cursor, fiber) {
32598  if (index < 0) {
32599    {
32600      error('Unexpected pop.');
32601    }
32602
32603    return;
32604  }
32605
32606  {
32607    if (fiber !== fiberStack[index]) {
32608      error('Unexpected Fiber popped.');
32609    }
32610  }
32611
32612  cursor.current = valueStack[index];
32613  valueStack[index] = null;
32614
32615  {
32616    fiberStack[index] = null;
32617  }
32618
32619  index--;
32620}
32621
32622function push(cursor, value, fiber) {
32623  index++;
32624  valueStack[index] = cursor.current;
32625
32626  {
32627    fiberStack[index] = fiber;
32628  }
32629
32630  cursor.current = value;
32631}
32632
32633var warnedAboutMissingGetChildContext;
32634
32635{
32636  warnedAboutMissingGetChildContext = {};
32637}
32638
32639var emptyContextObject = {};
32640
32641{
32642  Object.freeze(emptyContextObject);
32643} // A cursor to the current merged context object on the stack.
32644
32645
32646var contextStackCursor = createCursor(emptyContextObject); // A cursor to a boolean indicating whether the context has changed.
32647
32648var didPerformWorkStackCursor = createCursor(false); // Keep track of the previous context object that was on the stack.
32649// We use this to get access to the parent context after we have already
32650// pushed the next context provider, and now need to merge their contexts.
32651
32652var previousContext = emptyContextObject;
32653
32654function getUnmaskedContext(workInProgress, Component, didPushOwnContextIfProvider) {
32655  {
32656    if (didPushOwnContextIfProvider && isContextProvider(Component)) {
32657      // If the fiber is a context provider itself, when we read its context
32658      // we may have already pushed its own child context on the stack. A context
32659      // provider should not "see" its own child context. Therefore we read the
32660      // previous (parent) context instead for a context provider.
32661      return previousContext;
32662    }
32663
32664    return contextStackCursor.current;
32665  }
32666}
32667
32668function cacheContext(workInProgress, unmaskedContext, maskedContext) {
32669  {
32670    var instance = workInProgress.stateNode;
32671    instance.__reactInternalMemoizedUnmaskedChildContext = unmaskedContext;
32672    instance.__reactInternalMemoizedMaskedChildContext = maskedContext;
32673  }
32674}
32675
32676function getMaskedContext(workInProgress, unmaskedContext) {
32677  {
32678    var type = workInProgress.type;
32679    var contextTypes = type.contextTypes;
32680
32681    if (!contextTypes) {
32682      return emptyContextObject;
32683    } // Avoid recreating masked context unless unmasked context has changed.
32684    // Failing to do this will result in unnecessary calls to componentWillReceiveProps.
32685    // This may trigger infinite loops if componentWillReceiveProps calls setState.
32686
32687
32688    var instance = workInProgress.stateNode;
32689
32690    if (instance && instance.__reactInternalMemoizedUnmaskedChildContext === unmaskedContext) {
32691      return instance.__reactInternalMemoizedMaskedChildContext;
32692    }
32693
32694    var context = {};
32695
32696    for (var key in contextTypes) {
32697      context[key] = unmaskedContext[key];
32698    }
32699
32700    {
32701      var name = getComponentName(type) || 'Unknown';
32702      checkPropTypes(contextTypes, context, 'context', name, getCurrentFiberStackInDev);
32703    } // Cache unmasked context so we can avoid recreating masked context unless necessary.
32704    // Context is created before the class component is instantiated so check for instance.
32705
32706
32707    if (instance) {
32708      cacheContext(workInProgress, unmaskedContext, context);
32709    }
32710
32711    return context;
32712  }
32713}
32714
32715function hasContextChanged() {
32716  {
32717    return didPerformWorkStackCursor.current;
32718  }
32719}
32720
32721function isContextProvider(type) {
32722  {
32723    var childContextTypes = type.childContextTypes;
32724    return childContextTypes !== null && childContextTypes !== undefined;
32725  }
32726}
32727
32728function popContext(fiber) {
32729  {
32730    pop(didPerformWorkStackCursor, fiber);
32731    pop(contextStackCursor, fiber);
32732  }
32733}
32734
32735function popTopLevelContextObject(fiber) {
32736  {
32737    pop(didPerformWorkStackCursor, fiber);
32738    pop(contextStackCursor, fiber);
32739  }
32740}
32741
32742function pushTopLevelContextObject(fiber, context, didChange) {
32743  {
32744    if (!(contextStackCursor.current === emptyContextObject)) {
32745      {
32746        throw Error( "Unexpected context found on stack. This error is likely caused by a bug in React. Please file an issue." );
32747      }
32748    }
32749
32750    push(contextStackCursor, context, fiber);
32751    push(didPerformWorkStackCursor, didChange, fiber);
32752  }
32753}
32754
32755function processChildContext(fiber, type, parentContext) {
32756  {
32757    var instance = fiber.stateNode;
32758    var childContextTypes = type.childContextTypes; // TODO (bvaughn) Replace this behavior with an invariant() in the future.
32759    // It has only been added in Fiber to match the (unintentional) behavior in Stack.
32760
32761    if (typeof instance.getChildContext !== 'function') {
32762      {
32763        var componentName = getComponentName(type) || 'Unknown';
32764
32765        if (!warnedAboutMissingGetChildContext[componentName]) {
32766          warnedAboutMissingGetChildContext[componentName] = true;
32767
32768          error('%s.childContextTypes is specified but there is no getChildContext() method ' + 'on the instance. You can either define getChildContext() on %s or remove ' + 'childContextTypes from it.', componentName, componentName);
32769        }
32770      }
32771
32772      return parentContext;
32773    }
32774
32775    var childContext;
32776    startPhaseTimer(fiber, 'getChildContext');
32777    childContext = instance.getChildContext();
32778    stopPhaseTimer();
32779
32780    for (var contextKey in childContext) {
32781      if (!(contextKey in childContextTypes)) {
32782        {
32783          throw Error( (getComponentName(type) || 'Unknown') + ".getChildContext(): key \"" + contextKey + "\" is not defined in childContextTypes." );
32784        }
32785      }
32786    }
32787
32788    {
32789      var name = getComponentName(type) || 'Unknown';
32790      checkPropTypes(childContextTypes, childContext, 'child context', name, // In practice, there is one case in which we won't get a stack. It's when
32791      // somebody calls unstable_renderSubtreeIntoContainer() and we process
32792      // context from the parent component instance. The stack will be missing
32793      // because it's outside of the reconciliation, and so the pointer has not
32794      // been set. This is rare and doesn't matter. We'll also remove that API.
32795      getCurrentFiberStackInDev);
32796    }
32797
32798    return _assign({}, parentContext, {}, childContext);
32799  }
32800}
32801
32802function pushContextProvider(workInProgress) {
32803  {
32804    var instance = workInProgress.stateNode; // We push the context as early as possible to ensure stack integrity.
32805    // If the instance does not exist yet, we will push null at first,
32806    // and replace it on the stack later when invalidating the context.
32807
32808    var memoizedMergedChildContext = instance && instance.__reactInternalMemoizedMergedChildContext || emptyContextObject; // Remember the parent context so we can merge with it later.
32809    // Inherit the parent's did-perform-work value to avoid inadvertently blocking updates.
32810
32811    previousContext = contextStackCursor.current;
32812    push(contextStackCursor, memoizedMergedChildContext, workInProgress);
32813    push(didPerformWorkStackCursor, didPerformWorkStackCursor.current, workInProgress);
32814    return true;
32815  }
32816}
32817
32818function invalidateContextProvider(workInProgress, type, didChange) {
32819  {
32820    var instance = workInProgress.stateNode;
32821
32822    if (!instance) {
32823      {
32824        throw Error( "Expected to have an instance by this point. This error is likely caused by a bug in React. Please file an issue." );
32825      }
32826    }
32827
32828    if (didChange) {
32829      // Merge parent and own context.
32830      // Skip this if we're not updating due to sCU.
32831      // This avoids unnecessarily recomputing memoized values.
32832      var mergedContext = processChildContext(workInProgress, type, previousContext);
32833      instance.__reactInternalMemoizedMergedChildContext = mergedContext; // Replace the old (or empty) context with the new one.
32834      // It is important to unwind the context in the reverse order.
32835
32836      pop(didPerformWorkStackCursor, workInProgress);
32837      pop(contextStackCursor, workInProgress); // Now push the new context and mark that it has changed.
32838
32839      push(contextStackCursor, mergedContext, workInProgress);
32840      push(didPerformWorkStackCursor, didChange, workInProgress);
32841    } else {
32842      pop(didPerformWorkStackCursor, workInProgress);
32843      push(didPerformWorkStackCursor, didChange, workInProgress);
32844    }
32845  }
32846}
32847
32848function findCurrentUnmaskedContext(fiber) {
32849  {
32850    // Currently this is only used with renderSubtreeIntoContainer; not sure if it
32851    // makes sense elsewhere
32852    if (!(isFiberMounted(fiber) && fiber.tag === ClassComponent)) {
32853      {
32854        throw Error( "Expected subtree parent to be a mounted class component. This error is likely caused by a bug in React. Please file an issue." );
32855      }
32856    }
32857
32858    var node = fiber;
32859
32860    do {
32861      switch (node.tag) {
32862        case HostRoot:
32863          return node.stateNode.context;
32864
32865        case ClassComponent:
32866          {
32867            var Component = node.type;
32868
32869            if (isContextProvider(Component)) {
32870              return node.stateNode.__reactInternalMemoizedMergedChildContext;
32871            }
32872
32873            break;
32874          }
32875      }
32876
32877      node = node.return;
32878    } while (node !== null);
32879
32880    {
32881      {
32882        throw Error( "Found unexpected detached subtree parent. This error is likely caused by a bug in React. Please file an issue." );
32883      }
32884    }
32885  }
32886}
32887
32888var LegacyRoot = 0;
32889var BlockingRoot = 1;
32890var ConcurrentRoot = 2;
32891
32892var Scheduler_runWithPriority = Scheduler.unstable_runWithPriority,
32893    Scheduler_scheduleCallback = Scheduler.unstable_scheduleCallback,
32894    Scheduler_cancelCallback = Scheduler.unstable_cancelCallback,
32895    Scheduler_shouldYield = Scheduler.unstable_shouldYield,
32896    Scheduler_requestPaint = Scheduler.unstable_requestPaint,
32897    Scheduler_now = Scheduler.unstable_now,
32898    Scheduler_getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel,
32899    Scheduler_ImmediatePriority = Scheduler.unstable_ImmediatePriority,
32900    Scheduler_UserBlockingPriority = Scheduler.unstable_UserBlockingPriority,
32901    Scheduler_NormalPriority = Scheduler.unstable_NormalPriority,
32902    Scheduler_LowPriority = Scheduler.unstable_LowPriority,
32903    Scheduler_IdlePriority = Scheduler.unstable_IdlePriority;
32904
32905{
32906  // Provide explicit error message when production+profiling bundle of e.g.
32907  // react-dom is used with production (non-profiling) bundle of
32908  // scheduler/tracing
32909  if (!(tracing.__interactionsRef != null && tracing.__interactionsRef.current != null)) {
32910    {
32911      throw Error( "It is not supported to run the profiling version of a renderer (for example, `react-dom/profiling`) without also replacing the `scheduler/tracing` module with `scheduler/tracing-profiling`. Your bundler might have a setting for aliasing both modules. Learn more at http://fb.me/react-profiling" );
32912    }
32913  }
32914}
32915
32916var fakeCallbackNode = {}; // Except for NoPriority, these correspond to Scheduler priorities. We use
32917// ascending numbers so we can compare them like numbers. They start at 90 to
32918// avoid clashing with Scheduler's priorities.
32919
32920var ImmediatePriority = 99;
32921var UserBlockingPriority$1 = 98;
32922var NormalPriority = 97;
32923var LowPriority = 96;
32924var IdlePriority = 95; // NoPriority is the absence of priority. Also React-only.
32925
32926var NoPriority = 90;
32927var shouldYield = Scheduler_shouldYield;
32928var requestPaint = // Fall back gracefully if we're running an older version of Scheduler.
32929Scheduler_requestPaint !== undefined ? Scheduler_requestPaint : function () {};
32930var syncQueue = null;
32931var immediateQueueCallbackNode = null;
32932var isFlushingSyncQueue = false;
32933var initialTimeMs = Scheduler_now(); // If the initial timestamp is reasonably small, use Scheduler's `now` directly.
32934// This will be the case for modern browsers that support `performance.now`. In
32935// older browsers, Scheduler falls back to `Date.now`, which returns a Unix
32936// timestamp. In that case, subtract the module initialization time to simulate
32937// the behavior of performance.now and keep our times small enough to fit
32938// within 32 bits.
32939// TODO: Consider lifting this into Scheduler.
32940
32941var now = initialTimeMs < 10000 ? Scheduler_now : function () {
32942  return Scheduler_now() - initialTimeMs;
32943};
32944function getCurrentPriorityLevel() {
32945  switch (Scheduler_getCurrentPriorityLevel()) {
32946    case Scheduler_ImmediatePriority:
32947      return ImmediatePriority;
32948
32949    case Scheduler_UserBlockingPriority:
32950      return UserBlockingPriority$1;
32951
32952    case Scheduler_NormalPriority:
32953      return NormalPriority;
32954
32955    case Scheduler_LowPriority:
32956      return LowPriority;
32957
32958    case Scheduler_IdlePriority:
32959      return IdlePriority;
32960
32961    default:
32962      {
32963        {
32964          throw Error( "Unknown priority level." );
32965        }
32966      }
32967
32968  }
32969}
32970
32971function reactPriorityToSchedulerPriority(reactPriorityLevel) {
32972  switch (reactPriorityLevel) {
32973    case ImmediatePriority:
32974      return Scheduler_ImmediatePriority;
32975
32976    case UserBlockingPriority$1:
32977      return Scheduler_UserBlockingPriority;
32978
32979    case NormalPriority:
32980      return Scheduler_NormalPriority;
32981
32982    case LowPriority:
32983      return Scheduler_LowPriority;
32984
32985    case IdlePriority:
32986      return Scheduler_IdlePriority;
32987
32988    default:
32989      {
32990        {
32991          throw Error( "Unknown priority level." );
32992        }
32993      }
32994
32995  }
32996}
32997
32998function runWithPriority$1(reactPriorityLevel, fn) {
32999  var priorityLevel = reactPriorityToSchedulerPriority(reactPriorityLevel);
33000  return Scheduler_runWithPriority(priorityLevel, fn);
33001}
33002function scheduleCallback(reactPriorityLevel, callback, options) {
33003  var priorityLevel = reactPriorityToSchedulerPriority(reactPriorityLevel);
33004  return Scheduler_scheduleCallback(priorityLevel, callback, options);
33005}
33006function scheduleSyncCallback(callback) {
33007  // Push this callback into an internal queue. We'll flush these either in
33008  // the next tick, or earlier if something calls `flushSyncCallbackQueue`.
33009  if (syncQueue === null) {
33010    syncQueue = [callback]; // Flush the queue in the next tick, at the earliest.
33011
33012    immediateQueueCallbackNode = Scheduler_scheduleCallback(Scheduler_ImmediatePriority, flushSyncCallbackQueueImpl);
33013  } else {
33014    // Push onto existing queue. Don't need to schedule a callback because
33015    // we already scheduled one when we created the queue.
33016    syncQueue.push(callback);
33017  }
33018
33019  return fakeCallbackNode;
33020}
33021function cancelCallback(callbackNode) {
33022  if (callbackNode !== fakeCallbackNode) {
33023    Scheduler_cancelCallback(callbackNode);
33024  }
33025}
33026function flushSyncCallbackQueue() {
33027  if (immediateQueueCallbackNode !== null) {
33028    var node = immediateQueueCallbackNode;
33029    immediateQueueCallbackNode = null;
33030    Scheduler_cancelCallback(node);
33031  }
33032
33033  flushSyncCallbackQueueImpl();
33034}
33035
33036function flushSyncCallbackQueueImpl() {
33037  if (!isFlushingSyncQueue && syncQueue !== null) {
33038    // Prevent re-entrancy.
33039    isFlushingSyncQueue = true;
33040    var i = 0;
33041
33042    try {
33043      var _isSync = true;
33044      var queue = syncQueue;
33045      runWithPriority$1(ImmediatePriority, function () {
33046        for (; i < queue.length; i++) {
33047          var callback = queue[i];
33048
33049          do {
33050            callback = callback(_isSync);
33051          } while (callback !== null);
33052        }
33053      });
33054      syncQueue = null;
33055    } catch (error) {
33056      // If something throws, leave the remaining callbacks on the queue.
33057      if (syncQueue !== null) {
33058        syncQueue = syncQueue.slice(i + 1);
33059      } // Resume flushing in the next tick
33060
33061
33062      Scheduler_scheduleCallback(Scheduler_ImmediatePriority, flushSyncCallbackQueue);
33063      throw error;
33064    } finally {
33065      isFlushingSyncQueue = false;
33066    }
33067  }
33068}
33069
33070var NoMode = 0;
33071var StrictMode = 1; // TODO: Remove BlockingMode and ConcurrentMode by reading from the root
33072// tag instead
33073
33074var BlockingMode = 2;
33075var ConcurrentMode = 4;
33076var ProfileMode = 8;
33077
33078// Max 31 bit integer. The max integer size in V8 for 32-bit systems.
33079// Math.pow(2, 30) - 1
33080// 0b111111111111111111111111111111
33081var MAX_SIGNED_31_BIT_INT = 1073741823;
33082
33083var NoWork = 0; // TODO: Think of a better name for Never. The key difference with Idle is that
33084// Never work can be committed in an inconsistent state without tearing the UI.
33085// The main example is offscreen content, like a hidden subtree. So one possible
33086// name is Offscreen. However, it also includes dehydrated Suspense boundaries,
33087// which are inconsistent in the sense that they haven't finished yet, but
33088// aren't visibly inconsistent because the server rendered HTML matches what the
33089// hydrated tree would look like.
33090
33091var Never = 1; // Idle is slightly higher priority than Never. It must completely finish in
33092// order to be consistent.
33093
33094var Idle = 2; // Continuous Hydration is slightly higher than Idle and is used to increase
33095// priority of hover targets.
33096
33097var ContinuousHydration = 3;
33098var Sync = MAX_SIGNED_31_BIT_INT;
33099var Batched = Sync - 1;
33100var UNIT_SIZE = 10;
33101var MAGIC_NUMBER_OFFSET = Batched - 1; // 1 unit of expiration time represents 10ms.
33102
33103function msToExpirationTime(ms) {
33104  // Always subtract from the offset so that we don't clash with the magic number for NoWork.
33105  return MAGIC_NUMBER_OFFSET - (ms / UNIT_SIZE | 0);
33106}
33107function expirationTimeToMs(expirationTime) {
33108  return (MAGIC_NUMBER_OFFSET - expirationTime) * UNIT_SIZE;
33109}
33110
33111function ceiling(num, precision) {
33112  return ((num / precision | 0) + 1) * precision;
33113}
33114
33115function computeExpirationBucket(currentTime, expirationInMs, bucketSizeMs) {
33116  return MAGIC_NUMBER_OFFSET - ceiling(MAGIC_NUMBER_OFFSET - currentTime + expirationInMs / UNIT_SIZE, bucketSizeMs / UNIT_SIZE);
33117} // TODO: This corresponds to Scheduler's NormalPriority, not LowPriority. Update
33118// the names to reflect.
33119
33120
33121var LOW_PRIORITY_EXPIRATION = 5000;
33122var LOW_PRIORITY_BATCH_SIZE = 250;
33123function computeAsyncExpiration(currentTime) {
33124  return computeExpirationBucket(currentTime, LOW_PRIORITY_EXPIRATION, LOW_PRIORITY_BATCH_SIZE);
33125}
33126function computeSuspenseExpiration(currentTime, timeoutMs) {
33127  // TODO: Should we warn if timeoutMs is lower than the normal pri expiration time?
33128  return computeExpirationBucket(currentTime, timeoutMs, LOW_PRIORITY_BATCH_SIZE);
33129} // We intentionally set a higher expiration time for interactive updates in
33130// dev than in production.
33131//
33132// If the main thread is being blocked so long that you hit the expiration,
33133// it's a problem that could be solved with better scheduling.
33134//
33135// People will be more likely to notice this and fix it with the long
33136// expiration time in development.
33137//
33138// In production we opt for better UX at the risk of masking scheduling
33139// problems, by expiring fast.
33140
33141var HIGH_PRIORITY_EXPIRATION =  500 ;
33142var HIGH_PRIORITY_BATCH_SIZE = 100;
33143function computeInteractiveExpiration(currentTime) {
33144  return computeExpirationBucket(currentTime, HIGH_PRIORITY_EXPIRATION, HIGH_PRIORITY_BATCH_SIZE);
33145}
33146function inferPriorityFromExpirationTime(currentTime, expirationTime) {
33147  if (expirationTime === Sync) {
33148    return ImmediatePriority;
33149  }
33150
33151  if (expirationTime === Never || expirationTime === Idle) {
33152    return IdlePriority;
33153  }
33154
33155  var msUntil = expirationTimeToMs(expirationTime) - expirationTimeToMs(currentTime);
33156
33157  if (msUntil <= 0) {
33158    return ImmediatePriority;
33159  }
33160
33161  if (msUntil <= HIGH_PRIORITY_EXPIRATION + HIGH_PRIORITY_BATCH_SIZE) {
33162    return UserBlockingPriority$1;
33163  }
33164
33165  if (msUntil <= LOW_PRIORITY_EXPIRATION + LOW_PRIORITY_BATCH_SIZE) {
33166    return NormalPriority;
33167  } // TODO: Handle LowPriority
33168  // Assume anything lower has idle priority
33169
33170
33171  return IdlePriority;
33172}
33173
33174var ReactStrictModeWarnings = {
33175  recordUnsafeLifecycleWarnings: function (fiber, instance) {},
33176  flushPendingUnsafeLifecycleWarnings: function () {},
33177  recordLegacyContextWarning: function (fiber, instance) {},
33178  flushLegacyContextWarning: function () {},
33179  discardPendingWarnings: function () {}
33180};
33181
33182{
33183  var findStrictRoot = function (fiber) {
33184    var maybeStrictRoot = null;
33185    var node = fiber;
33186
33187    while (node !== null) {
33188      if (node.mode & StrictMode) {
33189        maybeStrictRoot = node;
33190      }
33191
33192      node = node.return;
33193    }
33194
33195    return maybeStrictRoot;
33196  };
33197
33198  var setToSortedString = function (set) {
33199    var array = [];
33200    set.forEach(function (value) {
33201      array.push(value);
33202    });
33203    return array.sort().join(', ');
33204  };
33205
33206  var pendingComponentWillMountWarnings = [];
33207  var pendingUNSAFE_ComponentWillMountWarnings = [];
33208  var pendingComponentWillReceivePropsWarnings = [];
33209  var pendingUNSAFE_ComponentWillReceivePropsWarnings = [];
33210  var pendingComponentWillUpdateWarnings = [];
33211  var pendingUNSAFE_ComponentWillUpdateWarnings = []; // Tracks components we have already warned about.
33212
33213  var didWarnAboutUnsafeLifecycles = new Set();
33214
33215  ReactStrictModeWarnings.recordUnsafeLifecycleWarnings = function (fiber, instance) {
33216    // Dedup strategy: Warn once per component.
33217    if (didWarnAboutUnsafeLifecycles.has(fiber.type)) {
33218      return;
33219    }
33220
33221    if (typeof instance.componentWillMount === 'function' && // Don't warn about react-lifecycles-compat polyfilled components.
33222    instance.componentWillMount.__suppressDeprecationWarning !== true) {
33223      pendingComponentWillMountWarnings.push(fiber);
33224    }
33225
33226    if (fiber.mode & StrictMode && typeof instance.UNSAFE_componentWillMount === 'function') {
33227      pendingUNSAFE_ComponentWillMountWarnings.push(fiber);
33228    }
33229
33230    if (typeof instance.componentWillReceiveProps === 'function' && instance.componentWillReceiveProps.__suppressDeprecationWarning !== true) {
33231      pendingComponentWillReceivePropsWarnings.push(fiber);
33232    }
33233
33234    if (fiber.mode & StrictMode && typeof instance.UNSAFE_componentWillReceiveProps === 'function') {
33235      pendingUNSAFE_ComponentWillReceivePropsWarnings.push(fiber);
33236    }
33237
33238    if (typeof instance.componentWillUpdate === 'function' && instance.componentWillUpdate.__suppressDeprecationWarning !== true) {
33239      pendingComponentWillUpdateWarnings.push(fiber);
33240    }
33241
33242    if (fiber.mode & StrictMode && typeof instance.UNSAFE_componentWillUpdate === 'function') {
33243      pendingUNSAFE_ComponentWillUpdateWarnings.push(fiber);
33244    }
33245  };
33246
33247  ReactStrictModeWarnings.flushPendingUnsafeLifecycleWarnings = function () {
33248    // We do an initial pass to gather component names
33249    var componentWillMountUniqueNames = new Set();
33250
33251    if (pendingComponentWillMountWarnings.length > 0) {
33252      pendingComponentWillMountWarnings.forEach(function (fiber) {
33253        componentWillMountUniqueNames.add(getComponentName(fiber.type) || 'Component');
33254        didWarnAboutUnsafeLifecycles.add(fiber.type);
33255      });
33256      pendingComponentWillMountWarnings = [];
33257    }
33258
33259    var UNSAFE_componentWillMountUniqueNames = new Set();
33260
33261    if (pendingUNSAFE_ComponentWillMountWarnings.length > 0) {
33262      pendingUNSAFE_ComponentWillMountWarnings.forEach(function (fiber) {
33263        UNSAFE_componentWillMountUniqueNames.add(getComponentName(fiber.type) || 'Component');
33264        didWarnAboutUnsafeLifecycles.add(fiber.type);
33265      });
33266      pendingUNSAFE_ComponentWillMountWarnings = [];
33267    }
33268
33269    var componentWillReceivePropsUniqueNames = new Set();
33270
33271    if (pendingComponentWillReceivePropsWarnings.length > 0) {
33272      pendingComponentWillReceivePropsWarnings.forEach(function (fiber) {
33273        componentWillReceivePropsUniqueNames.add(getComponentName(fiber.type) || 'Component');
33274        didWarnAboutUnsafeLifecycles.add(fiber.type);
33275      });
33276      pendingComponentWillReceivePropsWarnings = [];
33277    }
33278
33279    var UNSAFE_componentWillReceivePropsUniqueNames = new Set();
33280
33281    if (pendingUNSAFE_ComponentWillReceivePropsWarnings.length > 0) {
33282      pendingUNSAFE_ComponentWillReceivePropsWarnings.forEach(function (fiber) {
33283        UNSAFE_componentWillReceivePropsUniqueNames.add(getComponentName(fiber.type) || 'Component');
33284        didWarnAboutUnsafeLifecycles.add(fiber.type);
33285      });
33286      pendingUNSAFE_ComponentWillReceivePropsWarnings = [];
33287    }
33288
33289    var componentWillUpdateUniqueNames = new Set();
33290
33291    if (pendingComponentWillUpdateWarnings.length > 0) {
33292      pendingComponentWillUpdateWarnings.forEach(function (fiber) {
33293        componentWillUpdateUniqueNames.add(getComponentName(fiber.type) || 'Component');
33294        didWarnAboutUnsafeLifecycles.add(fiber.type);
33295      });
33296      pendingComponentWillUpdateWarnings = [];
33297    }
33298
33299    var UNSAFE_componentWillUpdateUniqueNames = new Set();
33300
33301    if (pendingUNSAFE_ComponentWillUpdateWarnings.length > 0) {
33302      pendingUNSAFE_ComponentWillUpdateWarnings.forEach(function (fiber) {
33303        UNSAFE_componentWillUpdateUniqueNames.add(getComponentName(fiber.type) || 'Component');
33304        didWarnAboutUnsafeLifecycles.add(fiber.type);
33305      });
33306      pendingUNSAFE_ComponentWillUpdateWarnings = [];
33307    } // Finally, we flush all the warnings
33308    // UNSAFE_ ones before the deprecated ones, since they'll be 'louder'
33309
33310
33311    if (UNSAFE_componentWillMountUniqueNames.size > 0) {
33312      var sortedNames = setToSortedString(UNSAFE_componentWillMountUniqueNames);
33313
33314      error('Using UNSAFE_componentWillMount in strict mode is not recommended and may indicate bugs in your code. ' + 'See https://fb.me/react-unsafe-component-lifecycles for details.\n\n' + '* Move code with side effects to componentDidMount, and set initial state in the constructor.\n' + '\nPlease update the following components: %s', sortedNames);
33315    }
33316
33317    if (UNSAFE_componentWillReceivePropsUniqueNames.size > 0) {
33318      var _sortedNames = setToSortedString(UNSAFE_componentWillReceivePropsUniqueNames);
33319
33320      error('Using UNSAFE_componentWillReceiveProps in strict mode is not recommended ' + 'and may indicate bugs in your code. ' + 'See https://fb.me/react-unsafe-component-lifecycles for details.\n\n' + '* Move data fetching code or side effects to componentDidUpdate.\n' + "* If you're updating state whenever props change, " + 'refactor your code to use memoization techniques or move it to ' + 'static getDerivedStateFromProps. Learn more at: https://fb.me/react-derived-state\n' + '\nPlease update the following components: %s', _sortedNames);
33321    }
33322
33323    if (UNSAFE_componentWillUpdateUniqueNames.size > 0) {
33324      var _sortedNames2 = setToSortedString(UNSAFE_componentWillUpdateUniqueNames);
33325
33326      error('Using UNSAFE_componentWillUpdate in strict mode is not recommended ' + 'and may indicate bugs in your code. ' + 'See https://fb.me/react-unsafe-component-lifecycles for details.\n\n' + '* Move data fetching code or side effects to componentDidUpdate.\n' + '\nPlease update the following components: %s', _sortedNames2);
33327    }
33328
33329    if (componentWillMountUniqueNames.size > 0) {
33330      var _sortedNames3 = setToSortedString(componentWillMountUniqueNames);
33331
33332      warn('componentWillMount has been renamed, and is not recommended for use. ' + 'See https://fb.me/react-unsafe-component-lifecycles for details.\n\n' + '* Move code with side effects to componentDidMount, and set initial state in the constructor.\n' + '* Rename componentWillMount to UNSAFE_componentWillMount to suppress ' + 'this warning in non-strict mode. In React 17.x, only the UNSAFE_ name will work. ' + 'To rename all deprecated lifecycles to their new names, you can run ' + '`npx react-codemod rename-unsafe-lifecycles` in your project source folder.\n' + '\nPlease update the following components: %s', _sortedNames3);
33333    }
33334
33335    if (componentWillReceivePropsUniqueNames.size > 0) {
33336      var _sortedNames4 = setToSortedString(componentWillReceivePropsUniqueNames);
33337
33338      warn('componentWillReceiveProps has been renamed, and is not recommended for use. ' + 'See https://fb.me/react-unsafe-component-lifecycles for details.\n\n' + '* Move data fetching code or side effects to componentDidUpdate.\n' + "* If you're updating state whenever props change, refactor your " + 'code to use memoization techniques or move it to ' + 'static getDerivedStateFromProps. Learn more at: https://fb.me/react-derived-state\n' + '* Rename componentWillReceiveProps to UNSAFE_componentWillReceiveProps to suppress ' + 'this warning in non-strict mode. In React 17.x, only the UNSAFE_ name will work. ' + 'To rename all deprecated lifecycles to their new names, you can run ' + '`npx react-codemod rename-unsafe-lifecycles` in your project source folder.\n' + '\nPlease update the following components: %s', _sortedNames4);
33339    }
33340
33341    if (componentWillUpdateUniqueNames.size > 0) {
33342      var _sortedNames5 = setToSortedString(componentWillUpdateUniqueNames);
33343
33344      warn('componentWillUpdate has been renamed, and is not recommended for use. ' + 'See https://fb.me/react-unsafe-component-lifecycles for details.\n\n' + '* Move data fetching code or side effects to componentDidUpdate.\n' + '* Rename componentWillUpdate to UNSAFE_componentWillUpdate to suppress ' + 'this warning in non-strict mode. In React 17.x, only the UNSAFE_ name will work. ' + 'To rename all deprecated lifecycles to their new names, you can run ' + '`npx react-codemod rename-unsafe-lifecycles` in your project source folder.\n' + '\nPlease update the following components: %s', _sortedNames5);
33345    }
33346  };
33347
33348  var pendingLegacyContextWarning = new Map(); // Tracks components we have already warned about.
33349
33350  var didWarnAboutLegacyContext = new Set();
33351
33352  ReactStrictModeWarnings.recordLegacyContextWarning = function (fiber, instance) {
33353    var strictRoot = findStrictRoot(fiber);
33354
33355    if (strictRoot === null) {
33356      error('Expected to find a StrictMode component in a strict mode tree. ' + 'This error is likely caused by a bug in React. Please file an issue.');
33357
33358      return;
33359    } // Dedup strategy: Warn once per component.
33360
33361
33362    if (didWarnAboutLegacyContext.has(fiber.type)) {
33363      return;
33364    }
33365
33366    var warningsForRoot = pendingLegacyContextWarning.get(strictRoot);
33367
33368    if (fiber.type.contextTypes != null || fiber.type.childContextTypes != null || instance !== null && typeof instance.getChildContext === 'function') {
33369      if (warningsForRoot === undefined) {
33370        warningsForRoot = [];
33371        pendingLegacyContextWarning.set(strictRoot, warningsForRoot);
33372      }
33373
33374      warningsForRoot.push(fiber);
33375    }
33376  };
33377
33378  ReactStrictModeWarnings.flushLegacyContextWarning = function () {
33379    pendingLegacyContextWarning.forEach(function (fiberArray, strictRoot) {
33380      if (fiberArray.length === 0) {
33381        return;
33382      }
33383
33384      var firstFiber = fiberArray[0];
33385      var uniqueNames = new Set();
33386      fiberArray.forEach(function (fiber) {
33387        uniqueNames.add(getComponentName(fiber.type) || 'Component');
33388        didWarnAboutLegacyContext.add(fiber.type);
33389      });
33390      var sortedNames = setToSortedString(uniqueNames);
33391      var firstComponentStack = getStackByFiberInDevAndProd(firstFiber);
33392
33393      error('Legacy context API has been detected within a strict-mode tree.' + '\n\nThe old API will be supported in all 16.x releases, but applications ' + 'using it should migrate to the new version.' + '\n\nPlease update the following components: %s' + '\n\nLearn more about this warning here: https://fb.me/react-legacy-context' + '%s', sortedNames, firstComponentStack);
33394    });
33395  };
33396
33397  ReactStrictModeWarnings.discardPendingWarnings = function () {
33398    pendingComponentWillMountWarnings = [];
33399    pendingUNSAFE_ComponentWillMountWarnings = [];
33400    pendingComponentWillReceivePropsWarnings = [];
33401    pendingUNSAFE_ComponentWillReceivePropsWarnings = [];
33402    pendingComponentWillUpdateWarnings = [];
33403    pendingUNSAFE_ComponentWillUpdateWarnings = [];
33404    pendingLegacyContextWarning = new Map();
33405  };
33406}
33407
33408var resolveFamily = null; // $FlowFixMe Flow gets confused by a WeakSet feature check below.
33409
33410var failedBoundaries = null;
33411var setRefreshHandler = function (handler) {
33412  {
33413    resolveFamily = handler;
33414  }
33415};
33416function resolveFunctionForHotReloading(type) {
33417  {
33418    if (resolveFamily === null) {
33419      // Hot reloading is disabled.
33420      return type;
33421    }
33422
33423    var family = resolveFamily(type);
33424
33425    if (family === undefined) {
33426      return type;
33427    } // Use the latest known implementation.
33428
33429
33430    return family.current;
33431  }
33432}
33433function resolveClassForHotReloading(type) {
33434  // No implementation differences.
33435  return resolveFunctionForHotReloading(type);
33436}
33437function resolveForwardRefForHotReloading(type) {
33438  {
33439    if (resolveFamily === null) {
33440      // Hot reloading is disabled.
33441      return type;
33442    }
33443
33444    var family = resolveFamily(type);
33445
33446    if (family === undefined) {
33447      // Check if we're dealing with a real forwardRef. Don't want to crash early.
33448      if (type !== null && type !== undefined && typeof type.render === 'function') {
33449        // ForwardRef is special because its resolved .type is an object,
33450        // but it's possible that we only have its inner render function in the map.
33451        // If that inner render function is different, we'll build a new forwardRef type.
33452        var currentRender = resolveFunctionForHotReloading(type.render);
33453
33454        if (type.render !== currentRender) {
33455          var syntheticType = {
33456            $$typeof: REACT_FORWARD_REF_TYPE,
33457            render: currentRender
33458          };
33459
33460          if (type.displayName !== undefined) {
33461            syntheticType.displayName = type.displayName;
33462          }
33463
33464          return syntheticType;
33465        }
33466      }
33467
33468      return type;
33469    } // Use the latest known implementation.
33470
33471
33472    return family.current;
33473  }
33474}
33475function isCompatibleFamilyForHotReloading(fiber, element) {
33476  {
33477    if (resolveFamily === null) {
33478      // Hot reloading is disabled.
33479      return false;
33480    }
33481
33482    var prevType = fiber.elementType;
33483    var nextType = element.type; // If we got here, we know types aren't === equal.
33484
33485    var needsCompareFamilies = false;
33486    var $$typeofNextType = typeof nextType === 'object' && nextType !== null ? nextType.$$typeof : null;
33487
33488    switch (fiber.tag) {
33489      case ClassComponent:
33490        {
33491          if (typeof nextType === 'function') {
33492            needsCompareFamilies = true;
33493          }
33494
33495          break;
33496        }
33497
33498      case FunctionComponent:
33499        {
33500          if (typeof nextType === 'function') {
33501            needsCompareFamilies = true;
33502          } else if ($$typeofNextType === REACT_LAZY_TYPE) {
33503            // We don't know the inner type yet.
33504            // We're going to assume that the lazy inner type is stable,
33505            // and so it is sufficient to avoid reconciling it away.
33506            // We're not going to unwrap or actually use the new lazy type.
33507            needsCompareFamilies = true;
33508          }
33509
33510          break;
33511        }
33512
33513      case ForwardRef:
33514        {
33515          if ($$typeofNextType === REACT_FORWARD_REF_TYPE) {
33516            needsCompareFamilies = true;
33517          } else if ($$typeofNextType === REACT_LAZY_TYPE) {
33518            needsCompareFamilies = true;
33519          }
33520
33521          break;
33522        }
33523
33524      case MemoComponent:
33525      case SimpleMemoComponent:
33526        {
33527          if ($$typeofNextType === REACT_MEMO_TYPE) {
33528            // TODO: if it was but can no longer be simple,
33529            // we shouldn't set this.
33530            needsCompareFamilies = true;
33531          } else if ($$typeofNextType === REACT_LAZY_TYPE) {
33532            needsCompareFamilies = true;
33533          }
33534
33535          break;
33536        }
33537
33538      default:
33539        return false;
33540    } // Check if both types have a family and it's the same one.
33541
33542
33543    if (needsCompareFamilies) {
33544      // Note: memo() and forwardRef() we'll compare outer rather than inner type.
33545      // This means both of them need to be registered to preserve state.
33546      // If we unwrapped and compared the inner types for wrappers instead,
33547      // then we would risk falsely saying two separate memo(Foo)
33548      // calls are equivalent because they wrap the same Foo function.
33549      var prevFamily = resolveFamily(prevType);
33550
33551      if (prevFamily !== undefined && prevFamily === resolveFamily(nextType)) {
33552        return true;
33553      }
33554    }
33555
33556    return false;
33557  }
33558}
33559function markFailedErrorBoundaryForHotReloading(fiber) {
33560  {
33561    if (resolveFamily === null) {
33562      // Hot reloading is disabled.
33563      return;
33564    }
33565
33566    if (typeof WeakSet !== 'function') {
33567      return;
33568    }
33569
33570    if (failedBoundaries === null) {
33571      failedBoundaries = new WeakSet();
33572    }
33573
33574    failedBoundaries.add(fiber);
33575  }
33576}
33577var scheduleRefresh = function (root, update) {
33578  {
33579    if (resolveFamily === null) {
33580      // Hot reloading is disabled.
33581      return;
33582    }
33583
33584    var staleFamilies = update.staleFamilies,
33585        updatedFamilies = update.updatedFamilies;
33586    flushPassiveEffects();
33587    flushSync(function () {
33588      scheduleFibersWithFamiliesRecursively(root.current, updatedFamilies, staleFamilies);
33589    });
33590  }
33591};
33592var scheduleRoot = function (root, element) {
33593  {
33594    if (root.context !== emptyContextObject) {
33595      // Super edge case: root has a legacy _renderSubtree context
33596      // but we don't know the parentComponent so we can't pass it.
33597      // Just ignore. We'll delete this with _renderSubtree code path later.
33598      return;
33599    }
33600
33601    flushPassiveEffects();
33602    syncUpdates(function () {
33603      updateContainer(element, root, null, null);
33604    });
33605  }
33606};
33607
33608function scheduleFibersWithFamiliesRecursively(fiber, updatedFamilies, staleFamilies) {
33609  {
33610    var alternate = fiber.alternate,
33611        child = fiber.child,
33612        sibling = fiber.sibling,
33613        tag = fiber.tag,
33614        type = fiber.type;
33615    var candidateType = null;
33616
33617    switch (tag) {
33618      case FunctionComponent:
33619      case SimpleMemoComponent:
33620      case ClassComponent:
33621        candidateType = type;
33622        break;
33623
33624      case ForwardRef:
33625        candidateType = type.render;
33626        break;
33627    }
33628
33629    if (resolveFamily === null) {
33630      throw new Error('Expected resolveFamily to be set during hot reload.');
33631    }
33632
33633    var needsRender = false;
33634    var needsRemount = false;
33635
33636    if (candidateType !== null) {
33637      var family = resolveFamily(candidateType);
33638
33639      if (family !== undefined) {
33640        if (staleFamilies.has(family)) {
33641          needsRemount = true;
33642        } else if (updatedFamilies.has(family)) {
33643          if (tag === ClassComponent) {
33644            needsRemount = true;
33645          } else {
33646            needsRender = true;
33647          }
33648        }
33649      }
33650    }
33651
33652    if (failedBoundaries !== null) {
33653      if (failedBoundaries.has(fiber) || alternate !== null && failedBoundaries.has(alternate)) {
33654        needsRemount = true;
33655      }
33656    }
33657
33658    if (needsRemount) {
33659      fiber._debugNeedsRemount = true;
33660    }
33661
33662    if (needsRemount || needsRender) {
33663      scheduleWork(fiber, Sync);
33664    }
33665
33666    if (child !== null && !needsRemount) {
33667      scheduleFibersWithFamiliesRecursively(child, updatedFamilies, staleFamilies);
33668    }
33669
33670    if (sibling !== null) {
33671      scheduleFibersWithFamiliesRecursively(sibling, updatedFamilies, staleFamilies);
33672    }
33673  }
33674}
33675
33676var findHostInstancesForRefresh = function (root, families) {
33677  {
33678    var hostInstances = new Set();
33679    var types = new Set(families.map(function (family) {
33680      return family.current;
33681    }));
33682    findHostInstancesForMatchingFibersRecursively(root.current, types, hostInstances);
33683    return hostInstances;
33684  }
33685};
33686
33687function findHostInstancesForMatchingFibersRecursively(fiber, types, hostInstances) {
33688  {
33689    var child = fiber.child,
33690        sibling = fiber.sibling,
33691        tag = fiber.tag,
33692        type = fiber.type;
33693    var candidateType = null;
33694
33695    switch (tag) {
33696      case FunctionComponent:
33697      case SimpleMemoComponent:
33698      case ClassComponent:
33699        candidateType = type;
33700        break;
33701
33702      case ForwardRef:
33703        candidateType = type.render;
33704        break;
33705    }
33706
33707    var didMatch = false;
33708
33709    if (candidateType !== null) {
33710      if (types.has(candidateType)) {
33711        didMatch = true;
33712      }
33713    }
33714
33715    if (didMatch) {
33716      // We have a match. This only drills down to the closest host components.
33717      // There's no need to search deeper because for the purpose of giving
33718      // visual feedback, "flashing" outermost parent rectangles is sufficient.
33719      findHostInstancesForFiberShallowly(fiber, hostInstances);
33720    } else {
33721      // If there's no match, maybe there will be one further down in the child tree.
33722      if (child !== null) {
33723        findHostInstancesForMatchingFibersRecursively(child, types, hostInstances);
33724      }
33725    }
33726
33727    if (sibling !== null) {
33728      findHostInstancesForMatchingFibersRecursively(sibling, types, hostInstances);
33729    }
33730  }
33731}
33732
33733function findHostInstancesForFiberShallowly(fiber, hostInstances) {
33734  {
33735    var foundHostInstances = findChildHostInstancesForFiberShallowly(fiber, hostInstances);
33736
33737    if (foundHostInstances) {
33738      return;
33739    } // If we didn't find any host children, fallback to closest host parent.
33740
33741
33742    var node = fiber;
33743
33744    while (true) {
33745      switch (node.tag) {
33746        case HostComponent:
33747          hostInstances.add(node.stateNode);
33748          return;
33749
33750        case HostPortal:
33751          hostInstances.add(node.stateNode.containerInfo);
33752          return;
33753
33754        case HostRoot:
33755          hostInstances.add(node.stateNode.containerInfo);
33756          return;
33757      }
33758
33759      if (node.return === null) {
33760        throw new Error('Expected to reach root first.');
33761      }
33762
33763      node = node.return;
33764    }
33765  }
33766}
33767
33768function findChildHostInstancesForFiberShallowly(fiber, hostInstances) {
33769  {
33770    var node = fiber;
33771    var foundHostInstances = false;
33772
33773    while (true) {
33774      if (node.tag === HostComponent) {
33775        // We got a match.
33776        foundHostInstances = true;
33777        hostInstances.add(node.stateNode); // There may still be more, so keep searching.
33778      } else if (node.child !== null) {
33779        node.child.return = node;
33780        node = node.child;
33781        continue;
33782      }
33783
33784      if (node === fiber) {
33785        return foundHostInstances;
33786      }
33787
33788      while (node.sibling === null) {
33789        if (node.return === null || node.return === fiber) {
33790          return foundHostInstances;
33791        }
33792
33793        node = node.return;
33794      }
33795
33796      node.sibling.return = node.return;
33797      node = node.sibling;
33798    }
33799  }
33800
33801  return false;
33802}
33803
33804function resolveDefaultProps(Component, baseProps) {
33805  if (Component && Component.defaultProps) {
33806    // Resolve default props. Taken from ReactElement
33807    var props = _assign({}, baseProps);
33808
33809    var defaultProps = Component.defaultProps;
33810
33811    for (var propName in defaultProps) {
33812      if (props[propName] === undefined) {
33813        props[propName] = defaultProps[propName];
33814      }
33815    }
33816
33817    return props;
33818  }
33819
33820  return baseProps;
33821}
33822function readLazyComponentType(lazyComponent) {
33823  initializeLazyComponentType(lazyComponent);
33824
33825  if (lazyComponent._status !== Resolved) {
33826    throw lazyComponent._result;
33827  }
33828
33829  return lazyComponent._result;
33830}
33831
33832var valueCursor = createCursor(null);
33833var rendererSigil;
33834
33835{
33836  // Use this to detect multiple renderers using the same context
33837  rendererSigil = {};
33838}
33839
33840var currentlyRenderingFiber = null;
33841var lastContextDependency = null;
33842var lastContextWithAllBitsObserved = null;
33843var isDisallowedContextReadInDEV = false;
33844function resetContextDependencies() {
33845  // This is called right before React yields execution, to ensure `readContext`
33846  // cannot be called outside the render phase.
33847  currentlyRenderingFiber = null;
33848  lastContextDependency = null;
33849  lastContextWithAllBitsObserved = null;
33850
33851  {
33852    isDisallowedContextReadInDEV = false;
33853  }
33854}
33855function enterDisallowedContextReadInDEV() {
33856  {
33857    isDisallowedContextReadInDEV = true;
33858  }
33859}
33860function exitDisallowedContextReadInDEV() {
33861  {
33862    isDisallowedContextReadInDEV = false;
33863  }
33864}
33865function pushProvider(providerFiber, nextValue) {
33866  var context = providerFiber.type._context;
33867
33868  {
33869    push(valueCursor, context._currentValue, providerFiber);
33870    context._currentValue = nextValue;
33871
33872    {
33873      if (context._currentRenderer !== undefined && context._currentRenderer !== null && context._currentRenderer !== rendererSigil) {
33874        error('Detected multiple renderers concurrently rendering the ' + 'same context provider. This is currently unsupported.');
33875      }
33876
33877      context._currentRenderer = rendererSigil;
33878    }
33879  }
33880}
33881function popProvider(providerFiber) {
33882  var currentValue = valueCursor.current;
33883  pop(valueCursor, providerFiber);
33884  var context = providerFiber.type._context;
33885
33886  {
33887    context._currentValue = currentValue;
33888  }
33889}
33890function calculateChangedBits(context, newValue, oldValue) {
33891  if (objectIs(oldValue, newValue)) {
33892    // No change
33893    return 0;
33894  } else {
33895    var changedBits = typeof context._calculateChangedBits === 'function' ? context._calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;
33896
33897    {
33898      if ((changedBits & MAX_SIGNED_31_BIT_INT) !== changedBits) {
33899        error('calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: %s', changedBits);
33900      }
33901    }
33902
33903    return changedBits | 0;
33904  }
33905}
33906function scheduleWorkOnParentPath(parent, renderExpirationTime) {
33907  // Update the child expiration time of all the ancestors, including
33908  // the alternates.
33909  var node = parent;
33910
33911  while (node !== null) {
33912    var alternate = node.alternate;
33913
33914    if (node.childExpirationTime < renderExpirationTime) {
33915      node.childExpirationTime = renderExpirationTime;
33916
33917      if (alternate !== null && alternate.childExpirationTime < renderExpirationTime) {
33918        alternate.childExpirationTime = renderExpirationTime;
33919      }
33920    } else if (alternate !== null && alternate.childExpirationTime < renderExpirationTime) {
33921      alternate.childExpirationTime = renderExpirationTime;
33922    } else {
33923      // Neither alternate was updated, which means the rest of the
33924      // ancestor path already has sufficient priority.
33925      break;
33926    }
33927
33928    node = node.return;
33929  }
33930}
33931function propagateContextChange(workInProgress, context, changedBits, renderExpirationTime) {
33932  var fiber = workInProgress.child;
33933
33934  if (fiber !== null) {
33935    // Set the return pointer of the child to the work-in-progress fiber.
33936    fiber.return = workInProgress;
33937  }
33938
33939  while (fiber !== null) {
33940    var nextFiber = void 0; // Visit this fiber.
33941
33942    var list = fiber.dependencies;
33943
33944    if (list !== null) {
33945      nextFiber = fiber.child;
33946      var dependency = list.firstContext;
33947
33948      while (dependency !== null) {
33949        // Check if the context matches.
33950        if (dependency.context === context && (dependency.observedBits & changedBits) !== 0) {
33951          // Match! Schedule an update on this fiber.
33952          if (fiber.tag === ClassComponent) {
33953            // Schedule a force update on the work-in-progress.
33954            var update = createUpdate(renderExpirationTime, null);
33955            update.tag = ForceUpdate; // TODO: Because we don't have a work-in-progress, this will add the
33956            // update to the current fiber, too, which means it will persist even if
33957            // this render is thrown away. Since it's a race condition, not sure it's
33958            // worth fixing.
33959
33960            enqueueUpdate(fiber, update);
33961          }
33962
33963          if (fiber.expirationTime < renderExpirationTime) {
33964            fiber.expirationTime = renderExpirationTime;
33965          }
33966
33967          var alternate = fiber.alternate;
33968
33969          if (alternate !== null && alternate.expirationTime < renderExpirationTime) {
33970            alternate.expirationTime = renderExpirationTime;
33971          }
33972
33973          scheduleWorkOnParentPath(fiber.return, renderExpirationTime); // Mark the expiration time on the list, too.
33974
33975          if (list.expirationTime < renderExpirationTime) {
33976            list.expirationTime = renderExpirationTime;
33977          } // Since we already found a match, we can stop traversing the
33978          // dependency list.
33979
33980
33981          break;
33982        }
33983
33984        dependency = dependency.next;
33985      }
33986    } else if (fiber.tag === ContextProvider) {
33987      // Don't scan deeper if this is a matching provider
33988      nextFiber = fiber.type === workInProgress.type ? null : fiber.child;
33989    } else {
33990      // Traverse down.
33991      nextFiber = fiber.child;
33992    }
33993
33994    if (nextFiber !== null) {
33995      // Set the return pointer of the child to the work-in-progress fiber.
33996      nextFiber.return = fiber;
33997    } else {
33998      // No child. Traverse to next sibling.
33999      nextFiber = fiber;
34000
34001      while (nextFiber !== null) {
34002        if (nextFiber === workInProgress) {
34003          // We're back to the root of this subtree. Exit.
34004          nextFiber = null;
34005          break;
34006        }
34007
34008        var sibling = nextFiber.sibling;
34009
34010        if (sibling !== null) {
34011          // Set the return pointer of the sibling to the work-in-progress fiber.
34012          sibling.return = nextFiber.return;
34013          nextFiber = sibling;
34014          break;
34015        } // No more siblings. Traverse up.
34016
34017
34018        nextFiber = nextFiber.return;
34019      }
34020    }
34021
34022    fiber = nextFiber;
34023  }
34024}
34025function prepareToReadContext(workInProgress, renderExpirationTime) {
34026  currentlyRenderingFiber = workInProgress;
34027  lastContextDependency = null;
34028  lastContextWithAllBitsObserved = null;
34029  var dependencies = workInProgress.dependencies;
34030
34031  if (dependencies !== null) {
34032    var firstContext = dependencies.firstContext;
34033
34034    if (firstContext !== null) {
34035      if (dependencies.expirationTime >= renderExpirationTime) {
34036        // Context list has a pending update. Mark that this fiber performed work.
34037        markWorkInProgressReceivedUpdate();
34038      } // Reset the work-in-progress list
34039
34040
34041      dependencies.firstContext = null;
34042    }
34043  }
34044}
34045function readContext(context, observedBits) {
34046  {
34047    // This warning would fire if you read context inside a Hook like useMemo.
34048    // Unlike the class check below, it's not enforced in production for perf.
34049    if (isDisallowedContextReadInDEV) {
34050      error('Context can only be read while React is rendering. ' + 'In classes, you can read it in the render method or getDerivedStateFromProps. ' + 'In function components, you can read it directly in the function body, but not ' + 'inside Hooks like useReducer() or useMemo().');
34051    }
34052  }
34053
34054  if (lastContextWithAllBitsObserved === context) ; else if (observedBits === false || observedBits === 0) ; else {
34055    var resolvedObservedBits; // Avoid deopting on observable arguments or heterogeneous types.
34056
34057    if (typeof observedBits !== 'number' || observedBits === MAX_SIGNED_31_BIT_INT) {
34058      // Observe all updates.
34059      lastContextWithAllBitsObserved = context;
34060      resolvedObservedBits = MAX_SIGNED_31_BIT_INT;
34061    } else {
34062      resolvedObservedBits = observedBits;
34063    }
34064
34065    var contextItem = {
34066      context: context,
34067      observedBits: resolvedObservedBits,
34068      next: null
34069    };
34070
34071    if (lastContextDependency === null) {
34072      if (!(currentlyRenderingFiber !== null)) {
34073        {
34074          throw Error( "Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo()." );
34075        }
34076      } // This is the first dependency for this component. Create a new list.
34077
34078
34079      lastContextDependency = contextItem;
34080      currentlyRenderingFiber.dependencies = {
34081        expirationTime: NoWork,
34082        firstContext: contextItem,
34083        responders: null
34084      };
34085    } else {
34086      // Append a new context item.
34087      lastContextDependency = lastContextDependency.next = contextItem;
34088    }
34089  }
34090
34091  return  context._currentValue ;
34092}
34093
34094var UpdateState = 0;
34095var ReplaceState = 1;
34096var ForceUpdate = 2;
34097var CaptureUpdate = 3; // Global state that is reset at the beginning of calling `processUpdateQueue`.
34098// It should only be read right after calling `processUpdateQueue`, via
34099// `checkHasForceUpdateAfterProcessing`.
34100
34101var hasForceUpdate = false;
34102var didWarnUpdateInsideUpdate;
34103var currentlyProcessingQueue;
34104
34105{
34106  didWarnUpdateInsideUpdate = false;
34107  currentlyProcessingQueue = null;
34108}
34109
34110function initializeUpdateQueue(fiber) {
34111  var queue = {
34112    baseState: fiber.memoizedState,
34113    baseQueue: null,
34114    shared: {
34115      pending: null
34116    },
34117    effects: null
34118  };
34119  fiber.updateQueue = queue;
34120}
34121function cloneUpdateQueue(current, workInProgress) {
34122  // Clone the update queue from current. Unless it's already a clone.
34123  var queue = workInProgress.updateQueue;
34124  var currentQueue = current.updateQueue;
34125
34126  if (queue === currentQueue) {
34127    var clone = {
34128      baseState: currentQueue.baseState,
34129      baseQueue: currentQueue.baseQueue,
34130      shared: currentQueue.shared,
34131      effects: currentQueue.effects
34132    };
34133    workInProgress.updateQueue = clone;
34134  }
34135}
34136function createUpdate(expirationTime, suspenseConfig) {
34137  var update = {
34138    expirationTime: expirationTime,
34139    suspenseConfig: suspenseConfig,
34140    tag: UpdateState,
34141    payload: null,
34142    callback: null,
34143    next: null
34144  };
34145  update.next = update;
34146
34147  {
34148    update.priority = getCurrentPriorityLevel();
34149  }
34150
34151  return update;
34152}
34153function enqueueUpdate(fiber, update) {
34154  var updateQueue = fiber.updateQueue;
34155
34156  if (updateQueue === null) {
34157    // Only occurs if the fiber has been unmounted.
34158    return;
34159  }
34160
34161  var sharedQueue = updateQueue.shared;
34162  var pending = sharedQueue.pending;
34163
34164  if (pending === null) {
34165    // This is the first update. Create a circular list.
34166    update.next = update;
34167  } else {
34168    update.next = pending.next;
34169    pending.next = update;
34170  }
34171
34172  sharedQueue.pending = update;
34173
34174  {
34175    if (currentlyProcessingQueue === sharedQueue && !didWarnUpdateInsideUpdate) {
34176      error('An update (setState, replaceState, or forceUpdate) was scheduled ' + 'from inside an update function. Update functions should be pure, ' + 'with zero side-effects. Consider using componentDidUpdate or a ' + 'callback.');
34177
34178      didWarnUpdateInsideUpdate = true;
34179    }
34180  }
34181}
34182function enqueueCapturedUpdate(workInProgress, update) {
34183  var current = workInProgress.alternate;
34184
34185  if (current !== null) {
34186    // Ensure the work-in-progress queue is a clone
34187    cloneUpdateQueue(current, workInProgress);
34188  } // Captured updates go only on the work-in-progress queue.
34189
34190
34191  var queue = workInProgress.updateQueue; // Append the update to the end of the list.
34192
34193  var last = queue.baseQueue;
34194
34195  if (last === null) {
34196    queue.baseQueue = update.next = update;
34197    update.next = update;
34198  } else {
34199    update.next = last.next;
34200    last.next = update;
34201  }
34202}
34203
34204function getStateFromUpdate(workInProgress, queue, update, prevState, nextProps, instance) {
34205  switch (update.tag) {
34206    case ReplaceState:
34207      {
34208        var payload = update.payload;
34209
34210        if (typeof payload === 'function') {
34211          // Updater function
34212          {
34213            enterDisallowedContextReadInDEV();
34214
34215            if ( workInProgress.mode & StrictMode) {
34216              payload.call(instance, prevState, nextProps);
34217            }
34218          }
34219
34220          var nextState = payload.call(instance, prevState, nextProps);
34221
34222          {
34223            exitDisallowedContextReadInDEV();
34224          }
34225
34226          return nextState;
34227        } // State object
34228
34229
34230        return payload;
34231      }
34232
34233    case CaptureUpdate:
34234      {
34235        workInProgress.effectTag = workInProgress.effectTag & ~ShouldCapture | DidCapture;
34236      }
34237    // Intentional fallthrough
34238
34239    case UpdateState:
34240      {
34241        var _payload = update.payload;
34242        var partialState;
34243
34244        if (typeof _payload === 'function') {
34245          // Updater function
34246          {
34247            enterDisallowedContextReadInDEV();
34248
34249            if ( workInProgress.mode & StrictMode) {
34250              _payload.call(instance, prevState, nextProps);
34251            }
34252          }
34253
34254          partialState = _payload.call(instance, prevState, nextProps);
34255
34256          {
34257            exitDisallowedContextReadInDEV();
34258          }
34259        } else {
34260          // Partial state object
34261          partialState = _payload;
34262        }
34263
34264        if (partialState === null || partialState === undefined) {
34265          // Null and undefined are treated as no-ops.
34266          return prevState;
34267        } // Merge the partial state and the previous state.
34268
34269
34270        return _assign({}, prevState, partialState);
34271      }
34272
34273    case ForceUpdate:
34274      {
34275        hasForceUpdate = true;
34276        return prevState;
34277      }
34278  }
34279
34280  return prevState;
34281}
34282
34283function processUpdateQueue(workInProgress, props, instance, renderExpirationTime) {
34284  // This is always non-null on a ClassComponent or HostRoot
34285  var queue = workInProgress.updateQueue;
34286  hasForceUpdate = false;
34287
34288  {
34289    currentlyProcessingQueue = queue.shared;
34290  } // The last rebase update that is NOT part of the base state.
34291
34292
34293  var baseQueue = queue.baseQueue; // The last pending update that hasn't been processed yet.
34294
34295  var pendingQueue = queue.shared.pending;
34296
34297  if (pendingQueue !== null) {
34298    // We have new updates that haven't been processed yet.
34299    // We'll add them to the base queue.
34300    if (baseQueue !== null) {
34301      // Merge the pending queue and the base queue.
34302      var baseFirst = baseQueue.next;
34303      var pendingFirst = pendingQueue.next;
34304      baseQueue.next = pendingFirst;
34305      pendingQueue.next = baseFirst;
34306    }
34307
34308    baseQueue = pendingQueue;
34309    queue.shared.pending = null; // TODO: Pass `current` as argument
34310
34311    var current = workInProgress.alternate;
34312
34313    if (current !== null) {
34314      var currentQueue = current.updateQueue;
34315
34316      if (currentQueue !== null) {
34317        currentQueue.baseQueue = pendingQueue;
34318      }
34319    }
34320  } // These values may change as we process the queue.
34321
34322
34323  if (baseQueue !== null) {
34324    var first = baseQueue.next; // Iterate through the list of updates to compute the result.
34325
34326    var newState = queue.baseState;
34327    var newExpirationTime = NoWork;
34328    var newBaseState = null;
34329    var newBaseQueueFirst = null;
34330    var newBaseQueueLast = null;
34331
34332    if (first !== null) {
34333      var update = first;
34334
34335      do {
34336        var updateExpirationTime = update.expirationTime;
34337
34338        if (updateExpirationTime < renderExpirationTime) {
34339          // Priority is insufficient. Skip this update. If this is the first
34340          // skipped update, the previous update/state is the new base
34341          // update/state.
34342          var clone = {
34343            expirationTime: update.expirationTime,
34344            suspenseConfig: update.suspenseConfig,
34345            tag: update.tag,
34346            payload: update.payload,
34347            callback: update.callback,
34348            next: null
34349          };
34350
34351          if (newBaseQueueLast === null) {
34352            newBaseQueueFirst = newBaseQueueLast = clone;
34353            newBaseState = newState;
34354          } else {
34355            newBaseQueueLast = newBaseQueueLast.next = clone;
34356          } // Update the remaining priority in the queue.
34357
34358
34359          if (updateExpirationTime > newExpirationTime) {
34360            newExpirationTime = updateExpirationTime;
34361          }
34362        } else {
34363          // This update does have sufficient priority.
34364          if (newBaseQueueLast !== null) {
34365            var _clone = {
34366              expirationTime: Sync,
34367              // This update is going to be committed so we never want uncommit it.
34368              suspenseConfig: update.suspenseConfig,
34369              tag: update.tag,
34370              payload: update.payload,
34371              callback: update.callback,
34372              next: null
34373            };
34374            newBaseQueueLast = newBaseQueueLast.next = _clone;
34375          } // Mark the event time of this update as relevant to this render pass.
34376          // TODO: This should ideally use the true event time of this update rather than
34377          // its priority which is a derived and not reverseable value.
34378          // TODO: We should skip this update if it was already committed but currently
34379          // we have no way of detecting the difference between a committed and suspended
34380          // update here.
34381
34382
34383          markRenderEventTimeAndConfig(updateExpirationTime, update.suspenseConfig); // Process this update.
34384
34385          newState = getStateFromUpdate(workInProgress, queue, update, newState, props, instance);
34386          var callback = update.callback;
34387
34388          if (callback !== null) {
34389            workInProgress.effectTag |= Callback;
34390            var effects = queue.effects;
34391
34392            if (effects === null) {
34393              queue.effects = [update];
34394            } else {
34395              effects.push(update);
34396            }
34397          }
34398        }
34399
34400        update = update.next;
34401
34402        if (update === null || update === first) {
34403          pendingQueue = queue.shared.pending;
34404
34405          if (pendingQueue === null) {
34406            break;
34407          } else {
34408            // An update was scheduled from inside a reducer. Add the new
34409            // pending updates to the end of the list and keep processing.
34410            update = baseQueue.next = pendingQueue.next;
34411            pendingQueue.next = first;
34412            queue.baseQueue = baseQueue = pendingQueue;
34413            queue.shared.pending = null;
34414          }
34415        }
34416      } while (true);
34417    }
34418
34419    if (newBaseQueueLast === null) {
34420      newBaseState = newState;
34421    } else {
34422      newBaseQueueLast.next = newBaseQueueFirst;
34423    }
34424
34425    queue.baseState = newBaseState;
34426    queue.baseQueue = newBaseQueueLast; // Set the remaining expiration time to be whatever is remaining in the queue.
34427    // This should be fine because the only two other things that contribute to
34428    // expiration time are props and context. We're already in the middle of the
34429    // begin phase by the time we start processing the queue, so we've already
34430    // dealt with the props. Context in components that specify
34431    // shouldComponentUpdate is tricky; but we'll have to account for
34432    // that regardless.
34433
34434    markUnprocessedUpdateTime(newExpirationTime);
34435    workInProgress.expirationTime = newExpirationTime;
34436    workInProgress.memoizedState = newState;
34437  }
34438
34439  {
34440    currentlyProcessingQueue = null;
34441  }
34442}
34443
34444function callCallback(callback, context) {
34445  if (!(typeof callback === 'function')) {
34446    {
34447      throw Error( "Invalid argument passed as callback. Expected a function. Instead received: " + callback );
34448    }
34449  }
34450
34451  callback.call(context);
34452}
34453
34454function resetHasForceUpdateBeforeProcessing() {
34455  hasForceUpdate = false;
34456}
34457function checkHasForceUpdateAfterProcessing() {
34458  return hasForceUpdate;
34459}
34460function commitUpdateQueue(finishedWork, finishedQueue, instance) {
34461  // Commit the effects
34462  var effects = finishedQueue.effects;
34463  finishedQueue.effects = null;
34464
34465  if (effects !== null) {
34466    for (var i = 0; i < effects.length; i++) {
34467      var effect = effects[i];
34468      var callback = effect.callback;
34469
34470      if (callback !== null) {
34471        effect.callback = null;
34472        callCallback(callback, instance);
34473      }
34474    }
34475  }
34476}
34477
34478var ReactCurrentBatchConfig = ReactSharedInternals.ReactCurrentBatchConfig;
34479function requestCurrentSuspenseConfig() {
34480  return ReactCurrentBatchConfig.suspense;
34481}
34482
34483var fakeInternalInstance = {};
34484var isArray = Array.isArray; // React.Component uses a shared frozen object by default.
34485// We'll use it to determine whether we need to initialize legacy refs.
34486
34487var emptyRefsObject = new React.Component().refs;
34488var didWarnAboutStateAssignmentForComponent;
34489var didWarnAboutUninitializedState;
34490var didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate;
34491var didWarnAboutLegacyLifecyclesAndDerivedState;
34492var didWarnAboutUndefinedDerivedState;
34493var warnOnUndefinedDerivedState;
34494var warnOnInvalidCallback;
34495var didWarnAboutDirectlyAssigningPropsToState;
34496var didWarnAboutContextTypeAndContextTypes;
34497var didWarnAboutInvalidateContextType;
34498
34499{
34500  didWarnAboutStateAssignmentForComponent = new Set();
34501  didWarnAboutUninitializedState = new Set();
34502  didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate = new Set();
34503  didWarnAboutLegacyLifecyclesAndDerivedState = new Set();
34504  didWarnAboutDirectlyAssigningPropsToState = new Set();
34505  didWarnAboutUndefinedDerivedState = new Set();
34506  didWarnAboutContextTypeAndContextTypes = new Set();
34507  didWarnAboutInvalidateContextType = new Set();
34508  var didWarnOnInvalidCallback = new Set();
34509
34510  warnOnInvalidCallback = function (callback, callerName) {
34511    if (callback === null || typeof callback === 'function') {
34512      return;
34513    }
34514
34515    var key = callerName + "_" + callback;
34516
34517    if (!didWarnOnInvalidCallback.has(key)) {
34518      didWarnOnInvalidCallback.add(key);
34519
34520      error('%s(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callerName, callback);
34521    }
34522  };
34523
34524  warnOnUndefinedDerivedState = function (type, partialState) {
34525    if (partialState === undefined) {
34526      var componentName = getComponentName(type) || 'Component';
34527
34528      if (!didWarnAboutUndefinedDerivedState.has(componentName)) {
34529        didWarnAboutUndefinedDerivedState.add(componentName);
34530
34531        error('%s.getDerivedStateFromProps(): A valid state object (or null) must be returned. ' + 'You have returned undefined.', componentName);
34532      }
34533    }
34534  }; // This is so gross but it's at least non-critical and can be removed if
34535  // it causes problems. This is meant to give a nicer error message for
34536  // ReactDOM15.unstable_renderSubtreeIntoContainer(reactDOM16Component,
34537  // ...)) which otherwise throws a "_processChildContext is not a function"
34538  // exception.
34539
34540
34541  Object.defineProperty(fakeInternalInstance, '_processChildContext', {
34542    enumerable: false,
34543    value: function () {
34544      {
34545        {
34546          throw Error( "_processChildContext is not available in React 16+. This likely means you have multiple copies of React and are attempting to nest a React 15 tree inside a React 16 tree using unstable_renderSubtreeIntoContainer, which isn't supported. Try to make sure you have only one copy of React (and ideally, switch to ReactDOM.createPortal)." );
34547        }
34548      }
34549    }
34550  });
34551  Object.freeze(fakeInternalInstance);
34552}
34553
34554function applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, nextProps) {
34555  var prevState = workInProgress.memoizedState;
34556
34557  {
34558    if ( workInProgress.mode & StrictMode) {
34559      // Invoke the function an extra time to help detect side-effects.
34560      getDerivedStateFromProps(nextProps, prevState);
34561    }
34562  }
34563
34564  var partialState = getDerivedStateFromProps(nextProps, prevState);
34565
34566  {
34567    warnOnUndefinedDerivedState(ctor, partialState);
34568  } // Merge the partial state and the previous state.
34569
34570
34571  var memoizedState = partialState === null || partialState === undefined ? prevState : _assign({}, prevState, partialState);
34572  workInProgress.memoizedState = memoizedState; // Once the update queue is empty, persist the derived state onto the
34573  // base state.
34574
34575  if (workInProgress.expirationTime === NoWork) {
34576    // Queue is always non-null for classes
34577    var updateQueue = workInProgress.updateQueue;
34578    updateQueue.baseState = memoizedState;
34579  }
34580}
34581var classComponentUpdater = {
34582  isMounted: isMounted,
34583  enqueueSetState: function (inst, payload, callback) {
34584    var fiber = get(inst);
34585    var currentTime = requestCurrentTimeForUpdate();
34586    var suspenseConfig = requestCurrentSuspenseConfig();
34587    var expirationTime = computeExpirationForFiber(currentTime, fiber, suspenseConfig);
34588    var update = createUpdate(expirationTime, suspenseConfig);
34589    update.payload = payload;
34590
34591    if (callback !== undefined && callback !== null) {
34592      {
34593        warnOnInvalidCallback(callback, 'setState');
34594      }
34595
34596      update.callback = callback;
34597    }
34598
34599    enqueueUpdate(fiber, update);
34600    scheduleWork(fiber, expirationTime);
34601  },
34602  enqueueReplaceState: function (inst, payload, callback) {
34603    var fiber = get(inst);
34604    var currentTime = requestCurrentTimeForUpdate();
34605    var suspenseConfig = requestCurrentSuspenseConfig();
34606    var expirationTime = computeExpirationForFiber(currentTime, fiber, suspenseConfig);
34607    var update = createUpdate(expirationTime, suspenseConfig);
34608    update.tag = ReplaceState;
34609    update.payload = payload;
34610
34611    if (callback !== undefined && callback !== null) {
34612      {
34613        warnOnInvalidCallback(callback, 'replaceState');
34614      }
34615
34616      update.callback = callback;
34617    }
34618
34619    enqueueUpdate(fiber, update);
34620    scheduleWork(fiber, expirationTime);
34621  },
34622  enqueueForceUpdate: function (inst, callback) {
34623    var fiber = get(inst);
34624    var currentTime = requestCurrentTimeForUpdate();
34625    var suspenseConfig = requestCurrentSuspenseConfig();
34626    var expirationTime = computeExpirationForFiber(currentTime, fiber, suspenseConfig);
34627    var update = createUpdate(expirationTime, suspenseConfig);
34628    update.tag = ForceUpdate;
34629
34630    if (callback !== undefined && callback !== null) {
34631      {
34632        warnOnInvalidCallback(callback, 'forceUpdate');
34633      }
34634
34635      update.callback = callback;
34636    }
34637
34638    enqueueUpdate(fiber, update);
34639    scheduleWork(fiber, expirationTime);
34640  }
34641};
34642
34643function checkShouldComponentUpdate(workInProgress, ctor, oldProps, newProps, oldState, newState, nextContext) {
34644  var instance = workInProgress.stateNode;
34645
34646  if (typeof instance.shouldComponentUpdate === 'function') {
34647    {
34648      if ( workInProgress.mode & StrictMode) {
34649        // Invoke the function an extra time to help detect side-effects.
34650        instance.shouldComponentUpdate(newProps, newState, nextContext);
34651      }
34652    }
34653
34654    startPhaseTimer(workInProgress, 'shouldComponentUpdate');
34655    var shouldUpdate = instance.shouldComponentUpdate(newProps, newState, nextContext);
34656    stopPhaseTimer();
34657
34658    {
34659      if (shouldUpdate === undefined) {
34660        error('%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', getComponentName(ctor) || 'Component');
34661      }
34662    }
34663
34664    return shouldUpdate;
34665  }
34666
34667  if (ctor.prototype && ctor.prototype.isPureReactComponent) {
34668    return !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState);
34669  }
34670
34671  return true;
34672}
34673
34674function checkClassInstance(workInProgress, ctor, newProps) {
34675  var instance = workInProgress.stateNode;
34676
34677  {
34678    var name = getComponentName(ctor) || 'Component';
34679    var renderPresent = instance.render;
34680
34681    if (!renderPresent) {
34682      if (ctor.prototype && typeof ctor.prototype.render === 'function') {
34683        error('%s(...): No `render` method found on the returned component ' + 'instance: did you accidentally return an object from the constructor?', name);
34684      } else {
34685        error('%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', name);
34686      }
34687    }
34688
34689    if (instance.getInitialState && !instance.getInitialState.isReactClassApproved && !instance.state) {
34690      error('getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', name);
34691    }
34692
34693    if (instance.getDefaultProps && !instance.getDefaultProps.isReactClassApproved) {
34694      error('getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', name);
34695    }
34696
34697    if (instance.propTypes) {
34698      error('propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', name);
34699    }
34700
34701    if (instance.contextType) {
34702      error('contextType was defined as an instance property on %s. Use a static ' + 'property to define contextType instead.', name);
34703    }
34704
34705    {
34706      if (instance.contextTypes) {
34707        error('contextTypes was defined as an instance property on %s. Use a static ' + 'property to define contextTypes instead.', name);
34708      }
34709
34710      if (ctor.contextType && ctor.contextTypes && !didWarnAboutContextTypeAndContextTypes.has(ctor)) {
34711        didWarnAboutContextTypeAndContextTypes.add(ctor);
34712
34713        error('%s declares both contextTypes and contextType static properties. ' + 'The legacy contextTypes property will be ignored.', name);
34714      }
34715    }
34716
34717    if (typeof instance.componentShouldUpdate === 'function') {
34718      error('%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', name);
34719    }
34720
34721    if (ctor.prototype && ctor.prototype.isPureReactComponent && typeof instance.shouldComponentUpdate !== 'undefined') {
34722      error('%s has a method called shouldComponentUpdate(). ' + 'shouldComponentUpdate should not be used when extending React.PureComponent. ' + 'Please extend React.Component if shouldComponentUpdate is used.', getComponentName(ctor) || 'A pure component');
34723    }
34724
34725    if (typeof instance.componentDidUnmount === 'function') {
34726      error('%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', name);
34727    }
34728
34729    if (typeof instance.componentDidReceiveProps === 'function') {
34730      error('%s has a method called ' + 'componentDidReceiveProps(). But there is no such lifecycle method. ' + 'If you meant to update the state in response to changing props, ' + 'use componentWillReceiveProps(). If you meant to fetch data or ' + 'run side-effects or mutations after React has updated the UI, use componentDidUpdate().', name);
34731    }
34732
34733    if (typeof instance.componentWillRecieveProps === 'function') {
34734      error('%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', name);
34735    }
34736
34737    if (typeof instance.UNSAFE_componentWillRecieveProps === 'function') {
34738      error('%s has a method called ' + 'UNSAFE_componentWillRecieveProps(). Did you mean UNSAFE_componentWillReceiveProps()?', name);
34739    }
34740
34741    var hasMutatedProps = instance.props !== newProps;
34742
34743    if (instance.props !== undefined && hasMutatedProps) {
34744      error('%s(...): When calling super() in `%s`, make sure to pass ' + "up the same props that your component's constructor was passed.", name, name);
34745    }
34746
34747    if (instance.defaultProps) {
34748      error('Setting defaultProps as an instance property on %s is not supported and will be ignored.' + ' Instead, define defaultProps as a static property on %s.', name, name);
34749    }
34750
34751    if (typeof instance.getSnapshotBeforeUpdate === 'function' && typeof instance.componentDidUpdate !== 'function' && !didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.has(ctor)) {
34752      didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.add(ctor);
34753
34754      error('%s: getSnapshotBeforeUpdate() should be used with componentDidUpdate(). ' + 'This component defines getSnapshotBeforeUpdate() only.', getComponentName(ctor));
34755    }
34756
34757    if (typeof instance.getDerivedStateFromProps === 'function') {
34758      error('%s: getDerivedStateFromProps() is defined as an instance method ' + 'and will be ignored. Instead, declare it as a static method.', name);
34759    }
34760
34761    if (typeof instance.getDerivedStateFromError === 'function') {
34762      error('%s: getDerivedStateFromError() is defined as an instance method ' + 'and will be ignored. Instead, declare it as a static method.', name);
34763    }
34764
34765    if (typeof ctor.getSnapshotBeforeUpdate === 'function') {
34766      error('%s: getSnapshotBeforeUpdate() is defined as a static method ' + 'and will be ignored. Instead, declare it as an instance method.', name);
34767    }
34768
34769    var _state = instance.state;
34770
34771    if (_state && (typeof _state !== 'object' || isArray(_state))) {
34772      error('%s.state: must be set to an object or null', name);
34773    }
34774
34775    if (typeof instance.getChildContext === 'function' && typeof ctor.childContextTypes !== 'object') {
34776      error('%s.getChildContext(): childContextTypes must be defined in order to ' + 'use getChildContext().', name);
34777    }
34778  }
34779}
34780
34781function adoptClassInstance(workInProgress, instance) {
34782  instance.updater = classComponentUpdater;
34783  workInProgress.stateNode = instance; // The instance needs access to the fiber so that it can schedule updates
34784
34785  set(instance, workInProgress);
34786
34787  {
34788    instance._reactInternalInstance = fakeInternalInstance;
34789  }
34790}
34791
34792function constructClassInstance(workInProgress, ctor, props) {
34793  var isLegacyContextConsumer = false;
34794  var unmaskedContext = emptyContextObject;
34795  var context = emptyContextObject;
34796  var contextType = ctor.contextType;
34797
34798  {
34799    if ('contextType' in ctor) {
34800      var isValid = // Allow null for conditional declaration
34801      contextType === null || contextType !== undefined && contextType.$$typeof === REACT_CONTEXT_TYPE && contextType._context === undefined; // Not a <Context.Consumer>
34802
34803      if (!isValid && !didWarnAboutInvalidateContextType.has(ctor)) {
34804        didWarnAboutInvalidateContextType.add(ctor);
34805        var addendum = '';
34806
34807        if (contextType === undefined) {
34808          addendum = ' However, it is set to undefined. ' + 'This can be caused by a typo or by mixing up named and default imports. ' + 'This can also happen due to a circular dependency, so ' + 'try moving the createContext() call to a separate file.';
34809        } else if (typeof contextType !== 'object') {
34810          addendum = ' However, it is set to a ' + typeof contextType + '.';
34811        } else if (contextType.$$typeof === REACT_PROVIDER_TYPE) {
34812          addendum = ' Did you accidentally pass the Context.Provider instead?';
34813        } else if (contextType._context !== undefined) {
34814          // <Context.Consumer>
34815          addendum = ' Did you accidentally pass the Context.Consumer instead?';
34816        } else {
34817          addendum = ' However, it is set to an object with keys {' + Object.keys(contextType).join(', ') + '}.';
34818        }
34819
34820        error('%s defines an invalid contextType. ' + 'contextType should point to the Context object returned by React.createContext().%s', getComponentName(ctor) || 'Component', addendum);
34821      }
34822    }
34823  }
34824
34825  if (typeof contextType === 'object' && contextType !== null) {
34826    context = readContext(contextType);
34827  } else {
34828    unmaskedContext = getUnmaskedContext(workInProgress, ctor, true);
34829    var contextTypes = ctor.contextTypes;
34830    isLegacyContextConsumer = contextTypes !== null && contextTypes !== undefined;
34831    context = isLegacyContextConsumer ? getMaskedContext(workInProgress, unmaskedContext) : emptyContextObject;
34832  } // Instantiate twice to help detect side-effects.
34833
34834
34835  {
34836    if ( workInProgress.mode & StrictMode) {
34837      new ctor(props, context); // eslint-disable-line no-new
34838    }
34839  }
34840
34841  var instance = new ctor(props, context);
34842  var state = workInProgress.memoizedState = instance.state !== null && instance.state !== undefined ? instance.state : null;
34843  adoptClassInstance(workInProgress, instance);
34844
34845  {
34846    if (typeof ctor.getDerivedStateFromProps === 'function' && state === null) {
34847      var componentName = getComponentName(ctor) || 'Component';
34848
34849      if (!didWarnAboutUninitializedState.has(componentName)) {
34850        didWarnAboutUninitializedState.add(componentName);
34851
34852        error('`%s` uses `getDerivedStateFromProps` but its initial state is ' + '%s. This is not recommended. Instead, define the initial state by ' + 'assigning an object to `this.state` in the constructor of `%s`. ' + 'This ensures that `getDerivedStateFromProps` arguments have a consistent shape.', componentName, instance.state === null ? 'null' : 'undefined', componentName);
34853      }
34854    } // If new component APIs are defined, "unsafe" lifecycles won't be called.
34855    // Warn about these lifecycles if they are present.
34856    // Don't warn about react-lifecycles-compat polyfilled methods though.
34857
34858
34859    if (typeof ctor.getDerivedStateFromProps === 'function' || typeof instance.getSnapshotBeforeUpdate === 'function') {
34860      var foundWillMountName = null;
34861      var foundWillReceivePropsName = null;
34862      var foundWillUpdateName = null;
34863
34864      if (typeof instance.componentWillMount === 'function' && instance.componentWillMount.__suppressDeprecationWarning !== true) {
34865        foundWillMountName = 'componentWillMount';
34866      } else if (typeof instance.UNSAFE_componentWillMount === 'function') {
34867        foundWillMountName = 'UNSAFE_componentWillMount';
34868      }
34869
34870      if (typeof instance.componentWillReceiveProps === 'function' && instance.componentWillReceiveProps.__suppressDeprecationWarning !== true) {
34871        foundWillReceivePropsName = 'componentWillReceiveProps';
34872      } else if (typeof instance.UNSAFE_componentWillReceiveProps === 'function') {
34873        foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';
34874      }
34875
34876      if (typeof instance.componentWillUpdate === 'function' && instance.componentWillUpdate.__suppressDeprecationWarning !== true) {
34877        foundWillUpdateName = 'componentWillUpdate';
34878      } else if (typeof instance.UNSAFE_componentWillUpdate === 'function') {
34879        foundWillUpdateName = 'UNSAFE_componentWillUpdate';
34880      }
34881
34882      if (foundWillMountName !== null || foundWillReceivePropsName !== null || foundWillUpdateName !== null) {
34883        var _componentName = getComponentName(ctor) || 'Component';
34884
34885        var newApiName = typeof ctor.getDerivedStateFromProps === 'function' ? 'getDerivedStateFromProps()' : 'getSnapshotBeforeUpdate()';
34886
34887        if (!didWarnAboutLegacyLifecyclesAndDerivedState.has(_componentName)) {
34888          didWarnAboutLegacyLifecyclesAndDerivedState.add(_componentName);
34889
34890          error('Unsafe legacy lifecycles will not be called for components using new component APIs.\n\n' + '%s uses %s but also contains the following legacy lifecycles:%s%s%s\n\n' + 'The above lifecycles should be removed. Learn more about this warning here:\n' + 'https://fb.me/react-unsafe-component-lifecycles', _componentName, newApiName, foundWillMountName !== null ? "\n  " + foundWillMountName : '', foundWillReceivePropsName !== null ? "\n  " + foundWillReceivePropsName : '', foundWillUpdateName !== null ? "\n  " + foundWillUpdateName : '');
34891        }
34892      }
34893    }
34894  } // Cache unmasked context so we can avoid recreating masked context unless necessary.
34895  // ReactFiberContext usually updates this cache but can't for newly-created instances.
34896
34897
34898  if (isLegacyContextConsumer) {
34899    cacheContext(workInProgress, unmaskedContext, context);
34900  }
34901
34902  return instance;
34903}
34904
34905function callComponentWillMount(workInProgress, instance) {
34906  startPhaseTimer(workInProgress, 'componentWillMount');
34907  var oldState = instance.state;
34908
34909  if (typeof instance.componentWillMount === 'function') {
34910    instance.componentWillMount();
34911  }
34912
34913  if (typeof instance.UNSAFE_componentWillMount === 'function') {
34914    instance.UNSAFE_componentWillMount();
34915  }
34916
34917  stopPhaseTimer();
34918
34919  if (oldState !== instance.state) {
34920    {
34921      error('%s.componentWillMount(): Assigning directly to this.state is ' + "deprecated (except inside a component's " + 'constructor). Use setState instead.', getComponentName(workInProgress.type) || 'Component');
34922    }
34923
34924    classComponentUpdater.enqueueReplaceState(instance, instance.state, null);
34925  }
34926}
34927
34928function callComponentWillReceiveProps(workInProgress, instance, newProps, nextContext) {
34929  var oldState = instance.state;
34930  startPhaseTimer(workInProgress, 'componentWillReceiveProps');
34931
34932  if (typeof instance.componentWillReceiveProps === 'function') {
34933    instance.componentWillReceiveProps(newProps, nextContext);
34934  }
34935
34936  if (typeof instance.UNSAFE_componentWillReceiveProps === 'function') {
34937    instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);
34938  }
34939
34940  stopPhaseTimer();
34941
34942  if (instance.state !== oldState) {
34943    {
34944      var componentName = getComponentName(workInProgress.type) || 'Component';
34945
34946      if (!didWarnAboutStateAssignmentForComponent.has(componentName)) {
34947        didWarnAboutStateAssignmentForComponent.add(componentName);
34948
34949        error('%s.componentWillReceiveProps(): Assigning directly to ' + "this.state is deprecated (except inside a component's " + 'constructor). Use setState instead.', componentName);
34950      }
34951    }
34952
34953    classComponentUpdater.enqueueReplaceState(instance, instance.state, null);
34954  }
34955} // Invokes the mount life-cycles on a previously never rendered instance.
34956
34957
34958function mountClassInstance(workInProgress, ctor, newProps, renderExpirationTime) {
34959  {
34960    checkClassInstance(workInProgress, ctor, newProps);
34961  }
34962
34963  var instance = workInProgress.stateNode;
34964  instance.props = newProps;
34965  instance.state = workInProgress.memoizedState;
34966  instance.refs = emptyRefsObject;
34967  initializeUpdateQueue(workInProgress);
34968  var contextType = ctor.contextType;
34969
34970  if (typeof contextType === 'object' && contextType !== null) {
34971    instance.context = readContext(contextType);
34972  } else {
34973    var unmaskedContext = getUnmaskedContext(workInProgress, ctor, true);
34974    instance.context = getMaskedContext(workInProgress, unmaskedContext);
34975  }
34976
34977  {
34978    if (instance.state === newProps) {
34979      var componentName = getComponentName(ctor) || 'Component';
34980
34981      if (!didWarnAboutDirectlyAssigningPropsToState.has(componentName)) {
34982        didWarnAboutDirectlyAssigningPropsToState.add(componentName);
34983
34984        error('%s: It is not recommended to assign props directly to state ' + "because updates to props won't be reflected in state. " + 'In most cases, it is better to use props directly.', componentName);
34985      }
34986    }
34987
34988    if (workInProgress.mode & StrictMode) {
34989      ReactStrictModeWarnings.recordLegacyContextWarning(workInProgress, instance);
34990    }
34991
34992    {
34993      ReactStrictModeWarnings.recordUnsafeLifecycleWarnings(workInProgress, instance);
34994    }
34995  }
34996
34997  processUpdateQueue(workInProgress, newProps, instance, renderExpirationTime);
34998  instance.state = workInProgress.memoizedState;
34999  var getDerivedStateFromProps = ctor.getDerivedStateFromProps;
35000
35001  if (typeof getDerivedStateFromProps === 'function') {
35002    applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, newProps);
35003    instance.state = workInProgress.memoizedState;
35004  } // In order to support react-lifecycles-compat polyfilled components,
35005  // Unsafe lifecycles should not be invoked for components using the new APIs.
35006
35007
35008  if (typeof ctor.getDerivedStateFromProps !== 'function' && typeof instance.getSnapshotBeforeUpdate !== 'function' && (typeof instance.UNSAFE_componentWillMount === 'function' || typeof instance.componentWillMount === 'function')) {
35009    callComponentWillMount(workInProgress, instance); // If we had additional state updates during this life-cycle, let's
35010    // process them now.
35011
35012    processUpdateQueue(workInProgress, newProps, instance, renderExpirationTime);
35013    instance.state = workInProgress.memoizedState;
35014  }
35015
35016  if (typeof instance.componentDidMount === 'function') {
35017    workInProgress.effectTag |= Update;
35018  }
35019}
35020
35021function resumeMountClassInstance(workInProgress, ctor, newProps, renderExpirationTime) {
35022  var instance = workInProgress.stateNode;
35023  var oldProps = workInProgress.memoizedProps;
35024  instance.props = oldProps;
35025  var oldContext = instance.context;
35026  var contextType = ctor.contextType;
35027  var nextContext = emptyContextObject;
35028
35029  if (typeof contextType === 'object' && contextType !== null) {
35030    nextContext = readContext(contextType);
35031  } else {
35032    var nextLegacyUnmaskedContext = getUnmaskedContext(workInProgress, ctor, true);
35033    nextContext = getMaskedContext(workInProgress, nextLegacyUnmaskedContext);
35034  }
35035
35036  var getDerivedStateFromProps = ctor.getDerivedStateFromProps;
35037  var hasNewLifecycles = typeof getDerivedStateFromProps === 'function' || typeof instance.getSnapshotBeforeUpdate === 'function'; // Note: During these life-cycles, instance.props/instance.state are what
35038  // ever the previously attempted to render - not the "current". However,
35039  // during componentDidUpdate we pass the "current" props.
35040  // In order to support react-lifecycles-compat polyfilled components,
35041  // Unsafe lifecycles should not be invoked for components using the new APIs.
35042
35043  if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillReceiveProps === 'function' || typeof instance.componentWillReceiveProps === 'function')) {
35044    if (oldProps !== newProps || oldContext !== nextContext) {
35045      callComponentWillReceiveProps(workInProgress, instance, newProps, nextContext);
35046    }
35047  }
35048
35049  resetHasForceUpdateBeforeProcessing();
35050  var oldState = workInProgress.memoizedState;
35051  var newState = instance.state = oldState;
35052  processUpdateQueue(workInProgress, newProps, instance, renderExpirationTime);
35053  newState = workInProgress.memoizedState;
35054
35055  if (oldProps === newProps && oldState === newState && !hasContextChanged() && !checkHasForceUpdateAfterProcessing()) {
35056    // If an update was already in progress, we should schedule an Update
35057    // effect even though we're bailing out, so that cWU/cDU are called.
35058    if (typeof instance.componentDidMount === 'function') {
35059      workInProgress.effectTag |= Update;
35060    }
35061
35062    return false;
35063  }
35064
35065  if (typeof getDerivedStateFromProps === 'function') {
35066    applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, newProps);
35067    newState = workInProgress.memoizedState;
35068  }
35069
35070  var shouldUpdate = checkHasForceUpdateAfterProcessing() || checkShouldComponentUpdate(workInProgress, ctor, oldProps, newProps, oldState, newState, nextContext);
35071
35072  if (shouldUpdate) {
35073    // In order to support react-lifecycles-compat polyfilled components,
35074    // Unsafe lifecycles should not be invoked for components using the new APIs.
35075    if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillMount === 'function' || typeof instance.componentWillMount === 'function')) {
35076      startPhaseTimer(workInProgress, 'componentWillMount');
35077
35078      if (typeof instance.componentWillMount === 'function') {
35079        instance.componentWillMount();
35080      }
35081
35082      if (typeof instance.UNSAFE_componentWillMount === 'function') {
35083        instance.UNSAFE_componentWillMount();
35084      }
35085
35086      stopPhaseTimer();
35087    }
35088
35089    if (typeof instance.componentDidMount === 'function') {
35090      workInProgress.effectTag |= Update;
35091    }
35092  } else {
35093    // If an update was already in progress, we should schedule an Update
35094    // effect even though we're bailing out, so that cWU/cDU are called.
35095    if (typeof instance.componentDidMount === 'function') {
35096      workInProgress.effectTag |= Update;
35097    } // If shouldComponentUpdate returned false, we should still update the
35098    // memoized state to indicate that this work can be reused.
35099
35100
35101    workInProgress.memoizedProps = newProps;
35102    workInProgress.memoizedState = newState;
35103  } // Update the existing instance's state, props, and context pointers even
35104  // if shouldComponentUpdate returns false.
35105
35106
35107  instance.props = newProps;
35108  instance.state = newState;
35109  instance.context = nextContext;
35110  return shouldUpdate;
35111} // Invokes the update life-cycles and returns false if it shouldn't rerender.
35112
35113
35114function updateClassInstance(current, workInProgress, ctor, newProps, renderExpirationTime) {
35115  var instance = workInProgress.stateNode;
35116  cloneUpdateQueue(current, workInProgress);
35117  var oldProps = workInProgress.memoizedProps;
35118  instance.props = workInProgress.type === workInProgress.elementType ? oldProps : resolveDefaultProps(workInProgress.type, oldProps);
35119  var oldContext = instance.context;
35120  var contextType = ctor.contextType;
35121  var nextContext = emptyContextObject;
35122
35123  if (typeof contextType === 'object' && contextType !== null) {
35124    nextContext = readContext(contextType);
35125  } else {
35126    var nextUnmaskedContext = getUnmaskedContext(workInProgress, ctor, true);
35127    nextContext = getMaskedContext(workInProgress, nextUnmaskedContext);
35128  }
35129
35130  var getDerivedStateFromProps = ctor.getDerivedStateFromProps;
35131  var hasNewLifecycles = typeof getDerivedStateFromProps === 'function' || typeof instance.getSnapshotBeforeUpdate === 'function'; // Note: During these life-cycles, instance.props/instance.state are what
35132  // ever the previously attempted to render - not the "current". However,
35133  // during componentDidUpdate we pass the "current" props.
35134  // In order to support react-lifecycles-compat polyfilled components,
35135  // Unsafe lifecycles should not be invoked for components using the new APIs.
35136
35137  if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillReceiveProps === 'function' || typeof instance.componentWillReceiveProps === 'function')) {
35138    if (oldProps !== newProps || oldContext !== nextContext) {
35139      callComponentWillReceiveProps(workInProgress, instance, newProps, nextContext);
35140    }
35141  }
35142
35143  resetHasForceUpdateBeforeProcessing();
35144  var oldState = workInProgress.memoizedState;
35145  var newState = instance.state = oldState;
35146  processUpdateQueue(workInProgress, newProps, instance, renderExpirationTime);
35147  newState = workInProgress.memoizedState;
35148
35149  if (oldProps === newProps && oldState === newState && !hasContextChanged() && !checkHasForceUpdateAfterProcessing()) {
35150    // If an update was already in progress, we should schedule an Update
35151    // effect even though we're bailing out, so that cWU/cDU are called.
35152    if (typeof instance.componentDidUpdate === 'function') {
35153      if (oldProps !== current.memoizedProps || oldState !== current.memoizedState) {
35154        workInProgress.effectTag |= Update;
35155      }
35156    }
35157
35158    if (typeof instance.getSnapshotBeforeUpdate === 'function') {
35159      if (oldProps !== current.memoizedProps || oldState !== current.memoizedState) {
35160        workInProgress.effectTag |= Snapshot;
35161      }
35162    }
35163
35164    return false;
35165  }
35166
35167  if (typeof getDerivedStateFromProps === 'function') {
35168    applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, newProps);
35169    newState = workInProgress.memoizedState;
35170  }
35171
35172  var shouldUpdate = checkHasForceUpdateAfterProcessing() || checkShouldComponentUpdate(workInProgress, ctor, oldProps, newProps, oldState, newState, nextContext);
35173
35174  if (shouldUpdate) {
35175    // In order to support react-lifecycles-compat polyfilled components,
35176    // Unsafe lifecycles should not be invoked for components using the new APIs.
35177    if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillUpdate === 'function' || typeof instance.componentWillUpdate === 'function')) {
35178      startPhaseTimer(workInProgress, 'componentWillUpdate');
35179
35180      if (typeof instance.componentWillUpdate === 'function') {
35181        instance.componentWillUpdate(newProps, newState, nextContext);
35182      }
35183
35184      if (typeof instance.UNSAFE_componentWillUpdate === 'function') {
35185        instance.UNSAFE_componentWillUpdate(newProps, newState, nextContext);
35186      }
35187
35188      stopPhaseTimer();
35189    }
35190
35191    if (typeof instance.componentDidUpdate === 'function') {
35192      workInProgress.effectTag |= Update;
35193    }
35194
35195    if (typeof instance.getSnapshotBeforeUpdate === 'function') {
35196      workInProgress.effectTag |= Snapshot;
35197    }
35198  } else {
35199    // If an update was already in progress, we should schedule an Update
35200    // effect even though we're bailing out, so that cWU/cDU are called.
35201    if (typeof instance.componentDidUpdate === 'function') {
35202      if (oldProps !== current.memoizedProps || oldState !== current.memoizedState) {
35203        workInProgress.effectTag |= Update;
35204      }
35205    }
35206
35207    if (typeof instance.getSnapshotBeforeUpdate === 'function') {
35208      if (oldProps !== current.memoizedProps || oldState !== current.memoizedState) {
35209        workInProgress.effectTag |= Snapshot;
35210      }
35211    } // If shouldComponentUpdate returned false, we should still update the
35212    // memoized props/state to indicate that this work can be reused.
35213
35214
35215    workInProgress.memoizedProps = newProps;
35216    workInProgress.memoizedState = newState;
35217  } // Update the existing instance's state, props, and context pointers even
35218  // if shouldComponentUpdate returns false.
35219
35220
35221  instance.props = newProps;
35222  instance.state = newState;
35223  instance.context = nextContext;
35224  return shouldUpdate;
35225}
35226
35227var didWarnAboutMaps;
35228var didWarnAboutGenerators;
35229var didWarnAboutStringRefs;
35230var ownerHasKeyUseWarning;
35231var ownerHasFunctionTypeWarning;
35232
35233var warnForMissingKey = function (child) {};
35234
35235{
35236  didWarnAboutMaps = false;
35237  didWarnAboutGenerators = false;
35238  didWarnAboutStringRefs = {};
35239  /**
35240   * Warn if there's no key explicitly set on dynamic arrays of children or
35241   * object keys are not valid. This allows us to keep track of children between
35242   * updates.
35243   */
35244
35245  ownerHasKeyUseWarning = {};
35246  ownerHasFunctionTypeWarning = {};
35247
35248  warnForMissingKey = function (child) {
35249    if (child === null || typeof child !== 'object') {
35250      return;
35251    }
35252
35253    if (!child._store || child._store.validated || child.key != null) {
35254      return;
35255    }
35256
35257    if (!(typeof child._store === 'object')) {
35258      {
35259        throw Error( "React Component in warnForMissingKey should have a _store. This error is likely caused by a bug in React. Please file an issue." );
35260      }
35261    }
35262
35263    child._store.validated = true;
35264    var currentComponentErrorInfo = 'Each child in a list should have a unique ' + '"key" prop. See https://fb.me/react-warning-keys for ' + 'more information.' + getCurrentFiberStackInDev();
35265
35266    if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {
35267      return;
35268    }
35269
35270    ownerHasKeyUseWarning[currentComponentErrorInfo] = true;
35271
35272    error('Each child in a list should have a unique ' + '"key" prop. See https://fb.me/react-warning-keys for ' + 'more information.');
35273  };
35274}
35275
35276var isArray$1 = Array.isArray;
35277
35278function coerceRef(returnFiber, current, element) {
35279  var mixedRef = element.ref;
35280
35281  if (mixedRef !== null && typeof mixedRef !== 'function' && typeof mixedRef !== 'object') {
35282    {
35283      // TODO: Clean this up once we turn on the string ref warning for
35284      // everyone, because the strict mode case will no longer be relevant
35285      if ((returnFiber.mode & StrictMode || warnAboutStringRefs) && // We warn in ReactElement.js if owner and self are equal for string refs
35286      // because these cannot be automatically converted to an arrow function
35287      // using a codemod. Therefore, we don't have to warn about string refs again.
35288      !(element._owner && element._self && element._owner.stateNode !== element._self)) {
35289        var componentName = getComponentName(returnFiber.type) || 'Component';
35290
35291        if (!didWarnAboutStringRefs[componentName]) {
35292          {
35293            error('A string ref, "%s", has been found within a strict mode tree. ' + 'String refs are a source of potential bugs and should be avoided. ' + 'We recommend using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://fb.me/react-strict-mode-string-ref%s', mixedRef, getStackByFiberInDevAndProd(returnFiber));
35294          }
35295
35296          didWarnAboutStringRefs[componentName] = true;
35297        }
35298      }
35299    }
35300
35301    if (element._owner) {
35302      var owner = element._owner;
35303      var inst;
35304
35305      if (owner) {
35306        var ownerFiber = owner;
35307
35308        if (!(ownerFiber.tag === ClassComponent)) {
35309          {
35310            throw Error( "Function components cannot have string refs. We recommend using useRef() instead. Learn more about using refs safely here: https://fb.me/react-strict-mode-string-ref" );
35311          }
35312        }
35313
35314        inst = ownerFiber.stateNode;
35315      }
35316
35317      if (!inst) {
35318        {
35319          throw Error( "Missing owner for string ref " + mixedRef + ". This error is likely caused by a bug in React. Please file an issue." );
35320        }
35321      }
35322
35323      var stringRef = '' + mixedRef; // Check if previous string ref matches new string ref
35324
35325      if (current !== null && current.ref !== null && typeof current.ref === 'function' && current.ref._stringRef === stringRef) {
35326        return current.ref;
35327      }
35328
35329      var ref = function (value) {
35330        var refs = inst.refs;
35331
35332        if (refs === emptyRefsObject) {
35333          // This is a lazy pooled frozen object, so we need to initialize.
35334          refs = inst.refs = {};
35335        }
35336
35337        if (value === null) {
35338          delete refs[stringRef];
35339        } else {
35340          refs[stringRef] = value;
35341        }
35342      };
35343
35344      ref._stringRef = stringRef;
35345      return ref;
35346    } else {
35347      if (!(typeof mixedRef === 'string')) {
35348        {
35349          throw Error( "Expected ref to be a function, a string, an object returned by React.createRef(), or null." );
35350        }
35351      }
35352
35353      if (!element._owner) {
35354        {
35355          throw Error( "Element ref was specified as a string (" + mixedRef + ") but no owner was set. This could happen for one of the following reasons:\n1. You may be adding a ref to a function component\n2. You may be adding a ref to a component that was not created inside a component's render method\n3. You have multiple copies of React loaded\nSee https://fb.me/react-refs-must-have-owner for more information." );
35356        }
35357      }
35358    }
35359  }
35360
35361  return mixedRef;
35362}
35363
35364function throwOnInvalidObjectType(returnFiber, newChild) {
35365  if (returnFiber.type !== 'textarea') {
35366    var addendum = '';
35367
35368    {
35369      addendum = ' If you meant to render a collection of children, use an array ' + 'instead.' + getCurrentFiberStackInDev();
35370    }
35371
35372    {
35373      {
35374        throw Error( "Objects are not valid as a React child (found: " + (Object.prototype.toString.call(newChild) === '[object Object]' ? 'object with keys {' + Object.keys(newChild).join(', ') + '}' : newChild) + ")." + addendum );
35375      }
35376    }
35377  }
35378}
35379
35380function warnOnFunctionType() {
35381  {
35382    var currentComponentErrorInfo = 'Functions are not valid as a React child. This may happen if ' + 'you return a Component instead of <Component /> from render. ' + 'Or maybe you meant to call this function rather than return it.' + getCurrentFiberStackInDev();
35383
35384    if (ownerHasFunctionTypeWarning[currentComponentErrorInfo]) {
35385      return;
35386    }
35387
35388    ownerHasFunctionTypeWarning[currentComponentErrorInfo] = true;
35389
35390    error('Functions are not valid as a React child. This may happen if ' + 'you return a Component instead of <Component /> from render. ' + 'Or maybe you meant to call this function rather than return it.');
35391  }
35392} // This wrapper function exists because I expect to clone the code in each path
35393// to be able to optimize each path individually by branching early. This needs
35394// a compiler or we can do it manually. Helpers that don't need this branching
35395// live outside of this function.
35396
35397
35398function ChildReconciler(shouldTrackSideEffects) {
35399  function deleteChild(returnFiber, childToDelete) {
35400    if (!shouldTrackSideEffects) {
35401      // Noop.
35402      return;
35403    } // Deletions are added in reversed order so we add it to the front.
35404    // At this point, the return fiber's effect list is empty except for
35405    // deletions, so we can just append the deletion to the list. The remaining
35406    // effects aren't added until the complete phase. Once we implement
35407    // resuming, this may not be true.
35408
35409
35410    var last = returnFiber.lastEffect;
35411
35412    if (last !== null) {
35413      last.nextEffect = childToDelete;
35414      returnFiber.lastEffect = childToDelete;
35415    } else {
35416      returnFiber.firstEffect = returnFiber.lastEffect = childToDelete;
35417    }
35418
35419    childToDelete.nextEffect = null;
35420    childToDelete.effectTag = Deletion;
35421  }
35422
35423  function deleteRemainingChildren(returnFiber, currentFirstChild) {
35424    if (!shouldTrackSideEffects) {
35425      // Noop.
35426      return null;
35427    } // TODO: For the shouldClone case, this could be micro-optimized a bit by
35428    // assuming that after the first child we've already added everything.
35429
35430
35431    var childToDelete = currentFirstChild;
35432
35433    while (childToDelete !== null) {
35434      deleteChild(returnFiber, childToDelete);
35435      childToDelete = childToDelete.sibling;
35436    }
35437
35438    return null;
35439  }
35440
35441  function mapRemainingChildren(returnFiber, currentFirstChild) {
35442    // Add the remaining children to a temporary map so that we can find them by
35443    // keys quickly. Implicit (null) keys get added to this set with their index
35444    // instead.
35445    var existingChildren = new Map();
35446    var existingChild = currentFirstChild;
35447
35448    while (existingChild !== null) {
35449      if (existingChild.key !== null) {
35450        existingChildren.set(existingChild.key, existingChild);
35451      } else {
35452        existingChildren.set(existingChild.index, existingChild);
35453      }
35454
35455      existingChild = existingChild.sibling;
35456    }
35457
35458    return existingChildren;
35459  }
35460
35461  function useFiber(fiber, pendingProps) {
35462    // We currently set sibling to null and index to 0 here because it is easy
35463    // to forget to do before returning it. E.g. for the single child case.
35464    var clone = createWorkInProgress(fiber, pendingProps);
35465    clone.index = 0;
35466    clone.sibling = null;
35467    return clone;
35468  }
35469
35470  function placeChild(newFiber, lastPlacedIndex, newIndex) {
35471    newFiber.index = newIndex;
35472
35473    if (!shouldTrackSideEffects) {
35474      // Noop.
35475      return lastPlacedIndex;
35476    }
35477
35478    var current = newFiber.alternate;
35479
35480    if (current !== null) {
35481      var oldIndex = current.index;
35482
35483      if (oldIndex < lastPlacedIndex) {
35484        // This is a move.
35485        newFiber.effectTag = Placement;
35486        return lastPlacedIndex;
35487      } else {
35488        // This item can stay in place.
35489        return oldIndex;
35490      }
35491    } else {
35492      // This is an insertion.
35493      newFiber.effectTag = Placement;
35494      return lastPlacedIndex;
35495    }
35496  }
35497
35498  function placeSingleChild(newFiber) {
35499    // This is simpler for the single child case. We only need to do a
35500    // placement for inserting new children.
35501    if (shouldTrackSideEffects && newFiber.alternate === null) {
35502      newFiber.effectTag = Placement;
35503    }
35504
35505    return newFiber;
35506  }
35507
35508  function updateTextNode(returnFiber, current, textContent, expirationTime) {
35509    if (current === null || current.tag !== HostText) {
35510      // Insert
35511      var created = createFiberFromText(textContent, returnFiber.mode, expirationTime);
35512      created.return = returnFiber;
35513      return created;
35514    } else {
35515      // Update
35516      var existing = useFiber(current, textContent);
35517      existing.return = returnFiber;
35518      return existing;
35519    }
35520  }
35521
35522  function updateElement(returnFiber, current, element, expirationTime) {
35523    if (current !== null) {
35524      if (current.elementType === element.type || ( // Keep this check inline so it only runs on the false path:
35525       isCompatibleFamilyForHotReloading(current, element) )) {
35526        // Move based on index
35527        var existing = useFiber(current, element.props);
35528        existing.ref = coerceRef(returnFiber, current, element);
35529        existing.return = returnFiber;
35530
35531        {
35532          existing._debugSource = element._source;
35533          existing._debugOwner = element._owner;
35534        }
35535
35536        return existing;
35537      }
35538    } // Insert
35539
35540
35541    var created = createFiberFromElement(element, returnFiber.mode, expirationTime);
35542    created.ref = coerceRef(returnFiber, current, element);
35543    created.return = returnFiber;
35544    return created;
35545  }
35546
35547  function updatePortal(returnFiber, current, portal, expirationTime) {
35548    if (current === null || current.tag !== HostPortal || current.stateNode.containerInfo !== portal.containerInfo || current.stateNode.implementation !== portal.implementation) {
35549      // Insert
35550      var created = createFiberFromPortal(portal, returnFiber.mode, expirationTime);
35551      created.return = returnFiber;
35552      return created;
35553    } else {
35554      // Update
35555      var existing = useFiber(current, portal.children || []);
35556      existing.return = returnFiber;
35557      return existing;
35558    }
35559  }
35560
35561  function updateFragment(returnFiber, current, fragment, expirationTime, key) {
35562    if (current === null || current.tag !== Fragment) {
35563      // Insert
35564      var created = createFiberFromFragment(fragment, returnFiber.mode, expirationTime, key);
35565      created.return = returnFiber;
35566      return created;
35567    } else {
35568      // Update
35569      var existing = useFiber(current, fragment);
35570      existing.return = returnFiber;
35571      return existing;
35572    }
35573  }
35574
35575  function createChild(returnFiber, newChild, expirationTime) {
35576    if (typeof newChild === 'string' || typeof newChild === 'number') {
35577      // Text nodes don't have keys. If the previous node is implicitly keyed
35578      // we can continue to replace it without aborting even if it is not a text
35579      // node.
35580      var created = createFiberFromText('' + newChild, returnFiber.mode, expirationTime);
35581      created.return = returnFiber;
35582      return created;
35583    }
35584
35585    if (typeof newChild === 'object' && newChild !== null) {
35586      switch (newChild.$$typeof) {
35587        case REACT_ELEMENT_TYPE:
35588          {
35589            var _created = createFiberFromElement(newChild, returnFiber.mode, expirationTime);
35590
35591            _created.ref = coerceRef(returnFiber, null, newChild);
35592            _created.return = returnFiber;
35593            return _created;
35594          }
35595
35596        case REACT_PORTAL_TYPE:
35597          {
35598            var _created2 = createFiberFromPortal(newChild, returnFiber.mode, expirationTime);
35599
35600            _created2.return = returnFiber;
35601            return _created2;
35602          }
35603      }
35604
35605      if (isArray$1(newChild) || getIteratorFn(newChild)) {
35606        var _created3 = createFiberFromFragment(newChild, returnFiber.mode, expirationTime, null);
35607
35608        _created3.return = returnFiber;
35609        return _created3;
35610      }
35611
35612      throwOnInvalidObjectType(returnFiber, newChild);
35613    }
35614
35615    {
35616      if (typeof newChild === 'function') {
35617        warnOnFunctionType();
35618      }
35619    }
35620
35621    return null;
35622  }
35623
35624  function updateSlot(returnFiber, oldFiber, newChild, expirationTime) {
35625    // Update the fiber if the keys match, otherwise return null.
35626    var key = oldFiber !== null ? oldFiber.key : null;
35627
35628    if (typeof newChild === 'string' || typeof newChild === 'number') {
35629      // Text nodes don't have keys. If the previous node is implicitly keyed
35630      // we can continue to replace it without aborting even if it is not a text
35631      // node.
35632      if (key !== null) {
35633        return null;
35634      }
35635
35636      return updateTextNode(returnFiber, oldFiber, '' + newChild, expirationTime);
35637    }
35638
35639    if (typeof newChild === 'object' && newChild !== null) {
35640      switch (newChild.$$typeof) {
35641        case REACT_ELEMENT_TYPE:
35642          {
35643            if (newChild.key === key) {
35644              if (newChild.type === REACT_FRAGMENT_TYPE) {
35645                return updateFragment(returnFiber, oldFiber, newChild.props.children, expirationTime, key);
35646              }
35647
35648              return updateElement(returnFiber, oldFiber, newChild, expirationTime);
35649            } else {
35650              return null;
35651            }
35652          }
35653
35654        case REACT_PORTAL_TYPE:
35655          {
35656            if (newChild.key === key) {
35657              return updatePortal(returnFiber, oldFiber, newChild, expirationTime);
35658            } else {
35659              return null;
35660            }
35661          }
35662      }
35663
35664      if (isArray$1(newChild) || getIteratorFn(newChild)) {
35665        if (key !== null) {
35666          return null;
35667        }
35668
35669        return updateFragment(returnFiber, oldFiber, newChild, expirationTime, null);
35670      }
35671
35672      throwOnInvalidObjectType(returnFiber, newChild);
35673    }
35674
35675    {
35676      if (typeof newChild === 'function') {
35677        warnOnFunctionType();
35678      }
35679    }
35680
35681    return null;
35682  }
35683
35684  function updateFromMap(existingChildren, returnFiber, newIdx, newChild, expirationTime) {
35685    if (typeof newChild === 'string' || typeof newChild === 'number') {
35686      // Text nodes don't have keys, so we neither have to check the old nor
35687      // new node for the key. If both are text nodes, they match.
35688      var matchedFiber = existingChildren.get(newIdx) || null;
35689      return updateTextNode(returnFiber, matchedFiber, '' + newChild, expirationTime);
35690    }
35691
35692    if (typeof newChild === 'object' && newChild !== null) {
35693      switch (newChild.$$typeof) {
35694        case REACT_ELEMENT_TYPE:
35695          {
35696            var _matchedFiber = existingChildren.get(newChild.key === null ? newIdx : newChild.key) || null;
35697
35698            if (newChild.type === REACT_FRAGMENT_TYPE) {
35699              return updateFragment(returnFiber, _matchedFiber, newChild.props.children, expirationTime, newChild.key);
35700            }
35701
35702            return updateElement(returnFiber, _matchedFiber, newChild, expirationTime);
35703          }
35704
35705        case REACT_PORTAL_TYPE:
35706          {
35707            var _matchedFiber2 = existingChildren.get(newChild.key === null ? newIdx : newChild.key) || null;
35708
35709            return updatePortal(returnFiber, _matchedFiber2, newChild, expirationTime);
35710          }
35711      }
35712
35713      if (isArray$1(newChild) || getIteratorFn(newChild)) {
35714        var _matchedFiber3 = existingChildren.get(newIdx) || null;
35715
35716        return updateFragment(returnFiber, _matchedFiber3, newChild, expirationTime, null);
35717      }
35718
35719      throwOnInvalidObjectType(returnFiber, newChild);
35720    }
35721
35722    {
35723      if (typeof newChild === 'function') {
35724        warnOnFunctionType();
35725      }
35726    }
35727
35728    return null;
35729  }
35730  /**
35731   * Warns if there is a duplicate or missing key
35732   */
35733
35734
35735  function warnOnInvalidKey(child, knownKeys) {
35736    {
35737      if (typeof child !== 'object' || child === null) {
35738        return knownKeys;
35739      }
35740
35741      switch (child.$$typeof) {
35742        case REACT_ELEMENT_TYPE:
35743        case REACT_PORTAL_TYPE:
35744          warnForMissingKey(child);
35745          var key = child.key;
35746
35747          if (typeof key !== 'string') {
35748            break;
35749          }
35750
35751          if (knownKeys === null) {
35752            knownKeys = new Set();
35753            knownKeys.add(key);
35754            break;
35755          }
35756
35757          if (!knownKeys.has(key)) {
35758            knownKeys.add(key);
35759            break;
35760          }
35761
35762          error('Encountered two children with the same key, `%s`. ' + 'Keys should be unique so that components maintain their identity ' + 'across updates. Non-unique keys may cause children to be ' + 'duplicated and/or omitted — the behavior is unsupported and ' + 'could change in a future version.', key);
35763
35764          break;
35765      }
35766    }
35767
35768    return knownKeys;
35769  }
35770
35771  function reconcileChildrenArray(returnFiber, currentFirstChild, newChildren, expirationTime) {
35772    // This algorithm can't optimize by searching from both ends since we
35773    // don't have backpointers on fibers. I'm trying to see how far we can get
35774    // with that model. If it ends up not being worth the tradeoffs, we can
35775    // add it later.
35776    // Even with a two ended optimization, we'd want to optimize for the case
35777    // where there are few changes and brute force the comparison instead of
35778    // going for the Map. It'd like to explore hitting that path first in
35779    // forward-only mode and only go for the Map once we notice that we need
35780    // lots of look ahead. This doesn't handle reversal as well as two ended
35781    // search but that's unusual. Besides, for the two ended optimization to
35782    // work on Iterables, we'd need to copy the whole set.
35783    // In this first iteration, we'll just live with hitting the bad case
35784    // (adding everything to a Map) in for every insert/move.
35785    // If you change this code, also update reconcileChildrenIterator() which
35786    // uses the same algorithm.
35787    {
35788      // First, validate keys.
35789      var knownKeys = null;
35790
35791      for (var i = 0; i < newChildren.length; i++) {
35792        var child = newChildren[i];
35793        knownKeys = warnOnInvalidKey(child, knownKeys);
35794      }
35795    }
35796
35797    var resultingFirstChild = null;
35798    var previousNewFiber = null;
35799    var oldFiber = currentFirstChild;
35800    var lastPlacedIndex = 0;
35801    var newIdx = 0;
35802    var nextOldFiber = null;
35803
35804    for (; oldFiber !== null && newIdx < newChildren.length; newIdx++) {
35805      if (oldFiber.index > newIdx) {
35806        nextOldFiber = oldFiber;
35807        oldFiber = null;
35808      } else {
35809        nextOldFiber = oldFiber.sibling;
35810      }
35811
35812      var newFiber = updateSlot(returnFiber, oldFiber, newChildren[newIdx], expirationTime);
35813
35814      if (newFiber === null) {
35815        // TODO: This breaks on empty slots like null children. That's
35816        // unfortunate because it triggers the slow path all the time. We need
35817        // a better way to communicate whether this was a miss or null,
35818        // boolean, undefined, etc.
35819        if (oldFiber === null) {
35820          oldFiber = nextOldFiber;
35821        }
35822
35823        break;
35824      }
35825
35826      if (shouldTrackSideEffects) {
35827        if (oldFiber && newFiber.alternate === null) {
35828          // We matched the slot, but we didn't reuse the existing fiber, so we
35829          // need to delete the existing child.
35830          deleteChild(returnFiber, oldFiber);
35831        }
35832      }
35833
35834      lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);
35835
35836      if (previousNewFiber === null) {
35837        // TODO: Move out of the loop. This only happens for the first run.
35838        resultingFirstChild = newFiber;
35839      } else {
35840        // TODO: Defer siblings if we're not at the right index for this slot.
35841        // I.e. if we had null values before, then we want to defer this
35842        // for each null value. However, we also don't want to call updateSlot
35843        // with the previous one.
35844        previousNewFiber.sibling = newFiber;
35845      }
35846
35847      previousNewFiber = newFiber;
35848      oldFiber = nextOldFiber;
35849    }
35850
35851    if (newIdx === newChildren.length) {
35852      // We've reached the end of the new children. We can delete the rest.
35853      deleteRemainingChildren(returnFiber, oldFiber);
35854      return resultingFirstChild;
35855    }
35856
35857    if (oldFiber === null) {
35858      // If we don't have any more existing children we can choose a fast path
35859      // since the rest will all be insertions.
35860      for (; newIdx < newChildren.length; newIdx++) {
35861        var _newFiber = createChild(returnFiber, newChildren[newIdx], expirationTime);
35862
35863        if (_newFiber === null) {
35864          continue;
35865        }
35866
35867        lastPlacedIndex = placeChild(_newFiber, lastPlacedIndex, newIdx);
35868
35869        if (previousNewFiber === null) {
35870          // TODO: Move out of the loop. This only happens for the first run.
35871          resultingFirstChild = _newFiber;
35872        } else {
35873          previousNewFiber.sibling = _newFiber;
35874        }
35875
35876        previousNewFiber = _newFiber;
35877      }
35878
35879      return resultingFirstChild;
35880    } // Add all children to a key map for quick lookups.
35881
35882
35883    var existingChildren = mapRemainingChildren(returnFiber, oldFiber); // Keep scanning and use the map to restore deleted items as moves.
35884
35885    for (; newIdx < newChildren.length; newIdx++) {
35886      var _newFiber2 = updateFromMap(existingChildren, returnFiber, newIdx, newChildren[newIdx], expirationTime);
35887
35888      if (_newFiber2 !== null) {
35889        if (shouldTrackSideEffects) {
35890          if (_newFiber2.alternate !== null) {
35891            // The new fiber is a work in progress, but if there exists a
35892            // current, that means that we reused the fiber. We need to delete
35893            // it from the child list so that we don't add it to the deletion
35894            // list.
35895            existingChildren.delete(_newFiber2.key === null ? newIdx : _newFiber2.key);
35896          }
35897        }
35898
35899        lastPlacedIndex = placeChild(_newFiber2, lastPlacedIndex, newIdx);
35900
35901        if (previousNewFiber === null) {
35902          resultingFirstChild = _newFiber2;
35903        } else {
35904          previousNewFiber.sibling = _newFiber2;
35905        }
35906
35907        previousNewFiber = _newFiber2;
35908      }
35909    }
35910
35911    if (shouldTrackSideEffects) {
35912      // Any existing children that weren't consumed above were deleted. We need
35913      // to add them to the deletion list.
35914      existingChildren.forEach(function (child) {
35915        return deleteChild(returnFiber, child);
35916      });
35917    }
35918
35919    return resultingFirstChild;
35920  }
35921
35922  function reconcileChildrenIterator(returnFiber, currentFirstChild, newChildrenIterable, expirationTime) {
35923    // This is the same implementation as reconcileChildrenArray(),
35924    // but using the iterator instead.
35925    var iteratorFn = getIteratorFn(newChildrenIterable);
35926
35927    if (!(typeof iteratorFn === 'function')) {
35928      {
35929        throw Error( "An object is not an iterable. This error is likely caused by a bug in React. Please file an issue." );
35930      }
35931    }
35932
35933    {
35934      // We don't support rendering Generators because it's a mutation.
35935      // See https://github.com/facebook/react/issues/12995
35936      if (typeof Symbol === 'function' && // $FlowFixMe Flow doesn't know about toStringTag
35937      newChildrenIterable[Symbol.toStringTag] === 'Generator') {
35938        if (!didWarnAboutGenerators) {
35939          error('Using Generators as children is unsupported and will likely yield ' + 'unexpected results because enumerating a generator mutates it. ' + 'You may convert it to an array with `Array.from()` or the ' + '`[...spread]` operator before rendering. Keep in mind ' + 'you might need to polyfill these features for older browsers.');
35940        }
35941
35942        didWarnAboutGenerators = true;
35943      } // Warn about using Maps as children
35944
35945
35946      if (newChildrenIterable.entries === iteratorFn) {
35947        if (!didWarnAboutMaps) {
35948          error('Using Maps as children is unsupported and will likely yield ' + 'unexpected results. Convert it to a sequence/iterable of keyed ' + 'ReactElements instead.');
35949        }
35950
35951        didWarnAboutMaps = true;
35952      } // First, validate keys.
35953      // We'll get a different iterator later for the main pass.
35954
35955
35956      var _newChildren = iteratorFn.call(newChildrenIterable);
35957
35958      if (_newChildren) {
35959        var knownKeys = null;
35960
35961        var _step = _newChildren.next();
35962
35963        for (; !_step.done; _step = _newChildren.next()) {
35964          var child = _step.value;
35965          knownKeys = warnOnInvalidKey(child, knownKeys);
35966        }
35967      }
35968    }
35969
35970    var newChildren = iteratorFn.call(newChildrenIterable);
35971
35972    if (!(newChildren != null)) {
35973      {
35974        throw Error( "An iterable object provided no iterator." );
35975      }
35976    }
35977
35978    var resultingFirstChild = null;
35979    var previousNewFiber = null;
35980    var oldFiber = currentFirstChild;
35981    var lastPlacedIndex = 0;
35982    var newIdx = 0;
35983    var nextOldFiber = null;
35984    var step = newChildren.next();
35985
35986    for (; oldFiber !== null && !step.done; newIdx++, step = newChildren.next()) {
35987      if (oldFiber.index > newIdx) {
35988        nextOldFiber = oldFiber;
35989        oldFiber = null;
35990      } else {
35991        nextOldFiber = oldFiber.sibling;
35992      }
35993
35994      var newFiber = updateSlot(returnFiber, oldFiber, step.value, expirationTime);
35995
35996      if (newFiber === null) {
35997        // TODO: This breaks on empty slots like null children. That's
35998        // unfortunate because it triggers the slow path all the time. We need
35999        // a better way to communicate whether this was a miss or null,
36000        // boolean, undefined, etc.
36001        if (oldFiber === null) {
36002          oldFiber = nextOldFiber;
36003        }
36004
36005        break;
36006      }
36007
36008      if (shouldTrackSideEffects) {
36009        if (oldFiber && newFiber.alternate === null) {
36010          // We matched the slot, but we didn't reuse the existing fiber, so we
36011          // need to delete the existing child.
36012          deleteChild(returnFiber, oldFiber);
36013        }
36014      }
36015
36016      lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);
36017
36018      if (previousNewFiber === null) {
36019        // TODO: Move out of the loop. This only happens for the first run.
36020        resultingFirstChild = newFiber;
36021      } else {
36022        // TODO: Defer siblings if we're not at the right index for this slot.
36023        // I.e. if we had null values before, then we want to defer this
36024        // for each null value. However, we also don't want to call updateSlot
36025        // with the previous one.
36026        previousNewFiber.sibling = newFiber;
36027      }
36028
36029      previousNewFiber = newFiber;
36030      oldFiber = nextOldFiber;
36031    }
36032
36033    if (step.done) {
36034      // We've reached the end of the new children. We can delete the rest.
36035      deleteRemainingChildren(returnFiber, oldFiber);
36036      return resultingFirstChild;
36037    }
36038
36039    if (oldFiber === null) {
36040      // If we don't have any more existing children we can choose a fast path
36041      // since the rest will all be insertions.
36042      for (; !step.done; newIdx++, step = newChildren.next()) {
36043        var _newFiber3 = createChild(returnFiber, step.value, expirationTime);
36044
36045        if (_newFiber3 === null) {
36046          continue;
36047        }
36048
36049        lastPlacedIndex = placeChild(_newFiber3, lastPlacedIndex, newIdx);
36050
36051        if (previousNewFiber === null) {
36052          // TODO: Move out of the loop. This only happens for the first run.
36053          resultingFirstChild = _newFiber3;
36054        } else {
36055          previousNewFiber.sibling = _newFiber3;
36056        }
36057
36058        previousNewFiber = _newFiber3;
36059      }
36060
36061      return resultingFirstChild;
36062    } // Add all children to a key map for quick lookups.
36063
36064
36065    var existingChildren = mapRemainingChildren(returnFiber, oldFiber); // Keep scanning and use the map to restore deleted items as moves.
36066
36067    for (; !step.done; newIdx++, step = newChildren.next()) {
36068      var _newFiber4 = updateFromMap(existingChildren, returnFiber, newIdx, step.value, expirationTime);
36069
36070      if (_newFiber4 !== null) {
36071        if (shouldTrackSideEffects) {
36072          if (_newFiber4.alternate !== null) {
36073            // The new fiber is a work in progress, but if there exists a
36074            // current, that means that we reused the fiber. We need to delete
36075            // it from the child list so that we don't add it to the deletion
36076            // list.
36077            existingChildren.delete(_newFiber4.key === null ? newIdx : _newFiber4.key);
36078          }
36079        }
36080
36081        lastPlacedIndex = placeChild(_newFiber4, lastPlacedIndex, newIdx);
36082
36083        if (previousNewFiber === null) {
36084          resultingFirstChild = _newFiber4;
36085        } else {
36086          previousNewFiber.sibling = _newFiber4;
36087        }
36088
36089        previousNewFiber = _newFiber4;
36090      }
36091    }
36092
36093    if (shouldTrackSideEffects) {
36094      // Any existing children that weren't consumed above were deleted. We need
36095      // to add them to the deletion list.
36096      existingChildren.forEach(function (child) {
36097        return deleteChild(returnFiber, child);
36098      });
36099    }
36100
36101    return resultingFirstChild;
36102  }
36103
36104  function reconcileSingleTextNode(returnFiber, currentFirstChild, textContent, expirationTime) {
36105    // There's no need to check for keys on text nodes since we don't have a
36106    // way to define them.
36107    if (currentFirstChild !== null && currentFirstChild.tag === HostText) {
36108      // We already have an existing node so let's just update it and delete
36109      // the rest.
36110      deleteRemainingChildren(returnFiber, currentFirstChild.sibling);
36111      var existing = useFiber(currentFirstChild, textContent);
36112      existing.return = returnFiber;
36113      return existing;
36114    } // The existing first child is not a text node so we need to create one
36115    // and delete the existing ones.
36116
36117
36118    deleteRemainingChildren(returnFiber, currentFirstChild);
36119    var created = createFiberFromText(textContent, returnFiber.mode, expirationTime);
36120    created.return = returnFiber;
36121    return created;
36122  }
36123
36124  function reconcileSingleElement(returnFiber, currentFirstChild, element, expirationTime) {
36125    var key = element.key;
36126    var child = currentFirstChild;
36127
36128    while (child !== null) {
36129      // TODO: If key === null and child.key === null, then this only applies to
36130      // the first item in the list.
36131      if (child.key === key) {
36132        switch (child.tag) {
36133          case Fragment:
36134            {
36135              if (element.type === REACT_FRAGMENT_TYPE) {
36136                deleteRemainingChildren(returnFiber, child.sibling);
36137                var existing = useFiber(child, element.props.children);
36138                existing.return = returnFiber;
36139
36140                {
36141                  existing._debugSource = element._source;
36142                  existing._debugOwner = element._owner;
36143                }
36144
36145                return existing;
36146              }
36147
36148              break;
36149            }
36150
36151          case Block:
36152
36153          // We intentionally fallthrough here if enableBlocksAPI is not on.
36154          // eslint-disable-next-lined no-fallthrough
36155
36156          default:
36157            {
36158              if (child.elementType === element.type || ( // Keep this check inline so it only runs on the false path:
36159               isCompatibleFamilyForHotReloading(child, element) )) {
36160                deleteRemainingChildren(returnFiber, child.sibling);
36161
36162                var _existing3 = useFiber(child, element.props);
36163
36164                _existing3.ref = coerceRef(returnFiber, child, element);
36165                _existing3.return = returnFiber;
36166
36167                {
36168                  _existing3._debugSource = element._source;
36169                  _existing3._debugOwner = element._owner;
36170                }
36171
36172                return _existing3;
36173              }
36174
36175              break;
36176            }
36177        } // Didn't match.
36178
36179
36180        deleteRemainingChildren(returnFiber, child);
36181        break;
36182      } else {
36183        deleteChild(returnFiber, child);
36184      }
36185
36186      child = child.sibling;
36187    }
36188
36189    if (element.type === REACT_FRAGMENT_TYPE) {
36190      var created = createFiberFromFragment(element.props.children, returnFiber.mode, expirationTime, element.key);
36191      created.return = returnFiber;
36192      return created;
36193    } else {
36194      var _created4 = createFiberFromElement(element, returnFiber.mode, expirationTime);
36195
36196      _created4.ref = coerceRef(returnFiber, currentFirstChild, element);
36197      _created4.return = returnFiber;
36198      return _created4;
36199    }
36200  }
36201
36202  function reconcileSinglePortal(returnFiber, currentFirstChild, portal, expirationTime) {
36203    var key = portal.key;
36204    var child = currentFirstChild;
36205
36206    while (child !== null) {
36207      // TODO: If key === null and child.key === null, then this only applies to
36208      // the first item in the list.
36209      if (child.key === key) {
36210        if (child.tag === HostPortal && child.stateNode.containerInfo === portal.containerInfo && child.stateNode.implementation === portal.implementation) {
36211          deleteRemainingChildren(returnFiber, child.sibling);
36212          var existing = useFiber(child, portal.children || []);
36213          existing.return = returnFiber;
36214          return existing;
36215        } else {
36216          deleteRemainingChildren(returnFiber, child);
36217          break;
36218        }
36219      } else {
36220        deleteChild(returnFiber, child);
36221      }
36222
36223      child = child.sibling;
36224    }
36225
36226    var created = createFiberFromPortal(portal, returnFiber.mode, expirationTime);
36227    created.return = returnFiber;
36228    return created;
36229  } // This API will tag the children with the side-effect of the reconciliation
36230  // itself. They will be added to the side-effect list as we pass through the
36231  // children and the parent.
36232
36233
36234  function reconcileChildFibers(returnFiber, currentFirstChild, newChild, expirationTime) {
36235    // This function is not recursive.
36236    // If the top level item is an array, we treat it as a set of children,
36237    // not as a fragment. Nested arrays on the other hand will be treated as
36238    // fragment nodes. Recursion happens at the normal flow.
36239    // Handle top level unkeyed fragments as if they were arrays.
36240    // This leads to an ambiguity between <>{[...]}</> and <>...</>.
36241    // We treat the ambiguous cases above the same.
36242    var isUnkeyedTopLevelFragment = typeof newChild === 'object' && newChild !== null && newChild.type === REACT_FRAGMENT_TYPE && newChild.key === null;
36243
36244    if (isUnkeyedTopLevelFragment) {
36245      newChild = newChild.props.children;
36246    } // Handle object types
36247
36248
36249    var isObject = typeof newChild === 'object' && newChild !== null;
36250
36251    if (isObject) {
36252      switch (newChild.$$typeof) {
36253        case REACT_ELEMENT_TYPE:
36254          return placeSingleChild(reconcileSingleElement(returnFiber, currentFirstChild, newChild, expirationTime));
36255
36256        case REACT_PORTAL_TYPE:
36257          return placeSingleChild(reconcileSinglePortal(returnFiber, currentFirstChild, newChild, expirationTime));
36258      }
36259    }
36260
36261    if (typeof newChild === 'string' || typeof newChild === 'number') {
36262      return placeSingleChild(reconcileSingleTextNode(returnFiber, currentFirstChild, '' + newChild, expirationTime));
36263    }
36264
36265    if (isArray$1(newChild)) {
36266      return reconcileChildrenArray(returnFiber, currentFirstChild, newChild, expirationTime);
36267    }
36268
36269    if (getIteratorFn(newChild)) {
36270      return reconcileChildrenIterator(returnFiber, currentFirstChild, newChild, expirationTime);
36271    }
36272
36273    if (isObject) {
36274      throwOnInvalidObjectType(returnFiber, newChild);
36275    }
36276
36277    {
36278      if (typeof newChild === 'function') {
36279        warnOnFunctionType();
36280      }
36281    }
36282
36283    if (typeof newChild === 'undefined' && !isUnkeyedTopLevelFragment) {
36284      // If the new child is undefined, and the return fiber is a composite
36285      // component, throw an error. If Fiber return types are disabled,
36286      // we already threw above.
36287      switch (returnFiber.tag) {
36288        case ClassComponent:
36289          {
36290            {
36291              var instance = returnFiber.stateNode;
36292
36293              if (instance.render._isMockFunction) {
36294                // We allow auto-mocks to proceed as if they're returning null.
36295                break;
36296              }
36297            }
36298          }
36299        // Intentionally fall through to the next case, which handles both
36300        // functions and classes
36301        // eslint-disable-next-lined no-fallthrough
36302
36303        case FunctionComponent:
36304          {
36305            var Component = returnFiber.type;
36306
36307            {
36308              {
36309                throw Error( (Component.displayName || Component.name || 'Component') + "(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null." );
36310              }
36311            }
36312          }
36313      }
36314    } // Remaining cases are all treated as empty.
36315
36316
36317    return deleteRemainingChildren(returnFiber, currentFirstChild);
36318  }
36319
36320  return reconcileChildFibers;
36321}
36322
36323var reconcileChildFibers = ChildReconciler(true);
36324var mountChildFibers = ChildReconciler(false);
36325function cloneChildFibers(current, workInProgress) {
36326  if (!(current === null || workInProgress.child === current.child)) {
36327    {
36328      throw Error( "Resuming work not yet implemented." );
36329    }
36330  }
36331
36332  if (workInProgress.child === null) {
36333    return;
36334  }
36335
36336  var currentChild = workInProgress.child;
36337  var newChild = createWorkInProgress(currentChild, currentChild.pendingProps);
36338  workInProgress.child = newChild;
36339  newChild.return = workInProgress;
36340
36341  while (currentChild.sibling !== null) {
36342    currentChild = currentChild.sibling;
36343    newChild = newChild.sibling = createWorkInProgress(currentChild, currentChild.pendingProps);
36344    newChild.return = workInProgress;
36345  }
36346
36347  newChild.sibling = null;
36348} // Reset a workInProgress child set to prepare it for a second pass.
36349
36350function resetChildFibers(workInProgress, renderExpirationTime) {
36351  var child = workInProgress.child;
36352
36353  while (child !== null) {
36354    resetWorkInProgress(child, renderExpirationTime);
36355    child = child.sibling;
36356  }
36357}
36358
36359var NO_CONTEXT = {};
36360var contextStackCursor$1 = createCursor(NO_CONTEXT);
36361var contextFiberStackCursor = createCursor(NO_CONTEXT);
36362var rootInstanceStackCursor = createCursor(NO_CONTEXT);
36363
36364function requiredContext(c) {
36365  if (!(c !== NO_CONTEXT)) {
36366    {
36367      throw Error( "Expected host context to exist. This error is likely caused by a bug in React. Please file an issue." );
36368    }
36369  }
36370
36371  return c;
36372}
36373
36374function getRootHostContainer() {
36375  var rootInstance = requiredContext(rootInstanceStackCursor.current);
36376  return rootInstance;
36377}
36378
36379function pushHostContainer(fiber, nextRootInstance) {
36380  // Push current root instance onto the stack;
36381  // This allows us to reset root when portals are popped.
36382  push(rootInstanceStackCursor, nextRootInstance, fiber); // Track the context and the Fiber that provided it.
36383  // This enables us to pop only Fibers that provide unique contexts.
36384
36385  push(contextFiberStackCursor, fiber, fiber); // Finally, we need to push the host context to the stack.
36386  // However, we can't just call getRootHostContext() and push it because
36387  // we'd have a different number of entries on the stack depending on
36388  // whether getRootHostContext() throws somewhere in renderer code or not.
36389  // So we push an empty value first. This lets us safely unwind on errors.
36390
36391  push(contextStackCursor$1, NO_CONTEXT, fiber);
36392  var nextRootContext = getRootHostContext(nextRootInstance); // Now that we know this function doesn't throw, replace it.
36393
36394  pop(contextStackCursor$1, fiber);
36395  push(contextStackCursor$1, nextRootContext, fiber);
36396}
36397
36398function popHostContainer(fiber) {
36399  pop(contextStackCursor$1, fiber);
36400  pop(contextFiberStackCursor, fiber);
36401  pop(rootInstanceStackCursor, fiber);
36402}
36403
36404function getHostContext() {
36405  var context = requiredContext(contextStackCursor$1.current);
36406  return context;
36407}
36408
36409function pushHostContext(fiber) {
36410  var rootInstance = requiredContext(rootInstanceStackCursor.current);
36411  var context = requiredContext(contextStackCursor$1.current);
36412  var nextContext = getChildHostContext(context, fiber.type); // Don't push this Fiber's context unless it's unique.
36413
36414  if (context === nextContext) {
36415    return;
36416  } // Track the context and the Fiber that provided it.
36417  // This enables us to pop only Fibers that provide unique contexts.
36418
36419
36420  push(contextFiberStackCursor, fiber, fiber);
36421  push(contextStackCursor$1, nextContext, fiber);
36422}
36423
36424function popHostContext(fiber) {
36425  // Do not pop unless this Fiber provided the current context.
36426  // pushHostContext() only pushes Fibers that provide unique contexts.
36427  if (contextFiberStackCursor.current !== fiber) {
36428    return;
36429  }
36430
36431  pop(contextStackCursor$1, fiber);
36432  pop(contextFiberStackCursor, fiber);
36433}
36434
36435var DefaultSuspenseContext = 0; // The Suspense Context is split into two parts. The lower bits is
36436// inherited deeply down the subtree. The upper bits only affect
36437// this immediate suspense boundary and gets reset each new
36438// boundary or suspense list.
36439
36440var SubtreeSuspenseContextMask = 1; // Subtree Flags:
36441// InvisibleParentSuspenseContext indicates that one of our parent Suspense
36442// boundaries is not currently showing visible main content.
36443// Either because it is already showing a fallback or is not mounted at all.
36444// We can use this to determine if it is desirable to trigger a fallback at
36445// the parent. If not, then we might need to trigger undesirable boundaries
36446// and/or suspend the commit to avoid hiding the parent content.
36447
36448var InvisibleParentSuspenseContext = 1; // Shallow Flags:
36449// ForceSuspenseFallback can be used by SuspenseList to force newly added
36450// items into their fallback state during one of the render passes.
36451
36452var ForceSuspenseFallback = 2;
36453var suspenseStackCursor = createCursor(DefaultSuspenseContext);
36454function hasSuspenseContext(parentContext, flag) {
36455  return (parentContext & flag) !== 0;
36456}
36457function setDefaultShallowSuspenseContext(parentContext) {
36458  return parentContext & SubtreeSuspenseContextMask;
36459}
36460function setShallowSuspenseContext(parentContext, shallowContext) {
36461  return parentContext & SubtreeSuspenseContextMask | shallowContext;
36462}
36463function addSubtreeSuspenseContext(parentContext, subtreeContext) {
36464  return parentContext | subtreeContext;
36465}
36466function pushSuspenseContext(fiber, newContext) {
36467  push(suspenseStackCursor, newContext, fiber);
36468}
36469function popSuspenseContext(fiber) {
36470  pop(suspenseStackCursor, fiber);
36471}
36472
36473function shouldCaptureSuspense(workInProgress, hasInvisibleParent) {
36474  // If it was the primary children that just suspended, capture and render the
36475  // fallback. Otherwise, don't capture and bubble to the next boundary.
36476  var nextState = workInProgress.memoizedState;
36477
36478  if (nextState !== null) {
36479    if (nextState.dehydrated !== null) {
36480      // A dehydrated boundary always captures.
36481      return true;
36482    }
36483
36484    return false;
36485  }
36486
36487  var props = workInProgress.memoizedProps; // In order to capture, the Suspense component must have a fallback prop.
36488
36489  if (props.fallback === undefined) {
36490    return false;
36491  } // Regular boundaries always capture.
36492
36493
36494  if (props.unstable_avoidThisFallback !== true) {
36495    return true;
36496  } // If it's a boundary we should avoid, then we prefer to bubble up to the
36497  // parent boundary if it is currently invisible.
36498
36499
36500  if (hasInvisibleParent) {
36501    return false;
36502  } // If the parent is not able to handle it, we must handle it.
36503
36504
36505  return true;
36506}
36507function findFirstSuspended(row) {
36508  var node = row;
36509
36510  while (node !== null) {
36511    if (node.tag === SuspenseComponent) {
36512      var state = node.memoizedState;
36513
36514      if (state !== null) {
36515        var dehydrated = state.dehydrated;
36516
36517        if (dehydrated === null || isSuspenseInstancePending(dehydrated) || isSuspenseInstanceFallback(dehydrated)) {
36518          return node;
36519        }
36520      }
36521    } else if (node.tag === SuspenseListComponent && // revealOrder undefined can't be trusted because it don't
36522    // keep track of whether it suspended or not.
36523    node.memoizedProps.revealOrder !== undefined) {
36524      var didSuspend = (node.effectTag & DidCapture) !== NoEffect;
36525
36526      if (didSuspend) {
36527        return node;
36528      }
36529    } else if (node.child !== null) {
36530      node.child.return = node;
36531      node = node.child;
36532      continue;
36533    }
36534
36535    if (node === row) {
36536      return null;
36537    }
36538
36539    while (node.sibling === null) {
36540      if (node.return === null || node.return === row) {
36541        return null;
36542      }
36543
36544      node = node.return;
36545    }
36546
36547    node.sibling.return = node.return;
36548    node = node.sibling;
36549  }
36550
36551  return null;
36552}
36553
36554function createDeprecatedResponderListener(responder, props) {
36555  var eventResponderListener = {
36556    responder: responder,
36557    props: props
36558  };
36559
36560  {
36561    Object.freeze(eventResponderListener);
36562  }
36563
36564  return eventResponderListener;
36565}
36566
36567var HasEffect =
36568/* */
365691; // Represents the phase in which the effect (not the clean-up) fires.
36570
36571var Layout =
36572/*    */
365732;
36574var Passive$1 =
36575/*   */
365764;
36577
36578var ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher,
36579    ReactCurrentBatchConfig$1 = ReactSharedInternals.ReactCurrentBatchConfig;
36580var didWarnAboutMismatchedHooksForComponent;
36581
36582{
36583  didWarnAboutMismatchedHooksForComponent = new Set();
36584}
36585
36586// These are set right before calling the component.
36587var renderExpirationTime = NoWork; // The work-in-progress fiber. I've named it differently to distinguish it from
36588// the work-in-progress hook.
36589
36590var currentlyRenderingFiber$1 = null; // Hooks are stored as a linked list on the fiber's memoizedState field. The
36591// current hook list is the list that belongs to the current fiber. The
36592// work-in-progress hook list is a new list that will be added to the
36593// work-in-progress fiber.
36594
36595var currentHook = null;
36596var workInProgressHook = null; // Whether an update was scheduled at any point during the render phase. This
36597// does not get reset if we do another render pass; only when we're completely
36598// finished evaluating this component. This is an optimization so we know
36599// whether we need to clear render phase updates after a throw.
36600
36601var didScheduleRenderPhaseUpdate = false;
36602var RE_RENDER_LIMIT = 25; // In DEV, this is the name of the currently executing primitive hook
36603
36604var currentHookNameInDev = null; // In DEV, this list ensures that hooks are called in the same order between renders.
36605// The list stores the order of hooks used during the initial render (mount).
36606// Subsequent renders (updates) reference this list.
36607
36608var hookTypesDev = null;
36609var hookTypesUpdateIndexDev = -1; // In DEV, this tracks whether currently rendering component needs to ignore
36610// the dependencies for Hooks that need them (e.g. useEffect or useMemo).
36611// When true, such Hooks will always be "remounted". Only used during hot reload.
36612
36613var ignorePreviousDependencies = false;
36614
36615function mountHookTypesDev() {
36616  {
36617    var hookName = currentHookNameInDev;
36618
36619    if (hookTypesDev === null) {
36620      hookTypesDev = [hookName];
36621    } else {
36622      hookTypesDev.push(hookName);
36623    }
36624  }
36625}
36626
36627function updateHookTypesDev() {
36628  {
36629    var hookName = currentHookNameInDev;
36630
36631    if (hookTypesDev !== null) {
36632      hookTypesUpdateIndexDev++;
36633
36634      if (hookTypesDev[hookTypesUpdateIndexDev] !== hookName) {
36635        warnOnHookMismatchInDev(hookName);
36636      }
36637    }
36638  }
36639}
36640
36641function checkDepsAreArrayDev(deps) {
36642  {
36643    if (deps !== undefined && deps !== null && !Array.isArray(deps)) {
36644      // Verify deps, but only on mount to avoid extra checks.
36645      // It's unlikely their type would change as usually you define them inline.
36646      error('%s received a final argument that is not an array (instead, received `%s`). When ' + 'specified, the final argument must be an array.', currentHookNameInDev, typeof deps);
36647    }
36648  }
36649}
36650
36651function warnOnHookMismatchInDev(currentHookName) {
36652  {
36653    var componentName = getComponentName(currentlyRenderingFiber$1.type);
36654
36655    if (!didWarnAboutMismatchedHooksForComponent.has(componentName)) {
36656      didWarnAboutMismatchedHooksForComponent.add(componentName);
36657
36658      if (hookTypesDev !== null) {
36659        var table = '';
36660        var secondColumnStart = 30;
36661
36662        for (var i = 0; i <= hookTypesUpdateIndexDev; i++) {
36663          var oldHookName = hookTypesDev[i];
36664          var newHookName = i === hookTypesUpdateIndexDev ? currentHookName : oldHookName;
36665          var row = i + 1 + ". " + oldHookName; // Extra space so second column lines up
36666          // lol @ IE not supporting String#repeat
36667
36668          while (row.length < secondColumnStart) {
36669            row += ' ';
36670          }
36671
36672          row += newHookName + '\n';
36673          table += row;
36674        }
36675
36676        error('React has detected a change in the order of Hooks called by %s. ' + 'This will lead to bugs and errors if not fixed. ' + 'For more information, read the Rules of Hooks: https://fb.me/rules-of-hooks\n\n' + '   Previous render            Next render\n' + '   ------------------------------------------------------\n' + '%s' + '   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n', componentName, table);
36677      }
36678    }
36679  }
36680}
36681
36682function throwInvalidHookError() {
36683  {
36684    {
36685      throw Error( "Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://fb.me/react-invalid-hook-call for tips about how to debug and fix this problem." );
36686    }
36687  }
36688}
36689
36690function areHookInputsEqual(nextDeps, prevDeps) {
36691  {
36692    if (ignorePreviousDependencies) {
36693      // Only true when this component is being hot reloaded.
36694      return false;
36695    }
36696  }
36697
36698  if (prevDeps === null) {
36699    {
36700      error('%s received a final argument during this render, but not during ' + 'the previous render. Even though the final argument is optional, ' + 'its type cannot change between renders.', currentHookNameInDev);
36701    }
36702
36703    return false;
36704  }
36705
36706  {
36707    // Don't bother comparing lengths in prod because these arrays should be
36708    // passed inline.
36709    if (nextDeps.length !== prevDeps.length) {
36710      error('The final argument passed to %s changed size between renders. The ' + 'order and size of this array must remain constant.\n\n' + 'Previous: %s\n' + 'Incoming: %s', currentHookNameInDev, "[" + prevDeps.join(', ') + "]", "[" + nextDeps.join(', ') + "]");
36711    }
36712  }
36713
36714  for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++) {
36715    if (objectIs(nextDeps[i], prevDeps[i])) {
36716      continue;
36717    }
36718
36719    return false;
36720  }
36721
36722  return true;
36723}
36724
36725function renderWithHooks(current, workInProgress, Component, props, secondArg, nextRenderExpirationTime) {
36726  renderExpirationTime = nextRenderExpirationTime;
36727  currentlyRenderingFiber$1 = workInProgress;
36728
36729  {
36730    hookTypesDev = current !== null ? current._debugHookTypes : null;
36731    hookTypesUpdateIndexDev = -1; // Used for hot reloading:
36732
36733    ignorePreviousDependencies = current !== null && current.type !== workInProgress.type;
36734  }
36735
36736  workInProgress.memoizedState = null;
36737  workInProgress.updateQueue = null;
36738  workInProgress.expirationTime = NoWork; // The following should have already been reset
36739  // currentHook = null;
36740  // workInProgressHook = null;
36741  // didScheduleRenderPhaseUpdate = false;
36742  // TODO Warn if no hooks are used at all during mount, then some are used during update.
36743  // Currently we will identify the update render as a mount because memoizedState === null.
36744  // This is tricky because it's valid for certain types of components (e.g. React.lazy)
36745  // Using memoizedState to differentiate between mount/update only works if at least one stateful hook is used.
36746  // Non-stateful hooks (e.g. context) don't get added to memoizedState,
36747  // so memoizedState would be null during updates and mounts.
36748
36749  {
36750    if (current !== null && current.memoizedState !== null) {
36751      ReactCurrentDispatcher.current = HooksDispatcherOnUpdateInDEV;
36752    } else if (hookTypesDev !== null) {
36753      // This dispatcher handles an edge case where a component is updating,
36754      // but no stateful hooks have been used.
36755      // We want to match the production code behavior (which will use HooksDispatcherOnMount),
36756      // but with the extra DEV validation to ensure hooks ordering hasn't changed.
36757      // This dispatcher does that.
36758      ReactCurrentDispatcher.current = HooksDispatcherOnMountWithHookTypesInDEV;
36759    } else {
36760      ReactCurrentDispatcher.current = HooksDispatcherOnMountInDEV;
36761    }
36762  }
36763
36764  var children = Component(props, secondArg); // Check if there was a render phase update
36765
36766  if (workInProgress.expirationTime === renderExpirationTime) {
36767    // Keep rendering in a loop for as long as render phase updates continue to
36768    // be scheduled. Use a counter to prevent infinite loops.
36769    var numberOfReRenders = 0;
36770
36771    do {
36772      workInProgress.expirationTime = NoWork;
36773
36774      if (!(numberOfReRenders < RE_RENDER_LIMIT)) {
36775        {
36776          throw Error( "Too many re-renders. React limits the number of renders to prevent an infinite loop." );
36777        }
36778      }
36779
36780      numberOfReRenders += 1;
36781
36782      {
36783        // Even when hot reloading, allow dependencies to stabilize
36784        // after first render to prevent infinite render phase updates.
36785        ignorePreviousDependencies = false;
36786      } // Start over from the beginning of the list
36787
36788
36789      currentHook = null;
36790      workInProgressHook = null;
36791      workInProgress.updateQueue = null;
36792
36793      {
36794        // Also validate hook order for cascading updates.
36795        hookTypesUpdateIndexDev = -1;
36796      }
36797
36798      ReactCurrentDispatcher.current =  HooksDispatcherOnRerenderInDEV ;
36799      children = Component(props, secondArg);
36800    } while (workInProgress.expirationTime === renderExpirationTime);
36801  } // We can assume the previous dispatcher is always this one, since we set it
36802  // at the beginning of the render phase and there's no re-entrancy.
36803
36804
36805  ReactCurrentDispatcher.current = ContextOnlyDispatcher;
36806
36807  {
36808    workInProgress._debugHookTypes = hookTypesDev;
36809  } // This check uses currentHook so that it works the same in DEV and prod bundles.
36810  // hookTypesDev could catch more cases (e.g. context) but only in DEV bundles.
36811
36812
36813  var didRenderTooFewHooks = currentHook !== null && currentHook.next !== null;
36814  renderExpirationTime = NoWork;
36815  currentlyRenderingFiber$1 = null;
36816  currentHook = null;
36817  workInProgressHook = null;
36818
36819  {
36820    currentHookNameInDev = null;
36821    hookTypesDev = null;
36822    hookTypesUpdateIndexDev = -1;
36823  }
36824
36825  didScheduleRenderPhaseUpdate = false;
36826
36827  if (!!didRenderTooFewHooks) {
36828    {
36829      throw Error( "Rendered fewer hooks than expected. This may be caused by an accidental early return statement." );
36830    }
36831  }
36832
36833  return children;
36834}
36835function bailoutHooks(current, workInProgress, expirationTime) {
36836  workInProgress.updateQueue = current.updateQueue;
36837  workInProgress.effectTag &= ~(Passive | Update);
36838
36839  if (current.expirationTime <= expirationTime) {
36840    current.expirationTime = NoWork;
36841  }
36842}
36843function resetHooksAfterThrow() {
36844  // We can assume the previous dispatcher is always this one, since we set it
36845  // at the beginning of the render phase and there's no re-entrancy.
36846  ReactCurrentDispatcher.current = ContextOnlyDispatcher;
36847
36848  if (didScheduleRenderPhaseUpdate) {
36849    // There were render phase updates. These are only valid for this render
36850    // phase, which we are now aborting. Remove the updates from the queues so
36851    // they do not persist to the next render. Do not remove updates from hooks
36852    // that weren't processed.
36853    //
36854    // Only reset the updates from the queue if it has a clone. If it does
36855    // not have a clone, that means it wasn't processed, and the updates were
36856    // scheduled before we entered the render phase.
36857    var hook = currentlyRenderingFiber$1.memoizedState;
36858
36859    while (hook !== null) {
36860      var queue = hook.queue;
36861
36862      if (queue !== null) {
36863        queue.pending = null;
36864      }
36865
36866      hook = hook.next;
36867    }
36868  }
36869
36870  renderExpirationTime = NoWork;
36871  currentlyRenderingFiber$1 = null;
36872  currentHook = null;
36873  workInProgressHook = null;
36874
36875  {
36876    hookTypesDev = null;
36877    hookTypesUpdateIndexDev = -1;
36878    currentHookNameInDev = null;
36879  }
36880
36881  didScheduleRenderPhaseUpdate = false;
36882}
36883
36884function mountWorkInProgressHook() {
36885  var hook = {
36886    memoizedState: null,
36887    baseState: null,
36888    baseQueue: null,
36889    queue: null,
36890    next: null
36891  };
36892
36893  if (workInProgressHook === null) {
36894    // This is the first hook in the list
36895    currentlyRenderingFiber$1.memoizedState = workInProgressHook = hook;
36896  } else {
36897    // Append to the end of the list
36898    workInProgressHook = workInProgressHook.next = hook;
36899  }
36900
36901  return workInProgressHook;
36902}
36903
36904function updateWorkInProgressHook() {
36905  // This function is used both for updates and for re-renders triggered by a
36906  // render phase update. It assumes there is either a current hook we can
36907  // clone, or a work-in-progress hook from a previous render pass that we can
36908  // use as a base. When we reach the end of the base list, we must switch to
36909  // the dispatcher used for mounts.
36910  var nextCurrentHook;
36911
36912  if (currentHook === null) {
36913    var current = currentlyRenderingFiber$1.alternate;
36914
36915    if (current !== null) {
36916      nextCurrentHook = current.memoizedState;
36917    } else {
36918      nextCurrentHook = null;
36919    }
36920  } else {
36921    nextCurrentHook = currentHook.next;
36922  }
36923
36924  var nextWorkInProgressHook;
36925
36926  if (workInProgressHook === null) {
36927    nextWorkInProgressHook = currentlyRenderingFiber$1.memoizedState;
36928  } else {
36929    nextWorkInProgressHook = workInProgressHook.next;
36930  }
36931
36932  if (nextWorkInProgressHook !== null) {
36933    // There's already a work-in-progress. Reuse it.
36934    workInProgressHook = nextWorkInProgressHook;
36935    nextWorkInProgressHook = workInProgressHook.next;
36936    currentHook = nextCurrentHook;
36937  } else {
36938    // Clone from the current hook.
36939    if (!(nextCurrentHook !== null)) {
36940      {
36941        throw Error( "Rendered more hooks than during the previous render." );
36942      }
36943    }
36944
36945    currentHook = nextCurrentHook;
36946    var newHook = {
36947      memoizedState: currentHook.memoizedState,
36948      baseState: currentHook.baseState,
36949      baseQueue: currentHook.baseQueue,
36950      queue: currentHook.queue,
36951      next: null
36952    };
36953
36954    if (workInProgressHook === null) {
36955      // This is the first hook in the list.
36956      currentlyRenderingFiber$1.memoizedState = workInProgressHook = newHook;
36957    } else {
36958      // Append to the end of the list.
36959      workInProgressHook = workInProgressHook.next = newHook;
36960    }
36961  }
36962
36963  return workInProgressHook;
36964}
36965
36966function createFunctionComponentUpdateQueue() {
36967  return {
36968    lastEffect: null
36969  };
36970}
36971
36972function basicStateReducer(state, action) {
36973  // $FlowFixMe: Flow doesn't like mixed types
36974  return typeof action === 'function' ? action(state) : action;
36975}
36976
36977function mountReducer(reducer, initialArg, init) {
36978  var hook = mountWorkInProgressHook();
36979  var initialState;
36980
36981  if (init !== undefined) {
36982    initialState = init(initialArg);
36983  } else {
36984    initialState = initialArg;
36985  }
36986
36987  hook.memoizedState = hook.baseState = initialState;
36988  var queue = hook.queue = {
36989    pending: null,
36990    dispatch: null,
36991    lastRenderedReducer: reducer,
36992    lastRenderedState: initialState
36993  };
36994  var dispatch = queue.dispatch = dispatchAction.bind(null, currentlyRenderingFiber$1, queue);
36995  return [hook.memoizedState, dispatch];
36996}
36997
36998function updateReducer(reducer, initialArg, init) {
36999  var hook = updateWorkInProgressHook();
37000  var queue = hook.queue;
37001
37002  if (!(queue !== null)) {
37003    {
37004      throw Error( "Should have a queue. This is likely a bug in React. Please file an issue." );
37005    }
37006  }
37007
37008  queue.lastRenderedReducer = reducer;
37009  var current = currentHook; // The last rebase update that is NOT part of the base state.
37010
37011  var baseQueue = current.baseQueue; // The last pending update that hasn't been processed yet.
37012
37013  var pendingQueue = queue.pending;
37014
37015  if (pendingQueue !== null) {
37016    // We have new updates that haven't been processed yet.
37017    // We'll add them to the base queue.
37018    if (baseQueue !== null) {
37019      // Merge the pending queue and the base queue.
37020      var baseFirst = baseQueue.next;
37021      var pendingFirst = pendingQueue.next;
37022      baseQueue.next = pendingFirst;
37023      pendingQueue.next = baseFirst;
37024    }
37025
37026    current.baseQueue = baseQueue = pendingQueue;
37027    queue.pending = null;
37028  }
37029
37030  if (baseQueue !== null) {
37031    // We have a queue to process.
37032    var first = baseQueue.next;
37033    var newState = current.baseState;
37034    var newBaseState = null;
37035    var newBaseQueueFirst = null;
37036    var newBaseQueueLast = null;
37037    var update = first;
37038
37039    do {
37040      var updateExpirationTime = update.expirationTime;
37041
37042      if (updateExpirationTime < renderExpirationTime) {
37043        // Priority is insufficient. Skip this update. If this is the first
37044        // skipped update, the previous update/state is the new base
37045        // update/state.
37046        var clone = {
37047          expirationTime: update.expirationTime,
37048          suspenseConfig: update.suspenseConfig,
37049          action: update.action,
37050          eagerReducer: update.eagerReducer,
37051          eagerState: update.eagerState,
37052          next: null
37053        };
37054
37055        if (newBaseQueueLast === null) {
37056          newBaseQueueFirst = newBaseQueueLast = clone;
37057          newBaseState = newState;
37058        } else {
37059          newBaseQueueLast = newBaseQueueLast.next = clone;
37060        } // Update the remaining priority in the queue.
37061
37062
37063        if (updateExpirationTime > currentlyRenderingFiber$1.expirationTime) {
37064          currentlyRenderingFiber$1.expirationTime = updateExpirationTime;
37065          markUnprocessedUpdateTime(updateExpirationTime);
37066        }
37067      } else {
37068        // This update does have sufficient priority.
37069        if (newBaseQueueLast !== null) {
37070          var _clone = {
37071            expirationTime: Sync,
37072            // This update is going to be committed so we never want uncommit it.
37073            suspenseConfig: update.suspenseConfig,
37074            action: update.action,
37075            eagerReducer: update.eagerReducer,
37076            eagerState: update.eagerState,
37077            next: null
37078          };
37079          newBaseQueueLast = newBaseQueueLast.next = _clone;
37080        } // Mark the event time of this update as relevant to this render pass.
37081        // TODO: This should ideally use the true event time of this update rather than
37082        // its priority which is a derived and not reverseable value.
37083        // TODO: We should skip this update if it was already committed but currently
37084        // we have no way of detecting the difference between a committed and suspended
37085        // update here.
37086
37087
37088        markRenderEventTimeAndConfig(updateExpirationTime, update.suspenseConfig); // Process this update.
37089
37090        if (update.eagerReducer === reducer) {
37091          // If this update was processed eagerly, and its reducer matches the
37092          // current reducer, we can use the eagerly computed state.
37093          newState = update.eagerState;
37094        } else {
37095          var action = update.action;
37096          newState = reducer(newState, action);
37097        }
37098      }
37099
37100      update = update.next;
37101    } while (update !== null && update !== first);
37102
37103    if (newBaseQueueLast === null) {
37104      newBaseState = newState;
37105    } else {
37106      newBaseQueueLast.next = newBaseQueueFirst;
37107    } // Mark that the fiber performed work, but only if the new state is
37108    // different from the current state.
37109
37110
37111    if (!objectIs(newState, hook.memoizedState)) {
37112      markWorkInProgressReceivedUpdate();
37113    }
37114
37115    hook.memoizedState = newState;
37116    hook.baseState = newBaseState;
37117    hook.baseQueue = newBaseQueueLast;
37118    queue.lastRenderedState = newState;
37119  }
37120
37121  var dispatch = queue.dispatch;
37122  return [hook.memoizedState, dispatch];
37123}
37124
37125function rerenderReducer(reducer, initialArg, init) {
37126  var hook = updateWorkInProgressHook();
37127  var queue = hook.queue;
37128
37129  if (!(queue !== null)) {
37130    {
37131      throw Error( "Should have a queue. This is likely a bug in React. Please file an issue." );
37132    }
37133  }
37134
37135  queue.lastRenderedReducer = reducer; // This is a re-render. Apply the new render phase updates to the previous
37136  // work-in-progress hook.
37137
37138  var dispatch = queue.dispatch;
37139  var lastRenderPhaseUpdate = queue.pending;
37140  var newState = hook.memoizedState;
37141
37142  if (lastRenderPhaseUpdate !== null) {
37143    // The queue doesn't persist past this render pass.
37144    queue.pending = null;
37145    var firstRenderPhaseUpdate = lastRenderPhaseUpdate.next;
37146    var update = firstRenderPhaseUpdate;
37147
37148    do {
37149      // Process this render phase update. We don't have to check the
37150      // priority because it will always be the same as the current
37151      // render's.
37152      var action = update.action;
37153      newState = reducer(newState, action);
37154      update = update.next;
37155    } while (update !== firstRenderPhaseUpdate); // Mark that the fiber performed work, but only if the new state is
37156    // different from the current state.
37157
37158
37159    if (!objectIs(newState, hook.memoizedState)) {
37160      markWorkInProgressReceivedUpdate();
37161    }
37162
37163    hook.memoizedState = newState; // Don't persist the state accumulated from the render phase updates to
37164    // the base state unless the queue is empty.
37165    // TODO: Not sure if this is the desired semantics, but it's what we
37166    // do for gDSFP. I can't remember why.
37167
37168    if (hook.baseQueue === null) {
37169      hook.baseState = newState;
37170    }
37171
37172    queue.lastRenderedState = newState;
37173  }
37174
37175  return [newState, dispatch];
37176}
37177
37178function mountState(initialState) {
37179  var hook = mountWorkInProgressHook();
37180
37181  if (typeof initialState === 'function') {
37182    // $FlowFixMe: Flow doesn't like mixed types
37183    initialState = initialState();
37184  }
37185
37186  hook.memoizedState = hook.baseState = initialState;
37187  var queue = hook.queue = {
37188    pending: null,
37189    dispatch: null,
37190    lastRenderedReducer: basicStateReducer,
37191    lastRenderedState: initialState
37192  };
37193  var dispatch = queue.dispatch = dispatchAction.bind(null, currentlyRenderingFiber$1, queue);
37194  return [hook.memoizedState, dispatch];
37195}
37196
37197function updateState(initialState) {
37198  return updateReducer(basicStateReducer);
37199}
37200
37201function rerenderState(initialState) {
37202  return rerenderReducer(basicStateReducer);
37203}
37204
37205function pushEffect(tag, create, destroy, deps) {
37206  var effect = {
37207    tag: tag,
37208    create: create,
37209    destroy: destroy,
37210    deps: deps,
37211    // Circular
37212    next: null
37213  };
37214  var componentUpdateQueue = currentlyRenderingFiber$1.updateQueue;
37215
37216  if (componentUpdateQueue === null) {
37217    componentUpdateQueue = createFunctionComponentUpdateQueue();
37218    currentlyRenderingFiber$1.updateQueue = componentUpdateQueue;
37219    componentUpdateQueue.lastEffect = effect.next = effect;
37220  } else {
37221    var lastEffect = componentUpdateQueue.lastEffect;
37222
37223    if (lastEffect === null) {
37224      componentUpdateQueue.lastEffect = effect.next = effect;
37225    } else {
37226      var firstEffect = lastEffect.next;
37227      lastEffect.next = effect;
37228      effect.next = firstEffect;
37229      componentUpdateQueue.lastEffect = effect;
37230    }
37231  }
37232
37233  return effect;
37234}
37235
37236function mountRef(initialValue) {
37237  var hook = mountWorkInProgressHook();
37238  var ref = {
37239    current: initialValue
37240  };
37241
37242  {
37243    Object.seal(ref);
37244  }
37245
37246  hook.memoizedState = ref;
37247  return ref;
37248}
37249
37250function updateRef(initialValue) {
37251  var hook = updateWorkInProgressHook();
37252  return hook.memoizedState;
37253}
37254
37255function mountEffectImpl(fiberEffectTag, hookEffectTag, create, deps) {
37256  var hook = mountWorkInProgressHook();
37257  var nextDeps = deps === undefined ? null : deps;
37258  currentlyRenderingFiber$1.effectTag |= fiberEffectTag;
37259  hook.memoizedState = pushEffect(HasEffect | hookEffectTag, create, undefined, nextDeps);
37260}
37261
37262function updateEffectImpl(fiberEffectTag, hookEffectTag, create, deps) {
37263  var hook = updateWorkInProgressHook();
37264  var nextDeps = deps === undefined ? null : deps;
37265  var destroy = undefined;
37266
37267  if (currentHook !== null) {
37268    var prevEffect = currentHook.memoizedState;
37269    destroy = prevEffect.destroy;
37270
37271    if (nextDeps !== null) {
37272      var prevDeps = prevEffect.deps;
37273
37274      if (areHookInputsEqual(nextDeps, prevDeps)) {
37275        pushEffect(hookEffectTag, create, destroy, nextDeps);
37276        return;
37277      }
37278    }
37279  }
37280
37281  currentlyRenderingFiber$1.effectTag |= fiberEffectTag;
37282  hook.memoizedState = pushEffect(HasEffect | hookEffectTag, create, destroy, nextDeps);
37283}
37284
37285function mountEffect(create, deps) {
37286  {
37287    // $FlowExpectedError - jest isn't a global, and isn't recognized outside of tests
37288    if ('undefined' !== typeof jest) {
37289      warnIfNotCurrentlyActingEffectsInDEV(currentlyRenderingFiber$1);
37290    }
37291  }
37292
37293  return mountEffectImpl(Update | Passive, Passive$1, create, deps);
37294}
37295
37296function updateEffect(create, deps) {
37297  {
37298    // $FlowExpectedError - jest isn't a global, and isn't recognized outside of tests
37299    if ('undefined' !== typeof jest) {
37300      warnIfNotCurrentlyActingEffectsInDEV(currentlyRenderingFiber$1);
37301    }
37302  }
37303
37304  return updateEffectImpl(Update | Passive, Passive$1, create, deps);
37305}
37306
37307function mountLayoutEffect(create, deps) {
37308  return mountEffectImpl(Update, Layout, create, deps);
37309}
37310
37311function updateLayoutEffect(create, deps) {
37312  return updateEffectImpl(Update, Layout, create, deps);
37313}
37314
37315function imperativeHandleEffect(create, ref) {
37316  if (typeof ref === 'function') {
37317    var refCallback = ref;
37318
37319    var _inst = create();
37320
37321    refCallback(_inst);
37322    return function () {
37323      refCallback(null);
37324    };
37325  } else if (ref !== null && ref !== undefined) {
37326    var refObject = ref;
37327
37328    {
37329      if (!refObject.hasOwnProperty('current')) {
37330        error('Expected useImperativeHandle() first argument to either be a ' + 'ref callback or React.createRef() object. Instead received: %s.', 'an object with keys {' + Object.keys(refObject).join(', ') + '}');
37331      }
37332    }
37333
37334    var _inst2 = create();
37335
37336    refObject.current = _inst2;
37337    return function () {
37338      refObject.current = null;
37339    };
37340  }
37341}
37342
37343function mountImperativeHandle(ref, create, deps) {
37344  {
37345    if (typeof create !== 'function') {
37346      error('Expected useImperativeHandle() second argument to be a function ' + 'that creates a handle. Instead received: %s.', create !== null ? typeof create : 'null');
37347    }
37348  } // TODO: If deps are provided, should we skip comparing the ref itself?
37349
37350
37351  var effectDeps = deps !== null && deps !== undefined ? deps.concat([ref]) : null;
37352  return mountEffectImpl(Update, Layout, imperativeHandleEffect.bind(null, create, ref), effectDeps);
37353}
37354
37355function updateImperativeHandle(ref, create, deps) {
37356  {
37357    if (typeof create !== 'function') {
37358      error('Expected useImperativeHandle() second argument to be a function ' + 'that creates a handle. Instead received: %s.', create !== null ? typeof create : 'null');
37359    }
37360  } // TODO: If deps are provided, should we skip comparing the ref itself?
37361
37362
37363  var effectDeps = deps !== null && deps !== undefined ? deps.concat([ref]) : null;
37364  return updateEffectImpl(Update, Layout, imperativeHandleEffect.bind(null, create, ref), effectDeps);
37365}
37366
37367function mountDebugValue(value, formatterFn) {// This hook is normally a no-op.
37368  // The react-debug-hooks package injects its own implementation
37369  // so that e.g. DevTools can display custom hook values.
37370}
37371
37372var updateDebugValue = mountDebugValue;
37373
37374function mountCallback(callback, deps) {
37375  var hook = mountWorkInProgressHook();
37376  var nextDeps = deps === undefined ? null : deps;
37377  hook.memoizedState = [callback, nextDeps];
37378  return callback;
37379}
37380
37381function updateCallback(callback, deps) {
37382  var hook = updateWorkInProgressHook();
37383  var nextDeps = deps === undefined ? null : deps;
37384  var prevState = hook.memoizedState;
37385
37386  if (prevState !== null) {
37387    if (nextDeps !== null) {
37388      var prevDeps = prevState[1];
37389
37390      if (areHookInputsEqual(nextDeps, prevDeps)) {
37391        return prevState[0];
37392      }
37393    }
37394  }
37395
37396  hook.memoizedState = [callback, nextDeps];
37397  return callback;
37398}
37399
37400function mountMemo(nextCreate, deps) {
37401  var hook = mountWorkInProgressHook();
37402  var nextDeps = deps === undefined ? null : deps;
37403  var nextValue = nextCreate();
37404  hook.memoizedState = [nextValue, nextDeps];
37405  return nextValue;
37406}
37407
37408function updateMemo(nextCreate, deps) {
37409  var hook = updateWorkInProgressHook();
37410  var nextDeps = deps === undefined ? null : deps;
37411  var prevState = hook.memoizedState;
37412
37413  if (prevState !== null) {
37414    // Assume these are defined. If they're not, areHookInputsEqual will warn.
37415    if (nextDeps !== null) {
37416      var prevDeps = prevState[1];
37417
37418      if (areHookInputsEqual(nextDeps, prevDeps)) {
37419        return prevState[0];
37420      }
37421    }
37422  }
37423
37424  var nextValue = nextCreate();
37425  hook.memoizedState = [nextValue, nextDeps];
37426  return nextValue;
37427}
37428
37429function mountDeferredValue(value, config) {
37430  var _mountState = mountState(value),
37431      prevValue = _mountState[0],
37432      setValue = _mountState[1];
37433
37434  mountEffect(function () {
37435    var previousConfig = ReactCurrentBatchConfig$1.suspense;
37436    ReactCurrentBatchConfig$1.suspense = config === undefined ? null : config;
37437
37438    try {
37439      setValue(value);
37440    } finally {
37441      ReactCurrentBatchConfig$1.suspense = previousConfig;
37442    }
37443  }, [value, config]);
37444  return prevValue;
37445}
37446
37447function updateDeferredValue(value, config) {
37448  var _updateState = updateState(),
37449      prevValue = _updateState[0],
37450      setValue = _updateState[1];
37451
37452  updateEffect(function () {
37453    var previousConfig = ReactCurrentBatchConfig$1.suspense;
37454    ReactCurrentBatchConfig$1.suspense = config === undefined ? null : config;
37455
37456    try {
37457      setValue(value);
37458    } finally {
37459      ReactCurrentBatchConfig$1.suspense = previousConfig;
37460    }
37461  }, [value, config]);
37462  return prevValue;
37463}
37464
37465function rerenderDeferredValue(value, config) {
37466  var _rerenderState = rerenderState(),
37467      prevValue = _rerenderState[0],
37468      setValue = _rerenderState[1];
37469
37470  updateEffect(function () {
37471    var previousConfig = ReactCurrentBatchConfig$1.suspense;
37472    ReactCurrentBatchConfig$1.suspense = config === undefined ? null : config;
37473
37474    try {
37475      setValue(value);
37476    } finally {
37477      ReactCurrentBatchConfig$1.suspense = previousConfig;
37478    }
37479  }, [value, config]);
37480  return prevValue;
37481}
37482
37483function startTransition(setPending, config, callback) {
37484  var priorityLevel = getCurrentPriorityLevel();
37485  runWithPriority$1(priorityLevel < UserBlockingPriority$1 ? UserBlockingPriority$1 : priorityLevel, function () {
37486    setPending(true);
37487  });
37488  runWithPriority$1(priorityLevel > NormalPriority ? NormalPriority : priorityLevel, function () {
37489    var previousConfig = ReactCurrentBatchConfig$1.suspense;
37490    ReactCurrentBatchConfig$1.suspense = config === undefined ? null : config;
37491
37492    try {
37493      setPending(false);
37494      callback();
37495    } finally {
37496      ReactCurrentBatchConfig$1.suspense = previousConfig;
37497    }
37498  });
37499}
37500
37501function mountTransition(config) {
37502  var _mountState2 = mountState(false),
37503      isPending = _mountState2[0],
37504      setPending = _mountState2[1];
37505
37506  var start = mountCallback(startTransition.bind(null, setPending, config), [setPending, config]);
37507  return [start, isPending];
37508}
37509
37510function updateTransition(config) {
37511  var _updateState2 = updateState(),
37512      isPending = _updateState2[0],
37513      setPending = _updateState2[1];
37514
37515  var start = updateCallback(startTransition.bind(null, setPending, config), [setPending, config]);
37516  return [start, isPending];
37517}
37518
37519function rerenderTransition(config) {
37520  var _rerenderState2 = rerenderState(),
37521      isPending = _rerenderState2[0],
37522      setPending = _rerenderState2[1];
37523
37524  var start = updateCallback(startTransition.bind(null, setPending, config), [setPending, config]);
37525  return [start, isPending];
37526}
37527
37528function dispatchAction(fiber, queue, action) {
37529  {
37530    if (typeof arguments[3] === 'function') {
37531      error("State updates from the useState() and useReducer() Hooks don't support the " + 'second callback argument. To execute a side effect after ' + 'rendering, declare it in the component body with useEffect().');
37532    }
37533  }
37534
37535  var currentTime = requestCurrentTimeForUpdate();
37536  var suspenseConfig = requestCurrentSuspenseConfig();
37537  var expirationTime = computeExpirationForFiber(currentTime, fiber, suspenseConfig);
37538  var update = {
37539    expirationTime: expirationTime,
37540    suspenseConfig: suspenseConfig,
37541    action: action,
37542    eagerReducer: null,
37543    eagerState: null,
37544    next: null
37545  };
37546
37547  {
37548    update.priority = getCurrentPriorityLevel();
37549  } // Append the update to the end of the list.
37550
37551
37552  var pending = queue.pending;
37553
37554  if (pending === null) {
37555    // This is the first update. Create a circular list.
37556    update.next = update;
37557  } else {
37558    update.next = pending.next;
37559    pending.next = update;
37560  }
37561
37562  queue.pending = update;
37563  var alternate = fiber.alternate;
37564
37565  if (fiber === currentlyRenderingFiber$1 || alternate !== null && alternate === currentlyRenderingFiber$1) {
37566    // This is a render phase update. Stash it in a lazily-created map of
37567    // queue -> linked list of updates. After this render pass, we'll restart
37568    // and apply the stashed updates on top of the work-in-progress hook.
37569    didScheduleRenderPhaseUpdate = true;
37570    update.expirationTime = renderExpirationTime;
37571    currentlyRenderingFiber$1.expirationTime = renderExpirationTime;
37572  } else {
37573    if (fiber.expirationTime === NoWork && (alternate === null || alternate.expirationTime === NoWork)) {
37574      // The queue is currently empty, which means we can eagerly compute the
37575      // next state before entering the render phase. If the new state is the
37576      // same as the current state, we may be able to bail out entirely.
37577      var lastRenderedReducer = queue.lastRenderedReducer;
37578
37579      if (lastRenderedReducer !== null) {
37580        var prevDispatcher;
37581
37582        {
37583          prevDispatcher = ReactCurrentDispatcher.current;
37584          ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
37585        }
37586
37587        try {
37588          var currentState = queue.lastRenderedState;
37589          var eagerState = lastRenderedReducer(currentState, action); // Stash the eagerly computed state, and the reducer used to compute
37590          // it, on the update object. If the reducer hasn't changed by the
37591          // time we enter the render phase, then the eager state can be used
37592          // without calling the reducer again.
37593
37594          update.eagerReducer = lastRenderedReducer;
37595          update.eagerState = eagerState;
37596
37597          if (objectIs(eagerState, currentState)) {
37598            // Fast path. We can bail out without scheduling React to re-render.
37599            // It's still possible that we'll need to rebase this update later,
37600            // if the component re-renders for a different reason and by that
37601            // time the reducer has changed.
37602            return;
37603          }
37604        } catch (error) {// Suppress the error. It will throw again in the render phase.
37605        } finally {
37606          {
37607            ReactCurrentDispatcher.current = prevDispatcher;
37608          }
37609        }
37610      }
37611    }
37612
37613    {
37614      // $FlowExpectedError - jest isn't a global, and isn't recognized outside of tests
37615      if ('undefined' !== typeof jest) {
37616        warnIfNotScopedWithMatchingAct(fiber);
37617        warnIfNotCurrentlyActingUpdatesInDev(fiber);
37618      }
37619    }
37620
37621    scheduleWork(fiber, expirationTime);
37622  }
37623}
37624
37625var ContextOnlyDispatcher = {
37626  readContext: readContext,
37627  useCallback: throwInvalidHookError,
37628  useContext: throwInvalidHookError,
37629  useEffect: throwInvalidHookError,
37630  useImperativeHandle: throwInvalidHookError,
37631  useLayoutEffect: throwInvalidHookError,
37632  useMemo: throwInvalidHookError,
37633  useReducer: throwInvalidHookError,
37634  useRef: throwInvalidHookError,
37635  useState: throwInvalidHookError,
37636  useDebugValue: throwInvalidHookError,
37637  useResponder: throwInvalidHookError,
37638  useDeferredValue: throwInvalidHookError,
37639  useTransition: throwInvalidHookError
37640};
37641var HooksDispatcherOnMountInDEV = null;
37642var HooksDispatcherOnMountWithHookTypesInDEV = null;
37643var HooksDispatcherOnUpdateInDEV = null;
37644var HooksDispatcherOnRerenderInDEV = null;
37645var InvalidNestedHooksDispatcherOnMountInDEV = null;
37646var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
37647var InvalidNestedHooksDispatcherOnRerenderInDEV = null;
37648
37649{
37650  var warnInvalidContextAccess = function () {
37651    error('Context can only be read while React is rendering. ' + 'In classes, you can read it in the render method or getDerivedStateFromProps. ' + 'In function components, you can read it directly in the function body, but not ' + 'inside Hooks like useReducer() or useMemo().');
37652  };
37653
37654  var warnInvalidHookAccess = function () {
37655    error('Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. ' + 'You can only call Hooks at the top level of your React function. ' + 'For more information, see ' + 'https://fb.me/rules-of-hooks');
37656  };
37657
37658  HooksDispatcherOnMountInDEV = {
37659    readContext: function (context, observedBits) {
37660      return readContext(context, observedBits);
37661    },
37662    useCallback: function (callback, deps) {
37663      currentHookNameInDev = 'useCallback';
37664      mountHookTypesDev();
37665      checkDepsAreArrayDev(deps);
37666      return mountCallback(callback, deps);
37667    },
37668    useContext: function (context, observedBits) {
37669      currentHookNameInDev = 'useContext';
37670      mountHookTypesDev();
37671      return readContext(context, observedBits);
37672    },
37673    useEffect: function (create, deps) {
37674      currentHookNameInDev = 'useEffect';
37675      mountHookTypesDev();
37676      checkDepsAreArrayDev(deps);
37677      return mountEffect(create, deps);
37678    },
37679    useImperativeHandle: function (ref, create, deps) {
37680      currentHookNameInDev = 'useImperativeHandle';
37681      mountHookTypesDev();
37682      checkDepsAreArrayDev(deps);
37683      return mountImperativeHandle(ref, create, deps);
37684    },
37685    useLayoutEffect: function (create, deps) {
37686      currentHookNameInDev = 'useLayoutEffect';
37687      mountHookTypesDev();
37688      checkDepsAreArrayDev(deps);
37689      return mountLayoutEffect(create, deps);
37690    },
37691    useMemo: function (create, deps) {
37692      currentHookNameInDev = 'useMemo';
37693      mountHookTypesDev();
37694      checkDepsAreArrayDev(deps);
37695      var prevDispatcher = ReactCurrentDispatcher.current;
37696      ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnMountInDEV;
37697
37698      try {
37699        return mountMemo(create, deps);
37700      } finally {
37701        ReactCurrentDispatcher.current = prevDispatcher;
37702      }
37703    },
37704    useReducer: function (reducer, initialArg, init) {
37705      currentHookNameInDev = 'useReducer';
37706      mountHookTypesDev();
37707      var prevDispatcher = ReactCurrentDispatcher.current;
37708      ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnMountInDEV;
37709
37710      try {
37711        return mountReducer(reducer, initialArg, init);
37712      } finally {
37713        ReactCurrentDispatcher.current = prevDispatcher;
37714      }
37715    },
37716    useRef: function (initialValue) {
37717      currentHookNameInDev = 'useRef';
37718      mountHookTypesDev();
37719      return mountRef(initialValue);
37720    },
37721    useState: function (initialState) {
37722      currentHookNameInDev = 'useState';
37723      mountHookTypesDev();
37724      var prevDispatcher = ReactCurrentDispatcher.current;
37725      ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnMountInDEV;
37726
37727      try {
37728        return mountState(initialState);
37729      } finally {
37730        ReactCurrentDispatcher.current = prevDispatcher;
37731      }
37732    },
37733    useDebugValue: function (value, formatterFn) {
37734      currentHookNameInDev = 'useDebugValue';
37735      mountHookTypesDev();
37736      return mountDebugValue();
37737    },
37738    useResponder: function (responder, props) {
37739      currentHookNameInDev = 'useResponder';
37740      mountHookTypesDev();
37741      return createDeprecatedResponderListener(responder, props);
37742    },
37743    useDeferredValue: function (value, config) {
37744      currentHookNameInDev = 'useDeferredValue';
37745      mountHookTypesDev();
37746      return mountDeferredValue(value, config);
37747    },
37748    useTransition: function (config) {
37749      currentHookNameInDev = 'useTransition';
37750      mountHookTypesDev();
37751      return mountTransition(config);
37752    }
37753  };
37754  HooksDispatcherOnMountWithHookTypesInDEV = {
37755    readContext: function (context, observedBits) {
37756      return readContext(context, observedBits);
37757    },
37758    useCallback: function (callback, deps) {
37759      currentHookNameInDev = 'useCallback';
37760      updateHookTypesDev();
37761      return mountCallback(callback, deps);
37762    },
37763    useContext: function (context, observedBits) {
37764      currentHookNameInDev = 'useContext';
37765      updateHookTypesDev();
37766      return readContext(context, observedBits);
37767    },
37768    useEffect: function (create, deps) {
37769      currentHookNameInDev = 'useEffect';
37770      updateHookTypesDev();
37771      return mountEffect(create, deps);
37772    },
37773    useImperativeHandle: function (ref, create, deps) {
37774      currentHookNameInDev = 'useImperativeHandle';
37775      updateHookTypesDev();
37776      return mountImperativeHandle(ref, create, deps);
37777    },
37778    useLayoutEffect: function (create, deps) {
37779      currentHookNameInDev = 'useLayoutEffect';
37780      updateHookTypesDev();
37781      return mountLayoutEffect(create, deps);
37782    },
37783    useMemo: function (create, deps) {
37784      currentHookNameInDev = 'useMemo';
37785      updateHookTypesDev();
37786      var prevDispatcher = ReactCurrentDispatcher.current;
37787      ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnMountInDEV;
37788
37789      try {
37790        return mountMemo(create, deps);
37791      } finally {
37792        ReactCurrentDispatcher.current = prevDispatcher;
37793      }
37794    },
37795    useReducer: function (reducer, initialArg, init) {
37796      currentHookNameInDev = 'useReducer';
37797      updateHookTypesDev();
37798      var prevDispatcher = ReactCurrentDispatcher.current;
37799      ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnMountInDEV;
37800
37801      try {
37802        return mountReducer(reducer, initialArg, init);
37803      } finally {
37804        ReactCurrentDispatcher.current = prevDispatcher;
37805      }
37806    },
37807    useRef: function (initialValue) {
37808      currentHookNameInDev = 'useRef';
37809      updateHookTypesDev();
37810      return mountRef(initialValue);
37811    },
37812    useState: function (initialState) {
37813      currentHookNameInDev = 'useState';
37814      updateHookTypesDev();
37815      var prevDispatcher = ReactCurrentDispatcher.current;
37816      ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnMountInDEV;
37817
37818      try {
37819        return mountState(initialState);
37820      } finally {
37821        ReactCurrentDispatcher.current = prevDispatcher;
37822      }
37823    },
37824    useDebugValue: function (value, formatterFn) {
37825      currentHookNameInDev = 'useDebugValue';
37826      updateHookTypesDev();
37827      return mountDebugValue();
37828    },
37829    useResponder: function (responder, props) {
37830      currentHookNameInDev = 'useResponder';
37831      updateHookTypesDev();
37832      return createDeprecatedResponderListener(responder, props);
37833    },
37834    useDeferredValue: function (value, config) {
37835      currentHookNameInDev = 'useDeferredValue';
37836      updateHookTypesDev();
37837      return mountDeferredValue(value, config);
37838    },
37839    useTransition: function (config) {
37840      currentHookNameInDev = 'useTransition';
37841      updateHookTypesDev();
37842      return mountTransition(config);
37843    }
37844  };
37845  HooksDispatcherOnUpdateInDEV = {
37846    readContext: function (context, observedBits) {
37847      return readContext(context, observedBits);
37848    },
37849    useCallback: function (callback, deps) {
37850      currentHookNameInDev = 'useCallback';
37851      updateHookTypesDev();
37852      return updateCallback(callback, deps);
37853    },
37854    useContext: function (context, observedBits) {
37855      currentHookNameInDev = 'useContext';
37856      updateHookTypesDev();
37857      return readContext(context, observedBits);
37858    },
37859    useEffect: function (create, deps) {
37860      currentHookNameInDev = 'useEffect';
37861      updateHookTypesDev();
37862      return updateEffect(create, deps);
37863    },
37864    useImperativeHandle: function (ref, create, deps) {
37865      currentHookNameInDev = 'useImperativeHandle';
37866      updateHookTypesDev();
37867      return updateImperativeHandle(ref, create, deps);
37868    },
37869    useLayoutEffect: function (create, deps) {
37870      currentHookNameInDev = 'useLayoutEffect';
37871      updateHookTypesDev();
37872      return updateLayoutEffect(create, deps);
37873    },
37874    useMemo: function (create, deps) {
37875      currentHookNameInDev = 'useMemo';
37876      updateHookTypesDev();
37877      var prevDispatcher = ReactCurrentDispatcher.current;
37878      ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
37879
37880      try {
37881        return updateMemo(create, deps);
37882      } finally {
37883        ReactCurrentDispatcher.current = prevDispatcher;
37884      }
37885    },
37886    useReducer: function (reducer, initialArg, init) {
37887      currentHookNameInDev = 'useReducer';
37888      updateHookTypesDev();
37889      var prevDispatcher = ReactCurrentDispatcher.current;
37890      ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
37891
37892      try {
37893        return updateReducer(reducer, initialArg, init);
37894      } finally {
37895        ReactCurrentDispatcher.current = prevDispatcher;
37896      }
37897    },
37898    useRef: function (initialValue) {
37899      currentHookNameInDev = 'useRef';
37900      updateHookTypesDev();
37901      return updateRef();
37902    },
37903    useState: function (initialState) {
37904      currentHookNameInDev = 'useState';
37905      updateHookTypesDev();
37906      var prevDispatcher = ReactCurrentDispatcher.current;
37907      ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
37908
37909      try {
37910        return updateState(initialState);
37911      } finally {
37912        ReactCurrentDispatcher.current = prevDispatcher;
37913      }
37914    },
37915    useDebugValue: function (value, formatterFn) {
37916      currentHookNameInDev = 'useDebugValue';
37917      updateHookTypesDev();
37918      return updateDebugValue();
37919    },
37920    useResponder: function (responder, props) {
37921      currentHookNameInDev = 'useResponder';
37922      updateHookTypesDev();
37923      return createDeprecatedResponderListener(responder, props);
37924    },
37925    useDeferredValue: function (value, config) {
37926      currentHookNameInDev = 'useDeferredValue';
37927      updateHookTypesDev();
37928      return updateDeferredValue(value, config);
37929    },
37930    useTransition: function (config) {
37931      currentHookNameInDev = 'useTransition';
37932      updateHookTypesDev();
37933      return updateTransition(config);
37934    }
37935  };
37936  HooksDispatcherOnRerenderInDEV = {
37937    readContext: function (context, observedBits) {
37938      return readContext(context, observedBits);
37939    },
37940    useCallback: function (callback, deps) {
37941      currentHookNameInDev = 'useCallback';
37942      updateHookTypesDev();
37943      return updateCallback(callback, deps);
37944    },
37945    useContext: function (context, observedBits) {
37946      currentHookNameInDev = 'useContext';
37947      updateHookTypesDev();
37948      return readContext(context, observedBits);
37949    },
37950    useEffect: function (create, deps) {
37951      currentHookNameInDev = 'useEffect';
37952      updateHookTypesDev();
37953      return updateEffect(create, deps);
37954    },
37955    useImperativeHandle: function (ref, create, deps) {
37956      currentHookNameInDev = 'useImperativeHandle';
37957      updateHookTypesDev();
37958      return updateImperativeHandle(ref, create, deps);
37959    },
37960    useLayoutEffect: function (create, deps) {
37961      currentHookNameInDev = 'useLayoutEffect';
37962      updateHookTypesDev();
37963      return updateLayoutEffect(create, deps);
37964    },
37965    useMemo: function (create, deps) {
37966      currentHookNameInDev = 'useMemo';
37967      updateHookTypesDev();
37968      var prevDispatcher = ReactCurrentDispatcher.current;
37969      ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnRerenderInDEV;
37970
37971      try {
37972        return updateMemo(create, deps);
37973      } finally {
37974        ReactCurrentDispatcher.current = prevDispatcher;
37975      }
37976    },
37977    useReducer: function (reducer, initialArg, init) {
37978      currentHookNameInDev = 'useReducer';
37979      updateHookTypesDev();
37980      var prevDispatcher = ReactCurrentDispatcher.current;
37981      ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnRerenderInDEV;
37982
37983      try {
37984        return rerenderReducer(reducer, initialArg, init);
37985      } finally {
37986        ReactCurrentDispatcher.current = prevDispatcher;
37987      }
37988    },
37989    useRef: function (initialValue) {
37990      currentHookNameInDev = 'useRef';
37991      updateHookTypesDev();
37992      return updateRef();
37993    },
37994    useState: function (initialState) {
37995      currentHookNameInDev = 'useState';
37996      updateHookTypesDev();
37997      var prevDispatcher = ReactCurrentDispatcher.current;
37998      ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnRerenderInDEV;
37999
38000      try {
38001        return rerenderState(initialState);
38002      } finally {
38003        ReactCurrentDispatcher.current = prevDispatcher;
38004      }
38005    },
38006    useDebugValue: function (value, formatterFn) {
38007      currentHookNameInDev = 'useDebugValue';
38008      updateHookTypesDev();
38009      return updateDebugValue();
38010    },
38011    useResponder: function (responder, props) {
38012      currentHookNameInDev = 'useResponder';
38013      updateHookTypesDev();
38014      return createDeprecatedResponderListener(responder, props);
38015    },
38016    useDeferredValue: function (value, config) {
38017      currentHookNameInDev = 'useDeferredValue';
38018      updateHookTypesDev();
38019      return rerenderDeferredValue(value, config);
38020    },
38021    useTransition: function (config) {
38022      currentHookNameInDev = 'useTransition';
38023      updateHookTypesDev();
38024      return rerenderTransition(config);
38025    }
38026  };
38027  InvalidNestedHooksDispatcherOnMountInDEV = {
38028    readContext: function (context, observedBits) {
38029      warnInvalidContextAccess();
38030      return readContext(context, observedBits);
38031    },
38032    useCallback: function (callback, deps) {
38033      currentHookNameInDev = 'useCallback';
38034      warnInvalidHookAccess();
38035      mountHookTypesDev();
38036      return mountCallback(callback, deps);
38037    },
38038    useContext: function (context, observedBits) {
38039      currentHookNameInDev = 'useContext';
38040      warnInvalidHookAccess();
38041      mountHookTypesDev();
38042      return readContext(context, observedBits);
38043    },
38044    useEffect: function (create, deps) {
38045      currentHookNameInDev = 'useEffect';
38046      warnInvalidHookAccess();
38047      mountHookTypesDev();
38048      return mountEffect(create, deps);
38049    },
38050    useImperativeHandle: function (ref, create, deps) {
38051      currentHookNameInDev = 'useImperativeHandle';
38052      warnInvalidHookAccess();
38053      mountHookTypesDev();
38054      return mountImperativeHandle(ref, create, deps);
38055    },
38056    useLayoutEffect: function (create, deps) {
38057      currentHookNameInDev = 'useLayoutEffect';
38058      warnInvalidHookAccess();
38059      mountHookTypesDev();
38060      return mountLayoutEffect(create, deps);
38061    },
38062    useMemo: function (create, deps) {
38063      currentHookNameInDev = 'useMemo';
38064      warnInvalidHookAccess();
38065      mountHookTypesDev();
38066      var prevDispatcher = ReactCurrentDispatcher.current;
38067      ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnMountInDEV;
38068
38069      try {
38070        return mountMemo(create, deps);
38071      } finally {
38072        ReactCurrentDispatcher.current = prevDispatcher;
38073      }
38074    },
38075    useReducer: function (reducer, initialArg, init) {
38076      currentHookNameInDev = 'useReducer';
38077      warnInvalidHookAccess();
38078      mountHookTypesDev();
38079      var prevDispatcher = ReactCurrentDispatcher.current;
38080      ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnMountInDEV;
38081
38082      try {
38083        return mountReducer(reducer, initialArg, init);
38084      } finally {
38085        ReactCurrentDispatcher.current = prevDispatcher;
38086      }
38087    },
38088    useRef: function (initialValue) {
38089      currentHookNameInDev = 'useRef';
38090      warnInvalidHookAccess();
38091      mountHookTypesDev();
38092      return mountRef(initialValue);
38093    },
38094    useState: function (initialState) {
38095      currentHookNameInDev = 'useState';
38096      warnInvalidHookAccess();
38097      mountHookTypesDev();
38098      var prevDispatcher = ReactCurrentDispatcher.current;
38099      ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnMountInDEV;
38100
38101      try {
38102        return mountState(initialState);
38103      } finally {
38104        ReactCurrentDispatcher.current = prevDispatcher;
38105      }
38106    },
38107    useDebugValue: function (value, formatterFn) {
38108      currentHookNameInDev = 'useDebugValue';
38109      warnInvalidHookAccess();
38110      mountHookTypesDev();
38111      return mountDebugValue();
38112    },
38113    useResponder: function (responder, props) {
38114      currentHookNameInDev = 'useResponder';
38115      warnInvalidHookAccess();
38116      mountHookTypesDev();
38117      return createDeprecatedResponderListener(responder, props);
38118    },
38119    useDeferredValue: function (value, config) {
38120      currentHookNameInDev = 'useDeferredValue';
38121      warnInvalidHookAccess();
38122      mountHookTypesDev();
38123      return mountDeferredValue(value, config);
38124    },
38125    useTransition: function (config) {
38126      currentHookNameInDev = 'useTransition';
38127      warnInvalidHookAccess();
38128      mountHookTypesDev();
38129      return mountTransition(config);
38130    }
38131  };
38132  InvalidNestedHooksDispatcherOnUpdateInDEV = {
38133    readContext: function (context, observedBits) {
38134      warnInvalidContextAccess();
38135      return readContext(context, observedBits);
38136    },
38137    useCallback: function (callback, deps) {
38138      currentHookNameInDev = 'useCallback';
38139      warnInvalidHookAccess();
38140      updateHookTypesDev();
38141      return updateCallback(callback, deps);
38142    },
38143    useContext: function (context, observedBits) {
38144      currentHookNameInDev = 'useContext';
38145      warnInvalidHookAccess();
38146      updateHookTypesDev();
38147      return readContext(context, observedBits);
38148    },
38149    useEffect: function (create, deps) {
38150      currentHookNameInDev = 'useEffect';
38151      warnInvalidHookAccess();
38152      updateHookTypesDev();
38153      return updateEffect(create, deps);
38154    },
38155    useImperativeHandle: function (ref, create, deps) {
38156      currentHookNameInDev = 'useImperativeHandle';
38157      warnInvalidHookAccess();
38158      updateHookTypesDev();
38159      return updateImperativeHandle(ref, create, deps);
38160    },
38161    useLayoutEffect: function (create, deps) {
38162      currentHookNameInDev = 'useLayoutEffect';
38163      warnInvalidHookAccess();
38164      updateHookTypesDev();
38165      return updateLayoutEffect(create, deps);
38166    },
38167    useMemo: function (create, deps) {
38168      currentHookNameInDev = 'useMemo';
38169      warnInvalidHookAccess();
38170      updateHookTypesDev();
38171      var prevDispatcher = ReactCurrentDispatcher.current;
38172      ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
38173
38174      try {
38175        return updateMemo(create, deps);
38176      } finally {
38177        ReactCurrentDispatcher.current = prevDispatcher;
38178      }
38179    },
38180    useReducer: function (reducer, initialArg, init) {
38181      currentHookNameInDev = 'useReducer';
38182      warnInvalidHookAccess();
38183      updateHookTypesDev();
38184      var prevDispatcher = ReactCurrentDispatcher.current;
38185      ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
38186
38187      try {
38188        return updateReducer(reducer, initialArg, init);
38189      } finally {
38190        ReactCurrentDispatcher.current = prevDispatcher;
38191      }
38192    },
38193    useRef: function (initialValue) {
38194      currentHookNameInDev = 'useRef';
38195      warnInvalidHookAccess();
38196      updateHookTypesDev();
38197      return updateRef();
38198    },
38199    useState: function (initialState) {
38200      currentHookNameInDev = 'useState';
38201      warnInvalidHookAccess();
38202      updateHookTypesDev();
38203      var prevDispatcher = ReactCurrentDispatcher.current;
38204      ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
38205
38206      try {
38207        return updateState(initialState);
38208      } finally {
38209        ReactCurrentDispatcher.current = prevDispatcher;
38210      }
38211    },
38212    useDebugValue: function (value, formatterFn) {
38213      currentHookNameInDev = 'useDebugValue';
38214      warnInvalidHookAccess();
38215      updateHookTypesDev();
38216      return updateDebugValue();
38217    },
38218    useResponder: function (responder, props) {
38219      currentHookNameInDev = 'useResponder';
38220      warnInvalidHookAccess();
38221      updateHookTypesDev();
38222      return createDeprecatedResponderListener(responder, props);
38223    },
38224    useDeferredValue: function (value, config) {
38225      currentHookNameInDev = 'useDeferredValue';
38226      warnInvalidHookAccess();
38227      updateHookTypesDev();
38228      return updateDeferredValue(value, config);
38229    },
38230    useTransition: function (config) {
38231      currentHookNameInDev = 'useTransition';
38232      warnInvalidHookAccess();
38233      updateHookTypesDev();
38234      return updateTransition(config);
38235    }
38236  };
38237  InvalidNestedHooksDispatcherOnRerenderInDEV = {
38238    readContext: function (context, observedBits) {
38239      warnInvalidContextAccess();
38240      return readContext(context, observedBits);
38241    },
38242    useCallback: function (callback, deps) {
38243      currentHookNameInDev = 'useCallback';
38244      warnInvalidHookAccess();
38245      updateHookTypesDev();
38246      return updateCallback(callback, deps);
38247    },
38248    useContext: function (context, observedBits) {
38249      currentHookNameInDev = 'useContext';
38250      warnInvalidHookAccess();
38251      updateHookTypesDev();
38252      return readContext(context, observedBits);
38253    },
38254    useEffect: function (create, deps) {
38255      currentHookNameInDev = 'useEffect';
38256      warnInvalidHookAccess();
38257      updateHookTypesDev();
38258      return updateEffect(create, deps);
38259    },
38260    useImperativeHandle: function (ref, create, deps) {
38261      currentHookNameInDev = 'useImperativeHandle';
38262      warnInvalidHookAccess();
38263      updateHookTypesDev();
38264      return updateImperativeHandle(ref, create, deps);
38265    },
38266    useLayoutEffect: function (create, deps) {
38267      currentHookNameInDev = 'useLayoutEffect';
38268      warnInvalidHookAccess();
38269      updateHookTypesDev();
38270      return updateLayoutEffect(create, deps);
38271    },
38272    useMemo: function (create, deps) {
38273      currentHookNameInDev = 'useMemo';
38274      warnInvalidHookAccess();
38275      updateHookTypesDev();
38276      var prevDispatcher = ReactCurrentDispatcher.current;
38277      ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
38278
38279      try {
38280        return updateMemo(create, deps);
38281      } finally {
38282        ReactCurrentDispatcher.current = prevDispatcher;
38283      }
38284    },
38285    useReducer: function (reducer, initialArg, init) {
38286      currentHookNameInDev = 'useReducer';
38287      warnInvalidHookAccess();
38288      updateHookTypesDev();
38289      var prevDispatcher = ReactCurrentDispatcher.current;
38290      ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
38291
38292      try {
38293        return rerenderReducer(reducer, initialArg, init);
38294      } finally {
38295        ReactCurrentDispatcher.current = prevDispatcher;
38296      }
38297    },
38298    useRef: function (initialValue) {
38299      currentHookNameInDev = 'useRef';
38300      warnInvalidHookAccess();
38301      updateHookTypesDev();
38302      return updateRef();
38303    },
38304    useState: function (initialState) {
38305      currentHookNameInDev = 'useState';
38306      warnInvalidHookAccess();
38307      updateHookTypesDev();
38308      var prevDispatcher = ReactCurrentDispatcher.current;
38309      ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
38310
38311      try {
38312        return rerenderState(initialState);
38313      } finally {
38314        ReactCurrentDispatcher.current = prevDispatcher;
38315      }
38316    },
38317    useDebugValue: function (value, formatterFn) {
38318      currentHookNameInDev = 'useDebugValue';
38319      warnInvalidHookAccess();
38320      updateHookTypesDev();
38321      return updateDebugValue();
38322    },
38323    useResponder: function (responder, props) {
38324      currentHookNameInDev = 'useResponder';
38325      warnInvalidHookAccess();
38326      updateHookTypesDev();
38327      return createDeprecatedResponderListener(responder, props);
38328    },
38329    useDeferredValue: function (value, config) {
38330      currentHookNameInDev = 'useDeferredValue';
38331      warnInvalidHookAccess();
38332      updateHookTypesDev();
38333      return rerenderDeferredValue(value, config);
38334    },
38335    useTransition: function (config) {
38336      currentHookNameInDev = 'useTransition';
38337      warnInvalidHookAccess();
38338      updateHookTypesDev();
38339      return rerenderTransition(config);
38340    }
38341  };
38342}
38343
38344var now$1 = Scheduler.unstable_now;
38345var commitTime = 0;
38346var profilerStartTime = -1;
38347
38348function getCommitTime() {
38349  return commitTime;
38350}
38351
38352function recordCommitTime() {
38353
38354  commitTime = now$1();
38355}
38356
38357function startProfilerTimer(fiber) {
38358
38359  profilerStartTime = now$1();
38360
38361  if (fiber.actualStartTime < 0) {
38362    fiber.actualStartTime = now$1();
38363  }
38364}
38365
38366function stopProfilerTimerIfRunning(fiber) {
38367
38368  profilerStartTime = -1;
38369}
38370
38371function stopProfilerTimerIfRunningAndRecordDelta(fiber, overrideBaseTime) {
38372
38373  if (profilerStartTime >= 0) {
38374    var elapsedTime = now$1() - profilerStartTime;
38375    fiber.actualDuration += elapsedTime;
38376
38377    if (overrideBaseTime) {
38378      fiber.selfBaseDuration = elapsedTime;
38379    }
38380
38381    profilerStartTime = -1;
38382  }
38383}
38384
38385// This may have been an insertion or a hydration.
38386
38387var hydrationParentFiber = null;
38388var nextHydratableInstance = null;
38389var isHydrating = false;
38390
38391function enterHydrationState(fiber) {
38392
38393  var parentInstance = fiber.stateNode.containerInfo;
38394  nextHydratableInstance = getFirstHydratableChild(parentInstance);
38395  hydrationParentFiber = fiber;
38396  isHydrating = true;
38397  return true;
38398}
38399
38400function deleteHydratableInstance(returnFiber, instance) {
38401  {
38402    switch (returnFiber.tag) {
38403      case HostRoot:
38404        didNotHydrateContainerInstance(returnFiber.stateNode.containerInfo, instance);
38405        break;
38406
38407      case HostComponent:
38408        didNotHydrateInstance(returnFiber.type, returnFiber.memoizedProps, returnFiber.stateNode, instance);
38409        break;
38410    }
38411  }
38412
38413  var childToDelete = createFiberFromHostInstanceForDeletion();
38414  childToDelete.stateNode = instance;
38415  childToDelete.return = returnFiber;
38416  childToDelete.effectTag = Deletion; // This might seem like it belongs on progressedFirstDeletion. However,
38417  // these children are not part of the reconciliation list of children.
38418  // Even if we abort and rereconcile the children, that will try to hydrate
38419  // again and the nodes are still in the host tree so these will be
38420  // recreated.
38421
38422  if (returnFiber.lastEffect !== null) {
38423    returnFiber.lastEffect.nextEffect = childToDelete;
38424    returnFiber.lastEffect = childToDelete;
38425  } else {
38426    returnFiber.firstEffect = returnFiber.lastEffect = childToDelete;
38427  }
38428}
38429
38430function insertNonHydratedInstance(returnFiber, fiber) {
38431  fiber.effectTag = fiber.effectTag & ~Hydrating | Placement;
38432
38433  {
38434    switch (returnFiber.tag) {
38435      case HostRoot:
38436        {
38437          var parentContainer = returnFiber.stateNode.containerInfo;
38438
38439          switch (fiber.tag) {
38440            case HostComponent:
38441              var type = fiber.type;
38442              var props = fiber.pendingProps;
38443              didNotFindHydratableContainerInstance(parentContainer, type);
38444              break;
38445
38446            case HostText:
38447              var text = fiber.pendingProps;
38448              didNotFindHydratableContainerTextInstance(parentContainer, text);
38449              break;
38450          }
38451
38452          break;
38453        }
38454
38455      case HostComponent:
38456        {
38457          var parentType = returnFiber.type;
38458          var parentProps = returnFiber.memoizedProps;
38459          var parentInstance = returnFiber.stateNode;
38460
38461          switch (fiber.tag) {
38462            case HostComponent:
38463              var _type = fiber.type;
38464              var _props = fiber.pendingProps;
38465              didNotFindHydratableInstance(parentType, parentProps, parentInstance, _type);
38466              break;
38467
38468            case HostText:
38469              var _text = fiber.pendingProps;
38470              didNotFindHydratableTextInstance(parentType, parentProps, parentInstance, _text);
38471              break;
38472
38473            case SuspenseComponent:
38474              didNotFindHydratableSuspenseInstance(parentType, parentProps);
38475              break;
38476          }
38477
38478          break;
38479        }
38480
38481      default:
38482        return;
38483    }
38484  }
38485}
38486
38487function tryHydrate(fiber, nextInstance) {
38488  switch (fiber.tag) {
38489    case HostComponent:
38490      {
38491        var type = fiber.type;
38492        var props = fiber.pendingProps;
38493        var instance = canHydrateInstance(nextInstance, type);
38494
38495        if (instance !== null) {
38496          fiber.stateNode = instance;
38497          return true;
38498        }
38499
38500        return false;
38501      }
38502
38503    case HostText:
38504      {
38505        var text = fiber.pendingProps;
38506        var textInstance = canHydrateTextInstance(nextInstance, text);
38507
38508        if (textInstance !== null) {
38509          fiber.stateNode = textInstance;
38510          return true;
38511        }
38512
38513        return false;
38514      }
38515
38516    case SuspenseComponent:
38517      {
38518
38519        return false;
38520      }
38521
38522    default:
38523      return false;
38524  }
38525}
38526
38527function tryToClaimNextHydratableInstance(fiber) {
38528  if (!isHydrating) {
38529    return;
38530  }
38531
38532  var nextInstance = nextHydratableInstance;
38533
38534  if (!nextInstance) {
38535    // Nothing to hydrate. Make it an insertion.
38536    insertNonHydratedInstance(hydrationParentFiber, fiber);
38537    isHydrating = false;
38538    hydrationParentFiber = fiber;
38539    return;
38540  }
38541
38542  var firstAttemptedInstance = nextInstance;
38543
38544  if (!tryHydrate(fiber, nextInstance)) {
38545    // If we can't hydrate this instance let's try the next one.
38546    // We use this as a heuristic. It's based on intuition and not data so it
38547    // might be flawed or unnecessary.
38548    nextInstance = getNextHydratableSibling(firstAttemptedInstance);
38549
38550    if (!nextInstance || !tryHydrate(fiber, nextInstance)) {
38551      // Nothing to hydrate. Make it an insertion.
38552      insertNonHydratedInstance(hydrationParentFiber, fiber);
38553      isHydrating = false;
38554      hydrationParentFiber = fiber;
38555      return;
38556    } // We matched the next one, we'll now assume that the first one was
38557    // superfluous and we'll delete it. Since we can't eagerly delete it
38558    // we'll have to schedule a deletion. To do that, this node needs a dummy
38559    // fiber associated with it.
38560
38561
38562    deleteHydratableInstance(hydrationParentFiber, firstAttemptedInstance);
38563  }
38564
38565  hydrationParentFiber = fiber;
38566  nextHydratableInstance = getFirstHydratableChild(nextInstance);
38567}
38568
38569function prepareToHydrateHostInstance(fiber, rootContainerInstance, hostContext) {
38570
38571  var instance = fiber.stateNode;
38572  var updatePayload = hydrateInstance(instance, fiber.type, fiber.memoizedProps, rootContainerInstance, hostContext, fiber); // TODO: Type this specific to this type of component.
38573
38574  fiber.updateQueue = updatePayload; // If the update payload indicates that there is a change or if there
38575  // is a new ref we mark this as an update.
38576
38577  if (updatePayload !== null) {
38578    return true;
38579  }
38580
38581  return false;
38582}
38583
38584function prepareToHydrateHostTextInstance(fiber) {
38585
38586  var textInstance = fiber.stateNode;
38587  var textContent = fiber.memoizedProps;
38588  var shouldUpdate = hydrateTextInstance(textInstance, textContent, fiber);
38589
38590  {
38591    if (shouldUpdate) {
38592      // We assume that prepareToHydrateHostTextInstance is called in a context where the
38593      // hydration parent is the parent host component of this host text.
38594      var returnFiber = hydrationParentFiber;
38595
38596      if (returnFiber !== null) {
38597        switch (returnFiber.tag) {
38598          case HostRoot:
38599            {
38600              var parentContainer = returnFiber.stateNode.containerInfo;
38601              didNotMatchHydratedContainerTextInstance(parentContainer, textInstance, textContent);
38602              break;
38603            }
38604
38605          case HostComponent:
38606            {
38607              var parentType = returnFiber.type;
38608              var parentProps = returnFiber.memoizedProps;
38609              var parentInstance = returnFiber.stateNode;
38610              didNotMatchHydratedTextInstance(parentType, parentProps, parentInstance, textInstance, textContent);
38611              break;
38612            }
38613        }
38614      }
38615    }
38616  }
38617
38618  return shouldUpdate;
38619}
38620
38621function skipPastDehydratedSuspenseInstance(fiber) {
38622
38623  var suspenseState = fiber.memoizedState;
38624  var suspenseInstance = suspenseState !== null ? suspenseState.dehydrated : null;
38625
38626  if (!suspenseInstance) {
38627    {
38628      throw Error( "Expected to have a hydrated suspense instance. This error is likely caused by a bug in React. Please file an issue." );
38629    }
38630  }
38631
38632  return getNextHydratableInstanceAfterSuspenseInstance(suspenseInstance);
38633}
38634
38635function popToNextHostParent(fiber) {
38636  var parent = fiber.return;
38637
38638  while (parent !== null && parent.tag !== HostComponent && parent.tag !== HostRoot && parent.tag !== SuspenseComponent) {
38639    parent = parent.return;
38640  }
38641
38642  hydrationParentFiber = parent;
38643}
38644
38645function popHydrationState(fiber) {
38646
38647  if (fiber !== hydrationParentFiber) {
38648    // We're deeper than the current hydration context, inside an inserted
38649    // tree.
38650    return false;
38651  }
38652
38653  if (!isHydrating) {
38654    // If we're not currently hydrating but we're in a hydration context, then
38655    // we were an insertion and now need to pop up reenter hydration of our
38656    // siblings.
38657    popToNextHostParent(fiber);
38658    isHydrating = true;
38659    return false;
38660  }
38661
38662  var type = fiber.type; // If we have any remaining hydratable nodes, we need to delete them now.
38663  // We only do this deeper than head and body since they tend to have random
38664  // other nodes in them. We also ignore components with pure text content in
38665  // side of them.
38666  // TODO: Better heuristic.
38667
38668  if (fiber.tag !== HostComponent || type !== 'head' && type !== 'body' && !shouldSetTextContent(type, fiber.memoizedProps)) {
38669    var nextInstance = nextHydratableInstance;
38670
38671    while (nextInstance) {
38672      deleteHydratableInstance(fiber, nextInstance);
38673      nextInstance = getNextHydratableSibling(nextInstance);
38674    }
38675  }
38676
38677  popToNextHostParent(fiber);
38678
38679  if (fiber.tag === SuspenseComponent) {
38680    nextHydratableInstance = skipPastDehydratedSuspenseInstance(fiber);
38681  } else {
38682    nextHydratableInstance = hydrationParentFiber ? getNextHydratableSibling(fiber.stateNode) : null;
38683  }
38684
38685  return true;
38686}
38687
38688function resetHydrationState() {
38689
38690  hydrationParentFiber = null;
38691  nextHydratableInstance = null;
38692  isHydrating = false;
38693}
38694
38695var ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;
38696var didReceiveUpdate = false;
38697var didWarnAboutBadClass;
38698var didWarnAboutModulePatternComponent;
38699var didWarnAboutContextTypeOnFunctionComponent;
38700var didWarnAboutGetDerivedStateOnFunctionComponent;
38701var didWarnAboutFunctionRefs;
38702var didWarnAboutReassigningProps;
38703var didWarnAboutRevealOrder;
38704var didWarnAboutTailOptions;
38705
38706{
38707  didWarnAboutBadClass = {};
38708  didWarnAboutModulePatternComponent = {};
38709  didWarnAboutContextTypeOnFunctionComponent = {};
38710  didWarnAboutGetDerivedStateOnFunctionComponent = {};
38711  didWarnAboutFunctionRefs = {};
38712  didWarnAboutReassigningProps = false;
38713  didWarnAboutRevealOrder = {};
38714  didWarnAboutTailOptions = {};
38715}
38716
38717function reconcileChildren(current, workInProgress, nextChildren, renderExpirationTime) {
38718  if (current === null) {
38719    // If this is a fresh new component that hasn't been rendered yet, we
38720    // won't update its child set by applying minimal side-effects. Instead,
38721    // we will add them all to the child before it gets rendered. That means
38722    // we can optimize this reconciliation pass by not tracking side-effects.
38723    workInProgress.child = mountChildFibers(workInProgress, null, nextChildren, renderExpirationTime);
38724  } else {
38725    // If the current child is the same as the work in progress, it means that
38726    // we haven't yet started any work on these children. Therefore, we use
38727    // the clone algorithm to create a copy of all the current children.
38728    // If we had any progressed work already, that is invalid at this point so
38729    // let's throw it out.
38730    workInProgress.child = reconcileChildFibers(workInProgress, current.child, nextChildren, renderExpirationTime);
38731  }
38732}
38733
38734function forceUnmountCurrentAndReconcile(current, workInProgress, nextChildren, renderExpirationTime) {
38735  // This function is fork of reconcileChildren. It's used in cases where we
38736  // want to reconcile without matching against the existing set. This has the
38737  // effect of all current children being unmounted; even if the type and key
38738  // are the same, the old child is unmounted and a new child is created.
38739  //
38740  // To do this, we're going to go through the reconcile algorithm twice. In
38741  // the first pass, we schedule a deletion for all the current children by
38742  // passing null.
38743  workInProgress.child = reconcileChildFibers(workInProgress, current.child, null, renderExpirationTime); // In the second pass, we mount the new children. The trick here is that we
38744  // pass null in place of where we usually pass the current child set. This has
38745  // the effect of remounting all children regardless of whether their
38746  // identities match.
38747
38748  workInProgress.child = reconcileChildFibers(workInProgress, null, nextChildren, renderExpirationTime);
38749}
38750
38751function updateForwardRef(current, workInProgress, Component, nextProps, renderExpirationTime) {
38752  // TODO: current can be non-null here even if the component
38753  // hasn't yet mounted. This happens after the first render suspends.
38754  // We'll need to figure out if this is fine or can cause issues.
38755  {
38756    if (workInProgress.type !== workInProgress.elementType) {
38757      // Lazy component props can't be validated in createElement
38758      // because they're only guaranteed to be resolved here.
38759      var innerPropTypes = Component.propTypes;
38760
38761      if (innerPropTypes) {
38762        checkPropTypes(innerPropTypes, nextProps, // Resolved props
38763        'prop', getComponentName(Component), getCurrentFiberStackInDev);
38764      }
38765    }
38766  }
38767
38768  var render = Component.render;
38769  var ref = workInProgress.ref; // The rest is a fork of updateFunctionComponent
38770
38771  var nextChildren;
38772  prepareToReadContext(workInProgress, renderExpirationTime);
38773
38774  {
38775    ReactCurrentOwner$1.current = workInProgress;
38776    setIsRendering(true);
38777    nextChildren = renderWithHooks(current, workInProgress, render, nextProps, ref, renderExpirationTime);
38778
38779    if ( workInProgress.mode & StrictMode) {
38780      // Only double-render components with Hooks
38781      if (workInProgress.memoizedState !== null) {
38782        nextChildren = renderWithHooks(current, workInProgress, render, nextProps, ref, renderExpirationTime);
38783      }
38784    }
38785
38786    setIsRendering(false);
38787  }
38788
38789  if (current !== null && !didReceiveUpdate) {
38790    bailoutHooks(current, workInProgress, renderExpirationTime);
38791    return bailoutOnAlreadyFinishedWork(current, workInProgress, renderExpirationTime);
38792  } // React DevTools reads this flag.
38793
38794
38795  workInProgress.effectTag |= PerformedWork;
38796  reconcileChildren(current, workInProgress, nextChildren, renderExpirationTime);
38797  return workInProgress.child;
38798}
38799
38800function updateMemoComponent(current, workInProgress, Component, nextProps, updateExpirationTime, renderExpirationTime) {
38801  if (current === null) {
38802    var type = Component.type;
38803
38804    if (isSimpleFunctionComponent(type) && Component.compare === null && // SimpleMemoComponent codepath doesn't resolve outer props either.
38805    Component.defaultProps === undefined) {
38806      var resolvedType = type;
38807
38808      {
38809        resolvedType = resolveFunctionForHotReloading(type);
38810      } // If this is a plain function component without default props,
38811      // and with only the default shallow comparison, we upgrade it
38812      // to a SimpleMemoComponent to allow fast path updates.
38813
38814
38815      workInProgress.tag = SimpleMemoComponent;
38816      workInProgress.type = resolvedType;
38817
38818      {
38819        validateFunctionComponentInDev(workInProgress, type);
38820      }
38821
38822      return updateSimpleMemoComponent(current, workInProgress, resolvedType, nextProps, updateExpirationTime, renderExpirationTime);
38823    }
38824
38825    {
38826      var innerPropTypes = type.propTypes;
38827
38828      if (innerPropTypes) {
38829        // Inner memo component props aren't currently validated in createElement.
38830        // We could move it there, but we'd still need this for lazy code path.
38831        checkPropTypes(innerPropTypes, nextProps, // Resolved props
38832        'prop', getComponentName(type), getCurrentFiberStackInDev);
38833      }
38834    }
38835
38836    var child = createFiberFromTypeAndProps(Component.type, null, nextProps, null, workInProgress.mode, renderExpirationTime);
38837    child.ref = workInProgress.ref;
38838    child.return = workInProgress;
38839    workInProgress.child = child;
38840    return child;
38841  }
38842
38843  {
38844    var _type = Component.type;
38845    var _innerPropTypes = _type.propTypes;
38846
38847    if (_innerPropTypes) {
38848      // Inner memo component props aren't currently validated in createElement.
38849      // We could move it there, but we'd still need this for lazy code path.
38850      checkPropTypes(_innerPropTypes, nextProps, // Resolved props
38851      'prop', getComponentName(_type), getCurrentFiberStackInDev);
38852    }
38853  }
38854
38855  var currentChild = current.child; // This is always exactly one child
38856
38857  if (updateExpirationTime < renderExpirationTime) {
38858    // This will be the props with resolved defaultProps,
38859    // unlike current.memoizedProps which will be the unresolved ones.
38860    var prevProps = currentChild.memoizedProps; // Default to shallow comparison
38861
38862    var compare = Component.compare;
38863    compare = compare !== null ? compare : shallowEqual;
38864
38865    if (compare(prevProps, nextProps) && current.ref === workInProgress.ref) {
38866      return bailoutOnAlreadyFinishedWork(current, workInProgress, renderExpirationTime);
38867    }
38868  } // React DevTools reads this flag.
38869
38870
38871  workInProgress.effectTag |= PerformedWork;
38872  var newChild = createWorkInProgress(currentChild, nextProps);
38873  newChild.ref = workInProgress.ref;
38874  newChild.return = workInProgress;
38875  workInProgress.child = newChild;
38876  return newChild;
38877}
38878
38879function updateSimpleMemoComponent(current, workInProgress, Component, nextProps, updateExpirationTime, renderExpirationTime) {
38880  // TODO: current can be non-null here even if the component
38881  // hasn't yet mounted. This happens when the inner render suspends.
38882  // We'll need to figure out if this is fine or can cause issues.
38883  {
38884    if (workInProgress.type !== workInProgress.elementType) {
38885      // Lazy component props can't be validated in createElement
38886      // because they're only guaranteed to be resolved here.
38887      var outerMemoType = workInProgress.elementType;
38888
38889      if (outerMemoType.$$typeof === REACT_LAZY_TYPE) {
38890        // We warn when you define propTypes on lazy()
38891        // so let's just skip over it to find memo() outer wrapper.
38892        // Inner props for memo are validated later.
38893        outerMemoType = refineResolvedLazyComponent(outerMemoType);
38894      }
38895
38896      var outerPropTypes = outerMemoType && outerMemoType.propTypes;
38897
38898      if (outerPropTypes) {
38899        checkPropTypes(outerPropTypes, nextProps, // Resolved (SimpleMemoComponent has no defaultProps)
38900        'prop', getComponentName(outerMemoType), getCurrentFiberStackInDev);
38901      } // Inner propTypes will be validated in the function component path.
38902
38903    }
38904  }
38905
38906  if (current !== null) {
38907    var prevProps = current.memoizedProps;
38908
38909    if (shallowEqual(prevProps, nextProps) && current.ref === workInProgress.ref && ( // Prevent bailout if the implementation changed due to hot reload.
38910     workInProgress.type === current.type )) {
38911      didReceiveUpdate = false;
38912
38913      if (updateExpirationTime < renderExpirationTime) {
38914        // The pending update priority was cleared at the beginning of
38915        // beginWork. We're about to bail out, but there might be additional
38916        // updates at a lower priority. Usually, the priority level of the
38917        // remaining updates is accumlated during the evaluation of the
38918        // component (i.e. when processing the update queue). But since since
38919        // we're bailing out early *without* evaluating the component, we need
38920        // to account for it here, too. Reset to the value of the current fiber.
38921        // NOTE: This only applies to SimpleMemoComponent, not MemoComponent,
38922        // because a MemoComponent fiber does not have hooks or an update queue;
38923        // rather, it wraps around an inner component, which may or may not
38924        // contains hooks.
38925        // TODO: Move the reset at in beginWork out of the common path so that
38926        // this is no longer necessary.
38927        workInProgress.expirationTime = current.expirationTime;
38928        return bailoutOnAlreadyFinishedWork(current, workInProgress, renderExpirationTime);
38929      }
38930    }
38931  }
38932
38933  return updateFunctionComponent(current, workInProgress, Component, nextProps, renderExpirationTime);
38934}
38935
38936function updateFragment(current, workInProgress, renderExpirationTime) {
38937  var nextChildren = workInProgress.pendingProps;
38938  reconcileChildren(current, workInProgress, nextChildren, renderExpirationTime);
38939  return workInProgress.child;
38940}
38941
38942function updateMode(current, workInProgress, renderExpirationTime) {
38943  var nextChildren = workInProgress.pendingProps.children;
38944  reconcileChildren(current, workInProgress, nextChildren, renderExpirationTime);
38945  return workInProgress.child;
38946}
38947
38948function updateProfiler(current, workInProgress, renderExpirationTime) {
38949  {
38950    workInProgress.effectTag |= Update;
38951  }
38952
38953  var nextProps = workInProgress.pendingProps;
38954  var nextChildren = nextProps.children;
38955  reconcileChildren(current, workInProgress, nextChildren, renderExpirationTime);
38956  return workInProgress.child;
38957}
38958
38959function markRef(current, workInProgress) {
38960  var ref = workInProgress.ref;
38961
38962  if (current === null && ref !== null || current !== null && current.ref !== ref) {
38963    // Schedule a Ref effect
38964    workInProgress.effectTag |= Ref;
38965  }
38966}
38967
38968function updateFunctionComponent(current, workInProgress, Component, nextProps, renderExpirationTime) {
38969  {
38970    if (workInProgress.type !== workInProgress.elementType) {
38971      // Lazy component props can't be validated in createElement
38972      // because they're only guaranteed to be resolved here.
38973      var innerPropTypes = Component.propTypes;
38974
38975      if (innerPropTypes) {
38976        checkPropTypes(innerPropTypes, nextProps, // Resolved props
38977        'prop', getComponentName(Component), getCurrentFiberStackInDev);
38978      }
38979    }
38980  }
38981
38982  var context;
38983
38984  {
38985    var unmaskedContext = getUnmaskedContext(workInProgress, Component, true);
38986    context = getMaskedContext(workInProgress, unmaskedContext);
38987  }
38988
38989  var nextChildren;
38990  prepareToReadContext(workInProgress, renderExpirationTime);
38991
38992  {
38993    ReactCurrentOwner$1.current = workInProgress;
38994    setIsRendering(true);
38995    nextChildren = renderWithHooks(current, workInProgress, Component, nextProps, context, renderExpirationTime);
38996
38997    if ( workInProgress.mode & StrictMode) {
38998      // Only double-render components with Hooks
38999      if (workInProgress.memoizedState !== null) {
39000        nextChildren = renderWithHooks(current, workInProgress, Component, nextProps, context, renderExpirationTime);
39001      }
39002    }
39003
39004    setIsRendering(false);
39005  }
39006
39007  if (current !== null && !didReceiveUpdate) {
39008    bailoutHooks(current, workInProgress, renderExpirationTime);
39009    return bailoutOnAlreadyFinishedWork(current, workInProgress, renderExpirationTime);
39010  } // React DevTools reads this flag.
39011
39012
39013  workInProgress.effectTag |= PerformedWork;
39014  reconcileChildren(current, workInProgress, nextChildren, renderExpirationTime);
39015  return workInProgress.child;
39016}
39017
39018function updateClassComponent(current, workInProgress, Component, nextProps, renderExpirationTime) {
39019  {
39020    if (workInProgress.type !== workInProgress.elementType) {
39021      // Lazy component props can't be validated in createElement
39022      // because they're only guaranteed to be resolved here.
39023      var innerPropTypes = Component.propTypes;
39024
39025      if (innerPropTypes) {
39026        checkPropTypes(innerPropTypes, nextProps, // Resolved props
39027        'prop', getComponentName(Component), getCurrentFiberStackInDev);
39028      }
39029    }
39030  } // Push context providers early to prevent context stack mismatches.
39031  // During mounting we don't know the child context yet as the instance doesn't exist.
39032  // We will invalidate the child context in finishClassComponent() right after rendering.
39033
39034
39035  var hasContext;
39036
39037  if (isContextProvider(Component)) {
39038    hasContext = true;
39039    pushContextProvider(workInProgress);
39040  } else {
39041    hasContext = false;
39042  }
39043
39044  prepareToReadContext(workInProgress, renderExpirationTime);
39045  var instance = workInProgress.stateNode;
39046  var shouldUpdate;
39047
39048  if (instance === null) {
39049    if (current !== null) {
39050      // A class component without an instance only mounts if it suspended
39051      // inside a non-concurrent tree, in an inconsistent state. We want to
39052      // treat it like a new mount, even though an empty version of it already
39053      // committed. Disconnect the alternate pointers.
39054      current.alternate = null;
39055      workInProgress.alternate = null; // Since this is conceptually a new fiber, schedule a Placement effect
39056
39057      workInProgress.effectTag |= Placement;
39058    } // In the initial pass we might need to construct the instance.
39059
39060
39061    constructClassInstance(workInProgress, Component, nextProps);
39062    mountClassInstance(workInProgress, Component, nextProps, renderExpirationTime);
39063    shouldUpdate = true;
39064  } else if (current === null) {
39065    // In a resume, we'll already have an instance we can reuse.
39066    shouldUpdate = resumeMountClassInstance(workInProgress, Component, nextProps, renderExpirationTime);
39067  } else {
39068    shouldUpdate = updateClassInstance(current, workInProgress, Component, nextProps, renderExpirationTime);
39069  }
39070
39071  var nextUnitOfWork = finishClassComponent(current, workInProgress, Component, shouldUpdate, hasContext, renderExpirationTime);
39072
39073  {
39074    var inst = workInProgress.stateNode;
39075
39076    if (inst.props !== nextProps) {
39077      if (!didWarnAboutReassigningProps) {
39078        error('It looks like %s is reassigning its own `this.props` while rendering. ' + 'This is not supported and can lead to confusing bugs.', getComponentName(workInProgress.type) || 'a component');
39079      }
39080
39081      didWarnAboutReassigningProps = true;
39082    }
39083  }
39084
39085  return nextUnitOfWork;
39086}
39087
39088function finishClassComponent(current, workInProgress, Component, shouldUpdate, hasContext, renderExpirationTime) {
39089  // Refs should update even if shouldComponentUpdate returns false
39090  markRef(current, workInProgress);
39091  var didCaptureError = (workInProgress.effectTag & DidCapture) !== NoEffect;
39092
39093  if (!shouldUpdate && !didCaptureError) {
39094    // Context providers should defer to sCU for rendering
39095    if (hasContext) {
39096      invalidateContextProvider(workInProgress, Component, false);
39097    }
39098
39099    return bailoutOnAlreadyFinishedWork(current, workInProgress, renderExpirationTime);
39100  }
39101
39102  var instance = workInProgress.stateNode; // Rerender
39103
39104  ReactCurrentOwner$1.current = workInProgress;
39105  var nextChildren;
39106
39107  if (didCaptureError && typeof Component.getDerivedStateFromError !== 'function') {
39108    // If we captured an error, but getDerivedStateFromError is not defined,
39109    // unmount all the children. componentDidCatch will schedule an update to
39110    // re-render a fallback. This is temporary until we migrate everyone to
39111    // the new API.
39112    // TODO: Warn in a future release.
39113    nextChildren = null;
39114
39115    {
39116      stopProfilerTimerIfRunning();
39117    }
39118  } else {
39119    {
39120      setIsRendering(true);
39121      nextChildren = instance.render();
39122
39123      if ( workInProgress.mode & StrictMode) {
39124        instance.render();
39125      }
39126
39127      setIsRendering(false);
39128    }
39129  } // React DevTools reads this flag.
39130
39131
39132  workInProgress.effectTag |= PerformedWork;
39133
39134  if (current !== null && didCaptureError) {
39135    // If we're recovering from an error, reconcile without reusing any of
39136    // the existing children. Conceptually, the normal children and the children
39137    // that are shown on error are two different sets, so we shouldn't reuse
39138    // normal children even if their identities match.
39139    forceUnmountCurrentAndReconcile(current, workInProgress, nextChildren, renderExpirationTime);
39140  } else {
39141    reconcileChildren(current, workInProgress, nextChildren, renderExpirationTime);
39142  } // Memoize state using the values we just used to render.
39143  // TODO: Restructure so we never read values from the instance.
39144
39145
39146  workInProgress.memoizedState = instance.state; // The context might have changed so we need to recalculate it.
39147
39148  if (hasContext) {
39149    invalidateContextProvider(workInProgress, Component, true);
39150  }
39151
39152  return workInProgress.child;
39153}
39154
39155function pushHostRootContext(workInProgress) {
39156  var root = workInProgress.stateNode;
39157
39158  if (root.pendingContext) {
39159    pushTopLevelContextObject(workInProgress, root.pendingContext, root.pendingContext !== root.context);
39160  } else if (root.context) {
39161    // Should always be set
39162    pushTopLevelContextObject(workInProgress, root.context, false);
39163  }
39164
39165  pushHostContainer(workInProgress, root.containerInfo);
39166}
39167
39168function updateHostRoot(current, workInProgress, renderExpirationTime) {
39169  pushHostRootContext(workInProgress);
39170  var updateQueue = workInProgress.updateQueue;
39171
39172  if (!(current !== null && updateQueue !== null)) {
39173    {
39174      throw Error( "If the root does not have an updateQueue, we should have already bailed out. This error is likely caused by a bug in React. Please file an issue." );
39175    }
39176  }
39177
39178  var nextProps = workInProgress.pendingProps;
39179  var prevState = workInProgress.memoizedState;
39180  var prevChildren = prevState !== null ? prevState.element : null;
39181  cloneUpdateQueue(current, workInProgress);
39182  processUpdateQueue(workInProgress, nextProps, null, renderExpirationTime);
39183  var nextState = workInProgress.memoizedState; // Caution: React DevTools currently depends on this property
39184  // being called "element".
39185
39186  var nextChildren = nextState.element;
39187
39188  if (nextChildren === prevChildren) {
39189    // If the state is the same as before, that's a bailout because we had
39190    // no work that expires at this time.
39191    resetHydrationState();
39192    return bailoutOnAlreadyFinishedWork(current, workInProgress, renderExpirationTime);
39193  }
39194
39195  var root = workInProgress.stateNode;
39196
39197  if (root.hydrate && enterHydrationState(workInProgress)) {
39198    // If we don't have any current children this might be the first pass.
39199    // We always try to hydrate. If this isn't a hydration pass there won't
39200    // be any children to hydrate which is effectively the same thing as
39201    // not hydrating.
39202    var child = mountChildFibers(workInProgress, null, nextChildren, renderExpirationTime);
39203    workInProgress.child = child;
39204    var node = child;
39205
39206    while (node) {
39207      // Mark each child as hydrating. This is a fast path to know whether this
39208      // tree is part of a hydrating tree. This is used to determine if a child
39209      // node has fully mounted yet, and for scheduling event replaying.
39210      // Conceptually this is similar to Placement in that a new subtree is
39211      // inserted into the React tree here. It just happens to not need DOM
39212      // mutations because it already exists.
39213      node.effectTag = node.effectTag & ~Placement | Hydrating;
39214      node = node.sibling;
39215    }
39216  } else {
39217    // Otherwise reset hydration state in case we aborted and resumed another
39218    // root.
39219    reconcileChildren(current, workInProgress, nextChildren, renderExpirationTime);
39220    resetHydrationState();
39221  }
39222
39223  return workInProgress.child;
39224}
39225
39226function updateHostComponent(current, workInProgress, renderExpirationTime) {
39227  pushHostContext(workInProgress);
39228
39229  if (current === null) {
39230    tryToClaimNextHydratableInstance(workInProgress);
39231  }
39232
39233  var type = workInProgress.type;
39234  var nextProps = workInProgress.pendingProps;
39235  var prevProps = current !== null ? current.memoizedProps : null;
39236  var nextChildren = nextProps.children;
39237  var isDirectTextChild = shouldSetTextContent(type, nextProps);
39238
39239  if (isDirectTextChild) {
39240    // We special case a direct text child of a host node. This is a common
39241    // case. We won't handle it as a reified child. We will instead handle
39242    // this in the host environment that also has access to this prop. That
39243    // avoids allocating another HostText fiber and traversing it.
39244    nextChildren = null;
39245  } else if (prevProps !== null && shouldSetTextContent(type, prevProps)) {
39246    // If we're switching from a direct text child to a normal child, or to
39247    // empty, we need to schedule the text content to be reset.
39248    workInProgress.effectTag |= ContentReset;
39249  }
39250
39251  markRef(current, workInProgress); // Check the host config to see if the children are offscreen/hidden.
39252
39253  if (workInProgress.mode & ConcurrentMode && renderExpirationTime !== Never && shouldDeprioritizeSubtree(type, nextProps)) {
39254    {
39255      markSpawnedWork(Never);
39256    } // Schedule this fiber to re-render at offscreen priority. Then bailout.
39257
39258
39259    workInProgress.expirationTime = workInProgress.childExpirationTime = Never;
39260    return null;
39261  }
39262
39263  reconcileChildren(current, workInProgress, nextChildren, renderExpirationTime);
39264  return workInProgress.child;
39265}
39266
39267function updateHostText(current, workInProgress) {
39268  if (current === null) {
39269    tryToClaimNextHydratableInstance(workInProgress);
39270  } // Nothing to do here. This is terminal. We'll do the completion step
39271  // immediately after.
39272
39273
39274  return null;
39275}
39276
39277function mountLazyComponent(_current, workInProgress, elementType, updateExpirationTime, renderExpirationTime) {
39278  if (_current !== null) {
39279    // A lazy component only mounts if it suspended inside a non-
39280    // concurrent tree, in an inconsistent state. We want to treat it like
39281    // a new mount, even though an empty version of it already committed.
39282    // Disconnect the alternate pointers.
39283    _current.alternate = null;
39284    workInProgress.alternate = null; // Since this is conceptually a new fiber, schedule a Placement effect
39285
39286    workInProgress.effectTag |= Placement;
39287  }
39288
39289  var props = workInProgress.pendingProps; // We can't start a User Timing measurement with correct label yet.
39290  // Cancel and resume right after we know the tag.
39291
39292  cancelWorkTimer(workInProgress);
39293  var Component = readLazyComponentType(elementType); // Store the unwrapped component in the type.
39294
39295  workInProgress.type = Component;
39296  var resolvedTag = workInProgress.tag = resolveLazyComponentTag(Component);
39297  startWorkTimer(workInProgress);
39298  var resolvedProps = resolveDefaultProps(Component, props);
39299  var child;
39300
39301  switch (resolvedTag) {
39302    case FunctionComponent:
39303      {
39304        {
39305          validateFunctionComponentInDev(workInProgress, Component);
39306          workInProgress.type = Component = resolveFunctionForHotReloading(Component);
39307        }
39308
39309        child = updateFunctionComponent(null, workInProgress, Component, resolvedProps, renderExpirationTime);
39310        return child;
39311      }
39312
39313    case ClassComponent:
39314      {
39315        {
39316          workInProgress.type = Component = resolveClassForHotReloading(Component);
39317        }
39318
39319        child = updateClassComponent(null, workInProgress, Component, resolvedProps, renderExpirationTime);
39320        return child;
39321      }
39322
39323    case ForwardRef:
39324      {
39325        {
39326          workInProgress.type = Component = resolveForwardRefForHotReloading(Component);
39327        }
39328
39329        child = updateForwardRef(null, workInProgress, Component, resolvedProps, renderExpirationTime);
39330        return child;
39331      }
39332
39333    case MemoComponent:
39334      {
39335        {
39336          if (workInProgress.type !== workInProgress.elementType) {
39337            var outerPropTypes = Component.propTypes;
39338
39339            if (outerPropTypes) {
39340              checkPropTypes(outerPropTypes, resolvedProps, // Resolved for outer only
39341              'prop', getComponentName(Component), getCurrentFiberStackInDev);
39342            }
39343          }
39344        }
39345
39346        child = updateMemoComponent(null, workInProgress, Component, resolveDefaultProps(Component.type, resolvedProps), // The inner type can have defaults too
39347        updateExpirationTime, renderExpirationTime);
39348        return child;
39349      }
39350  }
39351
39352  var hint = '';
39353
39354  {
39355    if (Component !== null && typeof Component === 'object' && Component.$$typeof === REACT_LAZY_TYPE) {
39356      hint = ' Did you wrap a component in React.lazy() more than once?';
39357    }
39358  } // This message intentionally doesn't mention ForwardRef or MemoComponent
39359  // because the fact that it's a separate type of work is an
39360  // implementation detail.
39361
39362
39363  {
39364    {
39365      throw Error( "Element type is invalid. Received a promise that resolves to: " + Component + ". Lazy element type must resolve to a class or function." + hint );
39366    }
39367  }
39368}
39369
39370function mountIncompleteClassComponent(_current, workInProgress, Component, nextProps, renderExpirationTime) {
39371  if (_current !== null) {
39372    // An incomplete component only mounts if it suspended inside a non-
39373    // concurrent tree, in an inconsistent state. We want to treat it like
39374    // a new mount, even though an empty version of it already committed.
39375    // Disconnect the alternate pointers.
39376    _current.alternate = null;
39377    workInProgress.alternate = null; // Since this is conceptually a new fiber, schedule a Placement effect
39378
39379    workInProgress.effectTag |= Placement;
39380  } // Promote the fiber to a class and try rendering again.
39381
39382
39383  workInProgress.tag = ClassComponent; // The rest of this function is a fork of `updateClassComponent`
39384  // Push context providers early to prevent context stack mismatches.
39385  // During mounting we don't know the child context yet as the instance doesn't exist.
39386  // We will invalidate the child context in finishClassComponent() right after rendering.
39387
39388  var hasContext;
39389
39390  if (isContextProvider(Component)) {
39391    hasContext = true;
39392    pushContextProvider(workInProgress);
39393  } else {
39394    hasContext = false;
39395  }
39396
39397  prepareToReadContext(workInProgress, renderExpirationTime);
39398  constructClassInstance(workInProgress, Component, nextProps);
39399  mountClassInstance(workInProgress, Component, nextProps, renderExpirationTime);
39400  return finishClassComponent(null, workInProgress, Component, true, hasContext, renderExpirationTime);
39401}
39402
39403function mountIndeterminateComponent(_current, workInProgress, Component, renderExpirationTime) {
39404  if (_current !== null) {
39405    // An indeterminate component only mounts if it suspended inside a non-
39406    // concurrent tree, in an inconsistent state. We want to treat it like
39407    // a new mount, even though an empty version of it already committed.
39408    // Disconnect the alternate pointers.
39409    _current.alternate = null;
39410    workInProgress.alternate = null; // Since this is conceptually a new fiber, schedule a Placement effect
39411
39412    workInProgress.effectTag |= Placement;
39413  }
39414
39415  var props = workInProgress.pendingProps;
39416  var context;
39417
39418  {
39419    var unmaskedContext = getUnmaskedContext(workInProgress, Component, false);
39420    context = getMaskedContext(workInProgress, unmaskedContext);
39421  }
39422
39423  prepareToReadContext(workInProgress, renderExpirationTime);
39424  var value;
39425
39426  {
39427    if (Component.prototype && typeof Component.prototype.render === 'function') {
39428      var componentName = getComponentName(Component) || 'Unknown';
39429
39430      if (!didWarnAboutBadClass[componentName]) {
39431        error("The <%s /> component appears to have a render method, but doesn't extend React.Component. " + 'This is likely to cause errors. Change %s to extend React.Component instead.', componentName, componentName);
39432
39433        didWarnAboutBadClass[componentName] = true;
39434      }
39435    }
39436
39437    if (workInProgress.mode & StrictMode) {
39438      ReactStrictModeWarnings.recordLegacyContextWarning(workInProgress, null);
39439    }
39440
39441    setIsRendering(true);
39442    ReactCurrentOwner$1.current = workInProgress;
39443    value = renderWithHooks(null, workInProgress, Component, props, context, renderExpirationTime);
39444    setIsRendering(false);
39445  } // React DevTools reads this flag.
39446
39447
39448  workInProgress.effectTag |= PerformedWork;
39449
39450  if (typeof value === 'object' && value !== null && typeof value.render === 'function' && value.$$typeof === undefined) {
39451    {
39452      var _componentName = getComponentName(Component) || 'Unknown';
39453
39454      if (!didWarnAboutModulePatternComponent[_componentName]) {
39455        error('The <%s /> component appears to be a function component that returns a class instance. ' + 'Change %s to a class that extends React.Component instead. ' + "If you can't use a class try assigning the prototype on the function as a workaround. " + "`%s.prototype = React.Component.prototype`. Don't use an arrow function since it " + 'cannot be called with `new` by React.', _componentName, _componentName, _componentName);
39456
39457        didWarnAboutModulePatternComponent[_componentName] = true;
39458      }
39459    } // Proceed under the assumption that this is a class instance
39460
39461
39462    workInProgress.tag = ClassComponent; // Throw out any hooks that were used.
39463
39464    workInProgress.memoizedState = null;
39465    workInProgress.updateQueue = null; // Push context providers early to prevent context stack mismatches.
39466    // During mounting we don't know the child context yet as the instance doesn't exist.
39467    // We will invalidate the child context in finishClassComponent() right after rendering.
39468
39469    var hasContext = false;
39470
39471    if (isContextProvider(Component)) {
39472      hasContext = true;
39473      pushContextProvider(workInProgress);
39474    } else {
39475      hasContext = false;
39476    }
39477
39478    workInProgress.memoizedState = value.state !== null && value.state !== undefined ? value.state : null;
39479    initializeUpdateQueue(workInProgress);
39480    var getDerivedStateFromProps = Component.getDerivedStateFromProps;
39481
39482    if (typeof getDerivedStateFromProps === 'function') {
39483      applyDerivedStateFromProps(workInProgress, Component, getDerivedStateFromProps, props);
39484    }
39485
39486    adoptClassInstance(workInProgress, value);
39487    mountClassInstance(workInProgress, Component, props, renderExpirationTime);
39488    return finishClassComponent(null, workInProgress, Component, true, hasContext, renderExpirationTime);
39489  } else {
39490    // Proceed under the assumption that this is a function component
39491    workInProgress.tag = FunctionComponent;
39492
39493    {
39494
39495      if ( workInProgress.mode & StrictMode) {
39496        // Only double-render components with Hooks
39497        if (workInProgress.memoizedState !== null) {
39498          value = renderWithHooks(null, workInProgress, Component, props, context, renderExpirationTime);
39499        }
39500      }
39501    }
39502
39503    reconcileChildren(null, workInProgress, value, renderExpirationTime);
39504
39505    {
39506      validateFunctionComponentInDev(workInProgress, Component);
39507    }
39508
39509    return workInProgress.child;
39510  }
39511}
39512
39513function validateFunctionComponentInDev(workInProgress, Component) {
39514  {
39515    if (Component) {
39516      if (Component.childContextTypes) {
39517        error('%s(...): childContextTypes cannot be defined on a function component.', Component.displayName || Component.name || 'Component');
39518      }
39519    }
39520
39521    if (workInProgress.ref !== null) {
39522      var info = '';
39523      var ownerName = getCurrentFiberOwnerNameInDevOrNull();
39524
39525      if (ownerName) {
39526        info += '\n\nCheck the render method of `' + ownerName + '`.';
39527      }
39528
39529      var warningKey = ownerName || workInProgress._debugID || '';
39530      var debugSource = workInProgress._debugSource;
39531
39532      if (debugSource) {
39533        warningKey = debugSource.fileName + ':' + debugSource.lineNumber;
39534      }
39535
39536      if (!didWarnAboutFunctionRefs[warningKey]) {
39537        didWarnAboutFunctionRefs[warningKey] = true;
39538
39539        error('Function components cannot be given refs. ' + 'Attempts to access this ref will fail. ' + 'Did you mean to use React.forwardRef()?%s', info);
39540      }
39541    }
39542
39543    if (typeof Component.getDerivedStateFromProps === 'function') {
39544      var _componentName2 = getComponentName(Component) || 'Unknown';
39545
39546      if (!didWarnAboutGetDerivedStateOnFunctionComponent[_componentName2]) {
39547        error('%s: Function components do not support getDerivedStateFromProps.', _componentName2);
39548
39549        didWarnAboutGetDerivedStateOnFunctionComponent[_componentName2] = true;
39550      }
39551    }
39552
39553    if (typeof Component.contextType === 'object' && Component.contextType !== null) {
39554      var _componentName3 = getComponentName(Component) || 'Unknown';
39555
39556      if (!didWarnAboutContextTypeOnFunctionComponent[_componentName3]) {
39557        error('%s: Function components do not support contextType.', _componentName3);
39558
39559        didWarnAboutContextTypeOnFunctionComponent[_componentName3] = true;
39560      }
39561    }
39562  }
39563}
39564
39565var SUSPENDED_MARKER = {
39566  dehydrated: null,
39567  retryTime: NoWork
39568};
39569
39570function shouldRemainOnFallback(suspenseContext, current, workInProgress) {
39571  // If the context is telling us that we should show a fallback, and we're not
39572  // already showing content, then we should show the fallback instead.
39573  return hasSuspenseContext(suspenseContext, ForceSuspenseFallback) && (current === null || current.memoizedState !== null);
39574}
39575
39576function updateSuspenseComponent(current, workInProgress, renderExpirationTime) {
39577  var mode = workInProgress.mode;
39578  var nextProps = workInProgress.pendingProps; // This is used by DevTools to force a boundary to suspend.
39579
39580  {
39581    if (shouldSuspend(workInProgress)) {
39582      workInProgress.effectTag |= DidCapture;
39583    }
39584  }
39585
39586  var suspenseContext = suspenseStackCursor.current;
39587  var nextDidTimeout = false;
39588  var didSuspend = (workInProgress.effectTag & DidCapture) !== NoEffect;
39589
39590  if (didSuspend || shouldRemainOnFallback(suspenseContext, current)) {
39591    // Something in this boundary's subtree already suspended. Switch to
39592    // rendering the fallback children.
39593    nextDidTimeout = true;
39594    workInProgress.effectTag &= ~DidCapture;
39595  } else {
39596    // Attempting the main content
39597    if (current === null || current.memoizedState !== null) {
39598      // This is a new mount or this boundary is already showing a fallback state.
39599      // Mark this subtree context as having at least one invisible parent that could
39600      // handle the fallback state.
39601      // Boundaries without fallbacks or should be avoided are not considered since
39602      // they cannot handle preferred fallback states.
39603      if (nextProps.fallback !== undefined && nextProps.unstable_avoidThisFallback !== true) {
39604        suspenseContext = addSubtreeSuspenseContext(suspenseContext, InvisibleParentSuspenseContext);
39605      }
39606    }
39607  }
39608
39609  suspenseContext = setDefaultShallowSuspenseContext(suspenseContext);
39610  pushSuspenseContext(workInProgress, suspenseContext); // This next part is a bit confusing. If the children timeout, we switch to
39611  // showing the fallback children in place of the "primary" children.
39612  // However, we don't want to delete the primary children because then their
39613  // state will be lost (both the React state and the host state, e.g.
39614  // uncontrolled form inputs). Instead we keep them mounted and hide them.
39615  // Both the fallback children AND the primary children are rendered at the
39616  // same time. Once the primary children are un-suspended, we can delete
39617  // the fallback children — don't need to preserve their state.
39618  //
39619  // The two sets of children are siblings in the host environment, but
39620  // semantically, for purposes of reconciliation, they are two separate sets.
39621  // So we store them using two fragment fibers.
39622  //
39623  // However, we want to avoid allocating extra fibers for every placeholder.
39624  // They're only necessary when the children time out, because that's the
39625  // only time when both sets are mounted.
39626  //
39627  // So, the extra fragment fibers are only used if the children time out.
39628  // Otherwise, we render the primary children directly. This requires some
39629  // custom reconciliation logic to preserve the state of the primary
39630  // children. It's essentially a very basic form of re-parenting.
39631
39632  if (current === null) {
39633    // If we're currently hydrating, try to hydrate this boundary.
39634    // But only if this has a fallback.
39635    if (nextProps.fallback !== undefined) {
39636      tryToClaimNextHydratableInstance(workInProgress); // This could've been a dehydrated suspense component.
39637    } // This is the initial mount. This branch is pretty simple because there's
39638    // no previous state that needs to be preserved.
39639
39640
39641    if (nextDidTimeout) {
39642      // Mount separate fragments for primary and fallback children.
39643      var nextFallbackChildren = nextProps.fallback;
39644      var primaryChildFragment = createFiberFromFragment(null, mode, NoWork, null);
39645      primaryChildFragment.return = workInProgress;
39646
39647      if ((workInProgress.mode & BlockingMode) === NoMode) {
39648        // Outside of blocking mode, we commit the effects from the
39649        // partially completed, timed-out tree, too.
39650        var progressedState = workInProgress.memoizedState;
39651        var progressedPrimaryChild = progressedState !== null ? workInProgress.child.child : workInProgress.child;
39652        primaryChildFragment.child = progressedPrimaryChild;
39653        var progressedChild = progressedPrimaryChild;
39654
39655        while (progressedChild !== null) {
39656          progressedChild.return = primaryChildFragment;
39657          progressedChild = progressedChild.sibling;
39658        }
39659      }
39660
39661      var fallbackChildFragment = createFiberFromFragment(nextFallbackChildren, mode, renderExpirationTime, null);
39662      fallbackChildFragment.return = workInProgress;
39663      primaryChildFragment.sibling = fallbackChildFragment; // Skip the primary children, and continue working on the
39664      // fallback children.
39665
39666      workInProgress.memoizedState = SUSPENDED_MARKER;
39667      workInProgress.child = primaryChildFragment;
39668      return fallbackChildFragment;
39669    } else {
39670      // Mount the primary children without an intermediate fragment fiber.
39671      var nextPrimaryChildren = nextProps.children;
39672      workInProgress.memoizedState = null;
39673      return workInProgress.child = mountChildFibers(workInProgress, null, nextPrimaryChildren, renderExpirationTime);
39674    }
39675  } else {
39676    // This is an update. This branch is more complicated because we need to
39677    // ensure the state of the primary children is preserved.
39678    var prevState = current.memoizedState;
39679
39680    if (prevState !== null) {
39681      // wrapped in a fragment fiber.
39682
39683
39684      var currentPrimaryChildFragment = current.child;
39685      var currentFallbackChildFragment = currentPrimaryChildFragment.sibling;
39686
39687      if (nextDidTimeout) {
39688        // Still timed out. Reuse the current primary children by cloning
39689        // its fragment. We're going to skip over these entirely.
39690        var _nextFallbackChildren2 = nextProps.fallback;
39691
39692        var _primaryChildFragment2 = createWorkInProgress(currentPrimaryChildFragment, currentPrimaryChildFragment.pendingProps);
39693
39694        _primaryChildFragment2.return = workInProgress;
39695
39696        if ((workInProgress.mode & BlockingMode) === NoMode) {
39697          // Outside of blocking mode, we commit the effects from the
39698          // partially completed, timed-out tree, too.
39699          var _progressedState = workInProgress.memoizedState;
39700
39701          var _progressedPrimaryChild = _progressedState !== null ? workInProgress.child.child : workInProgress.child;
39702
39703          if (_progressedPrimaryChild !== currentPrimaryChildFragment.child) {
39704            _primaryChildFragment2.child = _progressedPrimaryChild;
39705            var _progressedChild2 = _progressedPrimaryChild;
39706
39707            while (_progressedChild2 !== null) {
39708              _progressedChild2.return = _primaryChildFragment2;
39709              _progressedChild2 = _progressedChild2.sibling;
39710            }
39711          }
39712        } // Because primaryChildFragment is a new fiber that we're inserting as the
39713        // parent of a new tree, we need to set its treeBaseDuration.
39714
39715
39716        if ( workInProgress.mode & ProfileMode) {
39717          // treeBaseDuration is the sum of all the child tree base durations.
39718          var _treeBaseDuration = 0;
39719          var _hiddenChild = _primaryChildFragment2.child;
39720
39721          while (_hiddenChild !== null) {
39722            _treeBaseDuration += _hiddenChild.treeBaseDuration;
39723            _hiddenChild = _hiddenChild.sibling;
39724          }
39725
39726          _primaryChildFragment2.treeBaseDuration = _treeBaseDuration;
39727        } // Clone the fallback child fragment, too. These we'll continue
39728        // working on.
39729
39730
39731        var _fallbackChildFragment2 = createWorkInProgress(currentFallbackChildFragment, _nextFallbackChildren2);
39732
39733        _fallbackChildFragment2.return = workInProgress;
39734        _primaryChildFragment2.sibling = _fallbackChildFragment2;
39735        _primaryChildFragment2.childExpirationTime = NoWork; // Skip the primary children, and continue working on the
39736        // fallback children.
39737
39738        workInProgress.memoizedState = SUSPENDED_MARKER;
39739        workInProgress.child = _primaryChildFragment2;
39740        return _fallbackChildFragment2;
39741      } else {
39742        // No longer suspended. Switch back to showing the primary children,
39743        // and remove the intermediate fragment fiber.
39744        var _nextPrimaryChildren = nextProps.children;
39745        var currentPrimaryChild = currentPrimaryChildFragment.child;
39746        var primaryChild = reconcileChildFibers(workInProgress, currentPrimaryChild, _nextPrimaryChildren, renderExpirationTime); // If this render doesn't suspend, we need to delete the fallback
39747        // children. Wait until the complete phase, after we've confirmed the
39748        // fallback is no longer needed.
39749        // TODO: Would it be better to store the fallback fragment on
39750        // the stateNode?
39751        // Continue rendering the children, like we normally do.
39752
39753        workInProgress.memoizedState = null;
39754        return workInProgress.child = primaryChild;
39755      }
39756    } else {
39757      // The current tree has not already timed out. That means the primary
39758      // children are not wrapped in a fragment fiber.
39759      var _currentPrimaryChild = current.child;
39760
39761      if (nextDidTimeout) {
39762        // Timed out. Wrap the children in a fragment fiber to keep them
39763        // separate from the fallback children.
39764        var _nextFallbackChildren3 = nextProps.fallback;
39765
39766        var _primaryChildFragment3 = createFiberFromFragment( // It shouldn't matter what the pending props are because we aren't
39767        // going to render this fragment.
39768        null, mode, NoWork, null);
39769
39770        _primaryChildFragment3.return = workInProgress;
39771        _primaryChildFragment3.child = _currentPrimaryChild;
39772
39773        if (_currentPrimaryChild !== null) {
39774          _currentPrimaryChild.return = _primaryChildFragment3;
39775        } // Even though we're creating a new fiber, there are no new children,
39776        // because we're reusing an already mounted tree. So we don't need to
39777        // schedule a placement.
39778        // primaryChildFragment.effectTag |= Placement;
39779
39780
39781        if ((workInProgress.mode & BlockingMode) === NoMode) {
39782          // Outside of blocking mode, we commit the effects from the
39783          // partially completed, timed-out tree, too.
39784          var _progressedState2 = workInProgress.memoizedState;
39785
39786          var _progressedPrimaryChild2 = _progressedState2 !== null ? workInProgress.child.child : workInProgress.child;
39787
39788          _primaryChildFragment3.child = _progressedPrimaryChild2;
39789          var _progressedChild3 = _progressedPrimaryChild2;
39790
39791          while (_progressedChild3 !== null) {
39792            _progressedChild3.return = _primaryChildFragment3;
39793            _progressedChild3 = _progressedChild3.sibling;
39794          }
39795        } // Because primaryChildFragment is a new fiber that we're inserting as the
39796        // parent of a new tree, we need to set its treeBaseDuration.
39797
39798
39799        if ( workInProgress.mode & ProfileMode) {
39800          // treeBaseDuration is the sum of all the child tree base durations.
39801          var _treeBaseDuration2 = 0;
39802          var _hiddenChild2 = _primaryChildFragment3.child;
39803
39804          while (_hiddenChild2 !== null) {
39805            _treeBaseDuration2 += _hiddenChild2.treeBaseDuration;
39806            _hiddenChild2 = _hiddenChild2.sibling;
39807          }
39808
39809          _primaryChildFragment3.treeBaseDuration = _treeBaseDuration2;
39810        } // Create a fragment from the fallback children, too.
39811
39812
39813        var _fallbackChildFragment3 = createFiberFromFragment(_nextFallbackChildren3, mode, renderExpirationTime, null);
39814
39815        _fallbackChildFragment3.return = workInProgress;
39816        _primaryChildFragment3.sibling = _fallbackChildFragment3;
39817        _fallbackChildFragment3.effectTag |= Placement;
39818        _primaryChildFragment3.childExpirationTime = NoWork; // Skip the primary children, and continue working on the
39819        // fallback children.
39820
39821        workInProgress.memoizedState = SUSPENDED_MARKER;
39822        workInProgress.child = _primaryChildFragment3;
39823        return _fallbackChildFragment3;
39824      } else {
39825        // Still haven't timed out. Continue rendering the children, like we
39826        // normally do.
39827        workInProgress.memoizedState = null;
39828        var _nextPrimaryChildren2 = nextProps.children;
39829        return workInProgress.child = reconcileChildFibers(workInProgress, _currentPrimaryChild, _nextPrimaryChildren2, renderExpirationTime);
39830      }
39831    }
39832  }
39833}
39834
39835function scheduleWorkOnFiber(fiber, renderExpirationTime) {
39836  if (fiber.expirationTime < renderExpirationTime) {
39837    fiber.expirationTime = renderExpirationTime;
39838  }
39839
39840  var alternate = fiber.alternate;
39841
39842  if (alternate !== null && alternate.expirationTime < renderExpirationTime) {
39843    alternate.expirationTime = renderExpirationTime;
39844  }
39845
39846  scheduleWorkOnParentPath(fiber.return, renderExpirationTime);
39847}
39848
39849function propagateSuspenseContextChange(workInProgress, firstChild, renderExpirationTime) {
39850  // Mark any Suspense boundaries with fallbacks as having work to do.
39851  // If they were previously forced into fallbacks, they may now be able
39852  // to unblock.
39853  var node = firstChild;
39854
39855  while (node !== null) {
39856    if (node.tag === SuspenseComponent) {
39857      var state = node.memoizedState;
39858
39859      if (state !== null) {
39860        scheduleWorkOnFiber(node, renderExpirationTime);
39861      }
39862    } else if (node.tag === SuspenseListComponent) {
39863      // If the tail is hidden there might not be an Suspense boundaries
39864      // to schedule work on. In this case we have to schedule it on the
39865      // list itself.
39866      // We don't have to traverse to the children of the list since
39867      // the list will propagate the change when it rerenders.
39868      scheduleWorkOnFiber(node, renderExpirationTime);
39869    } else if (node.child !== null) {
39870      node.child.return = node;
39871      node = node.child;
39872      continue;
39873    }
39874
39875    if (node === workInProgress) {
39876      return;
39877    }
39878
39879    while (node.sibling === null) {
39880      if (node.return === null || node.return === workInProgress) {
39881        return;
39882      }
39883
39884      node = node.return;
39885    }
39886
39887    node.sibling.return = node.return;
39888    node = node.sibling;
39889  }
39890}
39891
39892function findLastContentRow(firstChild) {
39893  // This is going to find the last row among these children that is already
39894  // showing content on the screen, as opposed to being in fallback state or
39895  // new. If a row has multiple Suspense boundaries, any of them being in the
39896  // fallback state, counts as the whole row being in a fallback state.
39897  // Note that the "rows" will be workInProgress, but any nested children
39898  // will still be current since we haven't rendered them yet. The mounted
39899  // order may not be the same as the new order. We use the new order.
39900  var row = firstChild;
39901  var lastContentRow = null;
39902
39903  while (row !== null) {
39904    var currentRow = row.alternate; // New rows can't be content rows.
39905
39906    if (currentRow !== null && findFirstSuspended(currentRow) === null) {
39907      lastContentRow = row;
39908    }
39909
39910    row = row.sibling;
39911  }
39912
39913  return lastContentRow;
39914}
39915
39916function validateRevealOrder(revealOrder) {
39917  {
39918    if (revealOrder !== undefined && revealOrder !== 'forwards' && revealOrder !== 'backwards' && revealOrder !== 'together' && !didWarnAboutRevealOrder[revealOrder]) {
39919      didWarnAboutRevealOrder[revealOrder] = true;
39920
39921      if (typeof revealOrder === 'string') {
39922        switch (revealOrder.toLowerCase()) {
39923          case 'together':
39924          case 'forwards':
39925          case 'backwards':
39926            {
39927              error('"%s" is not a valid value for revealOrder on <SuspenseList />. ' + 'Use lowercase "%s" instead.', revealOrder, revealOrder.toLowerCase());
39928
39929              break;
39930            }
39931
39932          case 'forward':
39933          case 'backward':
39934            {
39935              error('"%s" is not a valid value for revealOrder on <SuspenseList />. ' + 'React uses the -s suffix in the spelling. Use "%ss" instead.', revealOrder, revealOrder.toLowerCase());
39936
39937              break;
39938            }
39939
39940          default:
39941            error('"%s" is not a supported revealOrder on <SuspenseList />. ' + 'Did you mean "together", "forwards" or "backwards"?', revealOrder);
39942
39943            break;
39944        }
39945      } else {
39946        error('%s is not a supported value for revealOrder on <SuspenseList />. ' + 'Did you mean "together", "forwards" or "backwards"?', revealOrder);
39947      }
39948    }
39949  }
39950}
39951
39952function validateTailOptions(tailMode, revealOrder) {
39953  {
39954    if (tailMode !== undefined && !didWarnAboutTailOptions[tailMode]) {
39955      if (tailMode !== 'collapsed' && tailMode !== 'hidden') {
39956        didWarnAboutTailOptions[tailMode] = true;
39957
39958        error('"%s" is not a supported value for tail on <SuspenseList />. ' + 'Did you mean "collapsed" or "hidden"?', tailMode);
39959      } else if (revealOrder !== 'forwards' && revealOrder !== 'backwards') {
39960        didWarnAboutTailOptions[tailMode] = true;
39961
39962        error('<SuspenseList tail="%s" /> is only valid if revealOrder is ' + '"forwards" or "backwards". ' + 'Did you mean to specify revealOrder="forwards"?', tailMode);
39963      }
39964    }
39965  }
39966}
39967
39968function validateSuspenseListNestedChild(childSlot, index) {
39969  {
39970    var isArray = Array.isArray(childSlot);
39971    var isIterable = !isArray && typeof getIteratorFn(childSlot) === 'function';
39972
39973    if (isArray || isIterable) {
39974      var type = isArray ? 'array' : 'iterable';
39975
39976      error('A nested %s was passed to row #%s in <SuspenseList />. Wrap it in ' + 'an additional SuspenseList to configure its revealOrder: ' + '<SuspenseList revealOrder=...> ... ' + '<SuspenseList revealOrder=...>{%s}</SuspenseList> ... ' + '</SuspenseList>', type, index, type);
39977
39978      return false;
39979    }
39980  }
39981
39982  return true;
39983}
39984
39985function validateSuspenseListChildren(children, revealOrder) {
39986  {
39987    if ((revealOrder === 'forwards' || revealOrder === 'backwards') && children !== undefined && children !== null && children !== false) {
39988      if (Array.isArray(children)) {
39989        for (var i = 0; i < children.length; i++) {
39990          if (!validateSuspenseListNestedChild(children[i], i)) {
39991            return;
39992          }
39993        }
39994      } else {
39995        var iteratorFn = getIteratorFn(children);
39996
39997        if (typeof iteratorFn === 'function') {
39998          var childrenIterator = iteratorFn.call(children);
39999
40000          if (childrenIterator) {
40001            var step = childrenIterator.next();
40002            var _i = 0;
40003
40004            for (; !step.done; step = childrenIterator.next()) {
40005              if (!validateSuspenseListNestedChild(step.value, _i)) {
40006                return;
40007              }
40008
40009              _i++;
40010            }
40011          }
40012        } else {
40013          error('A single row was passed to a <SuspenseList revealOrder="%s" />. ' + 'This is not useful since it needs multiple rows. ' + 'Did you mean to pass multiple children or an array?', revealOrder);
40014        }
40015      }
40016    }
40017  }
40018}
40019
40020function initSuspenseListRenderState(workInProgress, isBackwards, tail, lastContentRow, tailMode, lastEffectBeforeRendering) {
40021  var renderState = workInProgress.memoizedState;
40022
40023  if (renderState === null) {
40024    workInProgress.memoizedState = {
40025      isBackwards: isBackwards,
40026      rendering: null,
40027      renderingStartTime: 0,
40028      last: lastContentRow,
40029      tail: tail,
40030      tailExpiration: 0,
40031      tailMode: tailMode,
40032      lastEffect: lastEffectBeforeRendering
40033    };
40034  } else {
40035    // We can reuse the existing object from previous renders.
40036    renderState.isBackwards = isBackwards;
40037    renderState.rendering = null;
40038    renderState.renderingStartTime = 0;
40039    renderState.last = lastContentRow;
40040    renderState.tail = tail;
40041    renderState.tailExpiration = 0;
40042    renderState.tailMode = tailMode;
40043    renderState.lastEffect = lastEffectBeforeRendering;
40044  }
40045} // This can end up rendering this component multiple passes.
40046// The first pass splits the children fibers into two sets. A head and tail.
40047// We first render the head. If anything is in fallback state, we do another
40048// pass through beginWork to rerender all children (including the tail) with
40049// the force suspend context. If the first render didn't have anything in
40050// in fallback state. Then we render each row in the tail one-by-one.
40051// That happens in the completeWork phase without going back to beginWork.
40052
40053
40054function updateSuspenseListComponent(current, workInProgress, renderExpirationTime) {
40055  var nextProps = workInProgress.pendingProps;
40056  var revealOrder = nextProps.revealOrder;
40057  var tailMode = nextProps.tail;
40058  var newChildren = nextProps.children;
40059  validateRevealOrder(revealOrder);
40060  validateTailOptions(tailMode, revealOrder);
40061  validateSuspenseListChildren(newChildren, revealOrder);
40062  reconcileChildren(current, workInProgress, newChildren, renderExpirationTime);
40063  var suspenseContext = suspenseStackCursor.current;
40064  var shouldForceFallback = hasSuspenseContext(suspenseContext, ForceSuspenseFallback);
40065
40066  if (shouldForceFallback) {
40067    suspenseContext = setShallowSuspenseContext(suspenseContext, ForceSuspenseFallback);
40068    workInProgress.effectTag |= DidCapture;
40069  } else {
40070    var didSuspendBefore = current !== null && (current.effectTag & DidCapture) !== NoEffect;
40071
40072    if (didSuspendBefore) {
40073      // If we previously forced a fallback, we need to schedule work
40074      // on any nested boundaries to let them know to try to render
40075      // again. This is the same as context updating.
40076      propagateSuspenseContextChange(workInProgress, workInProgress.child, renderExpirationTime);
40077    }
40078
40079    suspenseContext = setDefaultShallowSuspenseContext(suspenseContext);
40080  }
40081
40082  pushSuspenseContext(workInProgress, suspenseContext);
40083
40084  if ((workInProgress.mode & BlockingMode) === NoMode) {
40085    // Outside of blocking mode, SuspenseList doesn't work so we just
40086    // use make it a noop by treating it as the default revealOrder.
40087    workInProgress.memoizedState = null;
40088  } else {
40089    switch (revealOrder) {
40090      case 'forwards':
40091        {
40092          var lastContentRow = findLastContentRow(workInProgress.child);
40093          var tail;
40094
40095          if (lastContentRow === null) {
40096            // The whole list is part of the tail.
40097            // TODO: We could fast path by just rendering the tail now.
40098            tail = workInProgress.child;
40099            workInProgress.child = null;
40100          } else {
40101            // Disconnect the tail rows after the content row.
40102            // We're going to render them separately later.
40103            tail = lastContentRow.sibling;
40104            lastContentRow.sibling = null;
40105          }
40106
40107          initSuspenseListRenderState(workInProgress, false, // isBackwards
40108          tail, lastContentRow, tailMode, workInProgress.lastEffect);
40109          break;
40110        }
40111
40112      case 'backwards':
40113        {
40114          // We're going to find the first row that has existing content.
40115          // At the same time we're going to reverse the list of everything
40116          // we pass in the meantime. That's going to be our tail in reverse
40117          // order.
40118          var _tail = null;
40119          var row = workInProgress.child;
40120          workInProgress.child = null;
40121
40122          while (row !== null) {
40123            var currentRow = row.alternate; // New rows can't be content rows.
40124
40125            if (currentRow !== null && findFirstSuspended(currentRow) === null) {
40126              // This is the beginning of the main content.
40127              workInProgress.child = row;
40128              break;
40129            }
40130
40131            var nextRow = row.sibling;
40132            row.sibling = _tail;
40133            _tail = row;
40134            row = nextRow;
40135          } // TODO: If workInProgress.child is null, we can continue on the tail immediately.
40136
40137
40138          initSuspenseListRenderState(workInProgress, true, // isBackwards
40139          _tail, null, // last
40140          tailMode, workInProgress.lastEffect);
40141          break;
40142        }
40143
40144      case 'together':
40145        {
40146          initSuspenseListRenderState(workInProgress, false, // isBackwards
40147          null, // tail
40148          null, // last
40149          undefined, workInProgress.lastEffect);
40150          break;
40151        }
40152
40153      default:
40154        {
40155          // The default reveal order is the same as not having
40156          // a boundary.
40157          workInProgress.memoizedState = null;
40158        }
40159    }
40160  }
40161
40162  return workInProgress.child;
40163}
40164
40165function updatePortalComponent(current, workInProgress, renderExpirationTime) {
40166  pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);
40167  var nextChildren = workInProgress.pendingProps;
40168
40169  if (current === null) {
40170    // Portals are special because we don't append the children during mount
40171    // but at commit. Therefore we need to track insertions which the normal
40172    // flow doesn't do during mount. This doesn't happen at the root because
40173    // the root always starts with a "current" with a null child.
40174    // TODO: Consider unifying this with how the root works.
40175    workInProgress.child = reconcileChildFibers(workInProgress, null, nextChildren, renderExpirationTime);
40176  } else {
40177    reconcileChildren(current, workInProgress, nextChildren, renderExpirationTime);
40178  }
40179
40180  return workInProgress.child;
40181}
40182
40183function updateContextProvider(current, workInProgress, renderExpirationTime) {
40184  var providerType = workInProgress.type;
40185  var context = providerType._context;
40186  var newProps = workInProgress.pendingProps;
40187  var oldProps = workInProgress.memoizedProps;
40188  var newValue = newProps.value;
40189
40190  {
40191    var providerPropTypes = workInProgress.type.propTypes;
40192
40193    if (providerPropTypes) {
40194      checkPropTypes(providerPropTypes, newProps, 'prop', 'Context.Provider', getCurrentFiberStackInDev);
40195    }
40196  }
40197
40198  pushProvider(workInProgress, newValue);
40199
40200  if (oldProps !== null) {
40201    var oldValue = oldProps.value;
40202    var changedBits = calculateChangedBits(context, newValue, oldValue);
40203
40204    if (changedBits === 0) {
40205      // No change. Bailout early if children are the same.
40206      if (oldProps.children === newProps.children && !hasContextChanged()) {
40207        return bailoutOnAlreadyFinishedWork(current, workInProgress, renderExpirationTime);
40208      }
40209    } else {
40210      // The context value changed. Search for matching consumers and schedule
40211      // them to update.
40212      propagateContextChange(workInProgress, context, changedBits, renderExpirationTime);
40213    }
40214  }
40215
40216  var newChildren = newProps.children;
40217  reconcileChildren(current, workInProgress, newChildren, renderExpirationTime);
40218  return workInProgress.child;
40219}
40220
40221var hasWarnedAboutUsingContextAsConsumer = false;
40222
40223function updateContextConsumer(current, workInProgress, renderExpirationTime) {
40224  var context = workInProgress.type; // The logic below for Context differs depending on PROD or DEV mode. In
40225  // DEV mode, we create a separate object for Context.Consumer that acts
40226  // like a proxy to Context. This proxy object adds unnecessary code in PROD
40227  // so we use the old behaviour (Context.Consumer references Context) to
40228  // reduce size and overhead. The separate object references context via
40229  // a property called "_context", which also gives us the ability to check
40230  // in DEV mode if this property exists or not and warn if it does not.
40231
40232  {
40233    if (context._context === undefined) {
40234      // This may be because it's a Context (rather than a Consumer).
40235      // Or it may be because it's older React where they're the same thing.
40236      // We only want to warn if we're sure it's a new React.
40237      if (context !== context.Consumer) {
40238        if (!hasWarnedAboutUsingContextAsConsumer) {
40239          hasWarnedAboutUsingContextAsConsumer = true;
40240
40241          error('Rendering <Context> directly is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Consumer> instead?');
40242        }
40243      }
40244    } else {
40245      context = context._context;
40246    }
40247  }
40248
40249  var newProps = workInProgress.pendingProps;
40250  var render = newProps.children;
40251
40252  {
40253    if (typeof render !== 'function') {
40254      error('A context consumer was rendered with multiple children, or a child ' + "that isn't a function. A context consumer expects a single child " + 'that is a function. If you did pass a function, make sure there ' + 'is no trailing or leading whitespace around it.');
40255    }
40256  }
40257
40258  prepareToReadContext(workInProgress, renderExpirationTime);
40259  var newValue = readContext(context, newProps.unstable_observedBits);
40260  var newChildren;
40261
40262  {
40263    ReactCurrentOwner$1.current = workInProgress;
40264    setIsRendering(true);
40265    newChildren = render(newValue);
40266    setIsRendering(false);
40267  } // React DevTools reads this flag.
40268
40269
40270  workInProgress.effectTag |= PerformedWork;
40271  reconcileChildren(current, workInProgress, newChildren, renderExpirationTime);
40272  return workInProgress.child;
40273}
40274
40275function markWorkInProgressReceivedUpdate() {
40276  didReceiveUpdate = true;
40277}
40278
40279function bailoutOnAlreadyFinishedWork(current, workInProgress, renderExpirationTime) {
40280  cancelWorkTimer(workInProgress);
40281
40282  if (current !== null) {
40283    // Reuse previous dependencies
40284    workInProgress.dependencies = current.dependencies;
40285  }
40286
40287  {
40288    // Don't update "base" render times for bailouts.
40289    stopProfilerTimerIfRunning();
40290  }
40291
40292  var updateExpirationTime = workInProgress.expirationTime;
40293
40294  if (updateExpirationTime !== NoWork) {
40295    markUnprocessedUpdateTime(updateExpirationTime);
40296  } // Check if the children have any pending work.
40297
40298
40299  var childExpirationTime = workInProgress.childExpirationTime;
40300
40301  if (childExpirationTime < renderExpirationTime) {
40302    // The children don't have any work either. We can skip them.
40303    // TODO: Once we add back resuming, we should check if the children are
40304    // a work-in-progress set. If so, we need to transfer their effects.
40305    return null;
40306  } else {
40307    // This fiber doesn't have work, but its subtree does. Clone the child
40308    // fibers and continue.
40309    cloneChildFibers(current, workInProgress);
40310    return workInProgress.child;
40311  }
40312}
40313
40314function remountFiber(current, oldWorkInProgress, newWorkInProgress) {
40315  {
40316    var returnFiber = oldWorkInProgress.return;
40317
40318    if (returnFiber === null) {
40319      throw new Error('Cannot swap the root fiber.');
40320    } // Disconnect from the old current.
40321    // It will get deleted.
40322
40323
40324    current.alternate = null;
40325    oldWorkInProgress.alternate = null; // Connect to the new tree.
40326
40327    newWorkInProgress.index = oldWorkInProgress.index;
40328    newWorkInProgress.sibling = oldWorkInProgress.sibling;
40329    newWorkInProgress.return = oldWorkInProgress.return;
40330    newWorkInProgress.ref = oldWorkInProgress.ref; // Replace the child/sibling pointers above it.
40331
40332    if (oldWorkInProgress === returnFiber.child) {
40333      returnFiber.child = newWorkInProgress;
40334    } else {
40335      var prevSibling = returnFiber.child;
40336
40337      if (prevSibling === null) {
40338        throw new Error('Expected parent to have a child.');
40339      }
40340
40341      while (prevSibling.sibling !== oldWorkInProgress) {
40342        prevSibling = prevSibling.sibling;
40343
40344        if (prevSibling === null) {
40345          throw new Error('Expected to find the previous sibling.');
40346        }
40347      }
40348
40349      prevSibling.sibling = newWorkInProgress;
40350    } // Delete the old fiber and place the new one.
40351    // Since the old fiber is disconnected, we have to schedule it manually.
40352
40353
40354    var last = returnFiber.lastEffect;
40355
40356    if (last !== null) {
40357      last.nextEffect = current;
40358      returnFiber.lastEffect = current;
40359    } else {
40360      returnFiber.firstEffect = returnFiber.lastEffect = current;
40361    }
40362
40363    current.nextEffect = null;
40364    current.effectTag = Deletion;
40365    newWorkInProgress.effectTag |= Placement; // Restart work from the new fiber.
40366
40367    return newWorkInProgress;
40368  }
40369}
40370
40371function beginWork(current, workInProgress, renderExpirationTime) {
40372  var updateExpirationTime = workInProgress.expirationTime;
40373
40374  {
40375    if (workInProgress._debugNeedsRemount && current !== null) {
40376      // This will restart the begin phase with a new fiber.
40377      return remountFiber(current, workInProgress, createFiberFromTypeAndProps(workInProgress.type, workInProgress.key, workInProgress.pendingProps, workInProgress._debugOwner || null, workInProgress.mode, workInProgress.expirationTime));
40378    }
40379  }
40380
40381  if (current !== null) {
40382    var oldProps = current.memoizedProps;
40383    var newProps = workInProgress.pendingProps;
40384
40385    if (oldProps !== newProps || hasContextChanged() || ( // Force a re-render if the implementation changed due to hot reload:
40386     workInProgress.type !== current.type )) {
40387      // If props or context changed, mark the fiber as having performed work.
40388      // This may be unset if the props are determined to be equal later (memo).
40389      didReceiveUpdate = true;
40390    } else if (updateExpirationTime < renderExpirationTime) {
40391      didReceiveUpdate = false; // This fiber does not have any pending work. Bailout without entering
40392      // the begin phase. There's still some bookkeeping we that needs to be done
40393      // in this optimized path, mostly pushing stuff onto the stack.
40394
40395      switch (workInProgress.tag) {
40396        case HostRoot:
40397          pushHostRootContext(workInProgress);
40398          resetHydrationState();
40399          break;
40400
40401        case HostComponent:
40402          pushHostContext(workInProgress);
40403
40404          if (workInProgress.mode & ConcurrentMode && renderExpirationTime !== Never && shouldDeprioritizeSubtree(workInProgress.type, newProps)) {
40405            {
40406              markSpawnedWork(Never);
40407            } // Schedule this fiber to re-render at offscreen priority. Then bailout.
40408
40409
40410            workInProgress.expirationTime = workInProgress.childExpirationTime = Never;
40411            return null;
40412          }
40413
40414          break;
40415
40416        case ClassComponent:
40417          {
40418            var Component = workInProgress.type;
40419
40420            if (isContextProvider(Component)) {
40421              pushContextProvider(workInProgress);
40422            }
40423
40424            break;
40425          }
40426
40427        case HostPortal:
40428          pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);
40429          break;
40430
40431        case ContextProvider:
40432          {
40433            var newValue = workInProgress.memoizedProps.value;
40434            pushProvider(workInProgress, newValue);
40435            break;
40436          }
40437
40438        case Profiler:
40439          {
40440            // Profiler should only call onRender when one of its descendants actually rendered.
40441            var hasChildWork = workInProgress.childExpirationTime >= renderExpirationTime;
40442
40443            if (hasChildWork) {
40444              workInProgress.effectTag |= Update;
40445            }
40446          }
40447
40448          break;
40449
40450        case SuspenseComponent:
40451          {
40452            var state = workInProgress.memoizedState;
40453
40454            if (state !== null) {
40455              // whether to retry the primary children, or to skip over it and
40456              // go straight to the fallback. Check the priority of the primary
40457              // child fragment.
40458
40459
40460              var primaryChildFragment = workInProgress.child;
40461              var primaryChildExpirationTime = primaryChildFragment.childExpirationTime;
40462
40463              if (primaryChildExpirationTime !== NoWork && primaryChildExpirationTime >= renderExpirationTime) {
40464                // The primary children have pending work. Use the normal path
40465                // to attempt to render the primary children again.
40466                return updateSuspenseComponent(current, workInProgress, renderExpirationTime);
40467              } else {
40468                pushSuspenseContext(workInProgress, setDefaultShallowSuspenseContext(suspenseStackCursor.current)); // The primary children do not have pending work with sufficient
40469                // priority. Bailout.
40470
40471                var child = bailoutOnAlreadyFinishedWork(current, workInProgress, renderExpirationTime);
40472
40473                if (child !== null) {
40474                  // The fallback children have pending work. Skip over the
40475                  // primary children and work on the fallback.
40476                  return child.sibling;
40477                } else {
40478                  return null;
40479                }
40480              }
40481            } else {
40482              pushSuspenseContext(workInProgress, setDefaultShallowSuspenseContext(suspenseStackCursor.current));
40483            }
40484
40485            break;
40486          }
40487
40488        case SuspenseListComponent:
40489          {
40490            var didSuspendBefore = (current.effectTag & DidCapture) !== NoEffect;
40491
40492            var _hasChildWork = workInProgress.childExpirationTime >= renderExpirationTime;
40493
40494            if (didSuspendBefore) {
40495              if (_hasChildWork) {
40496                // If something was in fallback state last time, and we have all the
40497                // same children then we're still in progressive loading state.
40498                // Something might get unblocked by state updates or retries in the
40499                // tree which will affect the tail. So we need to use the normal
40500                // path to compute the correct tail.
40501                return updateSuspenseListComponent(current, workInProgress, renderExpirationTime);
40502              } // If none of the children had any work, that means that none of
40503              // them got retried so they'll still be blocked in the same way
40504              // as before. We can fast bail out.
40505
40506
40507              workInProgress.effectTag |= DidCapture;
40508            } // If nothing suspended before and we're rendering the same children,
40509            // then the tail doesn't matter. Anything new that suspends will work
40510            // in the "together" mode, so we can continue from the state we had.
40511
40512
40513            var renderState = workInProgress.memoizedState;
40514
40515            if (renderState !== null) {
40516              // Reset to the "together" mode in case we've started a different
40517              // update in the past but didn't complete it.
40518              renderState.rendering = null;
40519              renderState.tail = null;
40520            }
40521
40522            pushSuspenseContext(workInProgress, suspenseStackCursor.current);
40523
40524            if (_hasChildWork) {
40525              break;
40526            } else {
40527              // If none of the children had any work, that means that none of
40528              // them got retried so they'll still be blocked in the same way
40529              // as before. We can fast bail out.
40530              return null;
40531            }
40532          }
40533      }
40534
40535      return bailoutOnAlreadyFinishedWork(current, workInProgress, renderExpirationTime);
40536    } else {
40537      // An update was scheduled on this fiber, but there are no new props
40538      // nor legacy context. Set this to false. If an update queue or context
40539      // consumer produces a changed value, it will set this to true. Otherwise,
40540      // the component will assume the children have not changed and bail out.
40541      didReceiveUpdate = false;
40542    }
40543  } else {
40544    didReceiveUpdate = false;
40545  } // Before entering the begin phase, clear pending update priority.
40546  // TODO: This assumes that we're about to evaluate the component and process
40547  // the update queue. However, there's an exception: SimpleMemoComponent
40548  // sometimes bails out later in the begin phase. This indicates that we should
40549  // move this assignment out of the common path and into each branch.
40550
40551
40552  workInProgress.expirationTime = NoWork;
40553
40554  switch (workInProgress.tag) {
40555    case IndeterminateComponent:
40556      {
40557        return mountIndeterminateComponent(current, workInProgress, workInProgress.type, renderExpirationTime);
40558      }
40559
40560    case LazyComponent:
40561      {
40562        var elementType = workInProgress.elementType;
40563        return mountLazyComponent(current, workInProgress, elementType, updateExpirationTime, renderExpirationTime);
40564      }
40565
40566    case FunctionComponent:
40567      {
40568        var _Component = workInProgress.type;
40569        var unresolvedProps = workInProgress.pendingProps;
40570        var resolvedProps = workInProgress.elementType === _Component ? unresolvedProps : resolveDefaultProps(_Component, unresolvedProps);
40571        return updateFunctionComponent(current, workInProgress, _Component, resolvedProps, renderExpirationTime);
40572      }
40573
40574    case ClassComponent:
40575      {
40576        var _Component2 = workInProgress.type;
40577        var _unresolvedProps = workInProgress.pendingProps;
40578
40579        var _resolvedProps = workInProgress.elementType === _Component2 ? _unresolvedProps : resolveDefaultProps(_Component2, _unresolvedProps);
40580
40581        return updateClassComponent(current, workInProgress, _Component2, _resolvedProps, renderExpirationTime);
40582      }
40583
40584    case HostRoot:
40585      return updateHostRoot(current, workInProgress, renderExpirationTime);
40586
40587    case HostComponent:
40588      return updateHostComponent(current, workInProgress, renderExpirationTime);
40589
40590    case HostText:
40591      return updateHostText(current, workInProgress);
40592
40593    case SuspenseComponent:
40594      return updateSuspenseComponent(current, workInProgress, renderExpirationTime);
40595
40596    case HostPortal:
40597      return updatePortalComponent(current, workInProgress, renderExpirationTime);
40598
40599    case ForwardRef:
40600      {
40601        var type = workInProgress.type;
40602        var _unresolvedProps2 = workInProgress.pendingProps;
40603
40604        var _resolvedProps2 = workInProgress.elementType === type ? _unresolvedProps2 : resolveDefaultProps(type, _unresolvedProps2);
40605
40606        return updateForwardRef(current, workInProgress, type, _resolvedProps2, renderExpirationTime);
40607      }
40608
40609    case Fragment:
40610      return updateFragment(current, workInProgress, renderExpirationTime);
40611
40612    case Mode:
40613      return updateMode(current, workInProgress, renderExpirationTime);
40614
40615    case Profiler:
40616      return updateProfiler(current, workInProgress, renderExpirationTime);
40617
40618    case ContextProvider:
40619      return updateContextProvider(current, workInProgress, renderExpirationTime);
40620
40621    case ContextConsumer:
40622      return updateContextConsumer(current, workInProgress, renderExpirationTime);
40623
40624    case MemoComponent:
40625      {
40626        var _type2 = workInProgress.type;
40627        var _unresolvedProps3 = workInProgress.pendingProps; // Resolve outer props first, then resolve inner props.
40628
40629        var _resolvedProps3 = resolveDefaultProps(_type2, _unresolvedProps3);
40630
40631        {
40632          if (workInProgress.type !== workInProgress.elementType) {
40633            var outerPropTypes = _type2.propTypes;
40634
40635            if (outerPropTypes) {
40636              checkPropTypes(outerPropTypes, _resolvedProps3, // Resolved for outer only
40637              'prop', getComponentName(_type2), getCurrentFiberStackInDev);
40638            }
40639          }
40640        }
40641
40642        _resolvedProps3 = resolveDefaultProps(_type2.type, _resolvedProps3);
40643        return updateMemoComponent(current, workInProgress, _type2, _resolvedProps3, updateExpirationTime, renderExpirationTime);
40644      }
40645
40646    case SimpleMemoComponent:
40647      {
40648        return updateSimpleMemoComponent(current, workInProgress, workInProgress.type, workInProgress.pendingProps, updateExpirationTime, renderExpirationTime);
40649      }
40650
40651    case IncompleteClassComponent:
40652      {
40653        var _Component3 = workInProgress.type;
40654        var _unresolvedProps4 = workInProgress.pendingProps;
40655
40656        var _resolvedProps4 = workInProgress.elementType === _Component3 ? _unresolvedProps4 : resolveDefaultProps(_Component3, _unresolvedProps4);
40657
40658        return mountIncompleteClassComponent(current, workInProgress, _Component3, _resolvedProps4, renderExpirationTime);
40659      }
40660
40661    case SuspenseListComponent:
40662      {
40663        return updateSuspenseListComponent(current, workInProgress, renderExpirationTime);
40664      }
40665  }
40666
40667  {
40668    {
40669      throw Error( "Unknown unit of work tag (" + workInProgress.tag + "). This error is likely caused by a bug in React. Please file an issue." );
40670    }
40671  }
40672}
40673
40674function markUpdate(workInProgress) {
40675  // Tag the fiber with an update effect. This turns a Placement into
40676  // a PlacementAndUpdate.
40677  workInProgress.effectTag |= Update;
40678}
40679
40680function markRef$1(workInProgress) {
40681  workInProgress.effectTag |= Ref;
40682}
40683
40684var appendAllChildren;
40685var updateHostContainer;
40686var updateHostComponent$1;
40687var updateHostText$1;
40688
40689{
40690  // Mutation mode
40691  appendAllChildren = function (parent, workInProgress, needsVisibilityToggle, isHidden) {
40692    // We only have the top Fiber that was created but we need recurse down its
40693    // children to find all the terminal nodes.
40694    var node = workInProgress.child;
40695
40696    while (node !== null) {
40697      if (node.tag === HostComponent || node.tag === HostText) {
40698        appendInitialChild(parent, node.stateNode);
40699      } else if (node.tag === HostPortal) ; else if (node.child !== null) {
40700        node.child.return = node;
40701        node = node.child;
40702        continue;
40703      }
40704
40705      if (node === workInProgress) {
40706        return;
40707      }
40708
40709      while (node.sibling === null) {
40710        if (node.return === null || node.return === workInProgress) {
40711          return;
40712        }
40713
40714        node = node.return;
40715      }
40716
40717      node.sibling.return = node.return;
40718      node = node.sibling;
40719    }
40720  };
40721
40722  updateHostContainer = function (workInProgress) {// Noop
40723  };
40724
40725  updateHostComponent$1 = function (current, workInProgress, type, newProps, rootContainerInstance) {
40726    // If we have an alternate, that means this is an update and we need to
40727    // schedule a side-effect to do the updates.
40728    var oldProps = current.memoizedProps;
40729
40730    if (oldProps === newProps) {
40731      // In mutation mode, this is sufficient for a bailout because
40732      // we won't touch this node even if children changed.
40733      return;
40734    } // If we get updated because one of our children updated, we don't
40735    // have newProps so we'll have to reuse them.
40736    // TODO: Split the update API as separate for the props vs. children.
40737    // Even better would be if children weren't special cased at all tho.
40738
40739
40740    var instance = workInProgress.stateNode;
40741    var currentHostContext = getHostContext(); // TODO: Experiencing an error where oldProps is null. Suggests a host
40742    // component is hitting the resume path. Figure out why. Possibly
40743    // related to `hidden`.
40744
40745    var updatePayload = prepareUpdate(instance, type, oldProps, newProps, rootContainerInstance, currentHostContext); // TODO: Type this specific to this type of component.
40746
40747    workInProgress.updateQueue = updatePayload; // If the update payload indicates that there is a change or if there
40748    // is a new ref we mark this as an update. All the work is done in commitWork.
40749
40750    if (updatePayload) {
40751      markUpdate(workInProgress);
40752    }
40753  };
40754
40755  updateHostText$1 = function (current, workInProgress, oldText, newText) {
40756    // If the text differs, mark it as an update. All the work in done in commitWork.
40757    if (oldText !== newText) {
40758      markUpdate(workInProgress);
40759    }
40760  };
40761}
40762
40763function cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {
40764  switch (renderState.tailMode) {
40765    case 'hidden':
40766      {
40767        // Any insertions at the end of the tail list after this point
40768        // should be invisible. If there are already mounted boundaries
40769        // anything before them are not considered for collapsing.
40770        // Therefore we need to go through the whole tail to find if
40771        // there are any.
40772        var tailNode = renderState.tail;
40773        var lastTailNode = null;
40774
40775        while (tailNode !== null) {
40776          if (tailNode.alternate !== null) {
40777            lastTailNode = tailNode;
40778          }
40779
40780          tailNode = tailNode.sibling;
40781        } // Next we're simply going to delete all insertions after the
40782        // last rendered item.
40783
40784
40785        if (lastTailNode === null) {
40786          // All remaining items in the tail are insertions.
40787          renderState.tail = null;
40788        } else {
40789          // Detach the insertion after the last node that was already
40790          // inserted.
40791          lastTailNode.sibling = null;
40792        }
40793
40794        break;
40795      }
40796
40797    case 'collapsed':
40798      {
40799        // Any insertions at the end of the tail list after this point
40800        // should be invisible. If there are already mounted boundaries
40801        // anything before them are not considered for collapsing.
40802        // Therefore we need to go through the whole tail to find if
40803        // there are any.
40804        var _tailNode = renderState.tail;
40805        var _lastTailNode = null;
40806
40807        while (_tailNode !== null) {
40808          if (_tailNode.alternate !== null) {
40809            _lastTailNode = _tailNode;
40810          }
40811
40812          _tailNode = _tailNode.sibling;
40813        } // Next we're simply going to delete all insertions after the
40814        // last rendered item.
40815
40816
40817        if (_lastTailNode === null) {
40818          // All remaining items in the tail are insertions.
40819          if (!hasRenderedATailFallback && renderState.tail !== null) {
40820            // We suspended during the head. We want to show at least one
40821            // row at the tail. So we'll keep on and cut off the rest.
40822            renderState.tail.sibling = null;
40823          } else {
40824            renderState.tail = null;
40825          }
40826        } else {
40827          // Detach the insertion after the last node that was already
40828          // inserted.
40829          _lastTailNode.sibling = null;
40830        }
40831
40832        break;
40833      }
40834  }
40835}
40836
40837function completeWork(current, workInProgress, renderExpirationTime) {
40838  var newProps = workInProgress.pendingProps;
40839
40840  switch (workInProgress.tag) {
40841    case IndeterminateComponent:
40842    case LazyComponent:
40843    case SimpleMemoComponent:
40844    case FunctionComponent:
40845    case ForwardRef:
40846    case Fragment:
40847    case Mode:
40848    case Profiler:
40849    case ContextConsumer:
40850    case MemoComponent:
40851      return null;
40852
40853    case ClassComponent:
40854      {
40855        var Component = workInProgress.type;
40856
40857        if (isContextProvider(Component)) {
40858          popContext(workInProgress);
40859        }
40860
40861        return null;
40862      }
40863
40864    case HostRoot:
40865      {
40866        popHostContainer(workInProgress);
40867        popTopLevelContextObject(workInProgress);
40868        var fiberRoot = workInProgress.stateNode;
40869
40870        if (fiberRoot.pendingContext) {
40871          fiberRoot.context = fiberRoot.pendingContext;
40872          fiberRoot.pendingContext = null;
40873        }
40874
40875        if (current === null || current.child === null) {
40876          // If we hydrated, pop so that we can delete any remaining children
40877          // that weren't hydrated.
40878          var wasHydrated = popHydrationState(workInProgress);
40879
40880          if (wasHydrated) {
40881            // If we hydrated, then we'll need to schedule an update for
40882            // the commit side-effects on the root.
40883            markUpdate(workInProgress);
40884          }
40885        }
40886
40887        updateHostContainer(workInProgress);
40888        return null;
40889      }
40890
40891    case HostComponent:
40892      {
40893        popHostContext(workInProgress);
40894        var rootContainerInstance = getRootHostContainer();
40895        var type = workInProgress.type;
40896
40897        if (current !== null && workInProgress.stateNode != null) {
40898          updateHostComponent$1(current, workInProgress, type, newProps, rootContainerInstance);
40899
40900          if (current.ref !== workInProgress.ref) {
40901            markRef$1(workInProgress);
40902          }
40903        } else {
40904          if (!newProps) {
40905            if (!(workInProgress.stateNode !== null)) {
40906              {
40907                throw Error( "We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue." );
40908              }
40909            } // This can happen when we abort work.
40910
40911
40912            return null;
40913          }
40914
40915          var currentHostContext = getHostContext(); // TODO: Move createInstance to beginWork and keep it on a context
40916          // "stack" as the parent. Then append children as we go in beginWork
40917          // or completeWork depending on whether we want to add them top->down or
40918          // bottom->up. Top->down is faster in IE11.
40919
40920          var _wasHydrated = popHydrationState(workInProgress);
40921
40922          if (_wasHydrated) {
40923            // TODO: Move this and createInstance step into the beginPhase
40924            // to consolidate.
40925            if (prepareToHydrateHostInstance(workInProgress, rootContainerInstance, currentHostContext)) {
40926              // If changes to the hydrated node need to be applied at the
40927              // commit-phase we mark this as such.
40928              markUpdate(workInProgress);
40929            }
40930          } else {
40931            var instance = createInstance(type, newProps, rootContainerInstance, currentHostContext, workInProgress);
40932            appendAllChildren(instance, workInProgress, false, false); // This needs to be set before we mount Flare event listeners
40933
40934            workInProgress.stateNode = instance;
40935            // (eg DOM renderer supports auto-focus for certain elements).
40936            // Make sure such renderers get scheduled for later work.
40937
40938
40939            if (finalizeInitialChildren(instance, type, newProps, rootContainerInstance)) {
40940              markUpdate(workInProgress);
40941            }
40942          }
40943
40944          if (workInProgress.ref !== null) {
40945            // If there is a ref on a host node we need to schedule a callback
40946            markRef$1(workInProgress);
40947          }
40948        }
40949
40950        return null;
40951      }
40952
40953    case HostText:
40954      {
40955        var newText = newProps;
40956
40957        if (current && workInProgress.stateNode != null) {
40958          var oldText = current.memoizedProps; // If we have an alternate, that means this is an update and we need
40959          // to schedule a side-effect to do the updates.
40960
40961          updateHostText$1(current, workInProgress, oldText, newText);
40962        } else {
40963          if (typeof newText !== 'string') {
40964            if (!(workInProgress.stateNode !== null)) {
40965              {
40966                throw Error( "We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue." );
40967              }
40968            } // This can happen when we abort work.
40969
40970          }
40971
40972          var _rootContainerInstance = getRootHostContainer();
40973
40974          var _currentHostContext = getHostContext();
40975
40976          var _wasHydrated2 = popHydrationState(workInProgress);
40977
40978          if (_wasHydrated2) {
40979            if (prepareToHydrateHostTextInstance(workInProgress)) {
40980              markUpdate(workInProgress);
40981            }
40982          } else {
40983            workInProgress.stateNode = createTextInstance(newText, _rootContainerInstance, _currentHostContext, workInProgress);
40984          }
40985        }
40986
40987        return null;
40988      }
40989
40990    case SuspenseComponent:
40991      {
40992        popSuspenseContext(workInProgress);
40993        var nextState = workInProgress.memoizedState;
40994
40995        if ((workInProgress.effectTag & DidCapture) !== NoEffect) {
40996          // Something suspended. Re-render with the fallback children.
40997          workInProgress.expirationTime = renderExpirationTime; // Do not reset the effect list.
40998
40999          return workInProgress;
41000        }
41001
41002        var nextDidTimeout = nextState !== null;
41003        var prevDidTimeout = false;
41004
41005        if (current === null) {
41006          if (workInProgress.memoizedProps.fallback !== undefined) {
41007            popHydrationState(workInProgress);
41008          }
41009        } else {
41010          var prevState = current.memoizedState;
41011          prevDidTimeout = prevState !== null;
41012
41013          if (!nextDidTimeout && prevState !== null) {
41014            // We just switched from the fallback to the normal children.
41015            // Delete the fallback.
41016            // TODO: Would it be better to store the fallback fragment on
41017            // the stateNode during the begin phase?
41018            var currentFallbackChild = current.child.sibling;
41019
41020            if (currentFallbackChild !== null) {
41021              // Deletions go at the beginning of the return fiber's effect list
41022              var first = workInProgress.firstEffect;
41023
41024              if (first !== null) {
41025                workInProgress.firstEffect = currentFallbackChild;
41026                currentFallbackChild.nextEffect = first;
41027              } else {
41028                workInProgress.firstEffect = workInProgress.lastEffect = currentFallbackChild;
41029                currentFallbackChild.nextEffect = null;
41030              }
41031
41032              currentFallbackChild.effectTag = Deletion;
41033            }
41034          }
41035        }
41036
41037        if (nextDidTimeout && !prevDidTimeout) {
41038          // If this subtreee is running in blocking mode we can suspend,
41039          // otherwise we won't suspend.
41040          // TODO: This will still suspend a synchronous tree if anything
41041          // in the concurrent tree already suspended during this render.
41042          // This is a known bug.
41043          if ((workInProgress.mode & BlockingMode) !== NoMode) {
41044            // TODO: Move this back to throwException because this is too late
41045            // if this is a large tree which is common for initial loads. We
41046            // don't know if we should restart a render or not until we get
41047            // this marker, and this is too late.
41048            // If this render already had a ping or lower pri updates,
41049            // and this is the first time we know we're going to suspend we
41050            // should be able to immediately restart from within throwException.
41051            var hasInvisibleChildContext = current === null && workInProgress.memoizedProps.unstable_avoidThisFallback !== true;
41052
41053            if (hasInvisibleChildContext || hasSuspenseContext(suspenseStackCursor.current, InvisibleParentSuspenseContext)) {
41054              // If this was in an invisible tree or a new render, then showing
41055              // this boundary is ok.
41056              renderDidSuspend();
41057            } else {
41058              // Otherwise, we're going to have to hide content so we should
41059              // suspend for longer if possible.
41060              renderDidSuspendDelayIfPossible();
41061            }
41062          }
41063        }
41064
41065        {
41066          // TODO: Only schedule updates if these values are non equal, i.e. it changed.
41067          if (nextDidTimeout || prevDidTimeout) {
41068            // If this boundary just timed out, schedule an effect to attach a
41069            // retry listener to the promise. This flag is also used to hide the
41070            // primary children. In mutation mode, we also need the flag to
41071            // *unhide* children that were previously hidden, so check if this
41072            // is currently timed out, too.
41073            workInProgress.effectTag |= Update;
41074          }
41075        }
41076
41077        return null;
41078      }
41079
41080    case HostPortal:
41081      popHostContainer(workInProgress);
41082      updateHostContainer(workInProgress);
41083      return null;
41084
41085    case ContextProvider:
41086      // Pop provider fiber
41087      popProvider(workInProgress);
41088      return null;
41089
41090    case IncompleteClassComponent:
41091      {
41092        // Same as class component case. I put it down here so that the tags are
41093        // sequential to ensure this switch is compiled to a jump table.
41094        var _Component = workInProgress.type;
41095
41096        if (isContextProvider(_Component)) {
41097          popContext(workInProgress);
41098        }
41099
41100        return null;
41101      }
41102
41103    case SuspenseListComponent:
41104      {
41105        popSuspenseContext(workInProgress);
41106        var renderState = workInProgress.memoizedState;
41107
41108        if (renderState === null) {
41109          // We're running in the default, "independent" mode.
41110          // We don't do anything in this mode.
41111          return null;
41112        }
41113
41114        var didSuspendAlready = (workInProgress.effectTag & DidCapture) !== NoEffect;
41115        var renderedTail = renderState.rendering;
41116
41117        if (renderedTail === null) {
41118          // We just rendered the head.
41119          if (!didSuspendAlready) {
41120            // This is the first pass. We need to figure out if anything is still
41121            // suspended in the rendered set.
41122            // If new content unsuspended, but there's still some content that
41123            // didn't. Then we need to do a second pass that forces everything
41124            // to keep showing their fallbacks.
41125            // We might be suspended if something in this render pass suspended, or
41126            // something in the previous committed pass suspended. Otherwise,
41127            // there's no chance so we can skip the expensive call to
41128            // findFirstSuspended.
41129            var cannotBeSuspended = renderHasNotSuspendedYet() && (current === null || (current.effectTag & DidCapture) === NoEffect);
41130
41131            if (!cannotBeSuspended) {
41132              var row = workInProgress.child;
41133
41134              while (row !== null) {
41135                var suspended = findFirstSuspended(row);
41136
41137                if (suspended !== null) {
41138                  didSuspendAlready = true;
41139                  workInProgress.effectTag |= DidCapture;
41140                  cutOffTailIfNeeded(renderState, false); // If this is a newly suspended tree, it might not get committed as
41141                  // part of the second pass. In that case nothing will subscribe to
41142                  // its thennables. Instead, we'll transfer its thennables to the
41143                  // SuspenseList so that it can retry if they resolve.
41144                  // There might be multiple of these in the list but since we're
41145                  // going to wait for all of them anyway, it doesn't really matter
41146                  // which ones gets to ping. In theory we could get clever and keep
41147                  // track of how many dependencies remain but it gets tricky because
41148                  // in the meantime, we can add/remove/change items and dependencies.
41149                  // We might bail out of the loop before finding any but that
41150                  // doesn't matter since that means that the other boundaries that
41151                  // we did find already has their listeners attached.
41152
41153                  var newThennables = suspended.updateQueue;
41154
41155                  if (newThennables !== null) {
41156                    workInProgress.updateQueue = newThennables;
41157                    workInProgress.effectTag |= Update;
41158                  } // Rerender the whole list, but this time, we'll force fallbacks
41159                  // to stay in place.
41160                  // Reset the effect list before doing the second pass since that's now invalid.
41161
41162
41163                  if (renderState.lastEffect === null) {
41164                    workInProgress.firstEffect = null;
41165                  }
41166
41167                  workInProgress.lastEffect = renderState.lastEffect; // Reset the child fibers to their original state.
41168
41169                  resetChildFibers(workInProgress, renderExpirationTime); // Set up the Suspense Context to force suspense and immediately
41170                  // rerender the children.
41171
41172                  pushSuspenseContext(workInProgress, setShallowSuspenseContext(suspenseStackCursor.current, ForceSuspenseFallback));
41173                  return workInProgress.child;
41174                }
41175
41176                row = row.sibling;
41177              }
41178            }
41179          } else {
41180            cutOffTailIfNeeded(renderState, false);
41181          } // Next we're going to render the tail.
41182
41183        } else {
41184          // Append the rendered row to the child list.
41185          if (!didSuspendAlready) {
41186            var _suspended = findFirstSuspended(renderedTail);
41187
41188            if (_suspended !== null) {
41189              workInProgress.effectTag |= DidCapture;
41190              didSuspendAlready = true; // Ensure we transfer the update queue to the parent so that it doesn't
41191              // get lost if this row ends up dropped during a second pass.
41192
41193              var _newThennables = _suspended.updateQueue;
41194
41195              if (_newThennables !== null) {
41196                workInProgress.updateQueue = _newThennables;
41197                workInProgress.effectTag |= Update;
41198              }
41199
41200              cutOffTailIfNeeded(renderState, true); // This might have been modified.
41201
41202              if (renderState.tail === null && renderState.tailMode === 'hidden' && !renderedTail.alternate) {
41203                // We need to delete the row we just rendered.
41204                // Reset the effect list to what it was before we rendered this
41205                // child. The nested children have already appended themselves.
41206                var lastEffect = workInProgress.lastEffect = renderState.lastEffect; // Remove any effects that were appended after this point.
41207
41208                if (lastEffect !== null) {
41209                  lastEffect.nextEffect = null;
41210                } // We're done.
41211
41212
41213                return null;
41214              }
41215            } else if ( // The time it took to render last row is greater than time until
41216            // the expiration.
41217            now() * 2 - renderState.renderingStartTime > renderState.tailExpiration && renderExpirationTime > Never) {
41218              // We have now passed our CPU deadline and we'll just give up further
41219              // attempts to render the main content and only render fallbacks.
41220              // The assumption is that this is usually faster.
41221              workInProgress.effectTag |= DidCapture;
41222              didSuspendAlready = true;
41223              cutOffTailIfNeeded(renderState, false); // Since nothing actually suspended, there will nothing to ping this
41224              // to get it started back up to attempt the next item. If we can show
41225              // them, then they really have the same priority as this render.
41226              // So we'll pick it back up the very next render pass once we've had
41227              // an opportunity to yield for paint.
41228
41229              var nextPriority = renderExpirationTime - 1;
41230              workInProgress.expirationTime = workInProgress.childExpirationTime = nextPriority;
41231
41232              {
41233                markSpawnedWork(nextPriority);
41234              }
41235            }
41236          }
41237
41238          if (renderState.isBackwards) {
41239            // The effect list of the backwards tail will have been added
41240            // to the end. This breaks the guarantee that life-cycles fire in
41241            // sibling order but that isn't a strong guarantee promised by React.
41242            // Especially since these might also just pop in during future commits.
41243            // Append to the beginning of the list.
41244            renderedTail.sibling = workInProgress.child;
41245            workInProgress.child = renderedTail;
41246          } else {
41247            var previousSibling = renderState.last;
41248
41249            if (previousSibling !== null) {
41250              previousSibling.sibling = renderedTail;
41251            } else {
41252              workInProgress.child = renderedTail;
41253            }
41254
41255            renderState.last = renderedTail;
41256          }
41257        }
41258
41259        if (renderState.tail !== null) {
41260          // We still have tail rows to render.
41261          if (renderState.tailExpiration === 0) {
41262            // Heuristic for how long we're willing to spend rendering rows
41263            // until we just give up and show what we have so far.
41264            var TAIL_EXPIRATION_TIMEOUT_MS = 500;
41265            renderState.tailExpiration = now() + TAIL_EXPIRATION_TIMEOUT_MS; // TODO: This is meant to mimic the train model or JND but this
41266            // is a per component value. It should really be since the start
41267            // of the total render or last commit. Consider using something like
41268            // globalMostRecentFallbackTime. That doesn't account for being
41269            // suspended for part of the time or when it's a new render.
41270            // It should probably use a global start time value instead.
41271          } // Pop a row.
41272
41273
41274          var next = renderState.tail;
41275          renderState.rendering = next;
41276          renderState.tail = next.sibling;
41277          renderState.lastEffect = workInProgress.lastEffect;
41278          renderState.renderingStartTime = now();
41279          next.sibling = null; // Restore the context.
41280          // TODO: We can probably just avoid popping it instead and only
41281          // setting it the first time we go from not suspended to suspended.
41282
41283          var suspenseContext = suspenseStackCursor.current;
41284
41285          if (didSuspendAlready) {
41286            suspenseContext = setShallowSuspenseContext(suspenseContext, ForceSuspenseFallback);
41287          } else {
41288            suspenseContext = setDefaultShallowSuspenseContext(suspenseContext);
41289          }
41290
41291          pushSuspenseContext(workInProgress, suspenseContext); // Do a pass over the next row.
41292
41293          return next;
41294        }
41295
41296        return null;
41297      }
41298  }
41299
41300  {
41301    {
41302      throw Error( "Unknown unit of work tag (" + workInProgress.tag + "). This error is likely caused by a bug in React. Please file an issue." );
41303    }
41304  }
41305}
41306
41307function unwindWork(workInProgress, renderExpirationTime) {
41308  switch (workInProgress.tag) {
41309    case ClassComponent:
41310      {
41311        var Component = workInProgress.type;
41312
41313        if (isContextProvider(Component)) {
41314          popContext(workInProgress);
41315        }
41316
41317        var effectTag = workInProgress.effectTag;
41318
41319        if (effectTag & ShouldCapture) {
41320          workInProgress.effectTag = effectTag & ~ShouldCapture | DidCapture;
41321          return workInProgress;
41322        }
41323
41324        return null;
41325      }
41326
41327    case HostRoot:
41328      {
41329        popHostContainer(workInProgress);
41330        popTopLevelContextObject(workInProgress);
41331        var _effectTag = workInProgress.effectTag;
41332
41333        if (!((_effectTag & DidCapture) === NoEffect)) {
41334          {
41335            throw Error( "The root failed to unmount after an error. This is likely a bug in React. Please file an issue." );
41336          }
41337        }
41338
41339        workInProgress.effectTag = _effectTag & ~ShouldCapture | DidCapture;
41340        return workInProgress;
41341      }
41342
41343    case HostComponent:
41344      {
41345        // TODO: popHydrationState
41346        popHostContext(workInProgress);
41347        return null;
41348      }
41349
41350    case SuspenseComponent:
41351      {
41352        popSuspenseContext(workInProgress);
41353
41354        var _effectTag2 = workInProgress.effectTag;
41355
41356        if (_effectTag2 & ShouldCapture) {
41357          workInProgress.effectTag = _effectTag2 & ~ShouldCapture | DidCapture; // Captured a suspense effect. Re-render the boundary.
41358
41359          return workInProgress;
41360        }
41361
41362        return null;
41363      }
41364
41365    case SuspenseListComponent:
41366      {
41367        popSuspenseContext(workInProgress); // SuspenseList doesn't actually catch anything. It should've been
41368        // caught by a nested boundary. If not, it should bubble through.
41369
41370        return null;
41371      }
41372
41373    case HostPortal:
41374      popHostContainer(workInProgress);
41375      return null;
41376
41377    case ContextProvider:
41378      popProvider(workInProgress);
41379      return null;
41380
41381    default:
41382      return null;
41383  }
41384}
41385
41386function unwindInterruptedWork(interruptedWork) {
41387  switch (interruptedWork.tag) {
41388    case ClassComponent:
41389      {
41390        var childContextTypes = interruptedWork.type.childContextTypes;
41391
41392        if (childContextTypes !== null && childContextTypes !== undefined) {
41393          popContext(interruptedWork);
41394        }
41395
41396        break;
41397      }
41398
41399    case HostRoot:
41400      {
41401        popHostContainer(interruptedWork);
41402        popTopLevelContextObject(interruptedWork);
41403        break;
41404      }
41405
41406    case HostComponent:
41407      {
41408        popHostContext(interruptedWork);
41409        break;
41410      }
41411
41412    case HostPortal:
41413      popHostContainer(interruptedWork);
41414      break;
41415
41416    case SuspenseComponent:
41417      popSuspenseContext(interruptedWork);
41418      break;
41419
41420    case SuspenseListComponent:
41421      popSuspenseContext(interruptedWork);
41422      break;
41423
41424    case ContextProvider:
41425      popProvider(interruptedWork);
41426      break;
41427  }
41428}
41429
41430function createCapturedValue(value, source) {
41431  // If the value is an error, call this function immediately after it is thrown
41432  // so the stack is accurate.
41433  return {
41434    value: value,
41435    source: source,
41436    stack: getStackByFiberInDevAndProd(source)
41437  };
41438}
41439
41440function logCapturedError(capturedError) {
41441
41442  var error = capturedError.error;
41443
41444  {
41445    var componentName = capturedError.componentName,
41446        componentStack = capturedError.componentStack,
41447        errorBoundaryName = capturedError.errorBoundaryName,
41448        errorBoundaryFound = capturedError.errorBoundaryFound,
41449        willRetry = capturedError.willRetry; // Browsers support silencing uncaught errors by calling
41450    // `preventDefault()` in window `error` handler.
41451    // We record this information as an expando on the error.
41452
41453    if (error != null && error._suppressLogging) {
41454      if (errorBoundaryFound && willRetry) {
41455        // The error is recoverable and was silenced.
41456        // Ignore it and don't print the stack addendum.
41457        // This is handy for testing error boundaries without noise.
41458        return;
41459      } // The error is fatal. Since the silencing might have
41460      // been accidental, we'll surface it anyway.
41461      // However, the browser would have silenced the original error
41462      // so we'll print it first, and then print the stack addendum.
41463
41464
41465      console['error'](error); // Don't transform to our wrapper
41466      // For a more detailed description of this block, see:
41467      // https://github.com/facebook/react/pull/13384
41468    }
41469
41470    var componentNameMessage = componentName ? "The above error occurred in the <" + componentName + "> component:" : 'The above error occurred in one of your React components:';
41471    var errorBoundaryMessage; // errorBoundaryFound check is sufficient; errorBoundaryName check is to satisfy Flow.
41472
41473    if (errorBoundaryFound && errorBoundaryName) {
41474      if (willRetry) {
41475        errorBoundaryMessage = "React will try to recreate this component tree from scratch " + ("using the error boundary you provided, " + errorBoundaryName + ".");
41476      } else {
41477        errorBoundaryMessage = "This error was initially handled by the error boundary " + errorBoundaryName + ".\n" + "Recreating the tree from scratch failed so React will unmount the tree.";
41478      }
41479    } else {
41480      errorBoundaryMessage = 'Consider adding an error boundary to your tree to customize error handling behavior.\n' + 'Visit https://fb.me/react-error-boundaries to learn more about error boundaries.';
41481    }
41482
41483    var combinedMessage = "" + componentNameMessage + componentStack + "\n\n" + ("" + errorBoundaryMessage); // In development, we provide our own message with just the component stack.
41484    // We don't include the original error message and JS stack because the browser
41485    // has already printed it. Even if the application swallows the error, it is still
41486    // displayed by the browser thanks to the DEV-only fake event trick in ReactErrorUtils.
41487
41488    console['error'](combinedMessage); // Don't transform to our wrapper
41489  }
41490}
41491
41492var didWarnAboutUndefinedSnapshotBeforeUpdate = null;
41493
41494{
41495  didWarnAboutUndefinedSnapshotBeforeUpdate = new Set();
41496}
41497
41498var PossiblyWeakSet = typeof WeakSet === 'function' ? WeakSet : Set;
41499function logError(boundary, errorInfo) {
41500  var source = errorInfo.source;
41501  var stack = errorInfo.stack;
41502
41503  if (stack === null && source !== null) {
41504    stack = getStackByFiberInDevAndProd(source);
41505  }
41506
41507  var capturedError = {
41508    componentName: source !== null ? getComponentName(source.type) : null,
41509    componentStack: stack !== null ? stack : '',
41510    error: errorInfo.value,
41511    errorBoundary: null,
41512    errorBoundaryName: null,
41513    errorBoundaryFound: false,
41514    willRetry: false
41515  };
41516
41517  if (boundary !== null && boundary.tag === ClassComponent) {
41518    capturedError.errorBoundary = boundary.stateNode;
41519    capturedError.errorBoundaryName = getComponentName(boundary.type);
41520    capturedError.errorBoundaryFound = true;
41521    capturedError.willRetry = true;
41522  }
41523
41524  try {
41525    logCapturedError(capturedError);
41526  } catch (e) {
41527    // This method must not throw, or React internal state will get messed up.
41528    // If console.error is overridden, or logCapturedError() shows a dialog that throws,
41529    // we want to report this error outside of the normal stack as a last resort.
41530    // https://github.com/facebook/react/issues/13188
41531    setTimeout(function () {
41532      throw e;
41533    });
41534  }
41535}
41536
41537var callComponentWillUnmountWithTimer = function (current, instance) {
41538  startPhaseTimer(current, 'componentWillUnmount');
41539  instance.props = current.memoizedProps;
41540  instance.state = current.memoizedState;
41541  instance.componentWillUnmount();
41542  stopPhaseTimer();
41543}; // Capture errors so they don't interrupt unmounting.
41544
41545
41546function safelyCallComponentWillUnmount(current, instance) {
41547  {
41548    invokeGuardedCallback(null, callComponentWillUnmountWithTimer, null, current, instance);
41549
41550    if (hasCaughtError()) {
41551      var unmountError = clearCaughtError();
41552      captureCommitPhaseError(current, unmountError);
41553    }
41554  }
41555}
41556
41557function safelyDetachRef(current) {
41558  var ref = current.ref;
41559
41560  if (ref !== null) {
41561    if (typeof ref === 'function') {
41562      {
41563        invokeGuardedCallback(null, ref, null, null);
41564
41565        if (hasCaughtError()) {
41566          var refError = clearCaughtError();
41567          captureCommitPhaseError(current, refError);
41568        }
41569      }
41570    } else {
41571      ref.current = null;
41572    }
41573  }
41574}
41575
41576function safelyCallDestroy(current, destroy) {
41577  {
41578    invokeGuardedCallback(null, destroy, null);
41579
41580    if (hasCaughtError()) {
41581      var error = clearCaughtError();
41582      captureCommitPhaseError(current, error);
41583    }
41584  }
41585}
41586
41587function commitBeforeMutationLifeCycles(current, finishedWork) {
41588  switch (finishedWork.tag) {
41589    case FunctionComponent:
41590    case ForwardRef:
41591    case SimpleMemoComponent:
41592    case Block:
41593      {
41594        return;
41595      }
41596
41597    case ClassComponent:
41598      {
41599        if (finishedWork.effectTag & Snapshot) {
41600          if (current !== null) {
41601            var prevProps = current.memoizedProps;
41602            var prevState = current.memoizedState;
41603            startPhaseTimer(finishedWork, 'getSnapshotBeforeUpdate');
41604            var instance = finishedWork.stateNode; // We could update instance props and state here,
41605            // but instead we rely on them being set during last render.
41606            // TODO: revisit this when we implement resuming.
41607
41608            {
41609              if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {
41610                if (instance.props !== finishedWork.memoizedProps) {
41611                  error('Expected %s props to match memoized props before ' + 'getSnapshotBeforeUpdate. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance');
41612                }
41613
41614                if (instance.state !== finishedWork.memoizedState) {
41615                  error('Expected %s state to match memoized state before ' + 'getSnapshotBeforeUpdate. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance');
41616                }
41617              }
41618            }
41619
41620            var snapshot = instance.getSnapshotBeforeUpdate(finishedWork.elementType === finishedWork.type ? prevProps : resolveDefaultProps(finishedWork.type, prevProps), prevState);
41621
41622            {
41623              var didWarnSet = didWarnAboutUndefinedSnapshotBeforeUpdate;
41624
41625              if (snapshot === undefined && !didWarnSet.has(finishedWork.type)) {
41626                didWarnSet.add(finishedWork.type);
41627
41628                error('%s.getSnapshotBeforeUpdate(): A snapshot value (or null) ' + 'must be returned. You have returned undefined.', getComponentName(finishedWork.type));
41629              }
41630            }
41631
41632            instance.__reactInternalSnapshotBeforeUpdate = snapshot;
41633            stopPhaseTimer();
41634          }
41635        }
41636
41637        return;
41638      }
41639
41640    case HostRoot:
41641    case HostComponent:
41642    case HostText:
41643    case HostPortal:
41644    case IncompleteClassComponent:
41645      // Nothing to do for these component types
41646      return;
41647  }
41648
41649  {
41650    {
41651      throw Error( "This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue." );
41652    }
41653  }
41654}
41655
41656function commitHookEffectListUnmount(tag, finishedWork) {
41657  var updateQueue = finishedWork.updateQueue;
41658  var lastEffect = updateQueue !== null ? updateQueue.lastEffect : null;
41659
41660  if (lastEffect !== null) {
41661    var firstEffect = lastEffect.next;
41662    var effect = firstEffect;
41663
41664    do {
41665      if ((effect.tag & tag) === tag) {
41666        // Unmount
41667        var destroy = effect.destroy;
41668        effect.destroy = undefined;
41669
41670        if (destroy !== undefined) {
41671          destroy();
41672        }
41673      }
41674
41675      effect = effect.next;
41676    } while (effect !== firstEffect);
41677  }
41678}
41679
41680function commitHookEffectListMount(tag, finishedWork) {
41681  var updateQueue = finishedWork.updateQueue;
41682  var lastEffect = updateQueue !== null ? updateQueue.lastEffect : null;
41683
41684  if (lastEffect !== null) {
41685    var firstEffect = lastEffect.next;
41686    var effect = firstEffect;
41687
41688    do {
41689      if ((effect.tag & tag) === tag) {
41690        // Mount
41691        var create = effect.create;
41692        effect.destroy = create();
41693
41694        {
41695          var destroy = effect.destroy;
41696
41697          if (destroy !== undefined && typeof destroy !== 'function') {
41698            var addendum = void 0;
41699
41700            if (destroy === null) {
41701              addendum = ' You returned null. If your effect does not require clean ' + 'up, return undefined (or nothing).';
41702            } else if (typeof destroy.then === 'function') {
41703              addendum = '\n\nIt looks like you wrote useEffect(async () => ...) or returned a Promise. ' + 'Instead, write the async function inside your effect ' + 'and call it immediately:\n\n' + 'useEffect(() => {\n' + '  async function fetchData() {\n' + '    // You can await here\n' + '    const response = await MyAPI.getData(someId);\n' + '    // ...\n' + '  }\n' + '  fetchData();\n' + "}, [someId]); // Or [] if effect doesn't need props or state\n\n" + 'Learn more about data fetching with Hooks: https://fb.me/react-hooks-data-fetching';
41704            } else {
41705              addendum = ' You returned: ' + destroy;
41706            }
41707
41708            error('An effect function must not return anything besides a function, ' + 'which is used for clean-up.%s%s', addendum, getStackByFiberInDevAndProd(finishedWork));
41709          }
41710        }
41711      }
41712
41713      effect = effect.next;
41714    } while (effect !== firstEffect);
41715  }
41716}
41717
41718function commitPassiveHookEffects(finishedWork) {
41719  if ((finishedWork.effectTag & Passive) !== NoEffect) {
41720    switch (finishedWork.tag) {
41721      case FunctionComponent:
41722      case ForwardRef:
41723      case SimpleMemoComponent:
41724      case Block:
41725        {
41726          // TODO (#17945) We should call all passive destroy functions (for all fibers)
41727          // before calling any create functions. The current approach only serializes
41728          // these for a single fiber.
41729          commitHookEffectListUnmount(Passive$1 | HasEffect, finishedWork);
41730          commitHookEffectListMount(Passive$1 | HasEffect, finishedWork);
41731          break;
41732        }
41733    }
41734  }
41735}
41736
41737function commitLifeCycles(finishedRoot, current, finishedWork, committedExpirationTime) {
41738  switch (finishedWork.tag) {
41739    case FunctionComponent:
41740    case ForwardRef:
41741    case SimpleMemoComponent:
41742    case Block:
41743      {
41744        // At this point layout effects have already been destroyed (during mutation phase).
41745        // This is done to prevent sibling component effects from interfering with each other,
41746        // e.g. a destroy function in one component should never override a ref set
41747        // by a create function in another component during the same commit.
41748        commitHookEffectListMount(Layout | HasEffect, finishedWork);
41749
41750        return;
41751      }
41752
41753    case ClassComponent:
41754      {
41755        var instance = finishedWork.stateNode;
41756
41757        if (finishedWork.effectTag & Update) {
41758          if (current === null) {
41759            startPhaseTimer(finishedWork, 'componentDidMount'); // We could update instance props and state here,
41760            // but instead we rely on them being set during last render.
41761            // TODO: revisit this when we implement resuming.
41762
41763            {
41764              if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {
41765                if (instance.props !== finishedWork.memoizedProps) {
41766                  error('Expected %s props to match memoized props before ' + 'componentDidMount. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance');
41767                }
41768
41769                if (instance.state !== finishedWork.memoizedState) {
41770                  error('Expected %s state to match memoized state before ' + 'componentDidMount. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance');
41771                }
41772              }
41773            }
41774
41775            instance.componentDidMount();
41776            stopPhaseTimer();
41777          } else {
41778            var prevProps = finishedWork.elementType === finishedWork.type ? current.memoizedProps : resolveDefaultProps(finishedWork.type, current.memoizedProps);
41779            var prevState = current.memoizedState;
41780            startPhaseTimer(finishedWork, 'componentDidUpdate'); // We could update instance props and state here,
41781            // but instead we rely on them being set during last render.
41782            // TODO: revisit this when we implement resuming.
41783
41784            {
41785              if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {
41786                if (instance.props !== finishedWork.memoizedProps) {
41787                  error('Expected %s props to match memoized props before ' + 'componentDidUpdate. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance');
41788                }
41789
41790                if (instance.state !== finishedWork.memoizedState) {
41791                  error('Expected %s state to match memoized state before ' + 'componentDidUpdate. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance');
41792                }
41793              }
41794            }
41795
41796            instance.componentDidUpdate(prevProps, prevState, instance.__reactInternalSnapshotBeforeUpdate);
41797            stopPhaseTimer();
41798          }
41799        }
41800
41801        var updateQueue = finishedWork.updateQueue;
41802
41803        if (updateQueue !== null) {
41804          {
41805            if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {
41806              if (instance.props !== finishedWork.memoizedProps) {
41807                error('Expected %s props to match memoized props before ' + 'processing the update queue. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance');
41808              }
41809
41810              if (instance.state !== finishedWork.memoizedState) {
41811                error('Expected %s state to match memoized state before ' + 'processing the update queue. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance');
41812              }
41813            }
41814          } // We could update instance props and state here,
41815          // but instead we rely on them being set during last render.
41816          // TODO: revisit this when we implement resuming.
41817
41818
41819          commitUpdateQueue(finishedWork, updateQueue, instance);
41820        }
41821
41822        return;
41823      }
41824
41825    case HostRoot:
41826      {
41827        var _updateQueue = finishedWork.updateQueue;
41828
41829        if (_updateQueue !== null) {
41830          var _instance = null;
41831
41832          if (finishedWork.child !== null) {
41833            switch (finishedWork.child.tag) {
41834              case HostComponent:
41835                _instance = getPublicInstance(finishedWork.child.stateNode);
41836                break;
41837
41838              case ClassComponent:
41839                _instance = finishedWork.child.stateNode;
41840                break;
41841            }
41842          }
41843
41844          commitUpdateQueue(finishedWork, _updateQueue, _instance);
41845        }
41846
41847        return;
41848      }
41849
41850    case HostComponent:
41851      {
41852        var _instance2 = finishedWork.stateNode; // Renderers may schedule work to be done after host components are mounted
41853        // (eg DOM renderer may schedule auto-focus for inputs and form controls).
41854        // These effects should only be committed when components are first mounted,
41855        // aka when there is no current/alternate.
41856
41857        if (current === null && finishedWork.effectTag & Update) {
41858          var type = finishedWork.type;
41859          var props = finishedWork.memoizedProps;
41860          commitMount(_instance2, type, props);
41861        }
41862
41863        return;
41864      }
41865
41866    case HostText:
41867      {
41868        // We have no life-cycles associated with text.
41869        return;
41870      }
41871
41872    case HostPortal:
41873      {
41874        // We have no life-cycles associated with portals.
41875        return;
41876      }
41877
41878    case Profiler:
41879      {
41880        {
41881          var onRender = finishedWork.memoizedProps.onRender;
41882
41883          if (typeof onRender === 'function') {
41884            {
41885              onRender(finishedWork.memoizedProps.id, current === null ? 'mount' : 'update', finishedWork.actualDuration, finishedWork.treeBaseDuration, finishedWork.actualStartTime, getCommitTime(), finishedRoot.memoizedInteractions);
41886            }
41887          }
41888        }
41889
41890        return;
41891      }
41892
41893    case SuspenseComponent:
41894      {
41895        commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);
41896        return;
41897      }
41898
41899    case SuspenseListComponent:
41900    case IncompleteClassComponent:
41901    case FundamentalComponent:
41902    case ScopeComponent:
41903      return;
41904  }
41905
41906  {
41907    {
41908      throw Error( "This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue." );
41909    }
41910  }
41911}
41912
41913function hideOrUnhideAllChildren(finishedWork, isHidden) {
41914  {
41915    // We only have the top Fiber that was inserted but we need to recurse down its
41916    // children to find all the terminal nodes.
41917    var node = finishedWork;
41918
41919    while (true) {
41920      if (node.tag === HostComponent) {
41921        var instance = node.stateNode;
41922
41923        if (isHidden) {
41924          hideInstance(instance);
41925        } else {
41926          unhideInstance(node.stateNode, node.memoizedProps);
41927        }
41928      } else if (node.tag === HostText) {
41929        var _instance3 = node.stateNode;
41930
41931        if (isHidden) {
41932          hideTextInstance(_instance3);
41933        } else {
41934          unhideTextInstance(_instance3, node.memoizedProps);
41935        }
41936      } else if (node.tag === SuspenseComponent && node.memoizedState !== null && node.memoizedState.dehydrated === null) {
41937        // Found a nested Suspense component that timed out. Skip over the
41938        // primary child fragment, which should remain hidden.
41939        var fallbackChildFragment = node.child.sibling;
41940        fallbackChildFragment.return = node;
41941        node = fallbackChildFragment;
41942        continue;
41943      } else if (node.child !== null) {
41944        node.child.return = node;
41945        node = node.child;
41946        continue;
41947      }
41948
41949      if (node === finishedWork) {
41950        return;
41951      }
41952
41953      while (node.sibling === null) {
41954        if (node.return === null || node.return === finishedWork) {
41955          return;
41956        }
41957
41958        node = node.return;
41959      }
41960
41961      node.sibling.return = node.return;
41962      node = node.sibling;
41963    }
41964  }
41965}
41966
41967function commitAttachRef(finishedWork) {
41968  var ref = finishedWork.ref;
41969
41970  if (ref !== null) {
41971    var instance = finishedWork.stateNode;
41972    var instanceToUse;
41973
41974    switch (finishedWork.tag) {
41975      case HostComponent:
41976        instanceToUse = getPublicInstance(instance);
41977        break;
41978
41979      default:
41980        instanceToUse = instance;
41981    } // Moved outside to ensure DCE works with this flag
41982
41983    if (typeof ref === 'function') {
41984      ref(instanceToUse);
41985    } else {
41986      {
41987        if (!ref.hasOwnProperty('current')) {
41988          error('Unexpected ref object provided for %s. ' + 'Use either a ref-setter function or React.createRef().%s', getComponentName(finishedWork.type), getStackByFiberInDevAndProd(finishedWork));
41989        }
41990      }
41991
41992      ref.current = instanceToUse;
41993    }
41994  }
41995}
41996
41997function commitDetachRef(current) {
41998  var currentRef = current.ref;
41999
42000  if (currentRef !== null) {
42001    if (typeof currentRef === 'function') {
42002      currentRef(null);
42003    } else {
42004      currentRef.current = null;
42005    }
42006  }
42007} // User-originating errors (lifecycles and refs) should not interrupt
42008// deletion, so don't let them throw. Host-originating errors should
42009// interrupt deletion, so it's okay
42010
42011
42012function commitUnmount(finishedRoot, current, renderPriorityLevel) {
42013  onCommitUnmount(current);
42014
42015  switch (current.tag) {
42016    case FunctionComponent:
42017    case ForwardRef:
42018    case MemoComponent:
42019    case SimpleMemoComponent:
42020    case Block:
42021      {
42022        var updateQueue = current.updateQueue;
42023
42024        if (updateQueue !== null) {
42025          var lastEffect = updateQueue.lastEffect;
42026
42027          if (lastEffect !== null) {
42028            var firstEffect = lastEffect.next;
42029
42030            {
42031              // When the owner fiber is deleted, the destroy function of a passive
42032              // effect hook is called during the synchronous commit phase. This is
42033              // a concession to implementation complexity. Calling it in the
42034              // passive effect phase (like they usually are, when dependencies
42035              // change during an update) would require either traversing the
42036              // children of the deleted fiber again, or including unmount effects
42037              // as part of the fiber effect list.
42038              //
42039              // Because this is during the sync commit phase, we need to change
42040              // the priority.
42041              //
42042              // TODO: Reconsider this implementation trade off.
42043              var priorityLevel = renderPriorityLevel > NormalPriority ? NormalPriority : renderPriorityLevel;
42044              runWithPriority$1(priorityLevel, function () {
42045                var effect = firstEffect;
42046
42047                do {
42048                  var _destroy = effect.destroy;
42049
42050                  if (_destroy !== undefined) {
42051                    safelyCallDestroy(current, _destroy);
42052                  }
42053
42054                  effect = effect.next;
42055                } while (effect !== firstEffect);
42056              });
42057            }
42058          }
42059        }
42060
42061        return;
42062      }
42063
42064    case ClassComponent:
42065      {
42066        safelyDetachRef(current);
42067        var instance = current.stateNode;
42068
42069        if (typeof instance.componentWillUnmount === 'function') {
42070          safelyCallComponentWillUnmount(current, instance);
42071        }
42072
42073        return;
42074      }
42075
42076    case HostComponent:
42077      {
42078
42079        safelyDetachRef(current);
42080        return;
42081      }
42082
42083    case HostPortal:
42084      {
42085        // TODO: this is recursive.
42086        // We are also not using this parent because
42087        // the portal will get pushed immediately.
42088        {
42089          unmountHostComponents(finishedRoot, current, renderPriorityLevel);
42090        }
42091
42092        return;
42093      }
42094
42095    case FundamentalComponent:
42096      {
42097
42098        return;
42099      }
42100
42101    case DehydratedFragment:
42102      {
42103
42104        return;
42105      }
42106
42107    case ScopeComponent:
42108      {
42109
42110        return;
42111      }
42112  }
42113}
42114
42115function commitNestedUnmounts(finishedRoot, root, renderPriorityLevel) {
42116  // While we're inside a removed host node we don't want to call
42117  // removeChild on the inner nodes because they're removed by the top
42118  // call anyway. We also want to call componentWillUnmount on all
42119  // composites before this host node is removed from the tree. Therefore
42120  // we do an inner loop while we're still inside the host node.
42121  var node = root;
42122
42123  while (true) {
42124    commitUnmount(finishedRoot, node, renderPriorityLevel); // Visit children because they may contain more composite or host nodes.
42125    // Skip portals because commitUnmount() currently visits them recursively.
42126
42127    if (node.child !== null && ( // If we use mutation we drill down into portals using commitUnmount above.
42128    // If we don't use mutation we drill down into portals here instead.
42129     node.tag !== HostPortal)) {
42130      node.child.return = node;
42131      node = node.child;
42132      continue;
42133    }
42134
42135    if (node === root) {
42136      return;
42137    }
42138
42139    while (node.sibling === null) {
42140      if (node.return === null || node.return === root) {
42141        return;
42142      }
42143
42144      node = node.return;
42145    }
42146
42147    node.sibling.return = node.return;
42148    node = node.sibling;
42149  }
42150}
42151
42152function detachFiber(current) {
42153  var alternate = current.alternate; // Cut off the return pointers to disconnect it from the tree. Ideally, we
42154  // should clear the child pointer of the parent alternate to let this
42155  // get GC:ed but we don't know which for sure which parent is the current
42156  // one so we'll settle for GC:ing the subtree of this child. This child
42157  // itself will be GC:ed when the parent updates the next time.
42158
42159  current.return = null;
42160  current.child = null;
42161  current.memoizedState = null;
42162  current.updateQueue = null;
42163  current.dependencies = null;
42164  current.alternate = null;
42165  current.firstEffect = null;
42166  current.lastEffect = null;
42167  current.pendingProps = null;
42168  current.memoizedProps = null;
42169  current.stateNode = null;
42170
42171  if (alternate !== null) {
42172    detachFiber(alternate);
42173  }
42174}
42175
42176function getHostParentFiber(fiber) {
42177  var parent = fiber.return;
42178
42179  while (parent !== null) {
42180    if (isHostParent(parent)) {
42181      return parent;
42182    }
42183
42184    parent = parent.return;
42185  }
42186
42187  {
42188    {
42189      throw Error( "Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue." );
42190    }
42191  }
42192}
42193
42194function isHostParent(fiber) {
42195  return fiber.tag === HostComponent || fiber.tag === HostRoot || fiber.tag === HostPortal;
42196}
42197
42198function getHostSibling(fiber) {
42199  // We're going to search forward into the tree until we find a sibling host
42200  // node. Unfortunately, if multiple insertions are done in a row we have to
42201  // search past them. This leads to exponential search for the next sibling.
42202  // TODO: Find a more efficient way to do this.
42203  var node = fiber;
42204
42205  siblings: while (true) {
42206    // If we didn't find anything, let's try the next sibling.
42207    while (node.sibling === null) {
42208      if (node.return === null || isHostParent(node.return)) {
42209        // If we pop out of the root or hit the parent the fiber we are the
42210        // last sibling.
42211        return null;
42212      }
42213
42214      node = node.return;
42215    }
42216
42217    node.sibling.return = node.return;
42218    node = node.sibling;
42219
42220    while (node.tag !== HostComponent && node.tag !== HostText && node.tag !== DehydratedFragment) {
42221      // If it is not host node and, we might have a host node inside it.
42222      // Try to search down until we find one.
42223      if (node.effectTag & Placement) {
42224        // If we don't have a child, try the siblings instead.
42225        continue siblings;
42226      } // If we don't have a child, try the siblings instead.
42227      // We also skip portals because they are not part of this host tree.
42228
42229
42230      if (node.child === null || node.tag === HostPortal) {
42231        continue siblings;
42232      } else {
42233        node.child.return = node;
42234        node = node.child;
42235      }
42236    } // Check if this host node is stable or about to be placed.
42237
42238
42239    if (!(node.effectTag & Placement)) {
42240      // Found it!
42241      return node.stateNode;
42242    }
42243  }
42244}
42245
42246function commitPlacement(finishedWork) {
42247
42248
42249  var parentFiber = getHostParentFiber(finishedWork); // Note: these two variables *must* always be updated together.
42250
42251  var parent;
42252  var isContainer;
42253  var parentStateNode = parentFiber.stateNode;
42254
42255  switch (parentFiber.tag) {
42256    case HostComponent:
42257      parent = parentStateNode;
42258      isContainer = false;
42259      break;
42260
42261    case HostRoot:
42262      parent = parentStateNode.containerInfo;
42263      isContainer = true;
42264      break;
42265
42266    case HostPortal:
42267      parent = parentStateNode.containerInfo;
42268      isContainer = true;
42269      break;
42270
42271    case FundamentalComponent:
42272
42273    // eslint-disable-next-line-no-fallthrough
42274
42275    default:
42276      {
42277        {
42278          throw Error( "Invalid host parent fiber. This error is likely caused by a bug in React. Please file an issue." );
42279        }
42280      }
42281
42282  }
42283
42284  if (parentFiber.effectTag & ContentReset) {
42285    // Reset the text content of the parent before doing any insertions
42286    resetTextContent(parent); // Clear ContentReset from the effect tag
42287
42288    parentFiber.effectTag &= ~ContentReset;
42289  }
42290
42291  var before = getHostSibling(finishedWork); // We only have the top Fiber that was inserted but we need to recurse down its
42292  // children to find all the terminal nodes.
42293
42294  if (isContainer) {
42295    insertOrAppendPlacementNodeIntoContainer(finishedWork, before, parent);
42296  } else {
42297    insertOrAppendPlacementNode(finishedWork, before, parent);
42298  }
42299}
42300
42301function insertOrAppendPlacementNodeIntoContainer(node, before, parent) {
42302  var tag = node.tag;
42303  var isHost = tag === HostComponent || tag === HostText;
42304
42305  if (isHost || enableFundamentalAPI ) {
42306    var stateNode = isHost ? node.stateNode : node.stateNode.instance;
42307
42308    if (before) {
42309      insertInContainerBefore(parent, stateNode, before);
42310    } else {
42311      appendChildToContainer(parent, stateNode);
42312    }
42313  } else if (tag === HostPortal) ; else {
42314    var child = node.child;
42315
42316    if (child !== null) {
42317      insertOrAppendPlacementNodeIntoContainer(child, before, parent);
42318      var sibling = child.sibling;
42319
42320      while (sibling !== null) {
42321        insertOrAppendPlacementNodeIntoContainer(sibling, before, parent);
42322        sibling = sibling.sibling;
42323      }
42324    }
42325  }
42326}
42327
42328function insertOrAppendPlacementNode(node, before, parent) {
42329  var tag = node.tag;
42330  var isHost = tag === HostComponent || tag === HostText;
42331
42332  if (isHost || enableFundamentalAPI ) {
42333    var stateNode = isHost ? node.stateNode : node.stateNode.instance;
42334
42335    if (before) {
42336      insertBefore(parent, stateNode, before);
42337    } else {
42338      appendChild(parent, stateNode);
42339    }
42340  } else if (tag === HostPortal) ; else {
42341    var child = node.child;
42342
42343    if (child !== null) {
42344      insertOrAppendPlacementNode(child, before, parent);
42345      var sibling = child.sibling;
42346
42347      while (sibling !== null) {
42348        insertOrAppendPlacementNode(sibling, before, parent);
42349        sibling = sibling.sibling;
42350      }
42351    }
42352  }
42353}
42354
42355function unmountHostComponents(finishedRoot, current, renderPriorityLevel) {
42356  // We only have the top Fiber that was deleted but we need to recurse down its
42357  // children to find all the terminal nodes.
42358  var node = current; // Each iteration, currentParent is populated with node's host parent if not
42359  // currentParentIsValid.
42360
42361  var currentParentIsValid = false; // Note: these two variables *must* always be updated together.
42362
42363  var currentParent;
42364  var currentParentIsContainer;
42365
42366  while (true) {
42367    if (!currentParentIsValid) {
42368      var parent = node.return;
42369
42370      findParent: while (true) {
42371        if (!(parent !== null)) {
42372          {
42373            throw Error( "Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue." );
42374          }
42375        }
42376
42377        var parentStateNode = parent.stateNode;
42378
42379        switch (parent.tag) {
42380          case HostComponent:
42381            currentParent = parentStateNode;
42382            currentParentIsContainer = false;
42383            break findParent;
42384
42385          case HostRoot:
42386            currentParent = parentStateNode.containerInfo;
42387            currentParentIsContainer = true;
42388            break findParent;
42389
42390          case HostPortal:
42391            currentParent = parentStateNode.containerInfo;
42392            currentParentIsContainer = true;
42393            break findParent;
42394
42395        }
42396
42397        parent = parent.return;
42398      }
42399
42400      currentParentIsValid = true;
42401    }
42402
42403    if (node.tag === HostComponent || node.tag === HostText) {
42404      commitNestedUnmounts(finishedRoot, node, renderPriorityLevel); // After all the children have unmounted, it is now safe to remove the
42405      // node from the tree.
42406
42407      if (currentParentIsContainer) {
42408        removeChildFromContainer(currentParent, node.stateNode);
42409      } else {
42410        removeChild(currentParent, node.stateNode);
42411      } // Don't visit children because we already visited them.
42412
42413    } else if (node.tag === HostPortal) {
42414      if (node.child !== null) {
42415        // When we go into a portal, it becomes the parent to remove from.
42416        // We will reassign it back when we pop the portal on the way up.
42417        currentParent = node.stateNode.containerInfo;
42418        currentParentIsContainer = true; // Visit children because portals might contain host components.
42419
42420        node.child.return = node;
42421        node = node.child;
42422        continue;
42423      }
42424    } else {
42425      commitUnmount(finishedRoot, node, renderPriorityLevel); // Visit children because we may find more host components below.
42426
42427      if (node.child !== null) {
42428        node.child.return = node;
42429        node = node.child;
42430        continue;
42431      }
42432    }
42433
42434    if (node === current) {
42435      return;
42436    }
42437
42438    while (node.sibling === null) {
42439      if (node.return === null || node.return === current) {
42440        return;
42441      }
42442
42443      node = node.return;
42444
42445      if (node.tag === HostPortal) {
42446        // When we go out of the portal, we need to restore the parent.
42447        // Since we don't keep a stack of them, we will search for it.
42448        currentParentIsValid = false;
42449      }
42450    }
42451
42452    node.sibling.return = node.return;
42453    node = node.sibling;
42454  }
42455}
42456
42457function commitDeletion(finishedRoot, current, renderPriorityLevel) {
42458  {
42459    // Recursively delete all host nodes from the parent.
42460    // Detach refs and call componentWillUnmount() on the whole subtree.
42461    unmountHostComponents(finishedRoot, current, renderPriorityLevel);
42462  }
42463
42464  detachFiber(current);
42465}
42466
42467function commitWork(current, finishedWork) {
42468
42469  switch (finishedWork.tag) {
42470    case FunctionComponent:
42471    case ForwardRef:
42472    case MemoComponent:
42473    case SimpleMemoComponent:
42474    case Block:
42475      {
42476        // Layout effects are destroyed during the mutation phase so that all
42477        // destroy functions for all fibers are called before any create functions.
42478        // This prevents sibling component effects from interfering with each other,
42479        // e.g. a destroy function in one component should never override a ref set
42480        // by a create function in another component during the same commit.
42481        commitHookEffectListUnmount(Layout | HasEffect, finishedWork);
42482        return;
42483      }
42484
42485    case ClassComponent:
42486      {
42487        return;
42488      }
42489
42490    case HostComponent:
42491      {
42492        var instance = finishedWork.stateNode;
42493
42494        if (instance != null) {
42495          // Commit the work prepared earlier.
42496          var newProps = finishedWork.memoizedProps; // For hydration we reuse the update path but we treat the oldProps
42497          // as the newProps. The updatePayload will contain the real change in
42498          // this case.
42499
42500          var oldProps = current !== null ? current.memoizedProps : newProps;
42501          var type = finishedWork.type; // TODO: Type the updateQueue to be specific to host components.
42502
42503          var updatePayload = finishedWork.updateQueue;
42504          finishedWork.updateQueue = null;
42505
42506          if (updatePayload !== null) {
42507            commitUpdate(instance, updatePayload, type, oldProps, newProps);
42508          }
42509        }
42510
42511        return;
42512      }
42513
42514    case HostText:
42515      {
42516        if (!(finishedWork.stateNode !== null)) {
42517          {
42518            throw Error( "This should have a text node initialized. This error is likely caused by a bug in React. Please file an issue." );
42519          }
42520        }
42521
42522        var textInstance = finishedWork.stateNode;
42523        var newText = finishedWork.memoizedProps; // For hydration we reuse the update path but we treat the oldProps
42524        // as the newProps. The updatePayload will contain the real change in
42525        // this case.
42526
42527        var oldText = current !== null ? current.memoizedProps : newText;
42528        commitTextUpdate(textInstance, oldText, newText);
42529        return;
42530      }
42531
42532    case HostRoot:
42533      {
42534        {
42535          var _root = finishedWork.stateNode;
42536
42537          if (_root.hydrate) {
42538            // We've just hydrated. No need to hydrate again.
42539            _root.hydrate = false;
42540            commitHydratedContainer(_root.containerInfo);
42541          }
42542        }
42543
42544        return;
42545      }
42546
42547    case Profiler:
42548      {
42549        return;
42550      }
42551
42552    case SuspenseComponent:
42553      {
42554        commitSuspenseComponent(finishedWork);
42555        attachSuspenseRetryListeners(finishedWork);
42556        return;
42557      }
42558
42559    case SuspenseListComponent:
42560      {
42561        attachSuspenseRetryListeners(finishedWork);
42562        return;
42563      }
42564
42565    case IncompleteClassComponent:
42566      {
42567        return;
42568      }
42569  }
42570
42571  {
42572    {
42573      throw Error( "This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue." );
42574    }
42575  }
42576}
42577
42578function commitSuspenseComponent(finishedWork) {
42579  var newState = finishedWork.memoizedState;
42580  var newDidTimeout;
42581  var primaryChildParent = finishedWork;
42582
42583  if (newState === null) {
42584    newDidTimeout = false;
42585  } else {
42586    newDidTimeout = true;
42587    primaryChildParent = finishedWork.child;
42588    markCommitTimeOfFallback();
42589  }
42590
42591  if ( primaryChildParent !== null) {
42592    hideOrUnhideAllChildren(primaryChildParent, newDidTimeout);
42593  }
42594}
42595
42596function commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {
42597
42598  var newState = finishedWork.memoizedState;
42599
42600  if (newState === null) {
42601    var current = finishedWork.alternate;
42602
42603    if (current !== null) {
42604      var prevState = current.memoizedState;
42605
42606      if (prevState !== null) {
42607        var suspenseInstance = prevState.dehydrated;
42608
42609        if (suspenseInstance !== null) {
42610          commitHydratedSuspenseInstance(suspenseInstance);
42611        }
42612      }
42613    }
42614  }
42615}
42616
42617function attachSuspenseRetryListeners(finishedWork) {
42618  // If this boundary just timed out, then it will have a set of thenables.
42619  // For each thenable, attach a listener so that when it resolves, React
42620  // attempts to re-render the boundary in the primary (pre-timeout) state.
42621  var thenables = finishedWork.updateQueue;
42622
42623  if (thenables !== null) {
42624    finishedWork.updateQueue = null;
42625    var retryCache = finishedWork.stateNode;
42626
42627    if (retryCache === null) {
42628      retryCache = finishedWork.stateNode = new PossiblyWeakSet();
42629    }
42630
42631    thenables.forEach(function (thenable) {
42632      // Memoize using the boundary fiber to prevent redundant listeners.
42633      var retry = resolveRetryThenable.bind(null, finishedWork, thenable);
42634
42635      if (!retryCache.has(thenable)) {
42636        {
42637          if (thenable.__reactDoNotTraceInteractions !== true) {
42638            retry = tracing.unstable_wrap(retry);
42639          }
42640        }
42641
42642        retryCache.add(thenable);
42643        thenable.then(retry, retry);
42644      }
42645    });
42646  }
42647}
42648
42649function commitResetTextContent(current) {
42650
42651  resetTextContent(current.stateNode);
42652}
42653
42654var PossiblyWeakMap$1 = typeof WeakMap === 'function' ? WeakMap : Map;
42655
42656function createRootErrorUpdate(fiber, errorInfo, expirationTime) {
42657  var update = createUpdate(expirationTime, null); // Unmount the root by rendering null.
42658
42659  update.tag = CaptureUpdate; // Caution: React DevTools currently depends on this property
42660  // being called "element".
42661
42662  update.payload = {
42663    element: null
42664  };
42665  var error = errorInfo.value;
42666
42667  update.callback = function () {
42668    onUncaughtError(error);
42669    logError(fiber, errorInfo);
42670  };
42671
42672  return update;
42673}
42674
42675function createClassErrorUpdate(fiber, errorInfo, expirationTime) {
42676  var update = createUpdate(expirationTime, null);
42677  update.tag = CaptureUpdate;
42678  var getDerivedStateFromError = fiber.type.getDerivedStateFromError;
42679
42680  if (typeof getDerivedStateFromError === 'function') {
42681    var error$1 = errorInfo.value;
42682
42683    update.payload = function () {
42684      logError(fiber, errorInfo);
42685      return getDerivedStateFromError(error$1);
42686    };
42687  }
42688
42689  var inst = fiber.stateNode;
42690
42691  if (inst !== null && typeof inst.componentDidCatch === 'function') {
42692    update.callback = function callback() {
42693      {
42694        markFailedErrorBoundaryForHotReloading(fiber);
42695      }
42696
42697      if (typeof getDerivedStateFromError !== 'function') {
42698        // To preserve the preexisting retry behavior of error boundaries,
42699        // we keep track of which ones already failed during this batch.
42700        // This gets reset before we yield back to the browser.
42701        // TODO: Warn in strict mode if getDerivedStateFromError is
42702        // not defined.
42703        markLegacyErrorBoundaryAsFailed(this); // Only log here if componentDidCatch is the only error boundary method defined
42704
42705        logError(fiber, errorInfo);
42706      }
42707
42708      var error$1 = errorInfo.value;
42709      var stack = errorInfo.stack;
42710      this.componentDidCatch(error$1, {
42711        componentStack: stack !== null ? stack : ''
42712      });
42713
42714      {
42715        if (typeof getDerivedStateFromError !== 'function') {
42716          // If componentDidCatch is the only error boundary method defined,
42717          // then it needs to call setState to recover from errors.
42718          // If no state update is scheduled then the boundary will swallow the error.
42719          if (fiber.expirationTime !== Sync) {
42720            error('%s: Error boundaries should implement getDerivedStateFromError(). ' + 'In that method, return a state update to display an error message or fallback UI.', getComponentName(fiber.type) || 'Unknown');
42721          }
42722        }
42723      }
42724    };
42725  } else {
42726    update.callback = function () {
42727      markFailedErrorBoundaryForHotReloading(fiber);
42728    };
42729  }
42730
42731  return update;
42732}
42733
42734function attachPingListener(root, renderExpirationTime, thenable) {
42735  // Attach a listener to the promise to "ping" the root and retry. But
42736  // only if one does not already exist for the current render expiration
42737  // time (which acts like a "thread ID" here).
42738  var pingCache = root.pingCache;
42739  var threadIDs;
42740
42741  if (pingCache === null) {
42742    pingCache = root.pingCache = new PossiblyWeakMap$1();
42743    threadIDs = new Set();
42744    pingCache.set(thenable, threadIDs);
42745  } else {
42746    threadIDs = pingCache.get(thenable);
42747
42748    if (threadIDs === undefined) {
42749      threadIDs = new Set();
42750      pingCache.set(thenable, threadIDs);
42751    }
42752  }
42753
42754  if (!threadIDs.has(renderExpirationTime)) {
42755    // Memoize using the thread ID to prevent redundant listeners.
42756    threadIDs.add(renderExpirationTime);
42757    var ping = pingSuspendedRoot.bind(null, root, thenable, renderExpirationTime);
42758    thenable.then(ping, ping);
42759  }
42760}
42761
42762function throwException(root, returnFiber, sourceFiber, value, renderExpirationTime) {
42763  // The source fiber did not complete.
42764  sourceFiber.effectTag |= Incomplete; // Its effect list is no longer valid.
42765
42766  sourceFiber.firstEffect = sourceFiber.lastEffect = null;
42767
42768  if (value !== null && typeof value === 'object' && typeof value.then === 'function') {
42769    // This is a thenable.
42770    var thenable = value;
42771
42772    if ((sourceFiber.mode & BlockingMode) === NoMode) {
42773      // Reset the memoizedState to what it was before we attempted
42774      // to render it.
42775      var currentSource = sourceFiber.alternate;
42776
42777      if (currentSource) {
42778        sourceFiber.updateQueue = currentSource.updateQueue;
42779        sourceFiber.memoizedState = currentSource.memoizedState;
42780        sourceFiber.expirationTime = currentSource.expirationTime;
42781      } else {
42782        sourceFiber.updateQueue = null;
42783        sourceFiber.memoizedState = null;
42784      }
42785    }
42786
42787    var hasInvisibleParentBoundary = hasSuspenseContext(suspenseStackCursor.current, InvisibleParentSuspenseContext); // Schedule the nearest Suspense to re-render the timed out view.
42788
42789    var _workInProgress = returnFiber;
42790
42791    do {
42792      if (_workInProgress.tag === SuspenseComponent && shouldCaptureSuspense(_workInProgress, hasInvisibleParentBoundary)) {
42793        // Found the nearest boundary.
42794        // Stash the promise on the boundary fiber. If the boundary times out, we'll
42795        // attach another listener to flip the boundary back to its normal state.
42796        var thenables = _workInProgress.updateQueue;
42797
42798        if (thenables === null) {
42799          var updateQueue = new Set();
42800          updateQueue.add(thenable);
42801          _workInProgress.updateQueue = updateQueue;
42802        } else {
42803          thenables.add(thenable);
42804        } // If the boundary is outside of blocking mode, we should *not*
42805        // suspend the commit. Pretend as if the suspended component rendered
42806        // null and keep rendering. In the commit phase, we'll schedule a
42807        // subsequent synchronous update to re-render the Suspense.
42808        //
42809        // Note: It doesn't matter whether the component that suspended was
42810        // inside a blocking mode tree. If the Suspense is outside of it, we
42811        // should *not* suspend the commit.
42812
42813
42814        if ((_workInProgress.mode & BlockingMode) === NoMode) {
42815          _workInProgress.effectTag |= DidCapture; // We're going to commit this fiber even though it didn't complete.
42816          // But we shouldn't call any lifecycle methods or callbacks. Remove
42817          // all lifecycle effect tags.
42818
42819          sourceFiber.effectTag &= ~(LifecycleEffectMask | Incomplete);
42820
42821          if (sourceFiber.tag === ClassComponent) {
42822            var currentSourceFiber = sourceFiber.alternate;
42823
42824            if (currentSourceFiber === null) {
42825              // This is a new mount. Change the tag so it's not mistaken for a
42826              // completed class component. For example, we should not call
42827              // componentWillUnmount if it is deleted.
42828              sourceFiber.tag = IncompleteClassComponent;
42829            } else {
42830              // When we try rendering again, we should not reuse the current fiber,
42831              // since it's known to be in an inconsistent state. Use a force update to
42832              // prevent a bail out.
42833              var update = createUpdate(Sync, null);
42834              update.tag = ForceUpdate;
42835              enqueueUpdate(sourceFiber, update);
42836            }
42837          } // The source fiber did not complete. Mark it with Sync priority to
42838          // indicate that it still has pending work.
42839
42840
42841          sourceFiber.expirationTime = Sync; // Exit without suspending.
42842
42843          return;
42844        } // Confirmed that the boundary is in a concurrent mode tree. Continue
42845        // with the normal suspend path.
42846        //
42847        // After this we'll use a set of heuristics to determine whether this
42848        // render pass will run to completion or restart or "suspend" the commit.
42849        // The actual logic for this is spread out in different places.
42850        //
42851        // This first principle is that if we're going to suspend when we complete
42852        // a root, then we should also restart if we get an update or ping that
42853        // might unsuspend it, and vice versa. The only reason to suspend is
42854        // because you think you might want to restart before committing. However,
42855        // it doesn't make sense to restart only while in the period we're suspended.
42856        //
42857        // Restarting too aggressively is also not good because it starves out any
42858        // intermediate loading state. So we use heuristics to determine when.
42859        // Suspense Heuristics
42860        //
42861        // If nothing threw a Promise or all the same fallbacks are already showing,
42862        // then don't suspend/restart.
42863        //
42864        // If this is an initial render of a new tree of Suspense boundaries and
42865        // those trigger a fallback, then don't suspend/restart. We want to ensure
42866        // that we can show the initial loading state as quickly as possible.
42867        //
42868        // If we hit a "Delayed" case, such as when we'd switch from content back into
42869        // a fallback, then we should always suspend/restart. SuspenseConfig applies to
42870        // this case. If none is defined, JND is used instead.
42871        //
42872        // If we're already showing a fallback and it gets "retried", allowing us to show
42873        // another level, but there's still an inner boundary that would show a fallback,
42874        // then we suspend/restart for 500ms since the last time we showed a fallback
42875        // anywhere in the tree. This effectively throttles progressive loading into a
42876        // consistent train of commits. This also gives us an opportunity to restart to
42877        // get to the completed state slightly earlier.
42878        //
42879        // If there's ambiguity due to batching it's resolved in preference of:
42880        // 1) "delayed", 2) "initial render", 3) "retry".
42881        //
42882        // We want to ensure that a "busy" state doesn't get force committed. We want to
42883        // ensure that new initial loading states can commit as soon as possible.
42884
42885
42886        attachPingListener(root, renderExpirationTime, thenable);
42887        _workInProgress.effectTag |= ShouldCapture;
42888        _workInProgress.expirationTime = renderExpirationTime;
42889        return;
42890      } // This boundary already captured during this render. Continue to the next
42891      // boundary.
42892
42893
42894      _workInProgress = _workInProgress.return;
42895    } while (_workInProgress !== null); // No boundary was found. Fallthrough to error mode.
42896    // TODO: Use invariant so the message is stripped in prod?
42897
42898
42899    value = new Error((getComponentName(sourceFiber.type) || 'A React component') + ' suspended while rendering, but no fallback UI was specified.\n' + '\n' + 'Add a <Suspense fallback=...> component higher in the tree to ' + 'provide a loading indicator or placeholder to display.' + getStackByFiberInDevAndProd(sourceFiber));
42900  } // We didn't find a boundary that could handle this type of exception. Start
42901  // over and traverse parent path again, this time treating the exception
42902  // as an error.
42903
42904
42905  renderDidError();
42906  value = createCapturedValue(value, sourceFiber);
42907  var workInProgress = returnFiber;
42908
42909  do {
42910    switch (workInProgress.tag) {
42911      case HostRoot:
42912        {
42913          var _errorInfo = value;
42914          workInProgress.effectTag |= ShouldCapture;
42915          workInProgress.expirationTime = renderExpirationTime;
42916
42917          var _update = createRootErrorUpdate(workInProgress, _errorInfo, renderExpirationTime);
42918
42919          enqueueCapturedUpdate(workInProgress, _update);
42920          return;
42921        }
42922
42923      case ClassComponent:
42924        // Capture and retry
42925        var errorInfo = value;
42926        var ctor = workInProgress.type;
42927        var instance = workInProgress.stateNode;
42928
42929        if ((workInProgress.effectTag & DidCapture) === NoEffect && (typeof ctor.getDerivedStateFromError === 'function' || instance !== null && typeof instance.componentDidCatch === 'function' && !isAlreadyFailedLegacyErrorBoundary(instance))) {
42930          workInProgress.effectTag |= ShouldCapture;
42931          workInProgress.expirationTime = renderExpirationTime; // Schedule the error boundary to re-render using updated state
42932
42933          var _update2 = createClassErrorUpdate(workInProgress, errorInfo, renderExpirationTime);
42934
42935          enqueueCapturedUpdate(workInProgress, _update2);
42936          return;
42937        }
42938
42939        break;
42940    }
42941
42942    workInProgress = workInProgress.return;
42943  } while (workInProgress !== null);
42944}
42945
42946var ceil = Math.ceil;
42947var ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher,
42948    ReactCurrentOwner$2 = ReactSharedInternals.ReactCurrentOwner,
42949    IsSomeRendererActing = ReactSharedInternals.IsSomeRendererActing;
42950var NoContext =
42951/*                    */
429520;
42953var BatchedContext =
42954/*               */
429551;
42956var EventContext =
42957/*                 */
429582;
42959var DiscreteEventContext =
42960/*         */
429614;
42962var LegacyUnbatchedContext =
42963/*       */
429648;
42965var RenderContext =
42966/*                */
4296716;
42968var CommitContext =
42969/*                */
4297032;
42971var RootIncomplete = 0;
42972var RootFatalErrored = 1;
42973var RootErrored = 2;
42974var RootSuspended = 3;
42975var RootSuspendedWithDelay = 4;
42976var RootCompleted = 5;
42977// Describes where we are in the React execution stack
42978var executionContext = NoContext; // The root we're working on
42979
42980var workInProgressRoot = null; // The fiber we're working on
42981
42982var workInProgress = null; // The expiration time we're rendering
42983
42984var renderExpirationTime$1 = NoWork; // Whether to root completed, errored, suspended, etc.
42985
42986var workInProgressRootExitStatus = RootIncomplete; // A fatal error, if one is thrown
42987
42988var workInProgressRootFatalError = null; // Most recent event time among processed updates during this render.
42989// This is conceptually a time stamp but expressed in terms of an ExpirationTime
42990// because we deal mostly with expiration times in the hot path, so this avoids
42991// the conversion happening in the hot path.
42992
42993var workInProgressRootLatestProcessedExpirationTime = Sync;
42994var workInProgressRootLatestSuspenseTimeout = Sync;
42995var workInProgressRootCanSuspendUsingConfig = null; // The work left over by components that were visited during this render. Only
42996// includes unprocessed updates, not work in bailed out children.
42997
42998var workInProgressRootNextUnprocessedUpdateTime = NoWork; // If we're pinged while rendering we don't always restart immediately.
42999// This flag determines if it might be worthwhile to restart if an opportunity
43000// happens latere.
43001
43002var workInProgressRootHasPendingPing = false; // The most recent time we committed a fallback. This lets us ensure a train
43003// model where we don't commit new loading states in too quick succession.
43004
43005var globalMostRecentFallbackTime = 0;
43006var FALLBACK_THROTTLE_MS = 500;
43007var nextEffect = null;
43008var hasUncaughtError = false;
43009var firstUncaughtError = null;
43010var legacyErrorBoundariesThatAlreadyFailed = null;
43011var rootDoesHavePassiveEffects = false;
43012var rootWithPendingPassiveEffects = null;
43013var pendingPassiveEffectsRenderPriority = NoPriority;
43014var pendingPassiveEffectsExpirationTime = NoWork;
43015var rootsWithPendingDiscreteUpdates = null; // Use these to prevent an infinite loop of nested updates
43016
43017var NESTED_UPDATE_LIMIT = 50;
43018var nestedUpdateCount = 0;
43019var rootWithNestedUpdates = null;
43020var NESTED_PASSIVE_UPDATE_LIMIT = 50;
43021var nestedPassiveUpdateCount = 0;
43022var interruptedBy = null; // Marks the need to reschedule pending interactions at these expiration times
43023// during the commit phase. This enables them to be traced across components
43024// that spawn new work during render. E.g. hidden boundaries, suspended SSR
43025// hydration or SuspenseList.
43026
43027var spawnedWorkDuringRender = null; // Expiration times are computed by adding to the current time (the start
43028// time). However, if two updates are scheduled within the same event, we
43029// should treat their start times as simultaneous, even if the actual clock
43030// time has advanced between the first and second call.
43031// In other words, because expiration times determine how updates are batched,
43032// we want all updates of like priority that occur within the same event to
43033// receive the same expiration time. Otherwise we get tearing.
43034
43035var currentEventTime = NoWork;
43036function requestCurrentTimeForUpdate() {
43037  if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {
43038    // We're inside React, so it's fine to read the actual time.
43039    return msToExpirationTime(now());
43040  } // We're not inside React, so we may be in the middle of a browser event.
43041
43042
43043  if (currentEventTime !== NoWork) {
43044    // Use the same start time for all updates until we enter React again.
43045    return currentEventTime;
43046  } // This is the first update since React yielded. Compute a new start time.
43047
43048
43049  currentEventTime = msToExpirationTime(now());
43050  return currentEventTime;
43051}
43052function getCurrentTime() {
43053  return msToExpirationTime(now());
43054}
43055function computeExpirationForFiber(currentTime, fiber, suspenseConfig) {
43056  var mode = fiber.mode;
43057
43058  if ((mode & BlockingMode) === NoMode) {
43059    return Sync;
43060  }
43061
43062  var priorityLevel = getCurrentPriorityLevel();
43063
43064  if ((mode & ConcurrentMode) === NoMode) {
43065    return priorityLevel === ImmediatePriority ? Sync : Batched;
43066  }
43067
43068  if ((executionContext & RenderContext) !== NoContext) {
43069    // Use whatever time we're already rendering
43070    // TODO: Should there be a way to opt out, like with `runWithPriority`?
43071    return renderExpirationTime$1;
43072  }
43073
43074  var expirationTime;
43075
43076  if (suspenseConfig !== null) {
43077    // Compute an expiration time based on the Suspense timeout.
43078    expirationTime = computeSuspenseExpiration(currentTime, suspenseConfig.timeoutMs | 0 || LOW_PRIORITY_EXPIRATION);
43079  } else {
43080    // Compute an expiration time based on the Scheduler priority.
43081    switch (priorityLevel) {
43082      case ImmediatePriority:
43083        expirationTime = Sync;
43084        break;
43085
43086      case UserBlockingPriority$1:
43087        // TODO: Rename this to computeUserBlockingExpiration
43088        expirationTime = computeInteractiveExpiration(currentTime);
43089        break;
43090
43091      case NormalPriority:
43092      case LowPriority:
43093        // TODO: Handle LowPriority
43094        // TODO: Rename this to... something better.
43095        expirationTime = computeAsyncExpiration(currentTime);
43096        break;
43097
43098      case IdlePriority:
43099        expirationTime = Idle;
43100        break;
43101
43102      default:
43103        {
43104          {
43105            throw Error( "Expected a valid priority level" );
43106          }
43107        }
43108
43109    }
43110  } // If we're in the middle of rendering a tree, do not update at the same
43111  // expiration time that is already rendering.
43112  // TODO: We shouldn't have to do this if the update is on a different root.
43113  // Refactor computeExpirationForFiber + scheduleUpdate so we have access to
43114  // the root when we check for this condition.
43115
43116
43117  if (workInProgressRoot !== null && expirationTime === renderExpirationTime$1) {
43118    // This is a trick to move this update into a separate batch
43119    expirationTime -= 1;
43120  }
43121
43122  return expirationTime;
43123}
43124function scheduleUpdateOnFiber(fiber, expirationTime) {
43125  checkForNestedUpdates();
43126  warnAboutRenderPhaseUpdatesInDEV(fiber);
43127  var root = markUpdateTimeFromFiberToRoot(fiber, expirationTime);
43128
43129  if (root === null) {
43130    warnAboutUpdateOnUnmountedFiberInDEV(fiber);
43131    return;
43132  }
43133
43134  checkForInterruption(fiber, expirationTime);
43135  recordScheduleUpdate(); // TODO: computeExpirationForFiber also reads the priority. Pass the
43136  // priority as an argument to that function and this one.
43137
43138  var priorityLevel = getCurrentPriorityLevel();
43139
43140  if (expirationTime === Sync) {
43141    if ( // Check if we're inside unbatchedUpdates
43142    (executionContext & LegacyUnbatchedContext) !== NoContext && // Check if we're not already rendering
43143    (executionContext & (RenderContext | CommitContext)) === NoContext) {
43144      // Register pending interactions on the root to avoid losing traced interaction data.
43145      schedulePendingInteractions(root, expirationTime); // This is a legacy edge case. The initial mount of a ReactDOM.render-ed
43146      // root inside of batchedUpdates should be synchronous, but layout updates
43147      // should be deferred until the end of the batch.
43148
43149      performSyncWorkOnRoot(root);
43150    } else {
43151      ensureRootIsScheduled(root);
43152      schedulePendingInteractions(root, expirationTime);
43153
43154      if (executionContext === NoContext) {
43155        // Flush the synchronous work now, unless we're already working or inside
43156        // a batch. This is intentionally inside scheduleUpdateOnFiber instead of
43157        // scheduleCallbackForFiber to preserve the ability to schedule a callback
43158        // without immediately flushing it. We only do this for user-initiated
43159        // updates, to preserve historical behavior of legacy mode.
43160        flushSyncCallbackQueue();
43161      }
43162    }
43163  } else {
43164    ensureRootIsScheduled(root);
43165    schedulePendingInteractions(root, expirationTime);
43166  }
43167
43168  if ((executionContext & DiscreteEventContext) !== NoContext && ( // Only updates at user-blocking priority or greater are considered
43169  // discrete, even inside a discrete event.
43170  priorityLevel === UserBlockingPriority$1 || priorityLevel === ImmediatePriority)) {
43171    // This is the result of a discrete event. Track the lowest priority
43172    // discrete update per root so we can flush them early, if needed.
43173    if (rootsWithPendingDiscreteUpdates === null) {
43174      rootsWithPendingDiscreteUpdates = new Map([[root, expirationTime]]);
43175    } else {
43176      var lastDiscreteTime = rootsWithPendingDiscreteUpdates.get(root);
43177
43178      if (lastDiscreteTime === undefined || lastDiscreteTime > expirationTime) {
43179        rootsWithPendingDiscreteUpdates.set(root, expirationTime);
43180      }
43181    }
43182  }
43183}
43184var scheduleWork = scheduleUpdateOnFiber; // This is split into a separate function so we can mark a fiber with pending
43185// work without treating it as a typical update that originates from an event;
43186// e.g. retrying a Suspense boundary isn't an update, but it does schedule work
43187// on a fiber.
43188
43189function markUpdateTimeFromFiberToRoot(fiber, expirationTime) {
43190  // Update the source fiber's expiration time
43191  if (fiber.expirationTime < expirationTime) {
43192    fiber.expirationTime = expirationTime;
43193  }
43194
43195  var alternate = fiber.alternate;
43196
43197  if (alternate !== null && alternate.expirationTime < expirationTime) {
43198    alternate.expirationTime = expirationTime;
43199  } // Walk the parent path to the root and update the child expiration time.
43200
43201
43202  var node = fiber.return;
43203  var root = null;
43204
43205  if (node === null && fiber.tag === HostRoot) {
43206    root = fiber.stateNode;
43207  } else {
43208    while (node !== null) {
43209      alternate = node.alternate;
43210
43211      if (node.childExpirationTime < expirationTime) {
43212        node.childExpirationTime = expirationTime;
43213
43214        if (alternate !== null && alternate.childExpirationTime < expirationTime) {
43215          alternate.childExpirationTime = expirationTime;
43216        }
43217      } else if (alternate !== null && alternate.childExpirationTime < expirationTime) {
43218        alternate.childExpirationTime = expirationTime;
43219      }
43220
43221      if (node.return === null && node.tag === HostRoot) {
43222        root = node.stateNode;
43223        break;
43224      }
43225
43226      node = node.return;
43227    }
43228  }
43229
43230  if (root !== null) {
43231    if (workInProgressRoot === root) {
43232      // Received an update to a tree that's in the middle of rendering. Mark
43233      // that's unprocessed work on this root.
43234      markUnprocessedUpdateTime(expirationTime);
43235
43236      if (workInProgressRootExitStatus === RootSuspendedWithDelay) {
43237        // The root already suspended with a delay, which means this render
43238        // definitely won't finish. Since we have a new update, let's mark it as
43239        // suspended now, right before marking the incoming update. This has the
43240        // effect of interrupting the current render and switching to the update.
43241        // TODO: This happens to work when receiving an update during the render
43242        // phase, because of the trick inside computeExpirationForFiber to
43243        // subtract 1 from `renderExpirationTime` to move it into a
43244        // separate bucket. But we should probably model it with an exception,
43245        // using the same mechanism we use to force hydration of a subtree.
43246        // TODO: This does not account for low pri updates that were already
43247        // scheduled before the root started rendering. Need to track the next
43248        // pending expiration time (perhaps by backtracking the return path) and
43249        // then trigger a restart in the `renderDidSuspendDelayIfPossible` path.
43250        markRootSuspendedAtTime(root, renderExpirationTime$1);
43251      }
43252    } // Mark that the root has a pending update.
43253
43254
43255    markRootUpdatedAtTime(root, expirationTime);
43256  }
43257
43258  return root;
43259}
43260
43261function getNextRootExpirationTimeToWorkOn(root) {
43262  // Determines the next expiration time that the root should render, taking
43263  // into account levels that may be suspended, or levels that may have
43264  // received a ping.
43265  var lastExpiredTime = root.lastExpiredTime;
43266
43267  if (lastExpiredTime !== NoWork) {
43268    return lastExpiredTime;
43269  } // "Pending" refers to any update that hasn't committed yet, including if it
43270  // suspended. The "suspended" range is therefore a subset.
43271
43272
43273  var firstPendingTime = root.firstPendingTime;
43274
43275  if (!isRootSuspendedAtTime(root, firstPendingTime)) {
43276    // The highest priority pending time is not suspended. Let's work on that.
43277    return firstPendingTime;
43278  } // If the first pending time is suspended, check if there's a lower priority
43279  // pending level that we know about. Or check if we received a ping. Work
43280  // on whichever is higher priority.
43281
43282
43283  var lastPingedTime = root.lastPingedTime;
43284  var nextKnownPendingLevel = root.nextKnownPendingLevel;
43285  var nextLevel = lastPingedTime > nextKnownPendingLevel ? lastPingedTime : nextKnownPendingLevel;
43286
43287  if ( nextLevel <= Idle && firstPendingTime !== nextLevel) {
43288    // Don't work on Idle/Never priority unless everything else is committed.
43289    return NoWork;
43290  }
43291
43292  return nextLevel;
43293} // Use this function to schedule a task for a root. There's only one task per
43294// root; if a task was already scheduled, we'll check to make sure the
43295// expiration time of the existing task is the same as the expiration time of
43296// the next level that the root has work on. This function is called on every
43297// update, and right before exiting a task.
43298
43299
43300function ensureRootIsScheduled(root) {
43301  var lastExpiredTime = root.lastExpiredTime;
43302
43303  if (lastExpiredTime !== NoWork) {
43304    // Special case: Expired work should flush synchronously.
43305    root.callbackExpirationTime = Sync;
43306    root.callbackPriority = ImmediatePriority;
43307    root.callbackNode = scheduleSyncCallback(performSyncWorkOnRoot.bind(null, root));
43308    return;
43309  }
43310
43311  var expirationTime = getNextRootExpirationTimeToWorkOn(root);
43312  var existingCallbackNode = root.callbackNode;
43313
43314  if (expirationTime === NoWork) {
43315    // There's nothing to work on.
43316    if (existingCallbackNode !== null) {
43317      root.callbackNode = null;
43318      root.callbackExpirationTime = NoWork;
43319      root.callbackPriority = NoPriority;
43320    }
43321
43322    return;
43323  } // TODO: If this is an update, we already read the current time. Pass the
43324  // time as an argument.
43325
43326
43327  var currentTime = requestCurrentTimeForUpdate();
43328  var priorityLevel = inferPriorityFromExpirationTime(currentTime, expirationTime); // If there's an existing render task, confirm it has the correct priority and
43329  // expiration time. Otherwise, we'll cancel it and schedule a new one.
43330
43331  if (existingCallbackNode !== null) {
43332    var existingCallbackPriority = root.callbackPriority;
43333    var existingCallbackExpirationTime = root.callbackExpirationTime;
43334
43335    if ( // Callback must have the exact same expiration time.
43336    existingCallbackExpirationTime === expirationTime && // Callback must have greater or equal priority.
43337    existingCallbackPriority >= priorityLevel) {
43338      // Existing callback is sufficient.
43339      return;
43340    } // Need to schedule a new task.
43341    // TODO: Instead of scheduling a new task, we should be able to change the
43342    // priority of the existing one.
43343
43344
43345    cancelCallback(existingCallbackNode);
43346  }
43347
43348  root.callbackExpirationTime = expirationTime;
43349  root.callbackPriority = priorityLevel;
43350  var callbackNode;
43351
43352  if (expirationTime === Sync) {
43353    // Sync React callbacks are scheduled on a special internal queue
43354    callbackNode = scheduleSyncCallback(performSyncWorkOnRoot.bind(null, root));
43355  } else {
43356    callbackNode = scheduleCallback(priorityLevel, performConcurrentWorkOnRoot.bind(null, root), // Compute a task timeout based on the expiration time. This also affects
43357    // ordering because tasks are processed in timeout order.
43358    {
43359      timeout: expirationTimeToMs(expirationTime) - now()
43360    });
43361  }
43362
43363  root.callbackNode = callbackNode;
43364} // This is the entry point for every concurrent task, i.e. anything that
43365// goes through Scheduler.
43366
43367
43368function performConcurrentWorkOnRoot(root, didTimeout) {
43369  // Since we know we're in a React event, we can clear the current
43370  // event time. The next update will compute a new event time.
43371  currentEventTime = NoWork;
43372
43373  if (didTimeout) {
43374    // The render task took too long to complete. Mark the current time as
43375    // expired to synchronously render all expired work in a single batch.
43376    var currentTime = requestCurrentTimeForUpdate();
43377    markRootExpiredAtTime(root, currentTime); // This will schedule a synchronous callback.
43378
43379    ensureRootIsScheduled(root);
43380    return null;
43381  } // Determine the next expiration time to work on, using the fields stored
43382  // on the root.
43383
43384
43385  var expirationTime = getNextRootExpirationTimeToWorkOn(root);
43386
43387  if (expirationTime !== NoWork) {
43388    var originalCallbackNode = root.callbackNode;
43389
43390    if (!((executionContext & (RenderContext | CommitContext)) === NoContext)) {
43391      {
43392        throw Error( "Should not already be working." );
43393      }
43394    }
43395
43396    flushPassiveEffects(); // If the root or expiration time have changed, throw out the existing stack
43397    // and prepare a fresh one. Otherwise we'll continue where we left off.
43398
43399    if (root !== workInProgressRoot || expirationTime !== renderExpirationTime$1) {
43400      prepareFreshStack(root, expirationTime);
43401      startWorkOnPendingInteractions(root, expirationTime);
43402    } // If we have a work-in-progress fiber, it means there's still work to do
43403    // in this root.
43404
43405
43406    if (workInProgress !== null) {
43407      var prevExecutionContext = executionContext;
43408      executionContext |= RenderContext;
43409      var prevDispatcher = pushDispatcher();
43410      var prevInteractions = pushInteractions(root);
43411      startWorkLoopTimer(workInProgress);
43412
43413      do {
43414        try {
43415          workLoopConcurrent();
43416          break;
43417        } catch (thrownValue) {
43418          handleError(root, thrownValue);
43419        }
43420      } while (true);
43421
43422      resetContextDependencies();
43423      executionContext = prevExecutionContext;
43424      popDispatcher(prevDispatcher);
43425
43426      {
43427        popInteractions(prevInteractions);
43428      }
43429
43430      if (workInProgressRootExitStatus === RootFatalErrored) {
43431        var fatalError = workInProgressRootFatalError;
43432        stopInterruptedWorkLoopTimer();
43433        prepareFreshStack(root, expirationTime);
43434        markRootSuspendedAtTime(root, expirationTime);
43435        ensureRootIsScheduled(root);
43436        throw fatalError;
43437      }
43438
43439      if (workInProgress !== null) {
43440        // There's still work left over. Exit without committing.
43441        stopInterruptedWorkLoopTimer();
43442      } else {
43443        // We now have a consistent tree. The next step is either to commit it,
43444        // or, if something suspended, wait to commit it after a timeout.
43445        stopFinishedWorkLoopTimer();
43446        var finishedWork = root.finishedWork = root.current.alternate;
43447        root.finishedExpirationTime = expirationTime;
43448        finishConcurrentRender(root, finishedWork, workInProgressRootExitStatus, expirationTime);
43449      }
43450
43451      ensureRootIsScheduled(root);
43452
43453      if (root.callbackNode === originalCallbackNode) {
43454        // The task node scheduled for this root is the same one that's
43455        // currently executed. Need to return a continuation.
43456        return performConcurrentWorkOnRoot.bind(null, root);
43457      }
43458    }
43459  }
43460
43461  return null;
43462}
43463
43464function finishConcurrentRender(root, finishedWork, exitStatus, expirationTime) {
43465  // Set this to null to indicate there's no in-progress render.
43466  workInProgressRoot = null;
43467
43468  switch (exitStatus) {
43469    case RootIncomplete:
43470    case RootFatalErrored:
43471      {
43472        {
43473          {
43474            throw Error( "Root did not complete. This is a bug in React." );
43475          }
43476        }
43477      }
43478    // Flow knows about invariant, so it complains if I add a break
43479    // statement, but eslint doesn't know about invariant, so it complains
43480    // if I do. eslint-disable-next-line no-fallthrough
43481
43482    case RootErrored:
43483      {
43484        // If this was an async render, the error may have happened due to
43485        // a mutation in a concurrent event. Try rendering one more time,
43486        // synchronously, to see if the error goes away. If there are
43487        // lower priority updates, let's include those, too, in case they
43488        // fix the inconsistency. Render at Idle to include all updates.
43489        // If it was Idle or Never or some not-yet-invented time, render
43490        // at that time.
43491        markRootExpiredAtTime(root, expirationTime > Idle ? Idle : expirationTime); // We assume that this second render pass will be synchronous
43492        // and therefore not hit this path again.
43493
43494        break;
43495      }
43496
43497    case RootSuspended:
43498      {
43499        markRootSuspendedAtTime(root, expirationTime);
43500        var lastSuspendedTime = root.lastSuspendedTime;
43501
43502        if (expirationTime === lastSuspendedTime) {
43503          root.nextKnownPendingLevel = getRemainingExpirationTime(finishedWork);
43504        } // We have an acceptable loading state. We need to figure out if we
43505        // should immediately commit it or wait a bit.
43506        // If we have processed new updates during this render, we may now
43507        // have a new loading state ready. We want to ensure that we commit
43508        // that as soon as possible.
43509
43510
43511        var hasNotProcessedNewUpdates = workInProgressRootLatestProcessedExpirationTime === Sync;
43512
43513        if (hasNotProcessedNewUpdates && // do not delay if we're inside an act() scope
43514        !( IsThisRendererActing.current)) {
43515          // If we have not processed any new updates during this pass, then
43516          // this is either a retry of an existing fallback state or a
43517          // hidden tree. Hidden trees shouldn't be batched with other work
43518          // and after that's fixed it can only be a retry. We're going to
43519          // throttle committing retries so that we don't show too many
43520          // loading states too quickly.
43521          var msUntilTimeout = globalMostRecentFallbackTime + FALLBACK_THROTTLE_MS - now(); // Don't bother with a very short suspense time.
43522
43523          if (msUntilTimeout > 10) {
43524            if (workInProgressRootHasPendingPing) {
43525              var lastPingedTime = root.lastPingedTime;
43526
43527              if (lastPingedTime === NoWork || lastPingedTime >= expirationTime) {
43528                // This render was pinged but we didn't get to restart
43529                // earlier so try restarting now instead.
43530                root.lastPingedTime = expirationTime;
43531                prepareFreshStack(root, expirationTime);
43532                break;
43533              }
43534            }
43535
43536            var nextTime = getNextRootExpirationTimeToWorkOn(root);
43537
43538            if (nextTime !== NoWork && nextTime !== expirationTime) {
43539              // There's additional work on this root.
43540              break;
43541            }
43542
43543            if (lastSuspendedTime !== NoWork && lastSuspendedTime !== expirationTime) {
43544              // We should prefer to render the fallback of at the last
43545              // suspended level. Ping the last suspended level to try
43546              // rendering it again.
43547              root.lastPingedTime = lastSuspendedTime;
43548              break;
43549            } // The render is suspended, it hasn't timed out, and there's no
43550            // lower priority work to do. Instead of committing the fallback
43551            // immediately, wait for more data to arrive.
43552
43553
43554            root.timeoutHandle = scheduleTimeout(commitRoot.bind(null, root), msUntilTimeout);
43555            break;
43556          }
43557        } // The work expired. Commit immediately.
43558
43559
43560        commitRoot(root);
43561        break;
43562      }
43563
43564    case RootSuspendedWithDelay:
43565      {
43566        markRootSuspendedAtTime(root, expirationTime);
43567        var _lastSuspendedTime = root.lastSuspendedTime;
43568
43569        if (expirationTime === _lastSuspendedTime) {
43570          root.nextKnownPendingLevel = getRemainingExpirationTime(finishedWork);
43571        }
43572
43573        if ( // do not delay if we're inside an act() scope
43574        !( IsThisRendererActing.current)) {
43575          // We're suspended in a state that should be avoided. We'll try to
43576          // avoid committing it for as long as the timeouts let us.
43577          if (workInProgressRootHasPendingPing) {
43578            var _lastPingedTime = root.lastPingedTime;
43579
43580            if (_lastPingedTime === NoWork || _lastPingedTime >= expirationTime) {
43581              // This render was pinged but we didn't get to restart earlier
43582              // so try restarting now instead.
43583              root.lastPingedTime = expirationTime;
43584              prepareFreshStack(root, expirationTime);
43585              break;
43586            }
43587          }
43588
43589          var _nextTime = getNextRootExpirationTimeToWorkOn(root);
43590
43591          if (_nextTime !== NoWork && _nextTime !== expirationTime) {
43592            // There's additional work on this root.
43593            break;
43594          }
43595
43596          if (_lastSuspendedTime !== NoWork && _lastSuspendedTime !== expirationTime) {
43597            // We should prefer to render the fallback of at the last
43598            // suspended level. Ping the last suspended level to try
43599            // rendering it again.
43600            root.lastPingedTime = _lastSuspendedTime;
43601            break;
43602          }
43603
43604          var _msUntilTimeout;
43605
43606          if (workInProgressRootLatestSuspenseTimeout !== Sync) {
43607            // We have processed a suspense config whose expiration time we
43608            // can use as the timeout.
43609            _msUntilTimeout = expirationTimeToMs(workInProgressRootLatestSuspenseTimeout) - now();
43610          } else if (workInProgressRootLatestProcessedExpirationTime === Sync) {
43611            // This should never normally happen because only new updates
43612            // cause delayed states, so we should have processed something.
43613            // However, this could also happen in an offscreen tree.
43614            _msUntilTimeout = 0;
43615          } else {
43616            // If we don't have a suspense config, we're going to use a
43617            // heuristic to determine how long we can suspend.
43618            var eventTimeMs = inferTimeFromExpirationTime(workInProgressRootLatestProcessedExpirationTime);
43619            var currentTimeMs = now();
43620            var timeUntilExpirationMs = expirationTimeToMs(expirationTime) - currentTimeMs;
43621            var timeElapsed = currentTimeMs - eventTimeMs;
43622
43623            if (timeElapsed < 0) {
43624              // We get this wrong some time since we estimate the time.
43625              timeElapsed = 0;
43626            }
43627
43628            _msUntilTimeout = jnd(timeElapsed) - timeElapsed; // Clamp the timeout to the expiration time. TODO: Once the
43629            // event time is exact instead of inferred from expiration time
43630            // we don't need this.
43631
43632            if (timeUntilExpirationMs < _msUntilTimeout) {
43633              _msUntilTimeout = timeUntilExpirationMs;
43634            }
43635          } // Don't bother with a very short suspense time.
43636
43637
43638          if (_msUntilTimeout > 10) {
43639            // The render is suspended, it hasn't timed out, and there's no
43640            // lower priority work to do. Instead of committing the fallback
43641            // immediately, wait for more data to arrive.
43642            root.timeoutHandle = scheduleTimeout(commitRoot.bind(null, root), _msUntilTimeout);
43643            break;
43644          }
43645        } // The work expired. Commit immediately.
43646
43647
43648        commitRoot(root);
43649        break;
43650      }
43651
43652    case RootCompleted:
43653      {
43654        // The work completed. Ready to commit.
43655        if ( // do not delay if we're inside an act() scope
43656        !( IsThisRendererActing.current) && workInProgressRootLatestProcessedExpirationTime !== Sync && workInProgressRootCanSuspendUsingConfig !== null) {
43657          // If we have exceeded the minimum loading delay, which probably
43658          // means we have shown a spinner already, we might have to suspend
43659          // a bit longer to ensure that the spinner is shown for
43660          // enough time.
43661          var _msUntilTimeout2 = computeMsUntilSuspenseLoadingDelay(workInProgressRootLatestProcessedExpirationTime, expirationTime, workInProgressRootCanSuspendUsingConfig);
43662
43663          if (_msUntilTimeout2 > 10) {
43664            markRootSuspendedAtTime(root, expirationTime);
43665            root.timeoutHandle = scheduleTimeout(commitRoot.bind(null, root), _msUntilTimeout2);
43666            break;
43667          }
43668        }
43669
43670        commitRoot(root);
43671        break;
43672      }
43673
43674    default:
43675      {
43676        {
43677          {
43678            throw Error( "Unknown root exit status." );
43679          }
43680        }
43681      }
43682  }
43683} // This is the entry point for synchronous tasks that don't go
43684// through Scheduler
43685
43686
43687function performSyncWorkOnRoot(root) {
43688  // Check if there's expired work on this root. Otherwise, render at Sync.
43689  var lastExpiredTime = root.lastExpiredTime;
43690  var expirationTime = lastExpiredTime !== NoWork ? lastExpiredTime : Sync;
43691
43692  if (!((executionContext & (RenderContext | CommitContext)) === NoContext)) {
43693    {
43694      throw Error( "Should not already be working." );
43695    }
43696  }
43697
43698  flushPassiveEffects(); // If the root or expiration time have changed, throw out the existing stack
43699  // and prepare a fresh one. Otherwise we'll continue where we left off.
43700
43701  if (root !== workInProgressRoot || expirationTime !== renderExpirationTime$1) {
43702    prepareFreshStack(root, expirationTime);
43703    startWorkOnPendingInteractions(root, expirationTime);
43704  } // If we have a work-in-progress fiber, it means there's still work to do
43705  // in this root.
43706
43707
43708  if (workInProgress !== null) {
43709    var prevExecutionContext = executionContext;
43710    executionContext |= RenderContext;
43711    var prevDispatcher = pushDispatcher();
43712    var prevInteractions = pushInteractions(root);
43713    startWorkLoopTimer(workInProgress);
43714
43715    do {
43716      try {
43717        workLoopSync();
43718        break;
43719      } catch (thrownValue) {
43720        handleError(root, thrownValue);
43721      }
43722    } while (true);
43723
43724    resetContextDependencies();
43725    executionContext = prevExecutionContext;
43726    popDispatcher(prevDispatcher);
43727
43728    {
43729      popInteractions(prevInteractions);
43730    }
43731
43732    if (workInProgressRootExitStatus === RootFatalErrored) {
43733      var fatalError = workInProgressRootFatalError;
43734      stopInterruptedWorkLoopTimer();
43735      prepareFreshStack(root, expirationTime);
43736      markRootSuspendedAtTime(root, expirationTime);
43737      ensureRootIsScheduled(root);
43738      throw fatalError;
43739    }
43740
43741    if (workInProgress !== null) {
43742      // This is a sync render, so we should have finished the whole tree.
43743      {
43744        {
43745          throw Error( "Cannot commit an incomplete root. This error is likely caused by a bug in React. Please file an issue." );
43746        }
43747      }
43748    } else {
43749      // We now have a consistent tree. Because this is a sync render, we
43750      // will commit it even if something suspended.
43751      stopFinishedWorkLoopTimer();
43752      root.finishedWork = root.current.alternate;
43753      root.finishedExpirationTime = expirationTime;
43754      finishSyncRender(root);
43755    } // Before exiting, make sure there's a callback scheduled for the next
43756    // pending level.
43757
43758
43759    ensureRootIsScheduled(root);
43760  }
43761
43762  return null;
43763}
43764
43765function finishSyncRender(root) {
43766  // Set this to null to indicate there's no in-progress render.
43767  workInProgressRoot = null;
43768  commitRoot(root);
43769}
43770function flushDiscreteUpdates() {
43771  // TODO: Should be able to flush inside batchedUpdates, but not inside `act`.
43772  // However, `act` uses `batchedUpdates`, so there's no way to distinguish
43773  // those two cases. Need to fix this before exposing flushDiscreteUpdates
43774  // as a public API.
43775  if ((executionContext & (BatchedContext | RenderContext | CommitContext)) !== NoContext) {
43776    {
43777      if ((executionContext & RenderContext) !== NoContext) {
43778        error('unstable_flushDiscreteUpdates: Cannot flush updates when React is ' + 'already rendering.');
43779      }
43780    } // We're already rendering, so we can't synchronously flush pending work.
43781    // This is probably a nested event dispatch triggered by a lifecycle/effect,
43782    // like `el.focus()`. Exit.
43783
43784
43785    return;
43786  }
43787
43788  flushPendingDiscreteUpdates(); // If the discrete updates scheduled passive effects, flush them now so that
43789  // they fire before the next serial event.
43790
43791  flushPassiveEffects();
43792}
43793function syncUpdates(fn, a, b, c) {
43794  return runWithPriority$1(ImmediatePriority, fn.bind(null, a, b, c));
43795}
43796
43797function flushPendingDiscreteUpdates() {
43798  if (rootsWithPendingDiscreteUpdates !== null) {
43799    // For each root with pending discrete updates, schedule a callback to
43800    // immediately flush them.
43801    var roots = rootsWithPendingDiscreteUpdates;
43802    rootsWithPendingDiscreteUpdates = null;
43803    roots.forEach(function (expirationTime, root) {
43804      markRootExpiredAtTime(root, expirationTime);
43805      ensureRootIsScheduled(root);
43806    }); // Now flush the immediate queue.
43807
43808    flushSyncCallbackQueue();
43809  }
43810}
43811
43812function batchedUpdates$1(fn, a) {
43813  var prevExecutionContext = executionContext;
43814  executionContext |= BatchedContext;
43815
43816  try {
43817    return fn(a);
43818  } finally {
43819    executionContext = prevExecutionContext;
43820
43821    if (executionContext === NoContext) {
43822      // Flush the immediate callbacks that were scheduled during this batch
43823      flushSyncCallbackQueue();
43824    }
43825  }
43826}
43827function batchedEventUpdates$1(fn, a) {
43828  var prevExecutionContext = executionContext;
43829  executionContext |= EventContext;
43830
43831  try {
43832    return fn(a);
43833  } finally {
43834    executionContext = prevExecutionContext;
43835
43836    if (executionContext === NoContext) {
43837      // Flush the immediate callbacks that were scheduled during this batch
43838      flushSyncCallbackQueue();
43839    }
43840  }
43841}
43842function discreteUpdates$1(fn, a, b, c, d) {
43843  var prevExecutionContext = executionContext;
43844  executionContext |= DiscreteEventContext;
43845
43846  try {
43847    // Should this
43848    return runWithPriority$1(UserBlockingPriority$1, fn.bind(null, a, b, c, d));
43849  } finally {
43850    executionContext = prevExecutionContext;
43851
43852    if (executionContext === NoContext) {
43853      // Flush the immediate callbacks that were scheduled during this batch
43854      flushSyncCallbackQueue();
43855    }
43856  }
43857}
43858function unbatchedUpdates(fn, a) {
43859  var prevExecutionContext = executionContext;
43860  executionContext &= ~BatchedContext;
43861  executionContext |= LegacyUnbatchedContext;
43862
43863  try {
43864    return fn(a);
43865  } finally {
43866    executionContext = prevExecutionContext;
43867
43868    if (executionContext === NoContext) {
43869      // Flush the immediate callbacks that were scheduled during this batch
43870      flushSyncCallbackQueue();
43871    }
43872  }
43873}
43874function flushSync(fn, a) {
43875  if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {
43876    {
43877      {
43878        throw Error( "flushSync was called from inside a lifecycle method. It cannot be called when React is already rendering." );
43879      }
43880    }
43881  }
43882
43883  var prevExecutionContext = executionContext;
43884  executionContext |= BatchedContext;
43885
43886  try {
43887    return runWithPriority$1(ImmediatePriority, fn.bind(null, a));
43888  } finally {
43889    executionContext = prevExecutionContext; // Flush the immediate callbacks that were scheduled during this batch.
43890    // Note that this will happen even if batchedUpdates is higher up
43891    // the stack.
43892
43893    flushSyncCallbackQueue();
43894  }
43895}
43896
43897function prepareFreshStack(root, expirationTime) {
43898  root.finishedWork = null;
43899  root.finishedExpirationTime = NoWork;
43900  var timeoutHandle = root.timeoutHandle;
43901
43902  if (timeoutHandle !== noTimeout) {
43903    // The root previous suspended and scheduled a timeout to commit a fallback
43904    // state. Now that we have additional work, cancel the timeout.
43905    root.timeoutHandle = noTimeout; // $FlowFixMe Complains noTimeout is not a TimeoutID, despite the check above
43906
43907    cancelTimeout(timeoutHandle);
43908  }
43909
43910  if (workInProgress !== null) {
43911    var interruptedWork = workInProgress.return;
43912
43913    while (interruptedWork !== null) {
43914      unwindInterruptedWork(interruptedWork);
43915      interruptedWork = interruptedWork.return;
43916    }
43917  }
43918
43919  workInProgressRoot = root;
43920  workInProgress = createWorkInProgress(root.current, null);
43921  renderExpirationTime$1 = expirationTime;
43922  workInProgressRootExitStatus = RootIncomplete;
43923  workInProgressRootFatalError = null;
43924  workInProgressRootLatestProcessedExpirationTime = Sync;
43925  workInProgressRootLatestSuspenseTimeout = Sync;
43926  workInProgressRootCanSuspendUsingConfig = null;
43927  workInProgressRootNextUnprocessedUpdateTime = NoWork;
43928  workInProgressRootHasPendingPing = false;
43929
43930  {
43931    spawnedWorkDuringRender = null;
43932  }
43933
43934  {
43935    ReactStrictModeWarnings.discardPendingWarnings();
43936  }
43937}
43938
43939function handleError(root, thrownValue) {
43940  do {
43941    try {
43942      // Reset module-level state that was set during the render phase.
43943      resetContextDependencies();
43944      resetHooksAfterThrow();
43945      resetCurrentFiber();
43946
43947      if (workInProgress === null || workInProgress.return === null) {
43948        // Expected to be working on a non-root fiber. This is a fatal error
43949        // because there's no ancestor that can handle it; the root is
43950        // supposed to capture all errors that weren't caught by an error
43951        // boundary.
43952        workInProgressRootExitStatus = RootFatalErrored;
43953        workInProgressRootFatalError = thrownValue; // Set `workInProgress` to null. This represents advancing to the next
43954        // sibling, or the parent if there are no siblings. But since the root
43955        // has no siblings nor a parent, we set it to null. Usually this is
43956        // handled by `completeUnitOfWork` or `unwindWork`, but since we're
43957        // interntionally not calling those, we need set it here.
43958        // TODO: Consider calling `unwindWork` to pop the contexts.
43959
43960        workInProgress = null;
43961        return null;
43962      }
43963
43964      if (enableProfilerTimer && workInProgress.mode & ProfileMode) {
43965        // Record the time spent rendering before an error was thrown. This
43966        // avoids inaccurate Profiler durations in the case of a
43967        // suspended render.
43968        stopProfilerTimerIfRunningAndRecordDelta(workInProgress, true);
43969      }
43970
43971      throwException(root, workInProgress.return, workInProgress, thrownValue, renderExpirationTime$1);
43972      workInProgress = completeUnitOfWork(workInProgress);
43973    } catch (yetAnotherThrownValue) {
43974      // Something in the return path also threw.
43975      thrownValue = yetAnotherThrownValue;
43976      continue;
43977    } // Return to the normal work loop.
43978
43979
43980    return;
43981  } while (true);
43982}
43983
43984function pushDispatcher(root) {
43985  var prevDispatcher = ReactCurrentDispatcher$1.current;
43986  ReactCurrentDispatcher$1.current = ContextOnlyDispatcher;
43987
43988  if (prevDispatcher === null) {
43989    // The React isomorphic package does not include a default dispatcher.
43990    // Instead the first renderer will lazily attach one, in order to give
43991    // nicer error messages.
43992    return ContextOnlyDispatcher;
43993  } else {
43994    return prevDispatcher;
43995  }
43996}
43997
43998function popDispatcher(prevDispatcher) {
43999  ReactCurrentDispatcher$1.current = prevDispatcher;
44000}
44001
44002function pushInteractions(root) {
44003  {
44004    var prevInteractions = tracing.__interactionsRef.current;
44005    tracing.__interactionsRef.current = root.memoizedInteractions;
44006    return prevInteractions;
44007  }
44008}
44009
44010function popInteractions(prevInteractions) {
44011  {
44012    tracing.__interactionsRef.current = prevInteractions;
44013  }
44014}
44015
44016function markCommitTimeOfFallback() {
44017  globalMostRecentFallbackTime = now();
44018}
44019function markRenderEventTimeAndConfig(expirationTime, suspenseConfig) {
44020  if (expirationTime < workInProgressRootLatestProcessedExpirationTime && expirationTime > Idle) {
44021    workInProgressRootLatestProcessedExpirationTime = expirationTime;
44022  }
44023
44024  if (suspenseConfig !== null) {
44025    if (expirationTime < workInProgressRootLatestSuspenseTimeout && expirationTime > Idle) {
44026      workInProgressRootLatestSuspenseTimeout = expirationTime; // Most of the time we only have one config and getting wrong is not bad.
44027
44028      workInProgressRootCanSuspendUsingConfig = suspenseConfig;
44029    }
44030  }
44031}
44032function markUnprocessedUpdateTime(expirationTime) {
44033  if (expirationTime > workInProgressRootNextUnprocessedUpdateTime) {
44034    workInProgressRootNextUnprocessedUpdateTime = expirationTime;
44035  }
44036}
44037function renderDidSuspend() {
44038  if (workInProgressRootExitStatus === RootIncomplete) {
44039    workInProgressRootExitStatus = RootSuspended;
44040  }
44041}
44042function renderDidSuspendDelayIfPossible() {
44043  if (workInProgressRootExitStatus === RootIncomplete || workInProgressRootExitStatus === RootSuspended) {
44044    workInProgressRootExitStatus = RootSuspendedWithDelay;
44045  } // Check if there's a lower priority update somewhere else in the tree.
44046
44047
44048  if (workInProgressRootNextUnprocessedUpdateTime !== NoWork && workInProgressRoot !== null) {
44049    // Mark the current render as suspended, and then mark that there's a
44050    // pending update.
44051    // TODO: This should immediately interrupt the current render, instead
44052    // of waiting until the next time we yield.
44053    markRootSuspendedAtTime(workInProgressRoot, renderExpirationTime$1);
44054    markRootUpdatedAtTime(workInProgressRoot, workInProgressRootNextUnprocessedUpdateTime);
44055  }
44056}
44057function renderDidError() {
44058  if (workInProgressRootExitStatus !== RootCompleted) {
44059    workInProgressRootExitStatus = RootErrored;
44060  }
44061} // Called during render to determine if anything has suspended.
44062// Returns false if we're not sure.
44063
44064function renderHasNotSuspendedYet() {
44065  // If something errored or completed, we can't really be sure,
44066  // so those are false.
44067  return workInProgressRootExitStatus === RootIncomplete;
44068}
44069
44070function inferTimeFromExpirationTime(expirationTime) {
44071  // We don't know exactly when the update was scheduled, but we can infer an
44072  // approximate start time from the expiration time.
44073  var earliestExpirationTimeMs = expirationTimeToMs(expirationTime);
44074  return earliestExpirationTimeMs - LOW_PRIORITY_EXPIRATION;
44075}
44076
44077function inferTimeFromExpirationTimeWithSuspenseConfig(expirationTime, suspenseConfig) {
44078  // We don't know exactly when the update was scheduled, but we can infer an
44079  // approximate start time from the expiration time by subtracting the timeout
44080  // that was added to the event time.
44081  var earliestExpirationTimeMs = expirationTimeToMs(expirationTime);
44082  return earliestExpirationTimeMs - (suspenseConfig.timeoutMs | 0 || LOW_PRIORITY_EXPIRATION);
44083} // The work loop is an extremely hot path. Tell Closure not to inline it.
44084
44085/** @noinline */
44086
44087
44088function workLoopSync() {
44089  // Already timed out, so perform work without checking if we need to yield.
44090  while (workInProgress !== null) {
44091    workInProgress = performUnitOfWork(workInProgress);
44092  }
44093}
44094/** @noinline */
44095
44096
44097function workLoopConcurrent() {
44098  // Perform work until Scheduler asks us to yield
44099  while (workInProgress !== null && !shouldYield()) {
44100    workInProgress = performUnitOfWork(workInProgress);
44101  }
44102}
44103
44104function performUnitOfWork(unitOfWork) {
44105  // The current, flushed, state of this fiber is the alternate. Ideally
44106  // nothing should rely on this, but relying on it here means that we don't
44107  // need an additional field on the work in progress.
44108  var current = unitOfWork.alternate;
44109  startWorkTimer(unitOfWork);
44110  setCurrentFiber(unitOfWork);
44111  var next;
44112
44113  if ( (unitOfWork.mode & ProfileMode) !== NoMode) {
44114    startProfilerTimer(unitOfWork);
44115    next = beginWork$1(current, unitOfWork, renderExpirationTime$1);
44116    stopProfilerTimerIfRunningAndRecordDelta(unitOfWork, true);
44117  } else {
44118    next = beginWork$1(current, unitOfWork, renderExpirationTime$1);
44119  }
44120
44121  resetCurrentFiber();
44122  unitOfWork.memoizedProps = unitOfWork.pendingProps;
44123
44124  if (next === null) {
44125    // If this doesn't spawn new work, complete the current work.
44126    next = completeUnitOfWork(unitOfWork);
44127  }
44128
44129  ReactCurrentOwner$2.current = null;
44130  return next;
44131}
44132
44133function completeUnitOfWork(unitOfWork) {
44134  // Attempt to complete the current unit of work, then move to the next
44135  // sibling. If there are no more siblings, return to the parent fiber.
44136  workInProgress = unitOfWork;
44137
44138  do {
44139    // The current, flushed, state of this fiber is the alternate. Ideally
44140    // nothing should rely on this, but relying on it here means that we don't
44141    // need an additional field on the work in progress.
44142    var current = workInProgress.alternate;
44143    var returnFiber = workInProgress.return; // Check if the work completed or if something threw.
44144
44145    if ((workInProgress.effectTag & Incomplete) === NoEffect) {
44146      setCurrentFiber(workInProgress);
44147      var next = void 0;
44148
44149      if ( (workInProgress.mode & ProfileMode) === NoMode) {
44150        next = completeWork(current, workInProgress, renderExpirationTime$1);
44151      } else {
44152        startProfilerTimer(workInProgress);
44153        next = completeWork(current, workInProgress, renderExpirationTime$1); // Update render duration assuming we didn't error.
44154
44155        stopProfilerTimerIfRunningAndRecordDelta(workInProgress, false);
44156      }
44157
44158      stopWorkTimer(workInProgress);
44159      resetCurrentFiber();
44160      resetChildExpirationTime(workInProgress);
44161
44162      if (next !== null) {
44163        // Completing this fiber spawned new work. Work on that next.
44164        return next;
44165      }
44166
44167      if (returnFiber !== null && // Do not append effects to parents if a sibling failed to complete
44168      (returnFiber.effectTag & Incomplete) === NoEffect) {
44169        // Append all the effects of the subtree and this fiber onto the effect
44170        // list of the parent. The completion order of the children affects the
44171        // side-effect order.
44172        if (returnFiber.firstEffect === null) {
44173          returnFiber.firstEffect = workInProgress.firstEffect;
44174        }
44175
44176        if (workInProgress.lastEffect !== null) {
44177          if (returnFiber.lastEffect !== null) {
44178            returnFiber.lastEffect.nextEffect = workInProgress.firstEffect;
44179          }
44180
44181          returnFiber.lastEffect = workInProgress.lastEffect;
44182        } // If this fiber had side-effects, we append it AFTER the children's
44183        // side-effects. We can perform certain side-effects earlier if needed,
44184        // by doing multiple passes over the effect list. We don't want to
44185        // schedule our own side-effect on our own list because if end up
44186        // reusing children we'll schedule this effect onto itself since we're
44187        // at the end.
44188
44189
44190        var effectTag = workInProgress.effectTag; // Skip both NoWork and PerformedWork tags when creating the effect
44191        // list. PerformedWork effect is read by React DevTools but shouldn't be
44192        // committed.
44193
44194        if (effectTag > PerformedWork) {
44195          if (returnFiber.lastEffect !== null) {
44196            returnFiber.lastEffect.nextEffect = workInProgress;
44197          } else {
44198            returnFiber.firstEffect = workInProgress;
44199          }
44200
44201          returnFiber.lastEffect = workInProgress;
44202        }
44203      }
44204    } else {
44205      // This fiber did not complete because something threw. Pop values off
44206      // the stack without entering the complete phase. If this is a boundary,
44207      // capture values if possible.
44208      var _next = unwindWork(workInProgress); // Because this fiber did not complete, don't reset its expiration time.
44209
44210
44211      if ( (workInProgress.mode & ProfileMode) !== NoMode) {
44212        // Record the render duration for the fiber that errored.
44213        stopProfilerTimerIfRunningAndRecordDelta(workInProgress, false); // Include the time spent working on failed children before continuing.
44214
44215        var actualDuration = workInProgress.actualDuration;
44216        var child = workInProgress.child;
44217
44218        while (child !== null) {
44219          actualDuration += child.actualDuration;
44220          child = child.sibling;
44221        }
44222
44223        workInProgress.actualDuration = actualDuration;
44224      }
44225
44226      if (_next !== null) {
44227        // If completing this work spawned new work, do that next. We'll come
44228        // back here again.
44229        // Since we're restarting, remove anything that is not a host effect
44230        // from the effect tag.
44231        // TODO: The name stopFailedWorkTimer is misleading because Suspense
44232        // also captures and restarts.
44233        stopFailedWorkTimer(workInProgress);
44234        _next.effectTag &= HostEffectMask;
44235        return _next;
44236      }
44237
44238      stopWorkTimer(workInProgress);
44239
44240      if (returnFiber !== null) {
44241        // Mark the parent fiber as incomplete and clear its effect list.
44242        returnFiber.firstEffect = returnFiber.lastEffect = null;
44243        returnFiber.effectTag |= Incomplete;
44244      }
44245    }
44246
44247    var siblingFiber = workInProgress.sibling;
44248
44249    if (siblingFiber !== null) {
44250      // If there is more work to do in this returnFiber, do that next.
44251      return siblingFiber;
44252    } // Otherwise, return to the parent
44253
44254
44255    workInProgress = returnFiber;
44256  } while (workInProgress !== null); // We've reached the root.
44257
44258
44259  if (workInProgressRootExitStatus === RootIncomplete) {
44260    workInProgressRootExitStatus = RootCompleted;
44261  }
44262
44263  return null;
44264}
44265
44266function getRemainingExpirationTime(fiber) {
44267  var updateExpirationTime = fiber.expirationTime;
44268  var childExpirationTime = fiber.childExpirationTime;
44269  return updateExpirationTime > childExpirationTime ? updateExpirationTime : childExpirationTime;
44270}
44271
44272function resetChildExpirationTime(completedWork) {
44273  if (renderExpirationTime$1 !== Never && completedWork.childExpirationTime === Never) {
44274    // The children of this component are hidden. Don't bubble their
44275    // expiration times.
44276    return;
44277  }
44278
44279  var newChildExpirationTime = NoWork; // Bubble up the earliest expiration time.
44280
44281  if ( (completedWork.mode & ProfileMode) !== NoMode) {
44282    // In profiling mode, resetChildExpirationTime is also used to reset
44283    // profiler durations.
44284    var actualDuration = completedWork.actualDuration;
44285    var treeBaseDuration = completedWork.selfBaseDuration; // When a fiber is cloned, its actualDuration is reset to 0. This value will
44286    // only be updated if work is done on the fiber (i.e. it doesn't bailout).
44287    // When work is done, it should bubble to the parent's actualDuration. If
44288    // the fiber has not been cloned though, (meaning no work was done), then
44289    // this value will reflect the amount of time spent working on a previous
44290    // render. In that case it should not bubble. We determine whether it was
44291    // cloned by comparing the child pointer.
44292
44293    var shouldBubbleActualDurations = completedWork.alternate === null || completedWork.child !== completedWork.alternate.child;
44294    var child = completedWork.child;
44295
44296    while (child !== null) {
44297      var childUpdateExpirationTime = child.expirationTime;
44298      var childChildExpirationTime = child.childExpirationTime;
44299
44300      if (childUpdateExpirationTime > newChildExpirationTime) {
44301        newChildExpirationTime = childUpdateExpirationTime;
44302      }
44303
44304      if (childChildExpirationTime > newChildExpirationTime) {
44305        newChildExpirationTime = childChildExpirationTime;
44306      }
44307
44308      if (shouldBubbleActualDurations) {
44309        actualDuration += child.actualDuration;
44310      }
44311
44312      treeBaseDuration += child.treeBaseDuration;
44313      child = child.sibling;
44314    }
44315
44316    completedWork.actualDuration = actualDuration;
44317    completedWork.treeBaseDuration = treeBaseDuration;
44318  } else {
44319    var _child = completedWork.child;
44320
44321    while (_child !== null) {
44322      var _childUpdateExpirationTime = _child.expirationTime;
44323      var _childChildExpirationTime = _child.childExpirationTime;
44324
44325      if (_childUpdateExpirationTime > newChildExpirationTime) {
44326        newChildExpirationTime = _childUpdateExpirationTime;
44327      }
44328
44329      if (_childChildExpirationTime > newChildExpirationTime) {
44330        newChildExpirationTime = _childChildExpirationTime;
44331      }
44332
44333      _child = _child.sibling;
44334    }
44335  }
44336
44337  completedWork.childExpirationTime = newChildExpirationTime;
44338}
44339
44340function commitRoot(root) {
44341  var renderPriorityLevel = getCurrentPriorityLevel();
44342  runWithPriority$1(ImmediatePriority, commitRootImpl.bind(null, root, renderPriorityLevel));
44343  return null;
44344}
44345
44346function commitRootImpl(root, renderPriorityLevel) {
44347  do {
44348    // `flushPassiveEffects` will call `flushSyncUpdateQueue` at the end, which
44349    // means `flushPassiveEffects` will sometimes result in additional
44350    // passive effects. So we need to keep flushing in a loop until there are
44351    // no more pending effects.
44352    // TODO: Might be better if `flushPassiveEffects` did not automatically
44353    // flush synchronous work at the end, to avoid factoring hazards like this.
44354    flushPassiveEffects();
44355  } while (rootWithPendingPassiveEffects !== null);
44356
44357  flushRenderPhaseStrictModeWarningsInDEV();
44358
44359  if (!((executionContext & (RenderContext | CommitContext)) === NoContext)) {
44360    {
44361      throw Error( "Should not already be working." );
44362    }
44363  }
44364
44365  var finishedWork = root.finishedWork;
44366  var expirationTime = root.finishedExpirationTime;
44367
44368  if (finishedWork === null) {
44369    return null;
44370  }
44371
44372  root.finishedWork = null;
44373  root.finishedExpirationTime = NoWork;
44374
44375  if (!(finishedWork !== root.current)) {
44376    {
44377      throw Error( "Cannot commit the same tree as before. This error is likely caused by a bug in React. Please file an issue." );
44378    }
44379  } // commitRoot never returns a continuation; it always finishes synchronously.
44380  // So we can clear these now to allow a new callback to be scheduled.
44381
44382
44383  root.callbackNode = null;
44384  root.callbackExpirationTime = NoWork;
44385  root.callbackPriority = NoPriority;
44386  root.nextKnownPendingLevel = NoWork;
44387  startCommitTimer(); // Update the first and last pending times on this root. The new first
44388  // pending time is whatever is left on the root fiber.
44389
44390  var remainingExpirationTimeBeforeCommit = getRemainingExpirationTime(finishedWork);
44391  markRootFinishedAtTime(root, expirationTime, remainingExpirationTimeBeforeCommit);
44392
44393  if (root === workInProgressRoot) {
44394    // We can reset these now that they are finished.
44395    workInProgressRoot = null;
44396    workInProgress = null;
44397    renderExpirationTime$1 = NoWork;
44398  } // This indicates that the last root we worked on is not the same one that
44399  // we're committing now. This most commonly happens when a suspended root
44400  // times out.
44401  // Get the list of effects.
44402
44403
44404  var firstEffect;
44405
44406  if (finishedWork.effectTag > PerformedWork) {
44407    // A fiber's effect list consists only of its children, not itself. So if
44408    // the root has an effect, we need to add it to the end of the list. The
44409    // resulting list is the set that would belong to the root's parent, if it
44410    // had one; that is, all the effects in the tree including the root.
44411    if (finishedWork.lastEffect !== null) {
44412      finishedWork.lastEffect.nextEffect = finishedWork;
44413      firstEffect = finishedWork.firstEffect;
44414    } else {
44415      firstEffect = finishedWork;
44416    }
44417  } else {
44418    // There is no effect on the root.
44419    firstEffect = finishedWork.firstEffect;
44420  }
44421
44422  if (firstEffect !== null) {
44423    var prevExecutionContext = executionContext;
44424    executionContext |= CommitContext;
44425    var prevInteractions = pushInteractions(root); // Reset this to null before calling lifecycles
44426
44427    ReactCurrentOwner$2.current = null; // The commit phase is broken into several sub-phases. We do a separate pass
44428    // of the effect list for each phase: all mutation effects come before all
44429    // layout effects, and so on.
44430    // The first phase a "before mutation" phase. We use this phase to read the
44431    // state of the host tree right before we mutate it. This is where
44432    // getSnapshotBeforeUpdate is called.
44433
44434    startCommitSnapshotEffectsTimer();
44435    prepareForCommit(root.containerInfo);
44436    nextEffect = firstEffect;
44437
44438    do {
44439      {
44440        invokeGuardedCallback(null, commitBeforeMutationEffects, null);
44441
44442        if (hasCaughtError()) {
44443          if (!(nextEffect !== null)) {
44444            {
44445              throw Error( "Should be working on an effect." );
44446            }
44447          }
44448
44449          var error = clearCaughtError();
44450          captureCommitPhaseError(nextEffect, error);
44451          nextEffect = nextEffect.nextEffect;
44452        }
44453      }
44454    } while (nextEffect !== null);
44455
44456    stopCommitSnapshotEffectsTimer();
44457
44458    {
44459      // Mark the current commit time to be shared by all Profilers in this
44460      // batch. This enables them to be grouped later.
44461      recordCommitTime();
44462    } // The next phase is the mutation phase, where we mutate the host tree.
44463
44464
44465    startCommitHostEffectsTimer();
44466    nextEffect = firstEffect;
44467
44468    do {
44469      {
44470        invokeGuardedCallback(null, commitMutationEffects, null, root, renderPriorityLevel);
44471
44472        if (hasCaughtError()) {
44473          if (!(nextEffect !== null)) {
44474            {
44475              throw Error( "Should be working on an effect." );
44476            }
44477          }
44478
44479          var _error = clearCaughtError();
44480
44481          captureCommitPhaseError(nextEffect, _error);
44482          nextEffect = nextEffect.nextEffect;
44483        }
44484      }
44485    } while (nextEffect !== null);
44486
44487    stopCommitHostEffectsTimer();
44488    resetAfterCommit(root.containerInfo); // The work-in-progress tree is now the current tree. This must come after
44489    // the mutation phase, so that the previous tree is still current during
44490    // componentWillUnmount, but before the layout phase, so that the finished
44491    // work is current during componentDidMount/Update.
44492
44493    root.current = finishedWork; // The next phase is the layout phase, where we call effects that read
44494    // the host tree after it's been mutated. The idiomatic use case for this is
44495    // layout, but class component lifecycles also fire here for legacy reasons.
44496
44497    startCommitLifeCyclesTimer();
44498    nextEffect = firstEffect;
44499
44500    do {
44501      {
44502        invokeGuardedCallback(null, commitLayoutEffects, null, root, expirationTime);
44503
44504        if (hasCaughtError()) {
44505          if (!(nextEffect !== null)) {
44506            {
44507              throw Error( "Should be working on an effect." );
44508            }
44509          }
44510
44511          var _error2 = clearCaughtError();
44512
44513          captureCommitPhaseError(nextEffect, _error2);
44514          nextEffect = nextEffect.nextEffect;
44515        }
44516      }
44517    } while (nextEffect !== null);
44518
44519    stopCommitLifeCyclesTimer();
44520    nextEffect = null; // Tell Scheduler to yield at the end of the frame, so the browser has an
44521    // opportunity to paint.
44522
44523    requestPaint();
44524
44525    {
44526      popInteractions(prevInteractions);
44527    }
44528
44529    executionContext = prevExecutionContext;
44530  } else {
44531    // No effects.
44532    root.current = finishedWork; // Measure these anyway so the flamegraph explicitly shows that there were
44533    // no effects.
44534    // TODO: Maybe there's a better way to report this.
44535
44536    startCommitSnapshotEffectsTimer();
44537    stopCommitSnapshotEffectsTimer();
44538
44539    {
44540      recordCommitTime();
44541    }
44542
44543    startCommitHostEffectsTimer();
44544    stopCommitHostEffectsTimer();
44545    startCommitLifeCyclesTimer();
44546    stopCommitLifeCyclesTimer();
44547  }
44548
44549  stopCommitTimer();
44550  var rootDidHavePassiveEffects = rootDoesHavePassiveEffects;
44551
44552  if (rootDoesHavePassiveEffects) {
44553    // This commit has passive effects. Stash a reference to them. But don't
44554    // schedule a callback until after flushing layout work.
44555    rootDoesHavePassiveEffects = false;
44556    rootWithPendingPassiveEffects = root;
44557    pendingPassiveEffectsExpirationTime = expirationTime;
44558    pendingPassiveEffectsRenderPriority = renderPriorityLevel;
44559  } else {
44560    // We are done with the effect chain at this point so let's clear the
44561    // nextEffect pointers to assist with GC. If we have passive effects, we'll
44562    // clear this in flushPassiveEffects.
44563    nextEffect = firstEffect;
44564
44565    while (nextEffect !== null) {
44566      var nextNextEffect = nextEffect.nextEffect;
44567      nextEffect.nextEffect = null;
44568      nextEffect = nextNextEffect;
44569    }
44570  } // Check if there's remaining work on this root
44571
44572
44573  var remainingExpirationTime = root.firstPendingTime;
44574
44575  if (remainingExpirationTime !== NoWork) {
44576    {
44577      if (spawnedWorkDuringRender !== null) {
44578        var expirationTimes = spawnedWorkDuringRender;
44579        spawnedWorkDuringRender = null;
44580
44581        for (var i = 0; i < expirationTimes.length; i++) {
44582          scheduleInteractions(root, expirationTimes[i], root.memoizedInteractions);
44583        }
44584      }
44585
44586      schedulePendingInteractions(root, remainingExpirationTime);
44587    }
44588  } else {
44589    // If there's no remaining work, we can clear the set of already failed
44590    // error boundaries.
44591    legacyErrorBoundariesThatAlreadyFailed = null;
44592  }
44593
44594  {
44595    if (!rootDidHavePassiveEffects) {
44596      // If there are no passive effects, then we can complete the pending interactions.
44597      // Otherwise, we'll wait until after the passive effects are flushed.
44598      // Wait to do this until after remaining work has been scheduled,
44599      // so that we don't prematurely signal complete for interactions when there's e.g. hidden work.
44600      finishPendingInteractions(root, expirationTime);
44601    }
44602  }
44603
44604  if (remainingExpirationTime === Sync) {
44605    // Count the number of times the root synchronously re-renders without
44606    // finishing. If there are too many, it indicates an infinite update loop.
44607    if (root === rootWithNestedUpdates) {
44608      nestedUpdateCount++;
44609    } else {
44610      nestedUpdateCount = 0;
44611      rootWithNestedUpdates = root;
44612    }
44613  } else {
44614    nestedUpdateCount = 0;
44615  }
44616
44617  onCommitRoot(finishedWork.stateNode, expirationTime); // Always call this before exiting `commitRoot`, to ensure that any
44618  // additional work on this root is scheduled.
44619
44620  ensureRootIsScheduled(root);
44621
44622  if (hasUncaughtError) {
44623    hasUncaughtError = false;
44624    var _error3 = firstUncaughtError;
44625    firstUncaughtError = null;
44626    throw _error3;
44627  }
44628
44629  if ((executionContext & LegacyUnbatchedContext) !== NoContext) {
44630    // This is a legacy edge case. We just committed the initial mount of
44631    // a ReactDOM.render-ed root inside of batchedUpdates. The commit fired
44632    // synchronously, but layout updates should be deferred until the end
44633    // of the batch.
44634    return null;
44635  } // If layout work was scheduled, flush it now.
44636
44637
44638  flushSyncCallbackQueue();
44639  return null;
44640}
44641
44642function commitBeforeMutationEffects() {
44643  while (nextEffect !== null) {
44644    var effectTag = nextEffect.effectTag;
44645
44646    if ((effectTag & Snapshot) !== NoEffect) {
44647      setCurrentFiber(nextEffect);
44648      recordEffect();
44649      var current = nextEffect.alternate;
44650      commitBeforeMutationLifeCycles(current, nextEffect);
44651      resetCurrentFiber();
44652    }
44653
44654    if ((effectTag & Passive) !== NoEffect) {
44655      // If there are passive effects, schedule a callback to flush at
44656      // the earliest opportunity.
44657      if (!rootDoesHavePassiveEffects) {
44658        rootDoesHavePassiveEffects = true;
44659        scheduleCallback(NormalPriority, function () {
44660          flushPassiveEffects();
44661          return null;
44662        });
44663      }
44664    }
44665
44666    nextEffect = nextEffect.nextEffect;
44667  }
44668}
44669
44670function commitMutationEffects(root, renderPriorityLevel) {
44671  // TODO: Should probably move the bulk of this function to commitWork.
44672  while (nextEffect !== null) {
44673    setCurrentFiber(nextEffect);
44674    var effectTag = nextEffect.effectTag;
44675
44676    if (effectTag & ContentReset) {
44677      commitResetTextContent(nextEffect);
44678    }
44679
44680    if (effectTag & Ref) {
44681      var current = nextEffect.alternate;
44682
44683      if (current !== null) {
44684        commitDetachRef(current);
44685      }
44686    } // The following switch statement is only concerned about placement,
44687    // updates, and deletions. To avoid needing to add a case for every possible
44688    // bitmap value, we remove the secondary effects from the effect tag and
44689    // switch on that value.
44690
44691
44692    var primaryEffectTag = effectTag & (Placement | Update | Deletion | Hydrating);
44693
44694    switch (primaryEffectTag) {
44695      case Placement:
44696        {
44697          commitPlacement(nextEffect); // Clear the "placement" from effect tag so that we know that this is
44698          // inserted, before any life-cycles like componentDidMount gets called.
44699          // TODO: findDOMNode doesn't rely on this any more but isMounted does
44700          // and isMounted is deprecated anyway so we should be able to kill this.
44701
44702          nextEffect.effectTag &= ~Placement;
44703          break;
44704        }
44705
44706      case PlacementAndUpdate:
44707        {
44708          // Placement
44709          commitPlacement(nextEffect); // Clear the "placement" from effect tag so that we know that this is
44710          // inserted, before any life-cycles like componentDidMount gets called.
44711
44712          nextEffect.effectTag &= ~Placement; // Update
44713
44714          var _current = nextEffect.alternate;
44715          commitWork(_current, nextEffect);
44716          break;
44717        }
44718
44719      case Hydrating:
44720        {
44721          nextEffect.effectTag &= ~Hydrating;
44722          break;
44723        }
44724
44725      case HydratingAndUpdate:
44726        {
44727          nextEffect.effectTag &= ~Hydrating; // Update
44728
44729          var _current2 = nextEffect.alternate;
44730          commitWork(_current2, nextEffect);
44731          break;
44732        }
44733
44734      case Update:
44735        {
44736          var _current3 = nextEffect.alternate;
44737          commitWork(_current3, nextEffect);
44738          break;
44739        }
44740
44741      case Deletion:
44742        {
44743          commitDeletion(root, nextEffect, renderPriorityLevel);
44744          break;
44745        }
44746    } // TODO: Only record a mutation effect if primaryEffectTag is non-zero.
44747
44748
44749    recordEffect();
44750    resetCurrentFiber();
44751    nextEffect = nextEffect.nextEffect;
44752  }
44753}
44754
44755function commitLayoutEffects(root, committedExpirationTime) {
44756  // TODO: Should probably move the bulk of this function to commitWork.
44757  while (nextEffect !== null) {
44758    setCurrentFiber(nextEffect);
44759    var effectTag = nextEffect.effectTag;
44760
44761    if (effectTag & (Update | Callback)) {
44762      recordEffect();
44763      var current = nextEffect.alternate;
44764      commitLifeCycles(root, current, nextEffect);
44765    }
44766
44767    if (effectTag & Ref) {
44768      recordEffect();
44769      commitAttachRef(nextEffect);
44770    }
44771
44772    resetCurrentFiber();
44773    nextEffect = nextEffect.nextEffect;
44774  }
44775}
44776
44777function flushPassiveEffects() {
44778  if (pendingPassiveEffectsRenderPriority !== NoPriority) {
44779    var priorityLevel = pendingPassiveEffectsRenderPriority > NormalPriority ? NormalPriority : pendingPassiveEffectsRenderPriority;
44780    pendingPassiveEffectsRenderPriority = NoPriority;
44781    return runWithPriority$1(priorityLevel, flushPassiveEffectsImpl);
44782  }
44783}
44784
44785function flushPassiveEffectsImpl() {
44786  if (rootWithPendingPassiveEffects === null) {
44787    return false;
44788  }
44789
44790  var root = rootWithPendingPassiveEffects;
44791  var expirationTime = pendingPassiveEffectsExpirationTime;
44792  rootWithPendingPassiveEffects = null;
44793  pendingPassiveEffectsExpirationTime = NoWork;
44794
44795  if (!((executionContext & (RenderContext | CommitContext)) === NoContext)) {
44796    {
44797      throw Error( "Cannot flush passive effects while already rendering." );
44798    }
44799  }
44800
44801  var prevExecutionContext = executionContext;
44802  executionContext |= CommitContext;
44803  var prevInteractions = pushInteractions(root);
44804
44805  {
44806    // Note: This currently assumes there are no passive effects on the root fiber
44807    // because the root is not part of its own effect list.
44808    // This could change in the future.
44809    var _effect2 = root.current.firstEffect;
44810
44811    while (_effect2 !== null) {
44812      {
44813        setCurrentFiber(_effect2);
44814        invokeGuardedCallback(null, commitPassiveHookEffects, null, _effect2);
44815
44816        if (hasCaughtError()) {
44817          if (!(_effect2 !== null)) {
44818            {
44819              throw Error( "Should be working on an effect." );
44820            }
44821          }
44822
44823          var _error5 = clearCaughtError();
44824
44825          captureCommitPhaseError(_effect2, _error5);
44826        }
44827
44828        resetCurrentFiber();
44829      }
44830
44831      var nextNextEffect = _effect2.nextEffect; // Remove nextEffect pointer to assist GC
44832
44833      _effect2.nextEffect = null;
44834      _effect2 = nextNextEffect;
44835    }
44836  }
44837
44838  {
44839    popInteractions(prevInteractions);
44840    finishPendingInteractions(root, expirationTime);
44841  }
44842
44843  executionContext = prevExecutionContext;
44844  flushSyncCallbackQueue(); // If additional passive effects were scheduled, increment a counter. If this
44845  // exceeds the limit, we'll fire a warning.
44846
44847  nestedPassiveUpdateCount = rootWithPendingPassiveEffects === null ? 0 : nestedPassiveUpdateCount + 1;
44848  return true;
44849}
44850
44851function isAlreadyFailedLegacyErrorBoundary(instance) {
44852  return legacyErrorBoundariesThatAlreadyFailed !== null && legacyErrorBoundariesThatAlreadyFailed.has(instance);
44853}
44854function markLegacyErrorBoundaryAsFailed(instance) {
44855  if (legacyErrorBoundariesThatAlreadyFailed === null) {
44856    legacyErrorBoundariesThatAlreadyFailed = new Set([instance]);
44857  } else {
44858    legacyErrorBoundariesThatAlreadyFailed.add(instance);
44859  }
44860}
44861
44862function prepareToThrowUncaughtError(error) {
44863  if (!hasUncaughtError) {
44864    hasUncaughtError = true;
44865    firstUncaughtError = error;
44866  }
44867}
44868
44869var onUncaughtError = prepareToThrowUncaughtError;
44870
44871function captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error) {
44872  var errorInfo = createCapturedValue(error, sourceFiber);
44873  var update = createRootErrorUpdate(rootFiber, errorInfo, Sync);
44874  enqueueUpdate(rootFiber, update);
44875  var root = markUpdateTimeFromFiberToRoot(rootFiber, Sync);
44876
44877  if (root !== null) {
44878    ensureRootIsScheduled(root);
44879    schedulePendingInteractions(root, Sync);
44880  }
44881}
44882
44883function captureCommitPhaseError(sourceFiber, error) {
44884  if (sourceFiber.tag === HostRoot) {
44885    // Error was thrown at the root. There is no parent, so the root
44886    // itself should capture it.
44887    captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error);
44888    return;
44889  }
44890
44891  var fiber = sourceFiber.return;
44892
44893  while (fiber !== null) {
44894    if (fiber.tag === HostRoot) {
44895      captureCommitPhaseErrorOnRoot(fiber, sourceFiber, error);
44896      return;
44897    } else if (fiber.tag === ClassComponent) {
44898      var ctor = fiber.type;
44899      var instance = fiber.stateNode;
44900
44901      if (typeof ctor.getDerivedStateFromError === 'function' || typeof instance.componentDidCatch === 'function' && !isAlreadyFailedLegacyErrorBoundary(instance)) {
44902        var errorInfo = createCapturedValue(error, sourceFiber);
44903        var update = createClassErrorUpdate(fiber, errorInfo, // TODO: This is always sync
44904        Sync);
44905        enqueueUpdate(fiber, update);
44906        var root = markUpdateTimeFromFiberToRoot(fiber, Sync);
44907
44908        if (root !== null) {
44909          ensureRootIsScheduled(root);
44910          schedulePendingInteractions(root, Sync);
44911        }
44912
44913        return;
44914      }
44915    }
44916
44917    fiber = fiber.return;
44918  }
44919}
44920function pingSuspendedRoot(root, thenable, suspendedTime) {
44921  var pingCache = root.pingCache;
44922
44923  if (pingCache !== null) {
44924    // The thenable resolved, so we no longer need to memoize, because it will
44925    // never be thrown again.
44926    pingCache.delete(thenable);
44927  }
44928
44929  if (workInProgressRoot === root && renderExpirationTime$1 === suspendedTime) {
44930    // Received a ping at the same priority level at which we're currently
44931    // rendering. We might want to restart this render. This should mirror
44932    // the logic of whether or not a root suspends once it completes.
44933    // TODO: If we're rendering sync either due to Sync, Batched or expired,
44934    // we should probably never restart.
44935    // If we're suspended with delay, we'll always suspend so we can always
44936    // restart. If we're suspended without any updates, it might be a retry.
44937    // If it's early in the retry we can restart. We can't know for sure
44938    // whether we'll eventually process an update during this render pass,
44939    // but it's somewhat unlikely that we get to a ping before that, since
44940    // getting to the root most update is usually very fast.
44941    if (workInProgressRootExitStatus === RootSuspendedWithDelay || workInProgressRootExitStatus === RootSuspended && workInProgressRootLatestProcessedExpirationTime === Sync && now() - globalMostRecentFallbackTime < FALLBACK_THROTTLE_MS) {
44942      // Restart from the root. Don't need to schedule a ping because
44943      // we're already working on this tree.
44944      prepareFreshStack(root, renderExpirationTime$1);
44945    } else {
44946      // Even though we can't restart right now, we might get an
44947      // opportunity later. So we mark this render as having a ping.
44948      workInProgressRootHasPendingPing = true;
44949    }
44950
44951    return;
44952  }
44953
44954  if (!isRootSuspendedAtTime(root, suspendedTime)) {
44955    // The root is no longer suspended at this time.
44956    return;
44957  }
44958
44959  var lastPingedTime = root.lastPingedTime;
44960
44961  if (lastPingedTime !== NoWork && lastPingedTime < suspendedTime) {
44962    // There's already a lower priority ping scheduled.
44963    return;
44964  } // Mark the time at which this ping was scheduled.
44965
44966
44967  root.lastPingedTime = suspendedTime;
44968
44969  ensureRootIsScheduled(root);
44970  schedulePendingInteractions(root, suspendedTime);
44971}
44972
44973function retryTimedOutBoundary(boundaryFiber, retryTime) {
44974  // The boundary fiber (a Suspense component or SuspenseList component)
44975  // previously was rendered in its fallback state. One of the promises that
44976  // suspended it has resolved, which means at least part of the tree was
44977  // likely unblocked. Try rendering again, at a new expiration time.
44978  if (retryTime === NoWork) {
44979    var suspenseConfig = null; // Retries don't carry over the already committed update.
44980
44981    var currentTime = requestCurrentTimeForUpdate();
44982    retryTime = computeExpirationForFiber(currentTime, boundaryFiber, suspenseConfig);
44983  } // TODO: Special case idle priority?
44984
44985
44986  var root = markUpdateTimeFromFiberToRoot(boundaryFiber, retryTime);
44987
44988  if (root !== null) {
44989    ensureRootIsScheduled(root);
44990    schedulePendingInteractions(root, retryTime);
44991  }
44992}
44993function resolveRetryThenable(boundaryFiber, thenable) {
44994  var retryTime = NoWork; // Default
44995
44996  var retryCache;
44997
44998  {
44999    retryCache = boundaryFiber.stateNode;
45000  }
45001
45002  if (retryCache !== null) {
45003    // The thenable resolved, so we no longer need to memoize, because it will
45004    // never be thrown again.
45005    retryCache.delete(thenable);
45006  }
45007
45008  retryTimedOutBoundary(boundaryFiber, retryTime);
45009} // Computes the next Just Noticeable Difference (JND) boundary.
45010// The theory is that a person can't tell the difference between small differences in time.
45011// Therefore, if we wait a bit longer than necessary that won't translate to a noticeable
45012// difference in the experience. However, waiting for longer might mean that we can avoid
45013// showing an intermediate loading state. The longer we have already waited, the harder it
45014// is to tell small differences in time. Therefore, the longer we've already waited,
45015// the longer we can wait additionally. At some point we have to give up though.
45016// We pick a train model where the next boundary commits at a consistent schedule.
45017// These particular numbers are vague estimates. We expect to adjust them based on research.
45018
45019function jnd(timeElapsed) {
45020  return timeElapsed < 120 ? 120 : timeElapsed < 480 ? 480 : timeElapsed < 1080 ? 1080 : timeElapsed < 1920 ? 1920 : timeElapsed < 3000 ? 3000 : timeElapsed < 4320 ? 4320 : ceil(timeElapsed / 1960) * 1960;
45021}
45022
45023function computeMsUntilSuspenseLoadingDelay(mostRecentEventTime, committedExpirationTime, suspenseConfig) {
45024  var busyMinDurationMs = suspenseConfig.busyMinDurationMs | 0;
45025
45026  if (busyMinDurationMs <= 0) {
45027    return 0;
45028  }
45029
45030  var busyDelayMs = suspenseConfig.busyDelayMs | 0; // Compute the time until this render pass would expire.
45031
45032  var currentTimeMs = now();
45033  var eventTimeMs = inferTimeFromExpirationTimeWithSuspenseConfig(mostRecentEventTime, suspenseConfig);
45034  var timeElapsed = currentTimeMs - eventTimeMs;
45035
45036  if (timeElapsed <= busyDelayMs) {
45037    // If we haven't yet waited longer than the initial delay, we don't
45038    // have to wait any additional time.
45039    return 0;
45040  }
45041
45042  var msUntilTimeout = busyDelayMs + busyMinDurationMs - timeElapsed; // This is the value that is passed to `setTimeout`.
45043
45044  return msUntilTimeout;
45045}
45046
45047function checkForNestedUpdates() {
45048  if (nestedUpdateCount > NESTED_UPDATE_LIMIT) {
45049    nestedUpdateCount = 0;
45050    rootWithNestedUpdates = null;
45051
45052    {
45053      {
45054        throw Error( "Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops." );
45055      }
45056    }
45057  }
45058
45059  {
45060    if (nestedPassiveUpdateCount > NESTED_PASSIVE_UPDATE_LIMIT) {
45061      nestedPassiveUpdateCount = 0;
45062
45063      error('Maximum update depth exceeded. This can happen when a component ' + "calls setState inside useEffect, but useEffect either doesn't " + 'have a dependency array, or one of the dependencies changes on ' + 'every render.');
45064    }
45065  }
45066}
45067
45068function flushRenderPhaseStrictModeWarningsInDEV() {
45069  {
45070    ReactStrictModeWarnings.flushLegacyContextWarning();
45071
45072    {
45073      ReactStrictModeWarnings.flushPendingUnsafeLifecycleWarnings();
45074    }
45075  }
45076}
45077
45078function stopFinishedWorkLoopTimer() {
45079  var didCompleteRoot = true;
45080  stopWorkLoopTimer(interruptedBy, didCompleteRoot);
45081  interruptedBy = null;
45082}
45083
45084function stopInterruptedWorkLoopTimer() {
45085  // TODO: Track which fiber caused the interruption.
45086  var didCompleteRoot = false;
45087  stopWorkLoopTimer(interruptedBy, didCompleteRoot);
45088  interruptedBy = null;
45089}
45090
45091function checkForInterruption(fiberThatReceivedUpdate, updateExpirationTime) {
45092  if ( workInProgressRoot !== null && updateExpirationTime > renderExpirationTime$1) {
45093    interruptedBy = fiberThatReceivedUpdate;
45094  }
45095}
45096
45097var didWarnStateUpdateForUnmountedComponent = null;
45098
45099function warnAboutUpdateOnUnmountedFiberInDEV(fiber) {
45100  {
45101    var tag = fiber.tag;
45102
45103    if (tag !== HostRoot && tag !== ClassComponent && tag !== FunctionComponent && tag !== ForwardRef && tag !== MemoComponent && tag !== SimpleMemoComponent && tag !== Block) {
45104      // Only warn for user-defined components, not internal ones like Suspense.
45105      return;
45106    }
45107    // the problematic code almost always lies inside that component.
45108
45109
45110    var componentName = getComponentName(fiber.type) || 'ReactComponent';
45111
45112    if (didWarnStateUpdateForUnmountedComponent !== null) {
45113      if (didWarnStateUpdateForUnmountedComponent.has(componentName)) {
45114        return;
45115      }
45116
45117      didWarnStateUpdateForUnmountedComponent.add(componentName);
45118    } else {
45119      didWarnStateUpdateForUnmountedComponent = new Set([componentName]);
45120    }
45121
45122    error("Can't perform a React state update on an unmounted component. This " + 'is a no-op, but it indicates a memory leak in your application. To ' + 'fix, cancel all subscriptions and asynchronous tasks in %s.%s', tag === ClassComponent ? 'the componentWillUnmount method' : 'a useEffect cleanup function', getStackByFiberInDevAndProd(fiber));
45123  }
45124}
45125
45126var beginWork$1;
45127
45128{
45129  var dummyFiber = null;
45130
45131  beginWork$1 = function (current, unitOfWork, expirationTime) {
45132    // If a component throws an error, we replay it again in a synchronously
45133    // dispatched event, so that the debugger will treat it as an uncaught
45134    // error See ReactErrorUtils for more information.
45135    // Before entering the begin phase, copy the work-in-progress onto a dummy
45136    // fiber. If beginWork throws, we'll use this to reset the state.
45137    var originalWorkInProgressCopy = assignFiberPropertiesInDEV(dummyFiber, unitOfWork);
45138
45139    try {
45140      return beginWork(current, unitOfWork, expirationTime);
45141    } catch (originalError) {
45142      if (originalError !== null && typeof originalError === 'object' && typeof originalError.then === 'function') {
45143        // Don't replay promises. Treat everything else like an error.
45144        throw originalError;
45145      } // Keep this code in sync with handleError; any changes here must have
45146      // corresponding changes there.
45147
45148
45149      resetContextDependencies();
45150      resetHooksAfterThrow(); // Don't reset current debug fiber, since we're about to work on the
45151      // same fiber again.
45152      // Unwind the failed stack frame
45153
45154      unwindInterruptedWork(unitOfWork); // Restore the original properties of the fiber.
45155
45156      assignFiberPropertiesInDEV(unitOfWork, originalWorkInProgressCopy);
45157
45158      if ( unitOfWork.mode & ProfileMode) {
45159        // Reset the profiler timer.
45160        startProfilerTimer(unitOfWork);
45161      } // Run beginWork again.
45162
45163
45164      invokeGuardedCallback(null, beginWork, null, current, unitOfWork, expirationTime);
45165
45166      if (hasCaughtError()) {
45167        var replayError = clearCaughtError(); // `invokeGuardedCallback` sometimes sets an expando `_suppressLogging`.
45168        // Rethrow this error instead of the original one.
45169
45170        throw replayError;
45171      } else {
45172        // This branch is reachable if the render phase is impure.
45173        throw originalError;
45174      }
45175    }
45176  };
45177}
45178
45179var didWarnAboutUpdateInRender = false;
45180var didWarnAboutUpdateInRenderForAnotherComponent;
45181
45182{
45183  didWarnAboutUpdateInRenderForAnotherComponent = new Set();
45184}
45185
45186function warnAboutRenderPhaseUpdatesInDEV(fiber) {
45187  {
45188    if (isRendering && (executionContext & RenderContext) !== NoContext) {
45189      switch (fiber.tag) {
45190        case FunctionComponent:
45191        case ForwardRef:
45192        case SimpleMemoComponent:
45193          {
45194            var renderingComponentName = workInProgress && getComponentName(workInProgress.type) || 'Unknown'; // Dedupe by the rendering component because it's the one that needs to be fixed.
45195
45196            var dedupeKey = renderingComponentName;
45197
45198            if (!didWarnAboutUpdateInRenderForAnotherComponent.has(dedupeKey)) {
45199              didWarnAboutUpdateInRenderForAnotherComponent.add(dedupeKey);
45200              var setStateComponentName = getComponentName(fiber.type) || 'Unknown';
45201
45202              error('Cannot update a component (`%s`) while rendering a ' + 'different component (`%s`). To locate the bad setState() call inside `%s`, ' + 'follow the stack trace as described in https://fb.me/setstate-in-render', setStateComponentName, renderingComponentName, renderingComponentName);
45203            }
45204
45205            break;
45206          }
45207
45208        case ClassComponent:
45209          {
45210            if (!didWarnAboutUpdateInRender) {
45211              error('Cannot update during an existing state transition (such as ' + 'within `render`). Render methods should be a pure ' + 'function of props and state.');
45212
45213              didWarnAboutUpdateInRender = true;
45214            }
45215
45216            break;
45217          }
45218      }
45219    }
45220  }
45221} // a 'shared' variable that changes when act() opens/closes in tests.
45222
45223
45224var IsThisRendererActing = {
45225  current: false
45226};
45227function warnIfNotScopedWithMatchingAct(fiber) {
45228  {
45229    if ( IsSomeRendererActing.current === true && IsThisRendererActing.current !== true) {
45230      error("It looks like you're using the wrong act() around your test interactions.\n" + 'Be sure to use the matching version of act() corresponding to your renderer:\n\n' + '// for react-dom:\n' + "import {act} from 'react-dom/test-utils';\n" + '// ...\n' + 'act(() => ...);\n\n' + '// for react-test-renderer:\n' + "import TestRenderer from 'react-test-renderer';\n" + 'const {act} = TestRenderer;\n' + '// ...\n' + 'act(() => ...);' + '%s', getStackByFiberInDevAndProd(fiber));
45231    }
45232  }
45233}
45234function warnIfNotCurrentlyActingEffectsInDEV(fiber) {
45235  {
45236    if ( (fiber.mode & StrictMode) !== NoMode && IsSomeRendererActing.current === false && IsThisRendererActing.current === false) {
45237      error('An update to %s ran an effect, but was not wrapped in act(...).\n\n' + 'When testing, code that causes React state updates should be ' + 'wrapped into act(...):\n\n' + 'act(() => {\n' + '  /* fire events that update state */\n' + '});\n' + '/* assert on the output */\n\n' + "This ensures that you're testing the behavior the user would see " + 'in the browser.' + ' Learn more at https://fb.me/react-wrap-tests-with-act' + '%s', getComponentName(fiber.type), getStackByFiberInDevAndProd(fiber));
45238    }
45239  }
45240}
45241
45242function warnIfNotCurrentlyActingUpdatesInDEV(fiber) {
45243  {
45244    if ( executionContext === NoContext && IsSomeRendererActing.current === false && IsThisRendererActing.current === false) {
45245      error('An update to %s inside a test was not wrapped in act(...).\n\n' + 'When testing, code that causes React state updates should be ' + 'wrapped into act(...):\n\n' + 'act(() => {\n' + '  /* fire events that update state */\n' + '});\n' + '/* assert on the output */\n\n' + "This ensures that you're testing the behavior the user would see " + 'in the browser.' + ' Learn more at https://fb.me/react-wrap-tests-with-act' + '%s', getComponentName(fiber.type), getStackByFiberInDevAndProd(fiber));
45246    }
45247  }
45248}
45249
45250var warnIfNotCurrentlyActingUpdatesInDev = warnIfNotCurrentlyActingUpdatesInDEV; // In tests, we want to enforce a mocked scheduler.
45251
45252var didWarnAboutUnmockedScheduler = false; // TODO Before we release concurrent mode, revisit this and decide whether a mocked
45253// scheduler is the actual recommendation. The alternative could be a testing build,
45254// a new lib, or whatever; we dunno just yet. This message is for early adopters
45255// to get their tests right.
45256
45257function warnIfUnmockedScheduler(fiber) {
45258  {
45259    if (didWarnAboutUnmockedScheduler === false && Scheduler.unstable_flushAllWithoutAsserting === undefined) {
45260      if (fiber.mode & BlockingMode || fiber.mode & ConcurrentMode) {
45261        didWarnAboutUnmockedScheduler = true;
45262
45263        error('In Concurrent or Sync modes, the "scheduler" module needs to be mocked ' + 'to guarantee consistent behaviour across tests and browsers. ' + 'For example, with jest: \n' + "jest.mock('scheduler', () => require('scheduler/unstable_mock'));\n\n" + 'For more info, visit https://fb.me/react-mock-scheduler');
45264      }
45265    }
45266  }
45267}
45268
45269function computeThreadID(root, expirationTime) {
45270  // Interaction threads are unique per root and expiration time.
45271  return expirationTime * 1000 + root.interactionThreadID;
45272}
45273
45274function markSpawnedWork(expirationTime) {
45275
45276  if (spawnedWorkDuringRender === null) {
45277    spawnedWorkDuringRender = [expirationTime];
45278  } else {
45279    spawnedWorkDuringRender.push(expirationTime);
45280  }
45281}
45282
45283function scheduleInteractions(root, expirationTime, interactions) {
45284
45285  if (interactions.size > 0) {
45286    var pendingInteractionMap = root.pendingInteractionMap;
45287    var pendingInteractions = pendingInteractionMap.get(expirationTime);
45288
45289    if (pendingInteractions != null) {
45290      interactions.forEach(function (interaction) {
45291        if (!pendingInteractions.has(interaction)) {
45292          // Update the pending async work count for previously unscheduled interaction.
45293          interaction.__count++;
45294        }
45295
45296        pendingInteractions.add(interaction);
45297      });
45298    } else {
45299      pendingInteractionMap.set(expirationTime, new Set(interactions)); // Update the pending async work count for the current interactions.
45300
45301      interactions.forEach(function (interaction) {
45302        interaction.__count++;
45303      });
45304    }
45305
45306    var subscriber = tracing.__subscriberRef.current;
45307
45308    if (subscriber !== null) {
45309      var threadID = computeThreadID(root, expirationTime);
45310      subscriber.onWorkScheduled(interactions, threadID);
45311    }
45312  }
45313}
45314
45315function schedulePendingInteractions(root, expirationTime) {
45316
45317  scheduleInteractions(root, expirationTime, tracing.__interactionsRef.current);
45318}
45319
45320function startWorkOnPendingInteractions(root, expirationTime) {
45321  // we can accurately attribute time spent working on it, And so that cascading
45322  // work triggered during the render phase will be associated with it.
45323
45324
45325  var interactions = new Set();
45326  root.pendingInteractionMap.forEach(function (scheduledInteractions, scheduledExpirationTime) {
45327    if (scheduledExpirationTime >= expirationTime) {
45328      scheduledInteractions.forEach(function (interaction) {
45329        return interactions.add(interaction);
45330      });
45331    }
45332  }); // Store the current set of interactions on the FiberRoot for a few reasons:
45333  // We can re-use it in hot functions like performConcurrentWorkOnRoot()
45334  // without having to recalculate it. We will also use it in commitWork() to
45335  // pass to any Profiler onRender() hooks. This also provides DevTools with a
45336  // way to access it when the onCommitRoot() hook is called.
45337
45338  root.memoizedInteractions = interactions;
45339
45340  if (interactions.size > 0) {
45341    var subscriber = tracing.__subscriberRef.current;
45342
45343    if (subscriber !== null) {
45344      var threadID = computeThreadID(root, expirationTime);
45345
45346      try {
45347        subscriber.onWorkStarted(interactions, threadID);
45348      } catch (error) {
45349        // If the subscriber throws, rethrow it in a separate task
45350        scheduleCallback(ImmediatePriority, function () {
45351          throw error;
45352        });
45353      }
45354    }
45355  }
45356}
45357
45358function finishPendingInteractions(root, committedExpirationTime) {
45359
45360  var earliestRemainingTimeAfterCommit = root.firstPendingTime;
45361  var subscriber;
45362
45363  try {
45364    subscriber = tracing.__subscriberRef.current;
45365
45366    if (subscriber !== null && root.memoizedInteractions.size > 0) {
45367      var threadID = computeThreadID(root, committedExpirationTime);
45368      subscriber.onWorkStopped(root.memoizedInteractions, threadID);
45369    }
45370  } catch (error) {
45371    // If the subscriber throws, rethrow it in a separate task
45372    scheduleCallback(ImmediatePriority, function () {
45373      throw error;
45374    });
45375  } finally {
45376    // Clear completed interactions from the pending Map.
45377    // Unless the render was suspended or cascading work was scheduled,
45378    // In which case– leave pending interactions until the subsequent render.
45379    var pendingInteractionMap = root.pendingInteractionMap;
45380    pendingInteractionMap.forEach(function (scheduledInteractions, scheduledExpirationTime) {
45381      // Only decrement the pending interaction count if we're done.
45382      // If there's still work at the current priority,
45383      // That indicates that we are waiting for suspense data.
45384      if (scheduledExpirationTime > earliestRemainingTimeAfterCommit) {
45385        pendingInteractionMap.delete(scheduledExpirationTime);
45386        scheduledInteractions.forEach(function (interaction) {
45387          interaction.__count--;
45388
45389          if (subscriber !== null && interaction.__count === 0) {
45390            try {
45391              subscriber.onInteractionScheduledWorkCompleted(interaction);
45392            } catch (error) {
45393              // If the subscriber throws, rethrow it in a separate task
45394              scheduleCallback(ImmediatePriority, function () {
45395                throw error;
45396              });
45397            }
45398          }
45399        });
45400      }
45401    });
45402  }
45403}
45404
45405var onScheduleFiberRoot = null;
45406var onCommitFiberRoot = null;
45407var onCommitFiberUnmount = null;
45408var hasLoggedError = false;
45409var isDevToolsPresent = typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined';
45410function injectInternals(internals) {
45411  if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {
45412    // No DevTools
45413    return false;
45414  }
45415
45416  var hook = __REACT_DEVTOOLS_GLOBAL_HOOK__;
45417
45418  if (hook.isDisabled) {
45419    // This isn't a real property on the hook, but it can be set to opt out
45420    // of DevTools integration and associated warnings and logs.
45421    // https://github.com/facebook/react/issues/3877
45422    return true;
45423  }
45424
45425  if (!hook.supportsFiber) {
45426    {
45427      error('The installed version of React DevTools is too old and will not work ' + 'with the current version of React. Please update React DevTools. ' + 'https://fb.me/react-devtools');
45428    } // DevTools exists, even though it doesn't support Fiber.
45429
45430
45431    return true;
45432  }
45433
45434  try {
45435    var rendererID = hook.inject(internals); // We have successfully injected, so now it is safe to set up hooks.
45436
45437    if (true) {
45438      // Only used by Fast Refresh
45439      if (typeof hook.onScheduleFiberRoot === 'function') {
45440        onScheduleFiberRoot = function (root, children) {
45441          try {
45442            hook.onScheduleFiberRoot(rendererID, root, children);
45443          } catch (err) {
45444            if ( true && !hasLoggedError) {
45445              hasLoggedError = true;
45446
45447              error('React instrumentation encountered an error: %s', err);
45448            }
45449          }
45450        };
45451      }
45452    }
45453
45454    onCommitFiberRoot = function (root, expirationTime) {
45455      try {
45456        var didError = (root.current.effectTag & DidCapture) === DidCapture;
45457
45458        if (enableProfilerTimer) {
45459          var currentTime = getCurrentTime();
45460          var priorityLevel = inferPriorityFromExpirationTime(currentTime, expirationTime);
45461          hook.onCommitFiberRoot(rendererID, root, priorityLevel, didError);
45462        } else {
45463          hook.onCommitFiberRoot(rendererID, root, undefined, didError);
45464        }
45465      } catch (err) {
45466        if (true) {
45467          if (!hasLoggedError) {
45468            hasLoggedError = true;
45469
45470            error('React instrumentation encountered an error: %s', err);
45471          }
45472        }
45473      }
45474    };
45475
45476    onCommitFiberUnmount = function (fiber) {
45477      try {
45478        hook.onCommitFiberUnmount(rendererID, fiber);
45479      } catch (err) {
45480        if (true) {
45481          if (!hasLoggedError) {
45482            hasLoggedError = true;
45483
45484            error('React instrumentation encountered an error: %s', err);
45485          }
45486        }
45487      }
45488    };
45489  } catch (err) {
45490    // Catch all errors because it is unsafe to throw during initialization.
45491    {
45492      error('React instrumentation encountered an error: %s.', err);
45493    }
45494  } // DevTools exists
45495
45496
45497  return true;
45498}
45499function onScheduleRoot(root, children) {
45500  if (typeof onScheduleFiberRoot === 'function') {
45501    onScheduleFiberRoot(root, children);
45502  }
45503}
45504function onCommitRoot(root, expirationTime) {
45505  if (typeof onCommitFiberRoot === 'function') {
45506    onCommitFiberRoot(root, expirationTime);
45507  }
45508}
45509function onCommitUnmount(fiber) {
45510  if (typeof onCommitFiberUnmount === 'function') {
45511    onCommitFiberUnmount(fiber);
45512  }
45513}
45514
45515var hasBadMapPolyfill;
45516
45517{
45518  hasBadMapPolyfill = false;
45519
45520  try {
45521    var nonExtensibleObject = Object.preventExtensions({});
45522    var testMap = new Map([[nonExtensibleObject, null]]);
45523    var testSet = new Set([nonExtensibleObject]); // This is necessary for Rollup to not consider these unused.
45524    // https://github.com/rollup/rollup/issues/1771
45525    // TODO: we can remove these if Rollup fixes the bug.
45526
45527    testMap.set(0, 0);
45528    testSet.add(0);
45529  } catch (e) {
45530    // TODO: Consider warning about bad polyfills
45531    hasBadMapPolyfill = true;
45532  }
45533}
45534
45535var debugCounter = 1;
45536
45537function FiberNode(tag, pendingProps, key, mode) {
45538  // Instance
45539  this.tag = tag;
45540  this.key = key;
45541  this.elementType = null;
45542  this.type = null;
45543  this.stateNode = null; // Fiber
45544
45545  this.return = null;
45546  this.child = null;
45547  this.sibling = null;
45548  this.index = 0;
45549  this.ref = null;
45550  this.pendingProps = pendingProps;
45551  this.memoizedProps = null;
45552  this.updateQueue = null;
45553  this.memoizedState = null;
45554  this.dependencies = null;
45555  this.mode = mode; // Effects
45556
45557  this.effectTag = NoEffect;
45558  this.nextEffect = null;
45559  this.firstEffect = null;
45560  this.lastEffect = null;
45561  this.expirationTime = NoWork;
45562  this.childExpirationTime = NoWork;
45563  this.alternate = null;
45564
45565  {
45566    // Note: The following is done to avoid a v8 performance cliff.
45567    //
45568    // Initializing the fields below to smis and later updating them with
45569    // double values will cause Fibers to end up having separate shapes.
45570    // This behavior/bug has something to do with Object.preventExtension().
45571    // Fortunately this only impacts DEV builds.
45572    // Unfortunately it makes React unusably slow for some applications.
45573    // To work around this, initialize the fields below with doubles.
45574    //
45575    // Learn more about this here:
45576    // https://github.com/facebook/react/issues/14365
45577    // https://bugs.chromium.org/p/v8/issues/detail?id=8538
45578    this.actualDuration = Number.NaN;
45579    this.actualStartTime = Number.NaN;
45580    this.selfBaseDuration = Number.NaN;
45581    this.treeBaseDuration = Number.NaN; // It's okay to replace the initial doubles with smis after initialization.
45582    // This won't trigger the performance cliff mentioned above,
45583    // and it simplifies other profiler code (including DevTools).
45584
45585    this.actualDuration = 0;
45586    this.actualStartTime = -1;
45587    this.selfBaseDuration = 0;
45588    this.treeBaseDuration = 0;
45589  } // This is normally DEV-only except www when it adds listeners.
45590  // TODO: remove the User Timing integration in favor of Root Events.
45591
45592
45593  {
45594    this._debugID = debugCounter++;
45595    this._debugIsCurrentlyTiming = false;
45596  }
45597
45598  {
45599    this._debugSource = null;
45600    this._debugOwner = null;
45601    this._debugNeedsRemount = false;
45602    this._debugHookTypes = null;
45603
45604    if (!hasBadMapPolyfill && typeof Object.preventExtensions === 'function') {
45605      Object.preventExtensions(this);
45606    }
45607  }
45608} // This is a constructor function, rather than a POJO constructor, still
45609// please ensure we do the following:
45610// 1) Nobody should add any instance methods on this. Instance methods can be
45611//    more difficult to predict when they get optimized and they are almost
45612//    never inlined properly in static compilers.
45613// 2) Nobody should rely on `instanceof Fiber` for type testing. We should
45614//    always know when it is a fiber.
45615// 3) We might want to experiment with using numeric keys since they are easier
45616//    to optimize in a non-JIT environment.
45617// 4) We can easily go from a constructor to a createFiber object literal if that
45618//    is faster.
45619// 5) It should be easy to port this to a C struct and keep a C implementation
45620//    compatible.
45621
45622
45623var createFiber = function (tag, pendingProps, key, mode) {
45624  // $FlowFixMe: the shapes are exact here but Flow doesn't like constructors
45625  return new FiberNode(tag, pendingProps, key, mode);
45626};
45627
45628function shouldConstruct(Component) {
45629  var prototype = Component.prototype;
45630  return !!(prototype && prototype.isReactComponent);
45631}
45632
45633function isSimpleFunctionComponent(type) {
45634  return typeof type === 'function' && !shouldConstruct(type) && type.defaultProps === undefined;
45635}
45636function resolveLazyComponentTag(Component) {
45637  if (typeof Component === 'function') {
45638    return shouldConstruct(Component) ? ClassComponent : FunctionComponent;
45639  } else if (Component !== undefined && Component !== null) {
45640    var $$typeof = Component.$$typeof;
45641
45642    if ($$typeof === REACT_FORWARD_REF_TYPE) {
45643      return ForwardRef;
45644    }
45645
45646    if ($$typeof === REACT_MEMO_TYPE) {
45647      return MemoComponent;
45648    }
45649  }
45650
45651  return IndeterminateComponent;
45652} // This is used to create an alternate fiber to do work on.
45653
45654function createWorkInProgress(current, pendingProps) {
45655  var workInProgress = current.alternate;
45656
45657  if (workInProgress === null) {
45658    // We use a double buffering pooling technique because we know that we'll
45659    // only ever need at most two versions of a tree. We pool the "other" unused
45660    // node that we're free to reuse. This is lazily created to avoid allocating
45661    // extra objects for things that are never updated. It also allow us to
45662    // reclaim the extra memory if needed.
45663    workInProgress = createFiber(current.tag, pendingProps, current.key, current.mode);
45664    workInProgress.elementType = current.elementType;
45665    workInProgress.type = current.type;
45666    workInProgress.stateNode = current.stateNode;
45667
45668    {
45669      // DEV-only fields
45670      {
45671        workInProgress._debugID = current._debugID;
45672      }
45673
45674      workInProgress._debugSource = current._debugSource;
45675      workInProgress._debugOwner = current._debugOwner;
45676      workInProgress._debugHookTypes = current._debugHookTypes;
45677    }
45678
45679    workInProgress.alternate = current;
45680    current.alternate = workInProgress;
45681  } else {
45682    workInProgress.pendingProps = pendingProps; // We already have an alternate.
45683    // Reset the effect tag.
45684
45685    workInProgress.effectTag = NoEffect; // The effect list is no longer valid.
45686
45687    workInProgress.nextEffect = null;
45688    workInProgress.firstEffect = null;
45689    workInProgress.lastEffect = null;
45690
45691    {
45692      // We intentionally reset, rather than copy, actualDuration & actualStartTime.
45693      // This prevents time from endlessly accumulating in new commits.
45694      // This has the downside of resetting values for different priority renders,
45695      // But works for yielding (the common case) and should support resuming.
45696      workInProgress.actualDuration = 0;
45697      workInProgress.actualStartTime = -1;
45698    }
45699  }
45700
45701  workInProgress.childExpirationTime = current.childExpirationTime;
45702  workInProgress.expirationTime = current.expirationTime;
45703  workInProgress.child = current.child;
45704  workInProgress.memoizedProps = current.memoizedProps;
45705  workInProgress.memoizedState = current.memoizedState;
45706  workInProgress.updateQueue = current.updateQueue; // Clone the dependencies object. This is mutated during the render phase, so
45707  // it cannot be shared with the current fiber.
45708
45709  var currentDependencies = current.dependencies;
45710  workInProgress.dependencies = currentDependencies === null ? null : {
45711    expirationTime: currentDependencies.expirationTime,
45712    firstContext: currentDependencies.firstContext,
45713    responders: currentDependencies.responders
45714  }; // These will be overridden during the parent's reconciliation
45715
45716  workInProgress.sibling = current.sibling;
45717  workInProgress.index = current.index;
45718  workInProgress.ref = current.ref;
45719
45720  {
45721    workInProgress.selfBaseDuration = current.selfBaseDuration;
45722    workInProgress.treeBaseDuration = current.treeBaseDuration;
45723  }
45724
45725  {
45726    workInProgress._debugNeedsRemount = current._debugNeedsRemount;
45727
45728    switch (workInProgress.tag) {
45729      case IndeterminateComponent:
45730      case FunctionComponent:
45731      case SimpleMemoComponent:
45732        workInProgress.type = resolveFunctionForHotReloading(current.type);
45733        break;
45734
45735      case ClassComponent:
45736        workInProgress.type = resolveClassForHotReloading(current.type);
45737        break;
45738
45739      case ForwardRef:
45740        workInProgress.type = resolveForwardRefForHotReloading(current.type);
45741        break;
45742    }
45743  }
45744
45745  return workInProgress;
45746} // Used to reuse a Fiber for a second pass.
45747
45748function resetWorkInProgress(workInProgress, renderExpirationTime) {
45749  // This resets the Fiber to what createFiber or createWorkInProgress would
45750  // have set the values to before during the first pass. Ideally this wouldn't
45751  // be necessary but unfortunately many code paths reads from the workInProgress
45752  // when they should be reading from current and writing to workInProgress.
45753  // We assume pendingProps, index, key, ref, return are still untouched to
45754  // avoid doing another reconciliation.
45755  // Reset the effect tag but keep any Placement tags, since that's something
45756  // that child fiber is setting, not the reconciliation.
45757  workInProgress.effectTag &= Placement; // The effect list is no longer valid.
45758
45759  workInProgress.nextEffect = null;
45760  workInProgress.firstEffect = null;
45761  workInProgress.lastEffect = null;
45762  var current = workInProgress.alternate;
45763
45764  if (current === null) {
45765    // Reset to createFiber's initial values.
45766    workInProgress.childExpirationTime = NoWork;
45767    workInProgress.expirationTime = renderExpirationTime;
45768    workInProgress.child = null;
45769    workInProgress.memoizedProps = null;
45770    workInProgress.memoizedState = null;
45771    workInProgress.updateQueue = null;
45772    workInProgress.dependencies = null;
45773
45774    {
45775      // Note: We don't reset the actualTime counts. It's useful to accumulate
45776      // actual time across multiple render passes.
45777      workInProgress.selfBaseDuration = 0;
45778      workInProgress.treeBaseDuration = 0;
45779    }
45780  } else {
45781    // Reset to the cloned values that createWorkInProgress would've.
45782    workInProgress.childExpirationTime = current.childExpirationTime;
45783    workInProgress.expirationTime = current.expirationTime;
45784    workInProgress.child = current.child;
45785    workInProgress.memoizedProps = current.memoizedProps;
45786    workInProgress.memoizedState = current.memoizedState;
45787    workInProgress.updateQueue = current.updateQueue; // Clone the dependencies object. This is mutated during the render phase, so
45788    // it cannot be shared with the current fiber.
45789
45790    var currentDependencies = current.dependencies;
45791    workInProgress.dependencies = currentDependencies === null ? null : {
45792      expirationTime: currentDependencies.expirationTime,
45793      firstContext: currentDependencies.firstContext,
45794      responders: currentDependencies.responders
45795    };
45796
45797    {
45798      // Note: We don't reset the actualTime counts. It's useful to accumulate
45799      // actual time across multiple render passes.
45800      workInProgress.selfBaseDuration = current.selfBaseDuration;
45801      workInProgress.treeBaseDuration = current.treeBaseDuration;
45802    }
45803  }
45804
45805  return workInProgress;
45806}
45807function createHostRootFiber(tag) {
45808  var mode;
45809
45810  if (tag === ConcurrentRoot) {
45811    mode = ConcurrentMode | BlockingMode | StrictMode;
45812  } else if (tag === BlockingRoot) {
45813    mode = BlockingMode | StrictMode;
45814  } else {
45815    mode = NoMode;
45816  }
45817
45818  if ( isDevToolsPresent) {
45819    // Always collect profile timings when DevTools are present.
45820    // This enables DevTools to start capturing timing at any point–
45821    // Without some nodes in the tree having empty base times.
45822    mode |= ProfileMode;
45823  }
45824
45825  return createFiber(HostRoot, null, null, mode);
45826}
45827function createFiberFromTypeAndProps(type, // React$ElementType
45828key, pendingProps, owner, mode, expirationTime) {
45829  var fiber;
45830  var fiberTag = IndeterminateComponent; // The resolved type is set if we know what the final type will be. I.e. it's not lazy.
45831
45832  var resolvedType = type;
45833
45834  if (typeof type === 'function') {
45835    if (shouldConstruct(type)) {
45836      fiberTag = ClassComponent;
45837
45838      {
45839        resolvedType = resolveClassForHotReloading(resolvedType);
45840      }
45841    } else {
45842      {
45843        resolvedType = resolveFunctionForHotReloading(resolvedType);
45844      }
45845    }
45846  } else if (typeof type === 'string') {
45847    fiberTag = HostComponent;
45848  } else {
45849    getTag: switch (type) {
45850      case REACT_FRAGMENT_TYPE:
45851        return createFiberFromFragment(pendingProps.children, mode, expirationTime, key);
45852
45853      case REACT_CONCURRENT_MODE_TYPE:
45854        fiberTag = Mode;
45855        mode |= ConcurrentMode | BlockingMode | StrictMode;
45856        break;
45857
45858      case REACT_STRICT_MODE_TYPE:
45859        fiberTag = Mode;
45860        mode |= StrictMode;
45861        break;
45862
45863      case REACT_PROFILER_TYPE:
45864        return createFiberFromProfiler(pendingProps, mode, expirationTime, key);
45865
45866      case REACT_SUSPENSE_TYPE:
45867        return createFiberFromSuspense(pendingProps, mode, expirationTime, key);
45868
45869      case REACT_SUSPENSE_LIST_TYPE:
45870        return createFiberFromSuspenseList(pendingProps, mode, expirationTime, key);
45871
45872      default:
45873        {
45874          if (typeof type === 'object' && type !== null) {
45875            switch (type.$$typeof) {
45876              case REACT_PROVIDER_TYPE:
45877                fiberTag = ContextProvider;
45878                break getTag;
45879
45880              case REACT_CONTEXT_TYPE:
45881                // This is a consumer
45882                fiberTag = ContextConsumer;
45883                break getTag;
45884
45885              case REACT_FORWARD_REF_TYPE:
45886                fiberTag = ForwardRef;
45887
45888                {
45889                  resolvedType = resolveForwardRefForHotReloading(resolvedType);
45890                }
45891
45892                break getTag;
45893
45894              case REACT_MEMO_TYPE:
45895                fiberTag = MemoComponent;
45896                break getTag;
45897
45898              case REACT_LAZY_TYPE:
45899                fiberTag = LazyComponent;
45900                resolvedType = null;
45901                break getTag;
45902
45903              case REACT_BLOCK_TYPE:
45904                fiberTag = Block;
45905                break getTag;
45906
45907            }
45908          }
45909
45910          var info = '';
45911
45912          {
45913            if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {
45914              info += ' You likely forgot to export your component from the file ' + "it's defined in, or you might have mixed up default and " + 'named imports.';
45915            }
45916
45917            var ownerName = owner ? getComponentName(owner.type) : null;
45918
45919            if (ownerName) {
45920              info += '\n\nCheck the render method of `' + ownerName + '`.';
45921            }
45922          }
45923
45924          {
45925            {
45926              throw Error( "Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: " + (type == null ? type : typeof type) + "." + info );
45927            }
45928          }
45929        }
45930    }
45931  }
45932
45933  fiber = createFiber(fiberTag, pendingProps, key, mode);
45934  fiber.elementType = type;
45935  fiber.type = resolvedType;
45936  fiber.expirationTime = expirationTime;
45937  return fiber;
45938}
45939function createFiberFromElement(element, mode, expirationTime) {
45940  var owner = null;
45941
45942  {
45943    owner = element._owner;
45944  }
45945
45946  var type = element.type;
45947  var key = element.key;
45948  var pendingProps = element.props;
45949  var fiber = createFiberFromTypeAndProps(type, key, pendingProps, owner, mode, expirationTime);
45950
45951  {
45952    fiber._debugSource = element._source;
45953    fiber._debugOwner = element._owner;
45954  }
45955
45956  return fiber;
45957}
45958function createFiberFromFragment(elements, mode, expirationTime, key) {
45959  var fiber = createFiber(Fragment, elements, key, mode);
45960  fiber.expirationTime = expirationTime;
45961  return fiber;
45962}
45963
45964function createFiberFromProfiler(pendingProps, mode, expirationTime, key) {
45965  {
45966    if (typeof pendingProps.id !== 'string' || typeof pendingProps.onRender !== 'function') {
45967      error('Profiler must specify an "id" string and "onRender" function as props');
45968    }
45969  }
45970
45971  var fiber = createFiber(Profiler, pendingProps, key, mode | ProfileMode); // TODO: The Profiler fiber shouldn't have a type. It has a tag.
45972
45973  fiber.elementType = REACT_PROFILER_TYPE;
45974  fiber.type = REACT_PROFILER_TYPE;
45975  fiber.expirationTime = expirationTime;
45976  return fiber;
45977}
45978
45979function createFiberFromSuspense(pendingProps, mode, expirationTime, key) {
45980  var fiber = createFiber(SuspenseComponent, pendingProps, key, mode); // TODO: The SuspenseComponent fiber shouldn't have a type. It has a tag.
45981  // This needs to be fixed in getComponentName so that it relies on the tag
45982  // instead.
45983
45984  fiber.type = REACT_SUSPENSE_TYPE;
45985  fiber.elementType = REACT_SUSPENSE_TYPE;
45986  fiber.expirationTime = expirationTime;
45987  return fiber;
45988}
45989function createFiberFromSuspenseList(pendingProps, mode, expirationTime, key) {
45990  var fiber = createFiber(SuspenseListComponent, pendingProps, key, mode);
45991
45992  {
45993    // TODO: The SuspenseListComponent fiber shouldn't have a type. It has a tag.
45994    // This needs to be fixed in getComponentName so that it relies on the tag
45995    // instead.
45996    fiber.type = REACT_SUSPENSE_LIST_TYPE;
45997  }
45998
45999  fiber.elementType = REACT_SUSPENSE_LIST_TYPE;
46000  fiber.expirationTime = expirationTime;
46001  return fiber;
46002}
46003function createFiberFromText(content, mode, expirationTime) {
46004  var fiber = createFiber(HostText, content, null, mode);
46005  fiber.expirationTime = expirationTime;
46006  return fiber;
46007}
46008function createFiberFromHostInstanceForDeletion() {
46009  var fiber = createFiber(HostComponent, null, null, NoMode); // TODO: These should not need a type.
46010
46011  fiber.elementType = 'DELETED';
46012  fiber.type = 'DELETED';
46013  return fiber;
46014}
46015function createFiberFromPortal(portal, mode, expirationTime) {
46016  var pendingProps = portal.children !== null ? portal.children : [];
46017  var fiber = createFiber(HostPortal, pendingProps, portal.key, mode);
46018  fiber.expirationTime = expirationTime;
46019  fiber.stateNode = {
46020    containerInfo: portal.containerInfo,
46021    pendingChildren: null,
46022    // Used by persistent updates
46023    implementation: portal.implementation
46024  };
46025  return fiber;
46026} // Used for stashing WIP properties to replay failed work in DEV.
46027
46028function assignFiberPropertiesInDEV(target, source) {
46029  if (target === null) {
46030    // This Fiber's initial properties will always be overwritten.
46031    // We only use a Fiber to ensure the same hidden class so DEV isn't slow.
46032    target = createFiber(IndeterminateComponent, null, null, NoMode);
46033  } // This is intentionally written as a list of all properties.
46034  // We tried to use Object.assign() instead but this is called in
46035  // the hottest path, and Object.assign() was too slow:
46036  // https://github.com/facebook/react/issues/12502
46037  // This code is DEV-only so size is not a concern.
46038
46039
46040  target.tag = source.tag;
46041  target.key = source.key;
46042  target.elementType = source.elementType;
46043  target.type = source.type;
46044  target.stateNode = source.stateNode;
46045  target.return = source.return;
46046  target.child = source.child;
46047  target.sibling = source.sibling;
46048  target.index = source.index;
46049  target.ref = source.ref;
46050  target.pendingProps = source.pendingProps;
46051  target.memoizedProps = source.memoizedProps;
46052  target.updateQueue = source.updateQueue;
46053  target.memoizedState = source.memoizedState;
46054  target.dependencies = source.dependencies;
46055  target.mode = source.mode;
46056  target.effectTag = source.effectTag;
46057  target.nextEffect = source.nextEffect;
46058  target.firstEffect = source.firstEffect;
46059  target.lastEffect = source.lastEffect;
46060  target.expirationTime = source.expirationTime;
46061  target.childExpirationTime = source.childExpirationTime;
46062  target.alternate = source.alternate;
46063
46064  {
46065    target.actualDuration = source.actualDuration;
46066    target.actualStartTime = source.actualStartTime;
46067    target.selfBaseDuration = source.selfBaseDuration;
46068    target.treeBaseDuration = source.treeBaseDuration;
46069  }
46070
46071  {
46072    target._debugID = source._debugID;
46073  }
46074
46075  target._debugSource = source._debugSource;
46076  target._debugOwner = source._debugOwner;
46077  target._debugIsCurrentlyTiming = source._debugIsCurrentlyTiming;
46078  target._debugNeedsRemount = source._debugNeedsRemount;
46079  target._debugHookTypes = source._debugHookTypes;
46080  return target;
46081}
46082
46083function FiberRootNode(containerInfo, tag, hydrate) {
46084  this.tag = tag;
46085  this.current = null;
46086  this.containerInfo = containerInfo;
46087  this.pendingChildren = null;
46088  this.pingCache = null;
46089  this.finishedExpirationTime = NoWork;
46090  this.finishedWork = null;
46091  this.timeoutHandle = noTimeout;
46092  this.context = null;
46093  this.pendingContext = null;
46094  this.hydrate = hydrate;
46095  this.callbackNode = null;
46096  this.callbackPriority = NoPriority;
46097  this.firstPendingTime = NoWork;
46098  this.firstSuspendedTime = NoWork;
46099  this.lastSuspendedTime = NoWork;
46100  this.nextKnownPendingLevel = NoWork;
46101  this.lastPingedTime = NoWork;
46102  this.lastExpiredTime = NoWork;
46103
46104  {
46105    this.interactionThreadID = tracing.unstable_getThreadID();
46106    this.memoizedInteractions = new Set();
46107    this.pendingInteractionMap = new Map();
46108  }
46109}
46110
46111function createFiberRoot(containerInfo, tag, hydrate, hydrationCallbacks) {
46112  var root = new FiberRootNode(containerInfo, tag, hydrate);
46113  // stateNode is any.
46114
46115
46116  var uninitializedFiber = createHostRootFiber(tag);
46117  root.current = uninitializedFiber;
46118  uninitializedFiber.stateNode = root;
46119  initializeUpdateQueue(uninitializedFiber);
46120  return root;
46121}
46122function isRootSuspendedAtTime(root, expirationTime) {
46123  var firstSuspendedTime = root.firstSuspendedTime;
46124  var lastSuspendedTime = root.lastSuspendedTime;
46125  return firstSuspendedTime !== NoWork && firstSuspendedTime >= expirationTime && lastSuspendedTime <= expirationTime;
46126}
46127function markRootSuspendedAtTime(root, expirationTime) {
46128  var firstSuspendedTime = root.firstSuspendedTime;
46129  var lastSuspendedTime = root.lastSuspendedTime;
46130
46131  if (firstSuspendedTime < expirationTime) {
46132    root.firstSuspendedTime = expirationTime;
46133  }
46134
46135  if (lastSuspendedTime > expirationTime || firstSuspendedTime === NoWork) {
46136    root.lastSuspendedTime = expirationTime;
46137  }
46138
46139  if (expirationTime <= root.lastPingedTime) {
46140    root.lastPingedTime = NoWork;
46141  }
46142
46143  if (expirationTime <= root.lastExpiredTime) {
46144    root.lastExpiredTime = NoWork;
46145  }
46146}
46147function markRootUpdatedAtTime(root, expirationTime) {
46148  // Update the range of pending times
46149  var firstPendingTime = root.firstPendingTime;
46150
46151  if (expirationTime > firstPendingTime) {
46152    root.firstPendingTime = expirationTime;
46153  } // Update the range of suspended times. Treat everything lower priority or
46154  // equal to this update as unsuspended.
46155
46156
46157  var firstSuspendedTime = root.firstSuspendedTime;
46158
46159  if (firstSuspendedTime !== NoWork) {
46160    if (expirationTime >= firstSuspendedTime) {
46161      // The entire suspended range is now unsuspended.
46162      root.firstSuspendedTime = root.lastSuspendedTime = root.nextKnownPendingLevel = NoWork;
46163    } else if (expirationTime >= root.lastSuspendedTime) {
46164      root.lastSuspendedTime = expirationTime + 1;
46165    } // This is a pending level. Check if it's higher priority than the next
46166    // known pending level.
46167
46168
46169    if (expirationTime > root.nextKnownPendingLevel) {
46170      root.nextKnownPendingLevel = expirationTime;
46171    }
46172  }
46173}
46174function markRootFinishedAtTime(root, finishedExpirationTime, remainingExpirationTime) {
46175  // Update the range of pending times
46176  root.firstPendingTime = remainingExpirationTime; // Update the range of suspended times. Treat everything higher priority or
46177  // equal to this update as unsuspended.
46178
46179  if (finishedExpirationTime <= root.lastSuspendedTime) {
46180    // The entire suspended range is now unsuspended.
46181    root.firstSuspendedTime = root.lastSuspendedTime = root.nextKnownPendingLevel = NoWork;
46182  } else if (finishedExpirationTime <= root.firstSuspendedTime) {
46183    // Part of the suspended range is now unsuspended. Narrow the range to
46184    // include everything between the unsuspended time (non-inclusive) and the
46185    // last suspended time.
46186    root.firstSuspendedTime = finishedExpirationTime - 1;
46187  }
46188
46189  if (finishedExpirationTime <= root.lastPingedTime) {
46190    // Clear the pinged time
46191    root.lastPingedTime = NoWork;
46192  }
46193
46194  if (finishedExpirationTime <= root.lastExpiredTime) {
46195    // Clear the expired time
46196    root.lastExpiredTime = NoWork;
46197  }
46198}
46199function markRootExpiredAtTime(root, expirationTime) {
46200  var lastExpiredTime = root.lastExpiredTime;
46201
46202  if (lastExpiredTime === NoWork || lastExpiredTime > expirationTime) {
46203    root.lastExpiredTime = expirationTime;
46204  }
46205}
46206
46207var didWarnAboutNestedUpdates;
46208var didWarnAboutFindNodeInStrictMode;
46209
46210{
46211  didWarnAboutNestedUpdates = false;
46212  didWarnAboutFindNodeInStrictMode = {};
46213}
46214
46215function getContextForSubtree(parentComponent) {
46216  if (!parentComponent) {
46217    return emptyContextObject;
46218  }
46219
46220  var fiber = get(parentComponent);
46221  var parentContext = findCurrentUnmaskedContext(fiber);
46222
46223  if (fiber.tag === ClassComponent) {
46224    var Component = fiber.type;
46225
46226    if (isContextProvider(Component)) {
46227      return processChildContext(fiber, Component, parentContext);
46228    }
46229  }
46230
46231  return parentContext;
46232}
46233
46234function findHostInstanceWithWarning(component, methodName) {
46235  {
46236    var fiber = get(component);
46237
46238    if (fiber === undefined) {
46239      if (typeof component.render === 'function') {
46240        {
46241          {
46242            throw Error( "Unable to find node on an unmounted component." );
46243          }
46244        }
46245      } else {
46246        {
46247          {
46248            throw Error( "Argument appears to not be a ReactComponent. Keys: " + Object.keys(component) );
46249          }
46250        }
46251      }
46252    }
46253
46254    var hostFiber = findCurrentHostFiber(fiber);
46255
46256    if (hostFiber === null) {
46257      return null;
46258    }
46259
46260    if (hostFiber.mode & StrictMode) {
46261      var componentName = getComponentName(fiber.type) || 'Component';
46262
46263      if (!didWarnAboutFindNodeInStrictMode[componentName]) {
46264        didWarnAboutFindNodeInStrictMode[componentName] = true;
46265
46266        if (fiber.mode & StrictMode) {
46267          error('%s is deprecated in StrictMode. ' + '%s was passed an instance of %s which is inside StrictMode. ' + 'Instead, add a ref directly to the element you want to reference. ' + 'Learn more about using refs safely here: ' + 'https://fb.me/react-strict-mode-find-node%s', methodName, methodName, componentName, getStackByFiberInDevAndProd(hostFiber));
46268        } else {
46269          error('%s is deprecated in StrictMode. ' + '%s was passed an instance of %s which renders StrictMode children. ' + 'Instead, add a ref directly to the element you want to reference. ' + 'Learn more about using refs safely here: ' + 'https://fb.me/react-strict-mode-find-node%s', methodName, methodName, componentName, getStackByFiberInDevAndProd(hostFiber));
46270        }
46271      }
46272    }
46273
46274    return hostFiber.stateNode;
46275  }
46276}
46277
46278function createContainer(containerInfo, tag, hydrate, hydrationCallbacks) {
46279  return createFiberRoot(containerInfo, tag, hydrate);
46280}
46281function updateContainer(element, container, parentComponent, callback) {
46282  {
46283    onScheduleRoot(container, element);
46284  }
46285
46286  var current$1 = container.current;
46287  var currentTime = requestCurrentTimeForUpdate();
46288
46289  {
46290    // $FlowExpectedError - jest isn't a global, and isn't recognized outside of tests
46291    if ('undefined' !== typeof jest) {
46292      warnIfUnmockedScheduler(current$1);
46293      warnIfNotScopedWithMatchingAct(current$1);
46294    }
46295  }
46296
46297  var suspenseConfig = requestCurrentSuspenseConfig();
46298  var expirationTime = computeExpirationForFiber(currentTime, current$1, suspenseConfig);
46299  var context = getContextForSubtree(parentComponent);
46300
46301  if (container.context === null) {
46302    container.context = context;
46303  } else {
46304    container.pendingContext = context;
46305  }
46306
46307  {
46308    if (isRendering && current !== null && !didWarnAboutNestedUpdates) {
46309      didWarnAboutNestedUpdates = true;
46310
46311      error('Render methods should be a pure function of props and state; ' + 'triggering nested component updates from render is not allowed. ' + 'If necessary, trigger nested updates in componentDidUpdate.\n\n' + 'Check the render method of %s.', getComponentName(current.type) || 'Unknown');
46312    }
46313  }
46314
46315  var update = createUpdate(expirationTime, suspenseConfig); // Caution: React DevTools currently depends on this property
46316  // being called "element".
46317
46318  update.payload = {
46319    element: element
46320  };
46321  callback = callback === undefined ? null : callback;
46322
46323  if (callback !== null) {
46324    {
46325      if (typeof callback !== 'function') {
46326        error('render(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callback);
46327      }
46328    }
46329
46330    update.callback = callback;
46331  }
46332
46333  enqueueUpdate(current$1, update);
46334  scheduleWork(current$1, expirationTime);
46335  return expirationTime;
46336}
46337function getPublicRootInstance(container) {
46338  var containerFiber = container.current;
46339
46340  if (!containerFiber.child) {
46341    return null;
46342  }
46343
46344  switch (containerFiber.child.tag) {
46345    case HostComponent:
46346      return getPublicInstance(containerFiber.child.stateNode);
46347
46348    default:
46349      return containerFiber.child.stateNode;
46350  }
46351}
46352
46353function markRetryTimeImpl(fiber, retryTime) {
46354  var suspenseState = fiber.memoizedState;
46355
46356  if (suspenseState !== null && suspenseState.dehydrated !== null) {
46357    if (suspenseState.retryTime < retryTime) {
46358      suspenseState.retryTime = retryTime;
46359    }
46360  }
46361} // Increases the priority of thennables when they resolve within this boundary.
46362
46363
46364function markRetryTimeIfNotHydrated(fiber, retryTime) {
46365  markRetryTimeImpl(fiber, retryTime);
46366  var alternate = fiber.alternate;
46367
46368  if (alternate) {
46369    markRetryTimeImpl(alternate, retryTime);
46370  }
46371}
46372
46373function attemptUserBlockingHydration$1(fiber) {
46374  if (fiber.tag !== SuspenseComponent) {
46375    // We ignore HostRoots here because we can't increase
46376    // their priority and they should not suspend on I/O,
46377    // since you have to wrap anything that might suspend in
46378    // Suspense.
46379    return;
46380  }
46381
46382  var expTime = computeInteractiveExpiration(requestCurrentTimeForUpdate());
46383  scheduleWork(fiber, expTime);
46384  markRetryTimeIfNotHydrated(fiber, expTime);
46385}
46386function attemptContinuousHydration$1(fiber) {
46387  if (fiber.tag !== SuspenseComponent) {
46388    // We ignore HostRoots here because we can't increase
46389    // their priority and they should not suspend on I/O,
46390    // since you have to wrap anything that might suspend in
46391    // Suspense.
46392    return;
46393  }
46394
46395  scheduleWork(fiber, ContinuousHydration);
46396  markRetryTimeIfNotHydrated(fiber, ContinuousHydration);
46397}
46398function attemptHydrationAtCurrentPriority$1(fiber) {
46399  if (fiber.tag !== SuspenseComponent) {
46400    // We ignore HostRoots here because we can't increase
46401    // their priority other than synchronously flush it.
46402    return;
46403  }
46404
46405  var currentTime = requestCurrentTimeForUpdate();
46406  var expTime = computeExpirationForFiber(currentTime, fiber, null);
46407  scheduleWork(fiber, expTime);
46408  markRetryTimeIfNotHydrated(fiber, expTime);
46409}
46410function findHostInstanceWithNoPortals(fiber) {
46411  var hostFiber = findCurrentHostFiberWithNoPortals(fiber);
46412
46413  if (hostFiber === null) {
46414    return null;
46415  }
46416
46417  if (hostFiber.tag === FundamentalComponent) {
46418    return hostFiber.stateNode.instance;
46419  }
46420
46421  return hostFiber.stateNode;
46422}
46423
46424var shouldSuspendImpl = function (fiber) {
46425  return false;
46426};
46427
46428function shouldSuspend(fiber) {
46429  return shouldSuspendImpl(fiber);
46430}
46431var overrideHookState = null;
46432var overrideProps = null;
46433var scheduleUpdate = null;
46434var setSuspenseHandler = null;
46435
46436{
46437  var copyWithSetImpl = function (obj, path, idx, value) {
46438    if (idx >= path.length) {
46439      return value;
46440    }
46441
46442    var key = path[idx];
46443    var updated = Array.isArray(obj) ? obj.slice() : _assign({}, obj); // $FlowFixMe number or string is fine here
46444
46445    updated[key] = copyWithSetImpl(obj[key], path, idx + 1, value);
46446    return updated;
46447  };
46448
46449  var copyWithSet = function (obj, path, value) {
46450    return copyWithSetImpl(obj, path, 0, value);
46451  }; // Support DevTools editable values for useState and useReducer.
46452
46453
46454  overrideHookState = function (fiber, id, path, value) {
46455    // For now, the "id" of stateful hooks is just the stateful hook index.
46456    // This may change in the future with e.g. nested hooks.
46457    var currentHook = fiber.memoizedState;
46458
46459    while (currentHook !== null && id > 0) {
46460      currentHook = currentHook.next;
46461      id--;
46462    }
46463
46464    if (currentHook !== null) {
46465      var newState = copyWithSet(currentHook.memoizedState, path, value);
46466      currentHook.memoizedState = newState;
46467      currentHook.baseState = newState; // We aren't actually adding an update to the queue,
46468      // because there is no update we can add for useReducer hooks that won't trigger an error.
46469      // (There's no appropriate action type for DevTools overrides.)
46470      // As a result though, React will see the scheduled update as a noop and bailout.
46471      // Shallow cloning props works as a workaround for now to bypass the bailout check.
46472
46473      fiber.memoizedProps = _assign({}, fiber.memoizedProps);
46474      scheduleWork(fiber, Sync);
46475    }
46476  }; // Support DevTools props for function components, forwardRef, memo, host components, etc.
46477
46478
46479  overrideProps = function (fiber, path, value) {
46480    fiber.pendingProps = copyWithSet(fiber.memoizedProps, path, value);
46481
46482    if (fiber.alternate) {
46483      fiber.alternate.pendingProps = fiber.pendingProps;
46484    }
46485
46486    scheduleWork(fiber, Sync);
46487  };
46488
46489  scheduleUpdate = function (fiber) {
46490    scheduleWork(fiber, Sync);
46491  };
46492
46493  setSuspenseHandler = function (newShouldSuspendImpl) {
46494    shouldSuspendImpl = newShouldSuspendImpl;
46495  };
46496}
46497
46498function injectIntoDevTools(devToolsConfig) {
46499  var findFiberByHostInstance = devToolsConfig.findFiberByHostInstance;
46500  var ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;
46501  return injectInternals(_assign({}, devToolsConfig, {
46502    overrideHookState: overrideHookState,
46503    overrideProps: overrideProps,
46504    setSuspenseHandler: setSuspenseHandler,
46505    scheduleUpdate: scheduleUpdate,
46506    currentDispatcherRef: ReactCurrentDispatcher,
46507    findHostInstanceByFiber: function (fiber) {
46508      var hostFiber = findCurrentHostFiber(fiber);
46509
46510      if (hostFiber === null) {
46511        return null;
46512      }
46513
46514      return hostFiber.stateNode;
46515    },
46516    findFiberByHostInstance: function (instance) {
46517      if (!findFiberByHostInstance) {
46518        // Might not be implemented by the renderer.
46519        return null;
46520      }
46521
46522      return findFiberByHostInstance(instance);
46523    },
46524    // React Refresh
46525    findHostInstancesForRefresh:  findHostInstancesForRefresh ,
46526    scheduleRefresh:  scheduleRefresh ,
46527    scheduleRoot:  scheduleRoot ,
46528    setRefreshHandler:  setRefreshHandler ,
46529    // Enables DevTools to append owner stacks to error messages in DEV mode.
46530    getCurrentFiber:  function () {
46531      return current;
46532    } 
46533  }));
46534}
46535var IsSomeRendererActing$1 = ReactSharedInternals.IsSomeRendererActing;
46536
46537function ReactDOMRoot(container, options) {
46538  this._internalRoot = createRootImpl(container, ConcurrentRoot, options);
46539}
46540
46541function ReactDOMBlockingRoot(container, tag, options) {
46542  this._internalRoot = createRootImpl(container, tag, options);
46543}
46544
46545ReactDOMRoot.prototype.render = ReactDOMBlockingRoot.prototype.render = function (children) {
46546  var root = this._internalRoot;
46547
46548  {
46549    if (typeof arguments[1] === 'function') {
46550      error('render(...): does not support the second callback argument. ' + 'To execute a side effect after rendering, declare it in a component body with useEffect().');
46551    }
46552
46553    var container = root.containerInfo;
46554
46555    if (container.nodeType !== COMMENT_NODE) {
46556      var hostInstance = findHostInstanceWithNoPortals(root.current);
46557
46558      if (hostInstance) {
46559        if (hostInstance.parentNode !== container) {
46560          error('render(...): It looks like the React-rendered content of the ' + 'root container was removed without using React. This is not ' + 'supported and will cause errors. Instead, call ' + "root.unmount() to empty a root's container.");
46561        }
46562      }
46563    }
46564  }
46565
46566  updateContainer(children, root, null, null);
46567};
46568
46569ReactDOMRoot.prototype.unmount = ReactDOMBlockingRoot.prototype.unmount = function () {
46570  {
46571    if (typeof arguments[0] === 'function') {
46572      error('unmount(...): does not support a callback argument. ' + 'To execute a side effect after rendering, declare it in a component body with useEffect().');
46573    }
46574  }
46575
46576  var root = this._internalRoot;
46577  var container = root.containerInfo;
46578  updateContainer(null, root, null, function () {
46579    unmarkContainerAsRoot(container);
46580  });
46581};
46582
46583function createRootImpl(container, tag, options) {
46584  // Tag is either LegacyRoot or Concurrent Root
46585  var hydrate = options != null && options.hydrate === true;
46586  var hydrationCallbacks = options != null && options.hydrationOptions || null;
46587  var root = createContainer(container, tag, hydrate);
46588  markContainerAsRoot(root.current, container);
46589
46590  if (hydrate && tag !== LegacyRoot) {
46591    var doc = container.nodeType === DOCUMENT_NODE ? container : container.ownerDocument;
46592    eagerlyTrapReplayableEvents(container, doc);
46593  }
46594
46595  return root;
46596}
46597function createLegacyRoot(container, options) {
46598  return new ReactDOMBlockingRoot(container, LegacyRoot, options);
46599}
46600function isValidContainer(node) {
46601  return !!(node && (node.nodeType === ELEMENT_NODE || node.nodeType === DOCUMENT_NODE || node.nodeType === DOCUMENT_FRAGMENT_NODE || node.nodeType === COMMENT_NODE && node.nodeValue === ' react-mount-point-unstable '));
46602}
46603
46604var ReactCurrentOwner$3 = ReactSharedInternals.ReactCurrentOwner;
46605var topLevelUpdateWarnings;
46606var warnedAboutHydrateAPI = false;
46607
46608{
46609  topLevelUpdateWarnings = function (container) {
46610    if (container._reactRootContainer && container.nodeType !== COMMENT_NODE) {
46611      var hostInstance = findHostInstanceWithNoPortals(container._reactRootContainer._internalRoot.current);
46612
46613      if (hostInstance) {
46614        if (hostInstance.parentNode !== container) {
46615          error('render(...): It looks like the React-rendered content of this ' + 'container was removed without using React. This is not ' + 'supported and will cause errors. Instead, call ' + 'ReactDOM.unmountComponentAtNode to empty a container.');
46616        }
46617      }
46618    }
46619
46620    var isRootRenderedBySomeReact = !!container._reactRootContainer;
46621    var rootEl = getReactRootElementInContainer(container);
46622    var hasNonRootReactChild = !!(rootEl && getInstanceFromNode$1(rootEl));
46623
46624    if (hasNonRootReactChild && !isRootRenderedBySomeReact) {
46625      error('render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.');
46626    }
46627
46628    if (container.nodeType === ELEMENT_NODE && container.tagName && container.tagName.toUpperCase() === 'BODY') {
46629      error('render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.');
46630    }
46631  };
46632}
46633
46634function getReactRootElementInContainer(container) {
46635  if (!container) {
46636    return null;
46637  }
46638
46639  if (container.nodeType === DOCUMENT_NODE) {
46640    return container.documentElement;
46641  } else {
46642    return container.firstChild;
46643  }
46644}
46645
46646function shouldHydrateDueToLegacyHeuristic(container) {
46647  var rootElement = getReactRootElementInContainer(container);
46648  return !!(rootElement && rootElement.nodeType === ELEMENT_NODE && rootElement.hasAttribute(ROOT_ATTRIBUTE_NAME));
46649}
46650
46651function legacyCreateRootFromDOMContainer(container, forceHydrate) {
46652  var shouldHydrate = forceHydrate || shouldHydrateDueToLegacyHeuristic(container); // First clear any existing content.
46653
46654  if (!shouldHydrate) {
46655    var warned = false;
46656    var rootSibling;
46657
46658    while (rootSibling = container.lastChild) {
46659      {
46660        if (!warned && rootSibling.nodeType === ELEMENT_NODE && rootSibling.hasAttribute(ROOT_ATTRIBUTE_NAME)) {
46661          warned = true;
46662
46663          error('render(): Target node has markup rendered by React, but there ' + 'are unrelated nodes as well. This is most commonly caused by ' + 'white-space inserted around server-rendered markup.');
46664        }
46665      }
46666
46667      container.removeChild(rootSibling);
46668    }
46669  }
46670
46671  {
46672    if (shouldHydrate && !forceHydrate && !warnedAboutHydrateAPI) {
46673      warnedAboutHydrateAPI = true;
46674
46675      warn('render(): Calling ReactDOM.render() to hydrate server-rendered markup ' + 'will stop working in React v17. Replace the ReactDOM.render() call ' + 'with ReactDOM.hydrate() if you want React to attach to the server HTML.');
46676    }
46677  }
46678
46679  return createLegacyRoot(container, shouldHydrate ? {
46680    hydrate: true
46681  } : undefined);
46682}
46683
46684function warnOnInvalidCallback$1(callback, callerName) {
46685  {
46686    if (callback !== null && typeof callback !== 'function') {
46687      error('%s(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callerName, callback);
46688    }
46689  }
46690}
46691
46692function legacyRenderSubtreeIntoContainer(parentComponent, children, container, forceHydrate, callback) {
46693  {
46694    topLevelUpdateWarnings(container);
46695    warnOnInvalidCallback$1(callback === undefined ? null : callback, 'render');
46696  } // TODO: Without `any` type, Flow says "Property cannot be accessed on any
46697  // member of intersection type." Whyyyyyy.
46698
46699
46700  var root = container._reactRootContainer;
46701  var fiberRoot;
46702
46703  if (!root) {
46704    // Initial mount
46705    root = container._reactRootContainer = legacyCreateRootFromDOMContainer(container, forceHydrate);
46706    fiberRoot = root._internalRoot;
46707
46708    if (typeof callback === 'function') {
46709      var originalCallback = callback;
46710
46711      callback = function () {
46712        var instance = getPublicRootInstance(fiberRoot);
46713        originalCallback.call(instance);
46714      };
46715    } // Initial mount should not be batched.
46716
46717
46718    unbatchedUpdates(function () {
46719      updateContainer(children, fiberRoot, parentComponent, callback);
46720    });
46721  } else {
46722    fiberRoot = root._internalRoot;
46723
46724    if (typeof callback === 'function') {
46725      var _originalCallback = callback;
46726
46727      callback = function () {
46728        var instance = getPublicRootInstance(fiberRoot);
46729
46730        _originalCallback.call(instance);
46731      };
46732    } // Update
46733
46734
46735    updateContainer(children, fiberRoot, parentComponent, callback);
46736  }
46737
46738  return getPublicRootInstance(fiberRoot);
46739}
46740
46741function findDOMNode(componentOrElement) {
46742  {
46743    var owner = ReactCurrentOwner$3.current;
46744
46745    if (owner !== null && owner.stateNode !== null) {
46746      var warnedAboutRefsInRender = owner.stateNode._warnedAboutRefsInRender;
46747
46748      if (!warnedAboutRefsInRender) {
46749        error('%s is accessing findDOMNode inside its render(). ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', getComponentName(owner.type) || 'A component');
46750      }
46751
46752      owner.stateNode._warnedAboutRefsInRender = true;
46753    }
46754  }
46755
46756  if (componentOrElement == null) {
46757    return null;
46758  }
46759
46760  if (componentOrElement.nodeType === ELEMENT_NODE) {
46761    return componentOrElement;
46762  }
46763
46764  {
46765    return findHostInstanceWithWarning(componentOrElement, 'findDOMNode');
46766  }
46767}
46768function hydrate(element, container, callback) {
46769  if (!isValidContainer(container)) {
46770    {
46771      throw Error( "Target container is not a DOM element." );
46772    }
46773  }
46774
46775  {
46776    var isModernRoot = isContainerMarkedAsRoot(container) && container._reactRootContainer === undefined;
46777
46778    if (isModernRoot) {
46779      error('You are calling ReactDOM.hydrate() on a container that was previously ' + 'passed to ReactDOM.createRoot(). This is not supported. ' + 'Did you mean to call createRoot(container, {hydrate: true}).render(element)?');
46780    }
46781  } // TODO: throw or warn if we couldn't hydrate?
46782
46783
46784  return legacyRenderSubtreeIntoContainer(null, element, container, true, callback);
46785}
46786function render(element, container, callback) {
46787  if (!isValidContainer(container)) {
46788    {
46789      throw Error( "Target container is not a DOM element." );
46790    }
46791  }
46792
46793  {
46794    var isModernRoot = isContainerMarkedAsRoot(container) && container._reactRootContainer === undefined;
46795
46796    if (isModernRoot) {
46797      error('You are calling ReactDOM.render() on a container that was previously ' + 'passed to ReactDOM.createRoot(). This is not supported. ' + 'Did you mean to call root.render(element)?');
46798    }
46799  }
46800
46801  return legacyRenderSubtreeIntoContainer(null, element, container, false, callback);
46802}
46803function unstable_renderSubtreeIntoContainer(parentComponent, element, containerNode, callback) {
46804  if (!isValidContainer(containerNode)) {
46805    {
46806      throw Error( "Target container is not a DOM element." );
46807    }
46808  }
46809
46810  if (!(parentComponent != null && has(parentComponent))) {
46811    {
46812      throw Error( "parentComponent must be a valid React Component" );
46813    }
46814  }
46815
46816  return legacyRenderSubtreeIntoContainer(parentComponent, element, containerNode, false, callback);
46817}
46818function unmountComponentAtNode(container) {
46819  if (!isValidContainer(container)) {
46820    {
46821      throw Error( "unmountComponentAtNode(...): Target container is not a DOM element." );
46822    }
46823  }
46824
46825  {
46826    var isModernRoot = isContainerMarkedAsRoot(container) && container._reactRootContainer === undefined;
46827
46828    if (isModernRoot) {
46829      error('You are calling ReactDOM.unmountComponentAtNode() on a container that was previously ' + 'passed to ReactDOM.createRoot(). This is not supported. Did you mean to call root.unmount()?');
46830    }
46831  }
46832
46833  if (container._reactRootContainer) {
46834    {
46835      var rootEl = getReactRootElementInContainer(container);
46836      var renderedByDifferentReact = rootEl && !getInstanceFromNode$1(rootEl);
46837
46838      if (renderedByDifferentReact) {
46839        error("unmountComponentAtNode(): The node you're attempting to unmount " + 'was rendered by another copy of React.');
46840      }
46841    } // Unmount should not be batched.
46842
46843
46844    unbatchedUpdates(function () {
46845      legacyRenderSubtreeIntoContainer(null, null, container, false, function () {
46846        // $FlowFixMe This should probably use `delete container._reactRootContainer`
46847        container._reactRootContainer = null;
46848        unmarkContainerAsRoot(container);
46849      });
46850    }); // If you call unmountComponentAtNode twice in quick succession, you'll
46851    // get `true` twice. That's probably fine?
46852
46853    return true;
46854  } else {
46855    {
46856      var _rootEl = getReactRootElementInContainer(container);
46857
46858      var hasNonRootReactChild = !!(_rootEl && getInstanceFromNode$1(_rootEl)); // Check if the container itself is a React root node.
46859
46860      var isContainerReactRoot = container.nodeType === ELEMENT_NODE && isValidContainer(container.parentNode) && !!container.parentNode._reactRootContainer;
46861
46862      if (hasNonRootReactChild) {
46863        error("unmountComponentAtNode(): The node you're attempting to unmount " + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.');
46864      }
46865    }
46866
46867    return false;
46868  }
46869}
46870
46871function createPortal(children, containerInfo, // TODO: figure out the API for cross-renderer implementation.
46872implementation) {
46873  var key = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
46874  return {
46875    // This tag allow us to uniquely identify this as a React Portal
46876    $$typeof: REACT_PORTAL_TYPE,
46877    key: key == null ? null : '' + key,
46878    children: children,
46879    containerInfo: containerInfo,
46880    implementation: implementation
46881  };
46882}
46883
46884var ReactVersion = '16.13.1';
46885
46886setAttemptUserBlockingHydration(attemptUserBlockingHydration$1);
46887setAttemptContinuousHydration(attemptContinuousHydration$1);
46888setAttemptHydrationAtCurrentPriority(attemptHydrationAtCurrentPriority$1);
46889var didWarnAboutUnstableCreatePortal = false;
46890
46891{
46892  if (typeof Map !== 'function' || // $FlowIssue Flow incorrectly thinks Map has no prototype
46893  Map.prototype == null || typeof Map.prototype.forEach !== 'function' || typeof Set !== 'function' || // $FlowIssue Flow incorrectly thinks Set has no prototype
46894  Set.prototype == null || typeof Set.prototype.clear !== 'function' || typeof Set.prototype.forEach !== 'function') {
46895    error('React depends on Map and Set built-in types. Make sure that you load a ' + 'polyfill in older browsers. https://fb.me/react-polyfills');
46896  }
46897}
46898
46899setRestoreImplementation(restoreControlledState$3);
46900setBatchingImplementation(batchedUpdates$1, discreteUpdates$1, flushDiscreteUpdates, batchedEventUpdates$1);
46901
46902function createPortal$1(children, container) {
46903  var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
46904
46905  if (!isValidContainer(container)) {
46906    {
46907      throw Error( "Target container is not a DOM element." );
46908    }
46909  } // TODO: pass ReactDOM portal implementation as third argument
46910  // $FlowFixMe The Flow type is opaque but there's no way to actually create it.
46911
46912
46913  return createPortal(children, container, null, key);
46914}
46915
46916function renderSubtreeIntoContainer(parentComponent, element, containerNode, callback) {
46917
46918  return unstable_renderSubtreeIntoContainer(parentComponent, element, containerNode, callback);
46919}
46920
46921function unstable_createPortal(children, container) {
46922  var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
46923
46924  {
46925    if (!didWarnAboutUnstableCreatePortal) {
46926      didWarnAboutUnstableCreatePortal = true;
46927
46928      warn('The ReactDOM.unstable_createPortal() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactDOM.createPortal() instead. It has the exact same API, ' + 'but without the "unstable_" prefix.');
46929    }
46930  }
46931
46932  return createPortal$1(children, container, key);
46933}
46934
46935var Internals = {
46936  // Keep in sync with ReactDOMUnstableNativeDependencies.js
46937  // ReactTestUtils.js, and ReactTestUtilsAct.js. This is an array for better minification.
46938  Events: [getInstanceFromNode$1, getNodeFromInstance$1, getFiberCurrentPropsFromNode$1, injectEventPluginsByName, eventNameDispatchConfigs, accumulateTwoPhaseDispatches, accumulateDirectDispatches, enqueueStateRestore, restoreStateIfNeeded, dispatchEvent, runEventsInBatch, flushPassiveEffects, IsThisRendererActing]
46939};
46940var foundDevTools = injectIntoDevTools({
46941  findFiberByHostInstance: getClosestInstanceFromNode,
46942  bundleType:  1 ,
46943  version: ReactVersion,
46944  rendererPackageName: 'react-dom'
46945});
46946
46947{
46948  if (!foundDevTools && canUseDOM && window.top === window.self) {
46949    // If we're in Chrome or Firefox, provide a download link if not installed.
46950    if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) {
46951      var protocol = window.location.protocol; // Don't warn in exotic cases like chrome-extension://.
46952
46953      if (/^(https?|file):$/.test(protocol)) {
46954        // eslint-disable-next-line react-internal/no-production-logging
46955        console.info('%cDownload the React DevTools ' + 'for a better development experience: ' + 'https://fb.me/react-devtools' + (protocol === 'file:' ? '\nYou might need to use a local HTTP server (instead of file://): ' + 'https://fb.me/react-devtools-faq' : ''), 'font-weight:bold');
46956      }
46957    }
46958  }
46959}
46960
46961exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = Internals;
46962exports.createPortal = createPortal$1;
46963exports.findDOMNode = findDOMNode;
46964exports.flushSync = flushSync;
46965exports.hydrate = hydrate;
46966exports.render = render;
46967exports.unmountComponentAtNode = unmountComponentAtNode;
46968exports.unstable_batchedUpdates = batchedUpdates$1;
46969exports.unstable_createPortal = unstable_createPortal;
46970exports.unstable_renderSubtreeIntoContainer = renderSubtreeIntoContainer;
46971exports.version = ReactVersion;
46972  })();
46973}
46974
46975
46976/***/ }),
46977
vendor: 1,761 bytes, lines 46978-47022
46978/***/ "../../node_modules/react-dom/index.js":
46979/*!********************************************************************************************************************************!*\
46980  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/react-dom/index.js ***!
46981  \********************************************************************************************************************************/
46982/*! no static exports found */
46983/***/ (function(module, exports, __webpack_require__) {
46984
46985"use strict";
46986
46987
46988function checkDCE() {
46989  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
46990  if (
46991    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||
46992    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'
46993  ) {
46994    return;
46995  }
46996  if (true) {
46997    // This branch is unreachable because this function is only called
46998    // in production, but the condition is true only in development.
46999    // Therefore if the branch is still here, dead code elimination wasn't
47000    // properly applied.
47001    // Don't change the message. React DevTools relies on it. Also make sure
47002    // this message doesn't occur elsewhere in this function, or it will cause
47003    // a false positive.
47004    throw new Error('^_^');
47005  }
47006  try {
47007    // Verify that the code above has been dead code eliminated (DCE'd).
47008    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);
47009  } catch (err) {
47010    // DevTools shouldn't crash React, no matter what.
47011    // We should still report in case we break this code.
47012    console.error(err);
47013  }
47014}
47015
47016if (false) {} else {
47017  module.exports = __webpack_require__(/*! ./cjs/react-dom.development.js */ "../../node_modules/react-dom/cjs/react-dom.development.js");
47018}
47019
47020
47021/***/ }),
47022
vendor: 63,262 bytes, lines 47023-48946
47023/***/ "../../node_modules/react/cjs/react.development.js":
47024/*!********************************************************************************************************************************************!*\
47025  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/react/cjs/react.development.js ***!
47026  \********************************************************************************************************************************************/
47027/*! no static exports found */
47028/***/ (function(module, exports, __webpack_require__) {
47029
47030"use strict";
47031/** @license React v16.13.1
47032 * react.development.js
47033 *
47034 * Copyright (c) Facebook, Inc. and its affiliates.
47035 *
47036 * This source code is licensed under the MIT license found in the
47037 * LICENSE file in the root directory of this source tree.
47038 */
47039
47040
47041
47042
47043
47044if (true) {
47045  (function() {
47046'use strict';
47047
47048var _assign = __webpack_require__(/*! object-assign */ "../../node_modules/object-assign/index.js");
47049var checkPropTypes = __webpack_require__(/*! prop-types/checkPropTypes */ "../../node_modules/prop-types/checkPropTypes.js");
47050
47051var ReactVersion = '16.13.1';
47052
47053// The Symbol used to tag the ReactElement-like types. If there is no native Symbol
47054// nor polyfill, then a plain number is used for performance.
47055var hasSymbol = typeof Symbol === 'function' && Symbol.for;
47056var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;
47057var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;
47058var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;
47059var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;
47060var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;
47061var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;
47062var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary
47063var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;
47064var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;
47065var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;
47066var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;
47067var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;
47068var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;
47069var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;
47070var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;
47071var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;
47072var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;
47073var MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
47074var FAUX_ITERATOR_SYMBOL = '@@iterator';
47075function getIteratorFn(maybeIterable) {
47076  if (maybeIterable === null || typeof maybeIterable !== 'object') {
47077    return null;
47078  }
47079
47080  var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];
47081
47082  if (typeof maybeIterator === 'function') {
47083    return maybeIterator;
47084  }
47085
47086  return null;
47087}
47088
47089/**
47090 * Keeps track of the current dispatcher.
47091 */
47092var ReactCurrentDispatcher = {
47093  /**
47094   * @internal
47095   * @type {ReactComponent}
47096   */
47097  current: null
47098};
47099
47100/**
47101 * Keeps track of the current batch's configuration such as how long an update
47102 * should suspend for if it needs to.
47103 */
47104var ReactCurrentBatchConfig = {
47105  suspense: null
47106};
47107
47108/**
47109 * Keeps track of the current owner.
47110 *
47111 * The current owner is the component who should own any components that are
47112 * currently being constructed.
47113 */
47114var ReactCurrentOwner = {
47115  /**
47116   * @internal
47117   * @type {ReactComponent}
47118   */
47119  current: null
47120};
47121
47122var BEFORE_SLASH_RE = /^(.*)[\\\/]/;
47123function describeComponentFrame (name, source, ownerName) {
47124  var sourceInfo = '';
47125
47126  if (source) {
47127    var path = source.fileName;
47128    var fileName = path.replace(BEFORE_SLASH_RE, '');
47129
47130    {
47131      // In DEV, include code for a common special case:
47132      // prefer "folder/index.js" instead of just "index.js".
47133      if (/^index\./.test(fileName)) {
47134        var match = path.match(BEFORE_SLASH_RE);
47135
47136        if (match) {
47137          var pathBeforeSlash = match[1];
47138
47139          if (pathBeforeSlash) {
47140            var folderName = pathBeforeSlash.replace(BEFORE_SLASH_RE, '');
47141            fileName = folderName + '/' + fileName;
47142          }
47143        }
47144      }
47145    }
47146
47147    sourceInfo = ' (at ' + fileName + ':' + source.lineNumber + ')';
47148  } else if (ownerName) {
47149    sourceInfo = ' (created by ' + ownerName + ')';
47150  }
47151
47152  return '\n    in ' + (name || 'Unknown') + sourceInfo;
47153}
47154
47155var Resolved = 1;
47156function refineResolvedLazyComponent(lazyComponent) {
47157  return lazyComponent._status === Resolved ? lazyComponent._result : null;
47158}
47159
47160function getWrappedName(outerType, innerType, wrapperName) {
47161  var functionName = innerType.displayName || innerType.name || '';
47162  return outerType.displayName || (functionName !== '' ? wrapperName + "(" + functionName + ")" : wrapperName);
47163}
47164
47165function getComponentName(type) {
47166  if (type == null) {
47167    // Host root, text node or just invalid type.
47168    return null;
47169  }
47170
47171  {
47172    if (typeof type.tag === 'number') {
47173      error('Received an unexpected object in getComponentName(). ' + 'This is likely a bug in React. Please file an issue.');
47174    }
47175  }
47176
47177  if (typeof type === 'function') {
47178    return type.displayName || type.name || null;
47179  }
47180
47181  if (typeof type === 'string') {
47182    return type;
47183  }
47184
47185  switch (type) {
47186    case REACT_FRAGMENT_TYPE:
47187      return 'Fragment';
47188
47189    case REACT_PORTAL_TYPE:
47190      return 'Portal';
47191
47192    case REACT_PROFILER_TYPE:
47193      return "Profiler";
47194
47195    case REACT_STRICT_MODE_TYPE:
47196      return 'StrictMode';
47197
47198    case REACT_SUSPENSE_TYPE:
47199      return 'Suspense';
47200
47201    case REACT_SUSPENSE_LIST_TYPE:
47202      return 'SuspenseList';
47203  }
47204
47205  if (typeof type === 'object') {
47206    switch (type.$$typeof) {
47207      case REACT_CONTEXT_TYPE:
47208        return 'Context.Consumer';
47209
47210      case REACT_PROVIDER_TYPE:
47211        return 'Context.Provider';
47212
47213      case REACT_FORWARD_REF_TYPE:
47214        return getWrappedName(type, type.render, 'ForwardRef');
47215
47216      case REACT_MEMO_TYPE:
47217        return getComponentName(type.type);
47218
47219      case REACT_BLOCK_TYPE:
47220        return getComponentName(type.render);
47221
47222      case REACT_LAZY_TYPE:
47223        {
47224          var thenable = type;
47225          var resolvedThenable = refineResolvedLazyComponent(thenable);
47226
47227          if (resolvedThenable) {
47228            return getComponentName(resolvedThenable);
47229          }
47230
47231          break;
47232        }
47233    }
47234  }
47235
47236  return null;
47237}
47238
47239var ReactDebugCurrentFrame = {};
47240var currentlyValidatingElement = null;
47241function setCurrentlyValidatingElement(element) {
47242  {
47243    currentlyValidatingElement = element;
47244  }
47245}
47246
47247{
47248  // Stack implementation injected by the current renderer.
47249  ReactDebugCurrentFrame.getCurrentStack = null;
47250
47251  ReactDebugCurrentFrame.getStackAddendum = function () {
47252    var stack = ''; // Add an extra top frame while an element is being validated
47253
47254    if (currentlyValidatingElement) {
47255      var name = getComponentName(currentlyValidatingElement.type);
47256      var owner = currentlyValidatingElement._owner;
47257      stack += describeComponentFrame(name, currentlyValidatingElement._source, owner && getComponentName(owner.type));
47258    } // Delegate to the injected renderer-specific implementation
47259
47260
47261    var impl = ReactDebugCurrentFrame.getCurrentStack;
47262
47263    if (impl) {
47264      stack += impl() || '';
47265    }
47266
47267    return stack;
47268  };
47269}
47270
47271/**
47272 * Used by act() to track whether you're inside an act() scope.
47273 */
47274var IsSomeRendererActing = {
47275  current: false
47276};
47277
47278var ReactSharedInternals = {
47279  ReactCurrentDispatcher: ReactCurrentDispatcher,
47280  ReactCurrentBatchConfig: ReactCurrentBatchConfig,
47281  ReactCurrentOwner: ReactCurrentOwner,
47282  IsSomeRendererActing: IsSomeRendererActing,
47283  // Used by renderers to avoid bundling object-assign twice in UMD bundles:
47284  assign: _assign
47285};
47286
47287{
47288  _assign(ReactSharedInternals, {
47289    // These should not be included in production.
47290    ReactDebugCurrentFrame: ReactDebugCurrentFrame,
47291    // Shim for React DOM 16.0.0 which still destructured (but not used) this.
47292    // TODO: remove in React 17.0.
47293    ReactComponentTreeHook: {}
47294  });
47295}
47296
47297// by calls to these methods by a Babel plugin.
47298//
47299// In PROD (or in packages without access to React internals),
47300// they are left as they are instead.
47301
47302function warn(format) {
47303  {
47304    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
47305      args[_key - 1] = arguments[_key];
47306    }
47307
47308    printWarning('warn', format, args);
47309  }
47310}
47311function error(format) {
47312  {
47313    for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
47314      args[_key2 - 1] = arguments[_key2];
47315    }
47316
47317    printWarning('error', format, args);
47318  }
47319}
47320
47321function printWarning(level, format, args) {
47322  // When changing this logic, you might want to also
47323  // update consoleWithStackDev.www.js as well.
47324  {
47325    var hasExistingStack = args.length > 0 && typeof args[args.length - 1] === 'string' && args[args.length - 1].indexOf('\n    in') === 0;
47326
47327    if (!hasExistingStack) {
47328      var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;
47329      var stack = ReactDebugCurrentFrame.getStackAddendum();
47330
47331      if (stack !== '') {
47332        format += '%s';
47333        args = args.concat([stack]);
47334      }
47335    }
47336
47337    var argsWithFormat = args.map(function (item) {
47338      return '' + item;
47339    }); // Careful: RN currently depends on this prefix
47340
47341    argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it
47342    // breaks IE9: https://github.com/facebook/react/issues/13610
47343    // eslint-disable-next-line react-internal/no-production-logging
47344
47345    Function.prototype.apply.call(console[level], console, argsWithFormat);
47346
47347    try {
47348      // --- Welcome to debugging React ---
47349      // This error was thrown as a convenience so that you can use this stack
47350      // to find the callsite that caused this warning to fire.
47351      var argIndex = 0;
47352      var message = 'Warning: ' + format.replace(/%s/g, function () {
47353        return args[argIndex++];
47354      });
47355      throw new Error(message);
47356    } catch (x) {}
47357  }
47358}
47359
47360var didWarnStateUpdateForUnmountedComponent = {};
47361
47362function warnNoop(publicInstance, callerName) {
47363  {
47364    var _constructor = publicInstance.constructor;
47365    var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass';
47366    var warningKey = componentName + "." + callerName;
47367
47368    if (didWarnStateUpdateForUnmountedComponent[warningKey]) {
47369      return;
47370    }
47371
47372    error("Can't call %s on a component that is not yet mounted. " + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName);
47373
47374    didWarnStateUpdateForUnmountedComponent[warningKey] = true;
47375  }
47376}
47377/**
47378 * This is the abstract API for an update queue.
47379 */
47380
47381
47382var ReactNoopUpdateQueue = {
47383  /**
47384   * Checks whether or not this composite component is mounted.
47385   * @param {ReactClass} publicInstance The instance we want to test.
47386   * @return {boolean} True if mounted, false otherwise.
47387   * @protected
47388   * @final
47389   */
47390  isMounted: function (publicInstance) {
47391    return false;
47392  },
47393
47394  /**
47395   * Forces an update. This should only be invoked when it is known with
47396   * certainty that we are **not** in a DOM transaction.
47397   *
47398   * You may want to call this when you know that some deeper aspect of the
47399   * component's state has changed but `setState` was not called.
47400   *
47401   * This will not invoke `shouldComponentUpdate`, but it will invoke
47402   * `componentWillUpdate` and `componentDidUpdate`.
47403   *
47404   * @param {ReactClass} publicInstance The instance that should rerender.
47405   * @param {?function} callback Called after component is updated.
47406   * @param {?string} callerName name of the calling function in the public API.
47407   * @internal
47408   */
47409  enqueueForceUpdate: function (publicInstance, callback, callerName) {
47410    warnNoop(publicInstance, 'forceUpdate');
47411  },
47412
47413  /**
47414   * Replaces all of the state. Always use this or `setState` to mutate state.
47415   * You should treat `this.state` as immutable.
47416   *
47417   * There is no guarantee that `this.state` will be immediately updated, so
47418   * accessing `this.state` after calling this method may return the old value.
47419   *
47420   * @param {ReactClass} publicInstance The instance that should rerender.
47421   * @param {object} completeState Next state.
47422   * @param {?function} callback Called after component is updated.
47423   * @param {?string} callerName name of the calling function in the public API.
47424   * @internal
47425   */
47426  enqueueReplaceState: function (publicInstance, completeState, callback, callerName) {
47427    warnNoop(publicInstance, 'replaceState');
47428  },
47429
47430  /**
47431   * Sets a subset of the state. This only exists because _pendingState is
47432   * internal. This provides a merging strategy that is not available to deep
47433   * properties which is confusing. TODO: Expose pendingState or don't use it
47434   * during the merge.
47435   *
47436   * @param {ReactClass} publicInstance The instance that should rerender.
47437   * @param {object} partialState Next partial state to be merged with state.
47438   * @param {?function} callback Called after component is updated.
47439   * @param {?string} Name of the calling function in the public API.
47440   * @internal
47441   */
47442  enqueueSetState: function (publicInstance, partialState, callback, callerName) {
47443    warnNoop(publicInstance, 'setState');
47444  }
47445};
47446
47447var emptyObject = {};
47448
47449{
47450  Object.freeze(emptyObject);
47451}
47452/**
47453 * Base class helpers for the updating state of a component.
47454 */
47455
47456
47457function Component(props, context, updater) {
47458  this.props = props;
47459  this.context = context; // If a component has string refs, we will assign a different object later.
47460
47461  this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the
47462  // renderer.
47463
47464  this.updater = updater || ReactNoopUpdateQueue;
47465}
47466
47467Component.prototype.isReactComponent = {};
47468/**
47469 * Sets a subset of the state. Always use this to mutate
47470 * state. You should treat `this.state` as immutable.
47471 *
47472 * There is no guarantee that `this.state` will be immediately updated, so
47473 * accessing `this.state` after calling this method may return the old value.
47474 *
47475 * There is no guarantee that calls to `setState` will run synchronously,
47476 * as they may eventually be batched together.  You can provide an optional
47477 * callback that will be executed when the call to setState is actually
47478 * completed.
47479 *
47480 * When a function is provided to setState, it will be called at some point in
47481 * the future (not synchronously). It will be called with the up to date
47482 * component arguments (state, props, context). These values can be different
47483 * from this.* because your function may be called after receiveProps but before
47484 * shouldComponentUpdate, and this new state, props, and context will not yet be
47485 * assigned to this.
47486 *
47487 * @param {object|function} partialState Next partial state or function to
47488 *        produce next partial state to be merged with current state.
47489 * @param {?function} callback Called after state is updated.
47490 * @final
47491 * @protected
47492 */
47493
47494Component.prototype.setState = function (partialState, callback) {
47495  if (!(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null)) {
47496    {
47497      throw Error( "setState(...): takes an object of state variables to update or a function which returns an object of state variables." );
47498    }
47499  }
47500
47501  this.updater.enqueueSetState(this, partialState, callback, 'setState');
47502};
47503/**
47504 * Forces an update. This should only be invoked when it is known with
47505 * certainty that we are **not** in a DOM transaction.
47506 *
47507 * You may want to call this when you know that some deeper aspect of the
47508 * component's state has changed but `setState` was not called.
47509 *
47510 * This will not invoke `shouldComponentUpdate`, but it will invoke
47511 * `componentWillUpdate` and `componentDidUpdate`.
47512 *
47513 * @param {?function} callback Called after update is complete.
47514 * @final
47515 * @protected
47516 */
47517
47518
47519Component.prototype.forceUpdate = function (callback) {
47520  this.updater.enqueueForceUpdate(this, callback, 'forceUpdate');
47521};
47522/**
47523 * Deprecated APIs. These APIs used to exist on classic React classes but since
47524 * we would like to deprecate them, we're not going to move them over to this
47525 * modern base class. Instead, we define a getter that warns if it's accessed.
47526 */
47527
47528
47529{
47530  var deprecatedAPIs = {
47531    isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],
47532    replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']
47533  };
47534
47535  var defineDeprecationWarning = function (methodName, info) {
47536    Object.defineProperty(Component.prototype, methodName, {
47537      get: function () {
47538        warn('%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);
47539
47540        return undefined;
47541      }
47542    });
47543  };
47544
47545  for (var fnName in deprecatedAPIs) {
47546    if (deprecatedAPIs.hasOwnProperty(fnName)) {
47547      defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);
47548    }
47549  }
47550}
47551
47552function ComponentDummy() {}
47553
47554ComponentDummy.prototype = Component.prototype;
47555/**
47556 * Convenience component with default shallow equality check for sCU.
47557 */
47558
47559function PureComponent(props, context, updater) {
47560  this.props = props;
47561  this.context = context; // If a component has string refs, we will assign a different object later.
47562
47563  this.refs = emptyObject;
47564  this.updater = updater || ReactNoopUpdateQueue;
47565}
47566
47567var pureComponentPrototype = PureComponent.prototype = new ComponentDummy();
47568pureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods.
47569
47570_assign(pureComponentPrototype, Component.prototype);
47571
47572pureComponentPrototype.isPureReactComponent = true;
47573
47574// an immutable object with a single mutable value
47575function createRef() {
47576  var refObject = {
47577    current: null
47578  };
47579
47580  {
47581    Object.seal(refObject);
47582  }
47583
47584  return refObject;
47585}
47586
47587var hasOwnProperty = Object.prototype.hasOwnProperty;
47588var RESERVED_PROPS = {
47589  key: true,
47590  ref: true,
47591  __self: true,
47592  __source: true
47593};
47594var specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs;
47595
47596{
47597  didWarnAboutStringRefs = {};
47598}
47599
47600function hasValidRef(config) {
47601  {
47602    if (hasOwnProperty.call(config, 'ref')) {
47603      var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;
47604
47605      if (getter && getter.isReactWarning) {
47606        return false;
47607      }
47608    }
47609  }
47610
47611  return config.ref !== undefined;
47612}
47613
47614function hasValidKey(config) {
47615  {
47616    if (hasOwnProperty.call(config, 'key')) {
47617      var getter = Object.getOwnPropertyDescriptor(config, 'key').get;
47618
47619      if (getter && getter.isReactWarning) {
47620        return false;
47621      }
47622    }
47623  }
47624
47625  return config.key !== undefined;
47626}
47627
47628function defineKeyPropWarningGetter(props, displayName) {
47629  var warnAboutAccessingKey = function () {
47630    {
47631      if (!specialPropKeyWarningShown) {
47632        specialPropKeyWarningShown = true;
47633
47634        error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName);
47635      }
47636    }
47637  };
47638
47639  warnAboutAccessingKey.isReactWarning = true;
47640  Object.defineProperty(props, 'key', {
47641    get: warnAboutAccessingKey,
47642    configurable: true
47643  });
47644}
47645
47646function defineRefPropWarningGetter(props, displayName) {
47647  var warnAboutAccessingRef = function () {
47648    {
47649      if (!specialPropRefWarningShown) {
47650        specialPropRefWarningShown = true;
47651
47652        error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName);
47653      }
47654    }
47655  };
47656
47657  warnAboutAccessingRef.isReactWarning = true;
47658  Object.defineProperty(props, 'ref', {
47659    get: warnAboutAccessingRef,
47660    configurable: true
47661  });
47662}
47663
47664function warnIfStringRefCannotBeAutoConverted(config) {
47665  {
47666    if (typeof config.ref === 'string' && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) {
47667      var componentName = getComponentName(ReactCurrentOwner.current.type);
47668
47669      if (!didWarnAboutStringRefs[componentName]) {
47670        error('Component "%s" contains the string ref "%s". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://fb.me/react-strict-mode-string-ref', getComponentName(ReactCurrentOwner.current.type), config.ref);
47671
47672        didWarnAboutStringRefs[componentName] = true;
47673      }
47674    }
47675  }
47676}
47677/**
47678 * Factory method to create a new React element. This no longer adheres to
47679 * the class pattern, so do not use new to call it. Also, instanceof check
47680 * will not work. Instead test $$typeof field against Symbol.for('react.element') to check
47681 * if something is a React Element.
47682 *
47683 * @param {*} type
47684 * @param {*} props
47685 * @param {*} key
47686 * @param {string|object} ref
47687 * @param {*} owner
47688 * @param {*} self A *temporary* helper to detect places where `this` is
47689 * different from the `owner` when React.createElement is called, so that we
47690 * can warn. We want to get rid of owner and replace string `ref`s with arrow
47691 * functions, and as long as `this` and owner are the same, there will be no
47692 * change in behavior.
47693 * @param {*} source An annotation object (added by a transpiler or otherwise)
47694 * indicating filename, line number, and/or other information.
47695 * @internal
47696 */
47697
47698
47699var ReactElement = function (type, key, ref, self, source, owner, props) {
47700  var element = {
47701    // This tag allows us to uniquely identify this as a React Element
47702    $$typeof: REACT_ELEMENT_TYPE,
47703    // Built-in properties that belong on the element
47704    type: type,
47705    key: key,
47706    ref: ref,
47707    props: props,
47708    // Record the component responsible for creating this element.
47709    _owner: owner
47710  };
47711
47712  {
47713    // The validation flag is currently mutative. We put it on
47714    // an external backing store so that we can freeze the whole object.
47715    // This can be replaced with a WeakMap once they are implemented in
47716    // commonly used development environments.
47717    element._store = {}; // To make comparing ReactElements easier for testing purposes, we make
47718    // the validation flag non-enumerable (where possible, which should
47719    // include every environment we run tests in), so the test framework
47720    // ignores it.
47721
47722    Object.defineProperty(element._store, 'validated', {
47723      configurable: false,
47724      enumerable: false,
47725      writable: true,
47726      value: false
47727    }); // self and source are DEV only properties.
47728
47729    Object.defineProperty(element, '_self', {
47730      configurable: false,
47731      enumerable: false,
47732      writable: false,
47733      value: self
47734    }); // Two elements created in two different places should be considered
47735    // equal for testing purposes and therefore we hide it from enumeration.
47736
47737    Object.defineProperty(element, '_source', {
47738      configurable: false,
47739      enumerable: false,
47740      writable: false,
47741      value: source
47742    });
47743
47744    if (Object.freeze) {
47745      Object.freeze(element.props);
47746      Object.freeze(element);
47747    }
47748  }
47749
47750  return element;
47751};
47752/**
47753 * Create and return a new ReactElement of the given type.
47754 * See https://reactjs.org/docs/react-api.html#createelement
47755 */
47756
47757function createElement(type, config, children) {
47758  var propName; // Reserved names are extracted
47759
47760  var props = {};
47761  var key = null;
47762  var ref = null;
47763  var self = null;
47764  var source = null;
47765
47766  if (config != null) {
47767    if (hasValidRef(config)) {
47768      ref = config.ref;
47769
47770      {
47771        warnIfStringRefCannotBeAutoConverted(config);
47772      }
47773    }
47774
47775    if (hasValidKey(config)) {
47776      key = '' + config.key;
47777    }
47778
47779    self = config.__self === undefined ? null : config.__self;
47780    source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object
47781
47782    for (propName in config) {
47783      if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {
47784        props[propName] = config[propName];
47785      }
47786    }
47787  } // Children can be more than one argument, and those are transferred onto
47788  // the newly allocated props object.
47789
47790
47791  var childrenLength = arguments.length - 2;
47792
47793  if (childrenLength === 1) {
47794    props.children = children;
47795  } else if (childrenLength > 1) {
47796    var childArray = Array(childrenLength);
47797
47798    for (var i = 0; i < childrenLength; i++) {
47799      childArray[i] = arguments[i + 2];
47800    }
47801
47802    {
47803      if (Object.freeze) {
47804        Object.freeze(childArray);
47805      }
47806    }
47807
47808    props.children = childArray;
47809  } // Resolve default props
47810
47811
47812  if (type && type.defaultProps) {
47813    var defaultProps = type.defaultProps;
47814
47815    for (propName in defaultProps) {
47816      if (props[propName] === undefined) {
47817        props[propName] = defaultProps[propName];
47818      }
47819    }
47820  }
47821
47822  {
47823    if (key || ref) {
47824      var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;
47825
47826      if (key) {
47827        defineKeyPropWarningGetter(props, displayName);
47828      }
47829
47830      if (ref) {
47831        defineRefPropWarningGetter(props, displayName);
47832      }
47833    }
47834  }
47835
47836  return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);
47837}
47838function cloneAndReplaceKey(oldElement, newKey) {
47839  var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);
47840  return newElement;
47841}
47842/**
47843 * Clone and return a new ReactElement using element as the starting point.
47844 * See https://reactjs.org/docs/react-api.html#cloneelement
47845 */
47846
47847function cloneElement(element, config, children) {
47848  if (!!(element === null || element === undefined)) {
47849    {
47850      throw Error( "React.cloneElement(...): The argument must be a React element, but you passed " + element + "." );
47851    }
47852  }
47853
47854  var propName; // Original props are copied
47855
47856  var props = _assign({}, element.props); // Reserved names are extracted
47857
47858
47859  var key = element.key;
47860  var ref = element.ref; // Self is preserved since the owner is preserved.
47861
47862  var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a
47863  // transpiler, and the original source is probably a better indicator of the
47864  // true owner.
47865
47866  var source = element._source; // Owner will be preserved, unless ref is overridden
47867
47868  var owner = element._owner;
47869
47870  if (config != null) {
47871    if (hasValidRef(config)) {
47872      // Silently steal the ref from the parent.
47873      ref = config.ref;
47874      owner = ReactCurrentOwner.current;
47875    }
47876
47877    if (hasValidKey(config)) {
47878      key = '' + config.key;
47879    } // Remaining properties override existing props
47880
47881
47882    var defaultProps;
47883
47884    if (element.type && element.type.defaultProps) {
47885      defaultProps = element.type.defaultProps;
47886    }
47887
47888    for (propName in config) {
47889      if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {
47890        if (config[propName] === undefined && defaultProps !== undefined) {
47891          // Resolve default props
47892          props[propName] = defaultProps[propName];
47893        } else {
47894          props[propName] = config[propName];
47895        }
47896      }
47897    }
47898  } // Children can be more than one argument, and those are transferred onto
47899  // the newly allocated props object.
47900
47901
47902  var childrenLength = arguments.length - 2;
47903
47904  if (childrenLength === 1) {
47905    props.children = children;
47906  } else if (childrenLength > 1) {
47907    var childArray = Array(childrenLength);
47908
47909    for (var i = 0; i < childrenLength; i++) {
47910      childArray[i] = arguments[i + 2];
47911    }
47912
47913    props.children = childArray;
47914  }
47915
47916  return ReactElement(element.type, key, ref, self, source, owner, props);
47917}
47918/**
47919 * Verifies the object is a ReactElement.
47920 * See https://reactjs.org/docs/react-api.html#isvalidelement
47921 * @param {?object} object
47922 * @return {boolean} True if `object` is a ReactElement.
47923 * @final
47924 */
47925
47926function isValidElement(object) {
47927  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
47928}
47929
47930var SEPARATOR = '.';
47931var SUBSEPARATOR = ':';
47932/**
47933 * Escape and wrap key so it is safe to use as a reactid
47934 *
47935 * @param {string} key to be escaped.
47936 * @return {string} the escaped key.
47937 */
47938
47939function escape(key) {
47940  var escapeRegex = /[=:]/g;
47941  var escaperLookup = {
47942    '=': '=0',
47943    ':': '=2'
47944  };
47945  var escapedString = ('' + key).replace(escapeRegex, function (match) {
47946    return escaperLookup[match];
47947  });
47948  return '$' + escapedString;
47949}
47950/**
47951 * TODO: Test that a single child and an array with one item have the same key
47952 * pattern.
47953 */
47954
47955
47956var didWarnAboutMaps = false;
47957var userProvidedKeyEscapeRegex = /\/+/g;
47958
47959function escapeUserProvidedKey(text) {
47960  return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/');
47961}
47962
47963var POOL_SIZE = 10;
47964var traverseContextPool = [];
47965
47966function getPooledTraverseContext(mapResult, keyPrefix, mapFunction, mapContext) {
47967  if (traverseContextPool.length) {
47968    var traverseContext = traverseContextPool.pop();
47969    traverseContext.result = mapResult;
47970    traverseContext.keyPrefix = keyPrefix;
47971    traverseContext.func = mapFunction;
47972    traverseContext.context = mapContext;
47973    traverseContext.count = 0;
47974    return traverseContext;
47975  } else {
47976    return {
47977      result: mapResult,
47978      keyPrefix: keyPrefix,
47979      func: mapFunction,
47980      context: mapContext,
47981      count: 0
47982    };
47983  }
47984}
47985
47986function releaseTraverseContext(traverseContext) {
47987  traverseContext.result = null;
47988  traverseContext.keyPrefix = null;
47989  traverseContext.func = null;
47990  traverseContext.context = null;
47991  traverseContext.count = 0;
47992
47993  if (traverseContextPool.length < POOL_SIZE) {
47994    traverseContextPool.push(traverseContext);
47995  }
47996}
47997/**
47998 * @param {?*} children Children tree container.
47999 * @param {!string} nameSoFar Name of the key path so far.
48000 * @param {!function} callback Callback to invoke with each child found.
48001 * @param {?*} traverseContext Used to pass information throughout the traversal
48002 * process.
48003 * @return {!number} The number of children in this subtree.
48004 */
48005
48006
48007function traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) {
48008  var type = typeof children;
48009
48010  if (type === 'undefined' || type === 'boolean') {
48011    // All of the above are perceived as null.
48012    children = null;
48013  }
48014
48015  var invokeCallback = false;
48016
48017  if (children === null) {
48018    invokeCallback = true;
48019  } else {
48020    switch (type) {
48021      case 'string':
48022      case 'number':
48023        invokeCallback = true;
48024        break;
48025
48026      case 'object':
48027        switch (children.$$typeof) {
48028          case REACT_ELEMENT_TYPE:
48029          case REACT_PORTAL_TYPE:
48030            invokeCallback = true;
48031        }
48032
48033    }
48034  }
48035
48036  if (invokeCallback) {
48037    callback(traverseContext, children, // If it's the only child, treat the name as if it was wrapped in an array
48038    // so that it's consistent if the number of children grows.
48039    nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar);
48040    return 1;
48041  }
48042
48043  var child;
48044  var nextName;
48045  var subtreeCount = 0; // Count of children found in the current subtree.
48046
48047  var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;
48048
48049  if (Array.isArray(children)) {
48050    for (var i = 0; i < children.length; i++) {
48051      child = children[i];
48052      nextName = nextNamePrefix + getComponentKey(child, i);
48053      subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);
48054    }
48055  } else {
48056    var iteratorFn = getIteratorFn(children);
48057
48058    if (typeof iteratorFn === 'function') {
48059
48060      {
48061        // Warn about using Maps as children
48062        if (iteratorFn === children.entries) {
48063          if (!didWarnAboutMaps) {
48064            warn('Using Maps as children is deprecated and will be removed in ' + 'a future major release. Consider converting children to ' + 'an array of keyed ReactElements instead.');
48065          }
48066
48067          didWarnAboutMaps = true;
48068        }
48069      }
48070
48071      var iterator = iteratorFn.call(children);
48072      var step;
48073      var ii = 0;
48074
48075      while (!(step = iterator.next()).done) {
48076        child = step.value;
48077        nextName = nextNamePrefix + getComponentKey(child, ii++);
48078        subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext);
48079      }
48080    } else if (type === 'object') {
48081      var addendum = '';
48082
48083      {
48084        addendum = ' If you meant to render a collection of children, use an array ' + 'instead.' + ReactDebugCurrentFrame.getStackAddendum();
48085      }
48086
48087      var childrenString = '' + children;
48088
48089      {
48090        {
48091          throw Error( "Objects are not valid as a React child (found: " + (childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString) + ")." + addendum );
48092        }
48093      }
48094    }
48095  }
48096
48097  return subtreeCount;
48098}
48099/**
48100 * Traverses children that are typically specified as `props.children`, but
48101 * might also be specified through attributes:
48102 *
48103 * - `traverseAllChildren(this.props.children, ...)`
48104 * - `traverseAllChildren(this.props.leftPanelChildren, ...)`
48105 *
48106 * The `traverseContext` is an optional argument that is passed through the
48107 * entire traversal. It can be used to store accumulations or anything else that
48108 * the callback might find relevant.
48109 *
48110 * @param {?*} children Children tree object.
48111 * @param {!function} callback To invoke upon traversing each child.
48112 * @param {?*} traverseContext Context for traversal.
48113 * @return {!number} The number of children in this subtree.
48114 */
48115
48116
48117function traverseAllChildren(children, callback, traverseContext) {
48118  if (children == null) {
48119    return 0;
48120  }
48121
48122  return traverseAllChildrenImpl(children, '', callback, traverseContext);
48123}
48124/**
48125 * Generate a key string that identifies a component within a set.
48126 *
48127 * @param {*} component A component that could contain a manual key.
48128 * @param {number} index Index that is used if a manual key is not provided.
48129 * @return {string}
48130 */
48131
48132
48133function getComponentKey(component, index) {
48134  // Do some typechecking here since we call this blindly. We want to ensure
48135  // that we don't block potential future ES APIs.
48136  if (typeof component === 'object' && component !== null && component.key != null) {
48137    // Explicit key
48138    return escape(component.key);
48139  } // Implicit key determined by the index in the set
48140
48141
48142  return index.toString(36);
48143}
48144
48145function forEachSingleChild(bookKeeping, child, name) {
48146  var func = bookKeeping.func,
48147      context = bookKeeping.context;
48148  func.call(context, child, bookKeeping.count++);
48149}
48150/**
48151 * Iterates through children that are typically specified as `props.children`.
48152 *
48153 * See https://reactjs.org/docs/react-api.html#reactchildrenforeach
48154 *
48155 * The provided forEachFunc(child, index) will be called for each
48156 * leaf child.
48157 *
48158 * @param {?*} children Children tree container.
48159 * @param {function(*, int)} forEachFunc
48160 * @param {*} forEachContext Context for forEachContext.
48161 */
48162
48163
48164function forEachChildren(children, forEachFunc, forEachContext) {
48165  if (children == null) {
48166    return children;
48167  }
48168
48169  var traverseContext = getPooledTraverseContext(null, null, forEachFunc, forEachContext);
48170  traverseAllChildren(children, forEachSingleChild, traverseContext);
48171  releaseTraverseContext(traverseContext);
48172}
48173
48174function mapSingleChildIntoContext(bookKeeping, child, childKey) {
48175  var result = bookKeeping.result,
48176      keyPrefix = bookKeeping.keyPrefix,
48177      func = bookKeeping.func,
48178      context = bookKeeping.context;
48179  var mappedChild = func.call(context, child, bookKeeping.count++);
48180
48181  if (Array.isArray(mappedChild)) {
48182    mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, function (c) {
48183      return c;
48184    });
48185  } else if (mappedChild != null) {
48186    if (isValidElement(mappedChild)) {
48187      mappedChild = cloneAndReplaceKey(mappedChild, // Keep both the (mapped) and old keys if they differ, just as
48188      // traverseAllChildren used to do for objects as children
48189      keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey);
48190    }
48191
48192    result.push(mappedChild);
48193  }
48194}
48195
48196function mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {
48197  var escapedPrefix = '';
48198
48199  if (prefix != null) {
48200    escapedPrefix = escapeUserProvidedKey(prefix) + '/';
48201  }
48202
48203  var traverseContext = getPooledTraverseContext(array, escapedPrefix, func, context);
48204  traverseAllChildren(children, mapSingleChildIntoContext, traverseContext);
48205  releaseTraverseContext(traverseContext);
48206}
48207/**
48208 * Maps children that are typically specified as `props.children`.
48209 *
48210 * See https://reactjs.org/docs/react-api.html#reactchildrenmap
48211 *
48212 * The provided mapFunction(child, key, index) will be called for each
48213 * leaf child.
48214 *
48215 * @param {?*} children Children tree container.
48216 * @param {function(*, int)} func The map function.
48217 * @param {*} context Context for mapFunction.
48218 * @return {object} Object containing the ordered map of results.
48219 */
48220
48221
48222function mapChildren(children, func, context) {
48223  if (children == null) {
48224    return children;
48225  }
48226
48227  var result = [];
48228  mapIntoWithKeyPrefixInternal(children, result, null, func, context);
48229  return result;
48230}
48231/**
48232 * Count the number of children that are typically specified as
48233 * `props.children`.
48234 *
48235 * See https://reactjs.org/docs/react-api.html#reactchildrencount
48236 *
48237 * @param {?*} children Children tree container.
48238 * @return {number} The number of children.
48239 */
48240
48241
48242function countChildren(children) {
48243  return traverseAllChildren(children, function () {
48244    return null;
48245  }, null);
48246}
48247/**
48248 * Flatten a children object (typically specified as `props.children`) and
48249 * return an array with appropriately re-keyed children.
48250 *
48251 * See https://reactjs.org/docs/react-api.html#reactchildrentoarray
48252 */
48253
48254
48255function toArray(children) {
48256  var result = [];
48257  mapIntoWithKeyPrefixInternal(children, result, null, function (child) {
48258    return child;
48259  });
48260  return result;
48261}
48262/**
48263 * Returns the first child in a collection of children and verifies that there
48264 * is only one child in the collection.
48265 *
48266 * See https://reactjs.org/docs/react-api.html#reactchildrenonly
48267 *
48268 * The current implementation of this function assumes that a single child gets
48269 * passed without a wrapper, but the purpose of this helper function is to
48270 * abstract away the particular structure of children.
48271 *
48272 * @param {?object} children Child collection structure.
48273 * @return {ReactElement} The first and only `ReactElement` contained in the
48274 * structure.
48275 */
48276
48277
48278function onlyChild(children) {
48279  if (!isValidElement(children)) {
48280    {
48281      throw Error( "React.Children.only expected to receive a single React element child." );
48282    }
48283  }
48284
48285  return children;
48286}
48287
48288function createContext(defaultValue, calculateChangedBits) {
48289  if (calculateChangedBits === undefined) {
48290    calculateChangedBits = null;
48291  } else {
48292    {
48293      if (calculateChangedBits !== null && typeof calculateChangedBits !== 'function') {
48294        error('createContext: Expected the optional second argument to be a ' + 'function. Instead received: %s', calculateChangedBits);
48295      }
48296    }
48297  }
48298
48299  var context = {
48300    $$typeof: REACT_CONTEXT_TYPE,
48301    _calculateChangedBits: calculateChangedBits,
48302    // As a workaround to support multiple concurrent renderers, we categorize
48303    // some renderers as primary and others as secondary. We only expect
48304    // there to be two concurrent renderers at most: React Native (primary) and
48305    // Fabric (secondary); React DOM (primary) and React ART (secondary).
48306    // Secondary renderers store their context values on separate fields.
48307    _currentValue: defaultValue,
48308    _currentValue2: defaultValue,
48309    // Used to track how many concurrent renderers this context currently
48310    // supports within in a single renderer. Such as parallel server rendering.
48311    _threadCount: 0,
48312    // These are circular
48313    Provider: null,
48314    Consumer: null
48315  };
48316  context.Provider = {
48317    $$typeof: REACT_PROVIDER_TYPE,
48318    _context: context
48319  };
48320  var hasWarnedAboutUsingNestedContextConsumers = false;
48321  var hasWarnedAboutUsingConsumerProvider = false;
48322
48323  {
48324    // A separate object, but proxies back to the original context object for
48325    // backwards compatibility. It has a different $$typeof, so we can properly
48326    // warn for the incorrect usage of Context as a Consumer.
48327    var Consumer = {
48328      $$typeof: REACT_CONTEXT_TYPE,
48329      _context: context,
48330      _calculateChangedBits: context._calculateChangedBits
48331    }; // $FlowFixMe: Flow complains about not setting a value, which is intentional here
48332
48333    Object.defineProperties(Consumer, {
48334      Provider: {
48335        get: function () {
48336          if (!hasWarnedAboutUsingConsumerProvider) {
48337            hasWarnedAboutUsingConsumerProvider = true;
48338
48339            error('Rendering <Context.Consumer.Provider> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Provider> instead?');
48340          }
48341
48342          return context.Provider;
48343        },
48344        set: function (_Provider) {
48345          context.Provider = _Provider;
48346        }
48347      },
48348      _currentValue: {
48349        get: function () {
48350          return context._currentValue;
48351        },
48352        set: function (_currentValue) {
48353          context._currentValue = _currentValue;
48354        }
48355      },
48356      _currentValue2: {
48357        get: function () {
48358          return context._currentValue2;
48359        },
48360        set: function (_currentValue2) {
48361          context._currentValue2 = _currentValue2;
48362        }
48363      },
48364      _threadCount: {
48365        get: function () {
48366          return context._threadCount;
48367        },
48368        set: function (_threadCount) {
48369          context._threadCount = _threadCount;
48370        }
48371      },
48372      Consumer: {
48373        get: function () {
48374          if (!hasWarnedAboutUsingNestedContextConsumers) {
48375            hasWarnedAboutUsingNestedContextConsumers = true;
48376
48377            error('Rendering <Context.Consumer.Consumer> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Consumer> instead?');
48378          }
48379
48380          return context.Consumer;
48381        }
48382      }
48383    }); // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty
48384
48385    context.Consumer = Consumer;
48386  }
48387
48388  {
48389    context._currentRenderer = null;
48390    context._currentRenderer2 = null;
48391  }
48392
48393  return context;
48394}
48395
48396function lazy(ctor) {
48397  var lazyType = {
48398    $$typeof: REACT_LAZY_TYPE,
48399    _ctor: ctor,
48400    // React uses these fields to store the result.
48401    _status: -1,
48402    _result: null
48403  };
48404
48405  {
48406    // In production, this would just set it on the object.
48407    var defaultProps;
48408    var propTypes;
48409    Object.defineProperties(lazyType, {
48410      defaultProps: {
48411        configurable: true,
48412        get: function () {
48413          return defaultProps;
48414        },
48415        set: function (newDefaultProps) {
48416          error('React.lazy(...): It is not supported to assign `defaultProps` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');
48417
48418          defaultProps = newDefaultProps; // Match production behavior more closely:
48419
48420          Object.defineProperty(lazyType, 'defaultProps', {
48421            enumerable: true
48422          });
48423        }
48424      },
48425      propTypes: {
48426        configurable: true,
48427        get: function () {
48428          return propTypes;
48429        },
48430        set: function (newPropTypes) {
48431          error('React.lazy(...): It is not supported to assign `propTypes` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');
48432
48433          propTypes = newPropTypes; // Match production behavior more closely:
48434
48435          Object.defineProperty(lazyType, 'propTypes', {
48436            enumerable: true
48437          });
48438        }
48439      }
48440    });
48441  }
48442
48443  return lazyType;
48444}
48445
48446function forwardRef(render) {
48447  {
48448    if (render != null && render.$$typeof === REACT_MEMO_TYPE) {
48449      error('forwardRef requires a render function but received a `memo` ' + 'component. Instead of forwardRef(memo(...)), use ' + 'memo(forwardRef(...)).');
48450    } else if (typeof render !== 'function') {
48451      error('forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render);
48452    } else {
48453      if (render.length !== 0 && render.length !== 2) {
48454        error('forwardRef render functions accept exactly two parameters: props and ref. %s', render.length === 1 ? 'Did you forget to use the ref parameter?' : 'Any additional parameter will be undefined.');
48455      }
48456    }
48457
48458    if (render != null) {
48459      if (render.defaultProps != null || render.propTypes != null) {
48460        error('forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?');
48461      }
48462    }
48463  }
48464
48465  return {
48466    $$typeof: REACT_FORWARD_REF_TYPE,
48467    render: render
48468  };
48469}
48470
48471function isValidElementType(type) {
48472  return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.
48473  type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);
48474}
48475
48476function memo(type, compare) {
48477  {
48478    if (!isValidElementType(type)) {
48479      error('memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type);
48480    }
48481  }
48482
48483  return {
48484    $$typeof: REACT_MEMO_TYPE,
48485    type: type,
48486    compare: compare === undefined ? null : compare
48487  };
48488}
48489
48490function resolveDispatcher() {
48491  var dispatcher = ReactCurrentDispatcher.current;
48492
48493  if (!(dispatcher !== null)) {
48494    {
48495      throw Error( "Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://fb.me/react-invalid-hook-call for tips about how to debug and fix this problem." );
48496    }
48497  }
48498
48499  return dispatcher;
48500}
48501
48502function useContext(Context, unstable_observedBits) {
48503  var dispatcher = resolveDispatcher();
48504
48505  {
48506    if (unstable_observedBits !== undefined) {
48507      error('useContext() second argument is reserved for future ' + 'use in React. Passing it is not supported. ' + 'You passed: %s.%s', unstable_observedBits, typeof unstable_observedBits === 'number' && Array.isArray(arguments[2]) ? '\n\nDid you call array.map(useContext)? ' + 'Calling Hooks inside a loop is not supported. ' + 'Learn more at https://fb.me/rules-of-hooks' : '');
48508    } // TODO: add a more generic warning for invalid values.
48509
48510
48511    if (Context._context !== undefined) {
48512      var realContext = Context._context; // Don't deduplicate because this legitimately causes bugs
48513      // and nobody should be using this in existing code.
48514
48515      if (realContext.Consumer === Context) {
48516        error('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be ' + 'removed in a future major release. Did you mean to call useContext(Context) instead?');
48517      } else if (realContext.Provider === Context) {
48518        error('Calling useContext(Context.Provider) is not supported. ' + 'Did you mean to call useContext(Context) instead?');
48519      }
48520    }
48521  }
48522
48523  return dispatcher.useContext(Context, unstable_observedBits);
48524}
48525function useState(initialState) {
48526  var dispatcher = resolveDispatcher();
48527  return dispatcher.useState(initialState);
48528}
48529function useReducer(reducer, initialArg, init) {
48530  var dispatcher = resolveDispatcher();
48531  return dispatcher.useReducer(reducer, initialArg, init);
48532}
48533function useRef(initialValue) {
48534  var dispatcher = resolveDispatcher();
48535  return dispatcher.useRef(initialValue);
48536}
48537function useEffect(create, deps) {
48538  var dispatcher = resolveDispatcher();
48539  return dispatcher.useEffect(create, deps);
48540}
48541function useLayoutEffect(create, deps) {
48542  var dispatcher = resolveDispatcher();
48543  return dispatcher.useLayoutEffect(create, deps);
48544}
48545function useCallback(callback, deps) {
48546  var dispatcher = resolveDispatcher();
48547  return dispatcher.useCallback(callback, deps);
48548}
48549function useMemo(create, deps) {
48550  var dispatcher = resolveDispatcher();
48551  return dispatcher.useMemo(create, deps);
48552}
48553function useImperativeHandle(ref, create, deps) {
48554  var dispatcher = resolveDispatcher();
48555  return dispatcher.useImperativeHandle(ref, create, deps);
48556}
48557function useDebugValue(value, formatterFn) {
48558  {
48559    var dispatcher = resolveDispatcher();
48560    return dispatcher.useDebugValue(value, formatterFn);
48561  }
48562}
48563
48564var propTypesMisspellWarningShown;
48565
48566{
48567  propTypesMisspellWarningShown = false;
48568}
48569
48570function getDeclarationErrorAddendum() {
48571  if (ReactCurrentOwner.current) {
48572    var name = getComponentName(ReactCurrentOwner.current.type);
48573
48574    if (name) {
48575      return '\n\nCheck the render method of `' + name + '`.';
48576    }
48577  }
48578
48579  return '';
48580}
48581
48582function getSourceInfoErrorAddendum(source) {
48583  if (source !== undefined) {
48584    var fileName = source.fileName.replace(/^.*[\\\/]/, '');
48585    var lineNumber = source.lineNumber;
48586    return '\n\nCheck your code at ' + fileName + ':' + lineNumber + '.';
48587  }
48588
48589  return '';
48590}
48591
48592function getSourceInfoErrorAddendumForProps(elementProps) {
48593  if (elementProps !== null && elementProps !== undefined) {
48594    return getSourceInfoErrorAddendum(elementProps.__source);
48595  }
48596
48597  return '';
48598}
48599/**
48600 * Warn if there's no key explicitly set on dynamic arrays of children or
48601 * object keys are not valid. This allows us to keep track of children between
48602 * updates.
48603 */
48604
48605
48606var ownerHasKeyUseWarning = {};
48607
48608function getCurrentComponentErrorInfo(parentType) {
48609  var info = getDeclarationErrorAddendum();
48610
48611  if (!info) {
48612    var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;
48613
48614    if (parentName) {
48615      info = "\n\nCheck the top-level render call using <" + parentName + ">.";
48616    }
48617  }
48618
48619  return info;
48620}
48621/**
48622 * Warn if the element doesn't have an explicit key assigned to it.
48623 * This element is in an array. The array could grow and shrink or be
48624 * reordered. All children that haven't already been validated are required to
48625 * have a "key" property assigned to it. Error statuses are cached so a warning
48626 * will only be shown once.
48627 *
48628 * @internal
48629 * @param {ReactElement} element Element that requires a key.
48630 * @param {*} parentType element's parent's type.
48631 */
48632
48633
48634function validateExplicitKey(element, parentType) {
48635  if (!element._store || element._store.validated || element.key != null) {
48636    return;
48637  }
48638
48639  element._store.validated = true;
48640  var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);
48641
48642  if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {
48643    return;
48644  }
48645
48646  ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a
48647  // property, it may be the creator of the child that's responsible for
48648  // assigning it a key.
48649
48650  var childOwner = '';
48651
48652  if (element && element._owner && element._owner !== ReactCurrentOwner.current) {
48653    // Give the component that originally created this child.
48654    childOwner = " It was passed a child from " + getComponentName(element._owner.type) + ".";
48655  }
48656
48657  setCurrentlyValidatingElement(element);
48658
48659  {
48660    error('Each child in a list should have a unique "key" prop.' + '%s%s See https://fb.me/react-warning-keys for more information.', currentComponentErrorInfo, childOwner);
48661  }
48662
48663  setCurrentlyValidatingElement(null);
48664}
48665/**
48666 * Ensure that every element either is passed in a static location, in an
48667 * array with an explicit keys property defined, or in an object literal
48668 * with valid key property.
48669 *
48670 * @internal
48671 * @param {ReactNode} node Statically passed child of any type.
48672 * @param {*} parentType node's parent's type.
48673 */
48674
48675
48676function validateChildKeys(node, parentType) {
48677  if (typeof node !== 'object') {
48678    return;
48679  }
48680
48681  if (Array.isArray(node)) {
48682    for (var i = 0; i < node.length; i++) {
48683      var child = node[i];
48684
48685      if (isValidElement(child)) {
48686        validateExplicitKey(child, parentType);
48687      }
48688    }
48689  } else if (isValidElement(node)) {
48690    // This element was passed in a valid location.
48691    if (node._store) {
48692      node._store.validated = true;
48693    }
48694  } else if (node) {
48695    var iteratorFn = getIteratorFn(node);
48696
48697    if (typeof iteratorFn === 'function') {
48698      // Entry iterators used to provide implicit keys,
48699      // but now we print a separate warning for them later.
48700      if (iteratorFn !== node.entries) {
48701        var iterator = iteratorFn.call(node);
48702        var step;
48703
48704        while (!(step = iterator.next()).done) {
48705          if (isValidElement(step.value)) {
48706            validateExplicitKey(step.value, parentType);
48707          }
48708        }
48709      }
48710    }
48711  }
48712}
48713/**
48714 * Given an element, validate that its props follow the propTypes definition,
48715 * provided by the type.
48716 *
48717 * @param {ReactElement} element
48718 */
48719
48720
48721function validatePropTypes(element) {
48722  {
48723    var type = element.type;
48724
48725    if (type === null || type === undefined || typeof type === 'string') {
48726      return;
48727    }
48728
48729    var name = getComponentName(type);
48730    var propTypes;
48731
48732    if (typeof type === 'function') {
48733      propTypes = type.propTypes;
48734    } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.
48735    // Inner props are checked in the reconciler.
48736    type.$$typeof === REACT_MEMO_TYPE)) {
48737      propTypes = type.propTypes;
48738    } else {
48739      return;
48740    }
48741
48742    if (propTypes) {
48743      setCurrentlyValidatingElement(element);
48744      checkPropTypes(propTypes, element.props, 'prop', name, ReactDebugCurrentFrame.getStackAddendum);
48745      setCurrentlyValidatingElement(null);
48746    } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {
48747      propTypesMisspellWarningShown = true;
48748
48749      error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', name || 'Unknown');
48750    }
48751
48752    if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {
48753      error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');
48754    }
48755  }
48756}
48757/**
48758 * Given a fragment, validate that it can only be provided with fragment props
48759 * @param {ReactElement} fragment
48760 */
48761
48762
48763function validateFragmentProps(fragment) {
48764  {
48765    setCurrentlyValidatingElement(fragment);
48766    var keys = Object.keys(fragment.props);
48767
48768    for (var i = 0; i < keys.length; i++) {
48769      var key = keys[i];
48770
48771      if (key !== 'children' && key !== 'key') {
48772        error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);
48773
48774        break;
48775      }
48776    }
48777
48778    if (fragment.ref !== null) {
48779      error('Invalid attribute `ref` supplied to `React.Fragment`.');
48780    }
48781
48782    setCurrentlyValidatingElement(null);
48783  }
48784}
48785function createElementWithValidation(type, props, children) {
48786  var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to
48787  // succeed and there will likely be errors in render.
48788
48789  if (!validType) {
48790    var info = '';
48791
48792    if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {
48793      info += ' You likely forgot to export your component from the file ' + "it's defined in, or you might have mixed up default and named imports.";
48794    }
48795
48796    var sourceInfo = getSourceInfoErrorAddendumForProps(props);
48797
48798    if (sourceInfo) {
48799      info += sourceInfo;
48800    } else {
48801      info += getDeclarationErrorAddendum();
48802    }
48803
48804    var typeString;
48805
48806    if (type === null) {
48807      typeString = 'null';
48808    } else if (Array.isArray(type)) {
48809      typeString = 'array';
48810    } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {
48811      typeString = "<" + (getComponentName(type.type) || 'Unknown') + " />";
48812      info = ' Did you accidentally export a JSX literal instead of a component?';
48813    } else {
48814      typeString = typeof type;
48815    }
48816
48817    {
48818      error('React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);
48819    }
48820  }
48821
48822  var element = createElement.apply(this, arguments); // The result can be nullish if a mock or a custom function is used.
48823  // TODO: Drop this when these are no longer allowed as the type argument.
48824
48825  if (element == null) {
48826    return element;
48827  } // Skip key warning if the type isn't valid since our key validation logic
48828  // doesn't expect a non-string/function type and can throw confusing errors.
48829  // We don't want exception behavior to differ between dev and prod.
48830  // (Rendering will throw with a helpful message and as soon as the type is
48831  // fixed, the key warnings will appear.)
48832
48833
48834  if (validType) {
48835    for (var i = 2; i < arguments.length; i++) {
48836      validateChildKeys(arguments[i], type);
48837    }
48838  }
48839
48840  if (type === REACT_FRAGMENT_TYPE) {
48841    validateFragmentProps(element);
48842  } else {
48843    validatePropTypes(element);
48844  }
48845
48846  return element;
48847}
48848var didWarnAboutDeprecatedCreateFactory = false;
48849function createFactoryWithValidation(type) {
48850  var validatedFactory = createElementWithValidation.bind(null, type);
48851  validatedFactory.type = type;
48852
48853  {
48854    if (!didWarnAboutDeprecatedCreateFactory) {
48855      didWarnAboutDeprecatedCreateFactory = true;
48856
48857      warn('React.createFactory() is deprecated and will be removed in ' + 'a future major release. Consider using JSX ' + 'or use React.createElement() directly instead.');
48858    } // Legacy hook: remove it
48859
48860
48861    Object.defineProperty(validatedFactory, 'type', {
48862      enumerable: false,
48863      get: function () {
48864        warn('Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.');
48865
48866        Object.defineProperty(this, 'type', {
48867          value: type
48868        });
48869        return type;
48870      }
48871    });
48872  }
48873
48874  return validatedFactory;
48875}
48876function cloneElementWithValidation(element, props, children) {
48877  var newElement = cloneElement.apply(this, arguments);
48878
48879  for (var i = 2; i < arguments.length; i++) {
48880    validateChildKeys(arguments[i], newElement.type);
48881  }
48882
48883  validatePropTypes(newElement);
48884  return newElement;
48885}
48886
48887{
48888
48889  try {
48890    var frozenObject = Object.freeze({});
48891    var testMap = new Map([[frozenObject, null]]);
48892    var testSet = new Set([frozenObject]); // This is necessary for Rollup to not consider these unused.
48893    // https://github.com/rollup/rollup/issues/1771
48894    // TODO: we can remove these if Rollup fixes the bug.
48895
48896    testMap.set(0, 0);
48897    testSet.add(0);
48898  } catch (e) {
48899  }
48900}
48901
48902var createElement$1 =  createElementWithValidation ;
48903var cloneElement$1 =  cloneElementWithValidation ;
48904var createFactory =  createFactoryWithValidation ;
48905var Children = {
48906  map: mapChildren,
48907  forEach: forEachChildren,
48908  count: countChildren,
48909  toArray: toArray,
48910  only: onlyChild
48911};
48912
48913exports.Children = Children;
48914exports.Component = Component;
48915exports.Fragment = REACT_FRAGMENT_TYPE;
48916exports.Profiler = REACT_PROFILER_TYPE;
48917exports.PureComponent = PureComponent;
48918exports.StrictMode = REACT_STRICT_MODE_TYPE;
48919exports.Suspense = REACT_SUSPENSE_TYPE;
48920exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals;
48921exports.cloneElement = cloneElement$1;
48922exports.createContext = createContext;
48923exports.createElement = createElement$1;
48924exports.createFactory = createFactory;
48925exports.createRef = createRef;
48926exports.forwardRef = forwardRef;
48927exports.isValidElement = isValidElement;
48928exports.lazy = lazy;
48929exports.memo = memo;
48930exports.useCallback = useCallback;
48931exports.useContext = useContext;
48932exports.useDebugValue = useDebugValue;
48933exports.useEffect = useEffect;
48934exports.useImperativeHandle = useImperativeHandle;
48935exports.useLayoutEffect = useLayoutEffect;
48936exports.useMemo = useMemo;
48937exports.useReducer = useReducer;
48938exports.useRef = useRef;
48939exports.useState = useState;
48940exports.version = ReactVersion;
48941  })();
48942}
48943
48944
48945/***/ }),
48946
vendor: 716 bytes, lines 48947-48963
48947/***/ "../../node_modules/react/index.js":
48948/*!****************************************************************************************************************************!*\
48949  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/react/index.js ***!
48950  \****************************************************************************************************************************/
48951/*! no static exports found */
48952/***/ (function(module, exports, __webpack_require__) {
48953
48954"use strict";
48955
48956
48957if (false) {} else {
48958  module.exports = __webpack_require__(/*! ./cjs/react.development.js */ "../../node_modules/react/cjs/react.development.js");
48959}
48960
48961
48962/***/ }),
48963
vendor: 9,993 bytes, lines 48964-49324
48964/***/ "../../node_modules/scheduler/cjs/scheduler-tracing.development.js":
48965/*!************************************************************************************************************************************************************!*\
48966  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/scheduler/cjs/scheduler-tracing.development.js ***!
48967  \************************************************************************************************************************************************************/
48968/*! no static exports found */
48969/***/ (function(module, exports, __webpack_require__) {
48970
48971"use strict";
48972/** @license React v0.19.1
48973 * scheduler-tracing.development.js
48974 *
48975 * Copyright (c) Facebook, Inc. and its affiliates.
48976 *
48977 * This source code is licensed under the MIT license found in the
48978 * LICENSE file in the root directory of this source tree.
48979 */
48980
48981
48982
48983
48984
48985if (true) {
48986  (function() {
48987'use strict';
48988
48989var DEFAULT_THREAD_ID = 0; // Counters used to generate unique IDs.
48990
48991var interactionIDCounter = 0;
48992var threadIDCounter = 0; // Set of currently traced interactions.
48993// Interactions "stack"–
48994// Meaning that newly traced interactions are appended to the previously active set.
48995// When an interaction goes out of scope, the previous set (if any) is restored.
48996
48997exports.__interactionsRef = null; // Listener(s) to notify when interactions begin and end.
48998
48999exports.__subscriberRef = null;
49000
49001{
49002  exports.__interactionsRef = {
49003    current: new Set()
49004  };
49005  exports.__subscriberRef = {
49006    current: null
49007  };
49008}
49009function unstable_clear(callback) {
49010
49011  var prevInteractions = exports.__interactionsRef.current;
49012  exports.__interactionsRef.current = new Set();
49013
49014  try {
49015    return callback();
49016  } finally {
49017    exports.__interactionsRef.current = prevInteractions;
49018  }
49019}
49020function unstable_getCurrent() {
49021  {
49022    return exports.__interactionsRef.current;
49023  }
49024}
49025function unstable_getThreadID() {
49026  return ++threadIDCounter;
49027}
49028function unstable_trace(name, timestamp, callback) {
49029  var threadID = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : DEFAULT_THREAD_ID;
49030
49031  var interaction = {
49032    __count: 1,
49033    id: interactionIDCounter++,
49034    name: name,
49035    timestamp: timestamp
49036  };
49037  var prevInteractions = exports.__interactionsRef.current; // Traced interactions should stack/accumulate.
49038  // To do that, clone the current interactions.
49039  // The previous set will be restored upon completion.
49040
49041  var interactions = new Set(prevInteractions);
49042  interactions.add(interaction);
49043  exports.__interactionsRef.current = interactions;
49044  var subscriber = exports.__subscriberRef.current;
49045  var returnValue;
49046
49047  try {
49048    if (subscriber !== null) {
49049      subscriber.onInteractionTraced(interaction);
49050    }
49051  } finally {
49052    try {
49053      if (subscriber !== null) {
49054        subscriber.onWorkStarted(interactions, threadID);
49055      }
49056    } finally {
49057      try {
49058        returnValue = callback();
49059      } finally {
49060        exports.__interactionsRef.current = prevInteractions;
49061
49062        try {
49063          if (subscriber !== null) {
49064            subscriber.onWorkStopped(interactions, threadID);
49065          }
49066        } finally {
49067          interaction.__count--; // If no async work was scheduled for this interaction,
49068          // Notify subscribers that it's completed.
49069
49070          if (subscriber !== null && interaction.__count === 0) {
49071            subscriber.onInteractionScheduledWorkCompleted(interaction);
49072          }
49073        }
49074      }
49075    }
49076  }
49077
49078  return returnValue;
49079}
49080function unstable_wrap(callback) {
49081  var threadID = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_THREAD_ID;
49082
49083  var wrappedInteractions = exports.__interactionsRef.current;
49084  var subscriber = exports.__subscriberRef.current;
49085
49086  if (subscriber !== null) {
49087    subscriber.onWorkScheduled(wrappedInteractions, threadID);
49088  } // Update the pending async work count for the current interactions.
49089  // Update after calling subscribers in case of error.
49090
49091
49092  wrappedInteractions.forEach(function (interaction) {
49093    interaction.__count++;
49094  });
49095  var hasRun = false;
49096
49097  function wrapped() {
49098    var prevInteractions = exports.__interactionsRef.current;
49099    exports.__interactionsRef.current = wrappedInteractions;
49100    subscriber = exports.__subscriberRef.current;
49101
49102    try {
49103      var returnValue;
49104
49105      try {
49106        if (subscriber !== null) {
49107          subscriber.onWorkStarted(wrappedInteractions, threadID);
49108        }
49109      } finally {
49110        try {
49111          returnValue = callback.apply(undefined, arguments);
49112        } finally {
49113          exports.__interactionsRef.current = prevInteractions;
49114
49115          if (subscriber !== null) {
49116            subscriber.onWorkStopped(wrappedInteractions, threadID);
49117          }
49118        }
49119      }
49120
49121      return returnValue;
49122    } finally {
49123      if (!hasRun) {
49124        // We only expect a wrapped function to be executed once,
49125        // But in the event that it's executed more than once–
49126        // Only decrement the outstanding interaction counts once.
49127        hasRun = true; // Update pending async counts for all wrapped interactions.
49128        // If this was the last scheduled async work for any of them,
49129        // Mark them as completed.
49130
49131        wrappedInteractions.forEach(function (interaction) {
49132          interaction.__count--;
49133
49134          if (subscriber !== null && interaction.__count === 0) {
49135            subscriber.onInteractionScheduledWorkCompleted(interaction);
49136          }
49137        });
49138      }
49139    }
49140  }
49141
49142  wrapped.cancel = function cancel() {
49143    subscriber = exports.__subscriberRef.current;
49144
49145    try {
49146      if (subscriber !== null) {
49147        subscriber.onWorkCanceled(wrappedInteractions, threadID);
49148      }
49149    } finally {
49150      // Update pending async counts for all wrapped interactions.
49151      // If this was the last scheduled async work for any of them,
49152      // Mark them as completed.
49153      wrappedInteractions.forEach(function (interaction) {
49154        interaction.__count--;
49155
49156        if (subscriber && interaction.__count === 0) {
49157          subscriber.onInteractionScheduledWorkCompleted(interaction);
49158        }
49159      });
49160    }
49161  };
49162
49163  return wrapped;
49164}
49165
49166var subscribers = null;
49167
49168{
49169  subscribers = new Set();
49170}
49171
49172function unstable_subscribe(subscriber) {
49173  {
49174    subscribers.add(subscriber);
49175
49176    if (subscribers.size === 1) {
49177      exports.__subscriberRef.current = {
49178        onInteractionScheduledWorkCompleted: onInteractionScheduledWorkCompleted,
49179        onInteractionTraced: onInteractionTraced,
49180        onWorkCanceled: onWorkCanceled,
49181        onWorkScheduled: onWorkScheduled,
49182        onWorkStarted: onWorkStarted,
49183        onWorkStopped: onWorkStopped
49184      };
49185    }
49186  }
49187}
49188function unstable_unsubscribe(subscriber) {
49189  {
49190    subscribers.delete(subscriber);
49191
49192    if (subscribers.size === 0) {
49193      exports.__subscriberRef.current = null;
49194    }
49195  }
49196}
49197
49198function onInteractionTraced(interaction) {
49199  var didCatchError = false;
49200  var caughtError = null;
49201  subscribers.forEach(function (subscriber) {
49202    try {
49203      subscriber.onInteractionTraced(interaction);
49204    } catch (error) {
49205      if (!didCatchError) {
49206        didCatchError = true;
49207        caughtError = error;
49208      }
49209    }
49210  });
49211
49212  if (didCatchError) {
49213    throw caughtError;
49214  }
49215}
49216
49217function onInteractionScheduledWorkCompleted(interaction) {
49218  var didCatchError = false;
49219  var caughtError = null;
49220  subscribers.forEach(function (subscriber) {
49221    try {
49222      subscriber.onInteractionScheduledWorkCompleted(interaction);
49223    } catch (error) {
49224      if (!didCatchError) {
49225        didCatchError = true;
49226        caughtError = error;
49227      }
49228    }
49229  });
49230
49231  if (didCatchError) {
49232    throw caughtError;
49233  }
49234}
49235
49236function onWorkScheduled(interactions, threadID) {
49237  var didCatchError = false;
49238  var caughtError = null;
49239  subscribers.forEach(function (subscriber) {
49240    try {
49241      subscriber.onWorkScheduled(interactions, threadID);
49242    } catch (error) {
49243      if (!didCatchError) {
49244        didCatchError = true;
49245        caughtError = error;
49246      }
49247    }
49248  });
49249
49250  if (didCatchError) {
49251    throw caughtError;
49252  }
49253}
49254
49255function onWorkStarted(interactions, threadID) {
49256  var didCatchError = false;
49257  var caughtError = null;
49258  subscribers.forEach(function (subscriber) {
49259    try {
49260      subscriber.onWorkStarted(interactions, threadID);
49261    } catch (error) {
49262      if (!didCatchError) {
49263        didCatchError = true;
49264        caughtError = error;
49265      }
49266    }
49267  });
49268
49269  if (didCatchError) {
49270    throw caughtError;
49271  }
49272}
49273
49274function onWorkStopped(interactions, threadID) {
49275  var didCatchError = false;
49276  var caughtError = null;
49277  subscribers.forEach(function (subscriber) {
49278    try {
49279      subscriber.onWorkStopped(interactions, threadID);
49280    } catch (error) {
49281      if (!didCatchError) {
49282        didCatchError = true;
49283        caughtError = error;
49284      }
49285    }
49286  });
49287
49288  if (didCatchError) {
49289    throw caughtError;
49290  }
49291}
49292
49293function onWorkCanceled(interactions, threadID) {
49294  var didCatchError = false;
49295  var caughtError = null;
49296  subscribers.forEach(function (subscriber) {
49297    try {
49298      subscriber.onWorkCanceled(interactions, threadID);
49299    } catch (error) {
49300      if (!didCatchError) {
49301        didCatchError = true;
49302        caughtError = error;
49303      }
49304    }
49305  });
49306
49307  if (didCatchError) {
49308    throw caughtError;
49309  }
49310}
49311
49312exports.unstable_clear = unstable_clear;
49313exports.unstable_getCurrent = unstable_getCurrent;
49314exports.unstable_getThreadID = unstable_getThreadID;
49315exports.unstable_subscribe = unstable_subscribe;
49316exports.unstable_trace = unstable_trace;
49317exports.unstable_unsubscribe = unstable_unsubscribe;
49318exports.unstable_wrap = unstable_wrap;
49319  })();
49320}
49321
49322
49323/***/ }),
49324
vendor: 25,229 bytes, lines 49325-50194
49325/***/ "../../node_modules/scheduler/cjs/scheduler.development.js":
49326/*!****************************************************************************************************************************************************!*\
49327  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/scheduler/cjs/scheduler.development.js ***!
49328  \****************************************************************************************************************************************************/
49329/*! no static exports found */
49330/***/ (function(module, exports, __webpack_require__) {
49331
49332"use strict";
49333/** @license React v0.19.1
49334 * scheduler.development.js
49335 *
49336 * Copyright (c) Facebook, Inc. and its affiliates.
49337 *
49338 * This source code is licensed under the MIT license found in the
49339 * LICENSE file in the root directory of this source tree.
49340 */
49341
49342
49343
49344
49345
49346if (true) {
49347  (function() {
49348'use strict';
49349
49350var enableSchedulerDebugging = false;
49351var enableProfiling = true;
49352
49353var requestHostCallback;
49354var requestHostTimeout;
49355var cancelHostTimeout;
49356var shouldYieldToHost;
49357var requestPaint;
49358
49359if ( // If Scheduler runs in a non-DOM environment, it falls back to a naive
49360// implementation using setTimeout.
49361typeof window === 'undefined' || // Check if MessageChannel is supported, too.
49362typeof MessageChannel !== 'function') {
49363  // If this accidentally gets imported in a non-browser environment, e.g. JavaScriptCore,
49364  // fallback to a naive implementation.
49365  var _callback = null;
49366  var _timeoutID = null;
49367
49368  var _flushCallback = function () {
49369    if (_callback !== null) {
49370      try {
49371        var currentTime = exports.unstable_now();
49372        var hasRemainingTime = true;
49373
49374        _callback(hasRemainingTime, currentTime);
49375
49376        _callback = null;
49377      } catch (e) {
49378        setTimeout(_flushCallback, 0);
49379        throw e;
49380      }
49381    }
49382  };
49383
49384  var initialTime = Date.now();
49385
49386  exports.unstable_now = function () {
49387    return Date.now() - initialTime;
49388  };
49389
49390  requestHostCallback = function (cb) {
49391    if (_callback !== null) {
49392      // Protect against re-entrancy.
49393      setTimeout(requestHostCallback, 0, cb);
49394    } else {
49395      _callback = cb;
49396      setTimeout(_flushCallback, 0);
49397    }
49398  };
49399
49400  requestHostTimeout = function (cb, ms) {
49401    _timeoutID = setTimeout(cb, ms);
49402  };
49403
49404  cancelHostTimeout = function () {
49405    clearTimeout(_timeoutID);
49406  };
49407
49408  shouldYieldToHost = function () {
49409    return false;
49410  };
49411
49412  requestPaint = exports.unstable_forceFrameRate = function () {};
49413} else {
49414  // Capture local references to native APIs, in case a polyfill overrides them.
49415  var performance = window.performance;
49416  var _Date = window.Date;
49417  var _setTimeout = window.setTimeout;
49418  var _clearTimeout = window.clearTimeout;
49419
49420  if (typeof console !== 'undefined') {
49421    // TODO: Scheduler no longer requires these methods to be polyfilled. But
49422    // maybe we want to continue warning if they don't exist, to preserve the
49423    // option to rely on it in the future?
49424    var requestAnimationFrame = window.requestAnimationFrame;
49425    var cancelAnimationFrame = window.cancelAnimationFrame; // TODO: Remove fb.me link
49426
49427    if (typeof requestAnimationFrame !== 'function') {
49428      // Using console['error'] to evade Babel and ESLint
49429      console['error']("This browser doesn't support requestAnimationFrame. " + 'Make sure that you load a ' + 'polyfill in older browsers. https://fb.me/react-polyfills');
49430    }
49431
49432    if (typeof cancelAnimationFrame !== 'function') {
49433      // Using console['error'] to evade Babel and ESLint
49434      console['error']("This browser doesn't support cancelAnimationFrame. " + 'Make sure that you load a ' + 'polyfill in older browsers. https://fb.me/react-polyfills');
49435    }
49436  }
49437
49438  if (typeof performance === 'object' && typeof performance.now === 'function') {
49439    exports.unstable_now = function () {
49440      return performance.now();
49441    };
49442  } else {
49443    var _initialTime = _Date.now();
49444
49445    exports.unstable_now = function () {
49446      return _Date.now() - _initialTime;
49447    };
49448  }
49449
49450  var isMessageLoopRunning = false;
49451  var scheduledHostCallback = null;
49452  var taskTimeoutID = -1; // Scheduler periodically yields in case there is other work on the main
49453  // thread, like user events. By default, it yields multiple times per frame.
49454  // It does not attempt to align with frame boundaries, since most tasks don't
49455  // need to be frame aligned; for those that do, use requestAnimationFrame.
49456
49457  var yieldInterval = 5;
49458  var deadline = 0; // TODO: Make this configurable
49459
49460  {
49461    // `isInputPending` is not available. Since we have no way of knowing if
49462    // there's pending input, always yield at the end of the frame.
49463    shouldYieldToHost = function () {
49464      return exports.unstable_now() >= deadline;
49465    }; // Since we yield every frame regardless, `requestPaint` has no effect.
49466
49467
49468    requestPaint = function () {};
49469  }
49470
49471  exports.unstable_forceFrameRate = function (fps) {
49472    if (fps < 0 || fps > 125) {
49473      // Using console['error'] to evade Babel and ESLint
49474      console['error']('forceFrameRate takes a positive int between 0 and 125, ' + 'forcing framerates higher than 125 fps is not unsupported');
49475      return;
49476    }
49477
49478    if (fps > 0) {
49479      yieldInterval = Math.floor(1000 / fps);
49480    } else {
49481      // reset the framerate
49482      yieldInterval = 5;
49483    }
49484  };
49485
49486  var performWorkUntilDeadline = function () {
49487    if (scheduledHostCallback !== null) {
49488      var currentTime = exports.unstable_now(); // Yield after `yieldInterval` ms, regardless of where we are in the vsync
49489      // cycle. This means there's always time remaining at the beginning of
49490      // the message event.
49491
49492      deadline = currentTime + yieldInterval;
49493      var hasTimeRemaining = true;
49494
49495      try {
49496        var hasMoreWork = scheduledHostCallback(hasTimeRemaining, currentTime);
49497
49498        if (!hasMoreWork) {
49499          isMessageLoopRunning = false;
49500          scheduledHostCallback = null;
49501        } else {
49502          // If there's more work, schedule the next message event at the end
49503          // of the preceding one.
49504          port.postMessage(null);
49505        }
49506      } catch (error) {
49507        // If a scheduler task throws, exit the current browser task so the
49508        // error can be observed.
49509        port.postMessage(null);
49510        throw error;
49511      }
49512    } else {
49513      isMessageLoopRunning = false;
49514    } // Yielding to the browser will give it a chance to paint, so we can
49515  };
49516
49517  var channel = new MessageChannel();
49518  var port = channel.port2;
49519  channel.port1.onmessage = performWorkUntilDeadline;
49520
49521  requestHostCallback = function (callback) {
49522    scheduledHostCallback = callback;
49523
49524    if (!isMessageLoopRunning) {
49525      isMessageLoopRunning = true;
49526      port.postMessage(null);
49527    }
49528  };
49529
49530  requestHostTimeout = function (callback, ms) {
49531    taskTimeoutID = _setTimeout(function () {
49532      callback(exports.unstable_now());
49533    }, ms);
49534  };
49535
49536  cancelHostTimeout = function () {
49537    _clearTimeout(taskTimeoutID);
49538
49539    taskTimeoutID = -1;
49540  };
49541}
49542
49543function push(heap, node) {
49544  var index = heap.length;
49545  heap.push(node);
49546  siftUp(heap, node, index);
49547}
49548function peek(heap) {
49549  var first = heap[0];
49550  return first === undefined ? null : first;
49551}
49552function pop(heap) {
49553  var first = heap[0];
49554
49555  if (first !== undefined) {
49556    var last = heap.pop();
49557
49558    if (last !== first) {
49559      heap[0] = last;
49560      siftDown(heap, last, 0);
49561    }
49562
49563    return first;
49564  } else {
49565    return null;
49566  }
49567}
49568
49569function siftUp(heap, node, i) {
49570  var index = i;
49571
49572  while (true) {
49573    var parentIndex = index - 1 >>> 1;
49574    var parent = heap[parentIndex];
49575
49576    if (parent !== undefined && compare(parent, node) > 0) {
49577      // The parent is larger. Swap positions.
49578      heap[parentIndex] = node;
49579      heap[index] = parent;
49580      index = parentIndex;
49581    } else {
49582      // The parent is smaller. Exit.
49583      return;
49584    }
49585  }
49586}
49587
49588function siftDown(heap, node, i) {
49589  var index = i;
49590  var length = heap.length;
49591
49592  while (index < length) {
49593    var leftIndex = (index + 1) * 2 - 1;
49594    var left = heap[leftIndex];
49595    var rightIndex = leftIndex + 1;
49596    var right = heap[rightIndex]; // If the left or right node is smaller, swap with the smaller of those.
49597
49598    if (left !== undefined && compare(left, node) < 0) {
49599      if (right !== undefined && compare(right, left) < 0) {
49600        heap[index] = right;
49601        heap[rightIndex] = node;
49602        index = rightIndex;
49603      } else {
49604        heap[index] = left;
49605        heap[leftIndex] = node;
49606        index = leftIndex;
49607      }
49608    } else if (right !== undefined && compare(right, node) < 0) {
49609      heap[index] = right;
49610      heap[rightIndex] = node;
49611      index = rightIndex;
49612    } else {
49613      // Neither child is smaller. Exit.
49614      return;
49615    }
49616  }
49617}
49618
49619function compare(a, b) {
49620  // Compare sort index first, then task id.
49621  var diff = a.sortIndex - b.sortIndex;
49622  return diff !== 0 ? diff : a.id - b.id;
49623}
49624
49625// TODO: Use symbols?
49626var NoPriority = 0;
49627var ImmediatePriority = 1;
49628var UserBlockingPriority = 2;
49629var NormalPriority = 3;
49630var LowPriority = 4;
49631var IdlePriority = 5;
49632
49633var runIdCounter = 0;
49634var mainThreadIdCounter = 0;
49635var profilingStateSize = 4;
49636var sharedProfilingBuffer =  // $FlowFixMe Flow doesn't know about SharedArrayBuffer
49637typeof SharedArrayBuffer === 'function' ? new SharedArrayBuffer(profilingStateSize * Int32Array.BYTES_PER_ELEMENT) : // $FlowFixMe Flow doesn't know about ArrayBuffer
49638typeof ArrayBuffer === 'function' ? new ArrayBuffer(profilingStateSize * Int32Array.BYTES_PER_ELEMENT) : null // Don't crash the init path on IE9
49639;
49640var profilingState =  sharedProfilingBuffer !== null ? new Int32Array(sharedProfilingBuffer) : []; // We can't read this but it helps save bytes for null checks
49641
49642var PRIORITY = 0;
49643var CURRENT_TASK_ID = 1;
49644var CURRENT_RUN_ID = 2;
49645var QUEUE_SIZE = 3;
49646
49647{
49648  profilingState[PRIORITY] = NoPriority; // This is maintained with a counter, because the size of the priority queue
49649  // array might include canceled tasks.
49650
49651  profilingState[QUEUE_SIZE] = 0;
49652  profilingState[CURRENT_TASK_ID] = 0;
49653} // Bytes per element is 4
49654
49655
49656var INITIAL_EVENT_LOG_SIZE = 131072;
49657var MAX_EVENT_LOG_SIZE = 524288; // Equivalent to 2 megabytes
49658
49659var eventLogSize = 0;
49660var eventLogBuffer = null;
49661var eventLog = null;
49662var eventLogIndex = 0;
49663var TaskStartEvent = 1;
49664var TaskCompleteEvent = 2;
49665var TaskErrorEvent = 3;
49666var TaskCancelEvent = 4;
49667var TaskRunEvent = 5;
49668var TaskYieldEvent = 6;
49669var SchedulerSuspendEvent = 7;
49670var SchedulerResumeEvent = 8;
49671
49672function logEvent(entries) {
49673  if (eventLog !== null) {
49674    var offset = eventLogIndex;
49675    eventLogIndex += entries.length;
49676
49677    if (eventLogIndex + 1 > eventLogSize) {
49678      eventLogSize *= 2;
49679
49680      if (eventLogSize > MAX_EVENT_LOG_SIZE) {
49681        // Using console['error'] to evade Babel and ESLint
49682        console['error']("Scheduler Profiling: Event log exceeded maximum size. Don't " + 'forget to call `stopLoggingProfilingEvents()`.');
49683        stopLoggingProfilingEvents();
49684        return;
49685      }
49686
49687      var newEventLog = new Int32Array(eventLogSize * 4);
49688      newEventLog.set(eventLog);
49689      eventLogBuffer = newEventLog.buffer;
49690      eventLog = newEventLog;
49691    }
49692
49693    eventLog.set(entries, offset);
49694  }
49695}
49696
49697function startLoggingProfilingEvents() {
49698  eventLogSize = INITIAL_EVENT_LOG_SIZE;
49699  eventLogBuffer = new ArrayBuffer(eventLogSize * 4);
49700  eventLog = new Int32Array(eventLogBuffer);
49701  eventLogIndex = 0;
49702}
49703function stopLoggingProfilingEvents() {
49704  var buffer = eventLogBuffer;
49705  eventLogSize = 0;
49706  eventLogBuffer = null;
49707  eventLog = null;
49708  eventLogIndex = 0;
49709  return buffer;
49710}
49711function markTaskStart(task, ms) {
49712  {
49713    profilingState[QUEUE_SIZE]++;
49714
49715    if (eventLog !== null) {
49716      // performance.now returns a float, representing milliseconds. When the
49717      // event is logged, it's coerced to an int. Convert to microseconds to
49718      // maintain extra degrees of precision.
49719      logEvent([TaskStartEvent, ms * 1000, task.id, task.priorityLevel]);
49720    }
49721  }
49722}
49723function markTaskCompleted(task, ms) {
49724  {
49725    profilingState[PRIORITY] = NoPriority;
49726    profilingState[CURRENT_TASK_ID] = 0;
49727    profilingState[QUEUE_SIZE]--;
49728
49729    if (eventLog !== null) {
49730      logEvent([TaskCompleteEvent, ms * 1000, task.id]);
49731    }
49732  }
49733}
49734function markTaskCanceled(task, ms) {
49735  {
49736    profilingState[QUEUE_SIZE]--;
49737
49738    if (eventLog !== null) {
49739      logEvent([TaskCancelEvent, ms * 1000, task.id]);
49740    }
49741  }
49742}
49743function markTaskErrored(task, ms) {
49744  {
49745    profilingState[PRIORITY] = NoPriority;
49746    profilingState[CURRENT_TASK_ID] = 0;
49747    profilingState[QUEUE_SIZE]--;
49748
49749    if (eventLog !== null) {
49750      logEvent([TaskErrorEvent, ms * 1000, task.id]);
49751    }
49752  }
49753}
49754function markTaskRun(task, ms) {
49755  {
49756    runIdCounter++;
49757    profilingState[PRIORITY] = task.priorityLevel;
49758    profilingState[CURRENT_TASK_ID] = task.id;
49759    profilingState[CURRENT_RUN_ID] = runIdCounter;
49760
49761    if (eventLog !== null) {
49762      logEvent([TaskRunEvent, ms * 1000, task.id, runIdCounter]);
49763    }
49764  }
49765}
49766function markTaskYield(task, ms) {
49767  {
49768    profilingState[PRIORITY] = NoPriority;
49769    profilingState[CURRENT_TASK_ID] = 0;
49770    profilingState[CURRENT_RUN_ID] = 0;
49771
49772    if (eventLog !== null) {
49773      logEvent([TaskYieldEvent, ms * 1000, task.id, runIdCounter]);
49774    }
49775  }
49776}
49777function markSchedulerSuspended(ms) {
49778  {
49779    mainThreadIdCounter++;
49780
49781    if (eventLog !== null) {
49782      logEvent([SchedulerSuspendEvent, ms * 1000, mainThreadIdCounter]);
49783    }
49784  }
49785}
49786function markSchedulerUnsuspended(ms) {
49787  {
49788    if (eventLog !== null) {
49789      logEvent([SchedulerResumeEvent, ms * 1000, mainThreadIdCounter]);
49790    }
49791  }
49792}
49793
49794/* eslint-disable no-var */
49795// Math.pow(2, 30) - 1
49796// 0b111111111111111111111111111111
49797
49798var maxSigned31BitInt = 1073741823; // Times out immediately
49799
49800var IMMEDIATE_PRIORITY_TIMEOUT = -1; // Eventually times out
49801
49802var USER_BLOCKING_PRIORITY = 250;
49803var NORMAL_PRIORITY_TIMEOUT = 5000;
49804var LOW_PRIORITY_TIMEOUT = 10000; // Never times out
49805
49806var IDLE_PRIORITY = maxSigned31BitInt; // Tasks are stored on a min heap
49807
49808var taskQueue = [];
49809var timerQueue = []; // Incrementing id counter. Used to maintain insertion order.
49810
49811var taskIdCounter = 1; // Pausing the scheduler is useful for debugging.
49812var currentTask = null;
49813var currentPriorityLevel = NormalPriority; // This is set while performing work, to prevent re-entrancy.
49814
49815var isPerformingWork = false;
49816var isHostCallbackScheduled = false;
49817var isHostTimeoutScheduled = false;
49818
49819function advanceTimers(currentTime) {
49820  // Check for tasks that are no longer delayed and add them to the queue.
49821  var timer = peek(timerQueue);
49822
49823  while (timer !== null) {
49824    if (timer.callback === null) {
49825      // Timer was cancelled.
49826      pop(timerQueue);
49827    } else if (timer.startTime <= currentTime) {
49828      // Timer fired. Transfer to the task queue.
49829      pop(timerQueue);
49830      timer.sortIndex = timer.expirationTime;
49831      push(taskQueue, timer);
49832
49833      {
49834        markTaskStart(timer, currentTime);
49835        timer.isQueued = true;
49836      }
49837    } else {
49838      // Remaining timers are pending.
49839      return;
49840    }
49841
49842    timer = peek(timerQueue);
49843  }
49844}
49845
49846function handleTimeout(currentTime) {
49847  isHostTimeoutScheduled = false;
49848  advanceTimers(currentTime);
49849
49850  if (!isHostCallbackScheduled) {
49851    if (peek(taskQueue) !== null) {
49852      isHostCallbackScheduled = true;
49853      requestHostCallback(flushWork);
49854    } else {
49855      var firstTimer = peek(timerQueue);
49856
49857      if (firstTimer !== null) {
49858        requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);
49859      }
49860    }
49861  }
49862}
49863
49864function flushWork(hasTimeRemaining, initialTime) {
49865  {
49866    markSchedulerUnsuspended(initialTime);
49867  } // We'll need a host callback the next time work is scheduled.
49868
49869
49870  isHostCallbackScheduled = false;
49871
49872  if (isHostTimeoutScheduled) {
49873    // We scheduled a timeout but it's no longer needed. Cancel it.
49874    isHostTimeoutScheduled = false;
49875    cancelHostTimeout();
49876  }
49877
49878  isPerformingWork = true;
49879  var previousPriorityLevel = currentPriorityLevel;
49880
49881  try {
49882    if (enableProfiling) {
49883      try {
49884        return workLoop(hasTimeRemaining, initialTime);
49885      } catch (error) {
49886        if (currentTask !== null) {
49887          var currentTime = exports.unstable_now();
49888          markTaskErrored(currentTask, currentTime);
49889          currentTask.isQueued = false;
49890        }
49891
49892        throw error;
49893      }
49894    } else {
49895      // No catch in prod codepath.
49896      return workLoop(hasTimeRemaining, initialTime);
49897    }
49898  } finally {
49899    currentTask = null;
49900    currentPriorityLevel = previousPriorityLevel;
49901    isPerformingWork = false;
49902
49903    {
49904      var _currentTime = exports.unstable_now();
49905
49906      markSchedulerSuspended(_currentTime);
49907    }
49908  }
49909}
49910
49911function workLoop(hasTimeRemaining, initialTime) {
49912  var currentTime = initialTime;
49913  advanceTimers(currentTime);
49914  currentTask = peek(taskQueue);
49915
49916  while (currentTask !== null && !(enableSchedulerDebugging )) {
49917    if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {
49918      // This currentTask hasn't expired, and we've reached the deadline.
49919      break;
49920    }
49921
49922    var callback = currentTask.callback;
49923
49924    if (callback !== null) {
49925      currentTask.callback = null;
49926      currentPriorityLevel = currentTask.priorityLevel;
49927      var didUserCallbackTimeout = currentTask.expirationTime <= currentTime;
49928      markTaskRun(currentTask, currentTime);
49929      var continuationCallback = callback(didUserCallbackTimeout);
49930      currentTime = exports.unstable_now();
49931
49932      if (typeof continuationCallback === 'function') {
49933        currentTask.callback = continuationCallback;
49934        markTaskYield(currentTask, currentTime);
49935      } else {
49936        {
49937          markTaskCompleted(currentTask, currentTime);
49938          currentTask.isQueued = false;
49939        }
49940
49941        if (currentTask === peek(taskQueue)) {
49942          pop(taskQueue);
49943        }
49944      }
49945
49946      advanceTimers(currentTime);
49947    } else {
49948      pop(taskQueue);
49949    }
49950
49951    currentTask = peek(taskQueue);
49952  } // Return whether there's additional work
49953
49954
49955  if (currentTask !== null) {
49956    return true;
49957  } else {
49958    var firstTimer = peek(timerQueue);
49959
49960    if (firstTimer !== null) {
49961      requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);
49962    }
49963
49964    return false;
49965  }
49966}
49967
49968function unstable_runWithPriority(priorityLevel, eventHandler) {
49969  switch (priorityLevel) {
49970    case ImmediatePriority:
49971    case UserBlockingPriority:
49972    case NormalPriority:
49973    case LowPriority:
49974    case IdlePriority:
49975      break;
49976
49977    default:
49978      priorityLevel = NormalPriority;
49979  }
49980
49981  var previousPriorityLevel = currentPriorityLevel;
49982  currentPriorityLevel = priorityLevel;
49983
49984  try {
49985    return eventHandler();
49986  } finally {
49987    currentPriorityLevel = previousPriorityLevel;
49988  }
49989}
49990
49991function unstable_next(eventHandler) {
49992  var priorityLevel;
49993
49994  switch (currentPriorityLevel) {
49995    case ImmediatePriority:
49996    case UserBlockingPriority:
49997    case NormalPriority:
49998      // Shift down to normal priority
49999      priorityLevel = NormalPriority;
50000      break;
50001
50002    default:
50003      // Anything lower than normal priority should remain at the current level.
50004      priorityLevel = currentPriorityLevel;
50005      break;
50006  }
50007
50008  var previousPriorityLevel = currentPriorityLevel;
50009  currentPriorityLevel = priorityLevel;
50010
50011  try {
50012    return eventHandler();
50013  } finally {
50014    currentPriorityLevel = previousPriorityLevel;
50015  }
50016}
50017
50018function unstable_wrapCallback(callback) {
50019  var parentPriorityLevel = currentPriorityLevel;
50020  return function () {
50021    // This is a fork of runWithPriority, inlined for performance.
50022    var previousPriorityLevel = currentPriorityLevel;
50023    currentPriorityLevel = parentPriorityLevel;
50024
50025    try {
50026      return callback.apply(this, arguments);
50027    } finally {
50028      currentPriorityLevel = previousPriorityLevel;
50029    }
50030  };
50031}
50032
50033function timeoutForPriorityLevel(priorityLevel) {
50034  switch (priorityLevel) {
50035    case ImmediatePriority:
50036      return IMMEDIATE_PRIORITY_TIMEOUT;
50037
50038    case UserBlockingPriority:
50039      return USER_BLOCKING_PRIORITY;
50040
50041    case IdlePriority:
50042      return IDLE_PRIORITY;
50043
50044    case LowPriority:
50045      return LOW_PRIORITY_TIMEOUT;
50046
50047    case NormalPriority:
50048    default:
50049      return NORMAL_PRIORITY_TIMEOUT;
50050  }
50051}
50052
50053function unstable_scheduleCallback(priorityLevel, callback, options) {
50054  var currentTime = exports.unstable_now();
50055  var startTime;
50056  var timeout;
50057
50058  if (typeof options === 'object' && options !== null) {
50059    var delay = options.delay;
50060
50061    if (typeof delay === 'number' && delay > 0) {
50062      startTime = currentTime + delay;
50063    } else {
50064      startTime = currentTime;
50065    }
50066
50067    timeout = typeof options.timeout === 'number' ? options.timeout : timeoutForPriorityLevel(priorityLevel);
50068  } else {
50069    timeout = timeoutForPriorityLevel(priorityLevel);
50070    startTime = currentTime;
50071  }
50072
50073  var expirationTime = startTime + timeout;
50074  var newTask = {
50075    id: taskIdCounter++,
50076    callback: callback,
50077    priorityLevel: priorityLevel,
50078    startTime: startTime,
50079    expirationTime: expirationTime,
50080    sortIndex: -1
50081  };
50082
50083  {
50084    newTask.isQueued = false;
50085  }
50086
50087  if (startTime > currentTime) {
50088    // This is a delayed task.
50089    newTask.sortIndex = startTime;
50090    push(timerQueue, newTask);
50091
50092    if (peek(taskQueue) === null && newTask === peek(timerQueue)) {
50093      // All tasks are delayed, and this is the task with the earliest delay.
50094      if (isHostTimeoutScheduled) {
50095        // Cancel an existing timeout.
50096        cancelHostTimeout();
50097      } else {
50098        isHostTimeoutScheduled = true;
50099      } // Schedule a timeout.
50100
50101
50102      requestHostTimeout(handleTimeout, startTime - currentTime);
50103    }
50104  } else {
50105    newTask.sortIndex = expirationTime;
50106    push(taskQueue, newTask);
50107
50108    {
50109      markTaskStart(newTask, currentTime);
50110      newTask.isQueued = true;
50111    } // Schedule a host callback, if needed. If we're already performing work,
50112    // wait until the next time we yield.
50113
50114
50115    if (!isHostCallbackScheduled && !isPerformingWork) {
50116      isHostCallbackScheduled = true;
50117      requestHostCallback(flushWork);
50118    }
50119  }
50120
50121  return newTask;
50122}
50123
50124function unstable_pauseExecution() {
50125}
50126
50127function unstable_continueExecution() {
50128
50129  if (!isHostCallbackScheduled && !isPerformingWork) {
50130    isHostCallbackScheduled = true;
50131    requestHostCallback(flushWork);
50132  }
50133}
50134
50135function unstable_getFirstCallbackNode() {
50136  return peek(taskQueue);
50137}
50138
50139function unstable_cancelCallback(task) {
50140  {
50141    if (task.isQueued) {
50142      var currentTime = exports.unstable_now();
50143      markTaskCanceled(task, currentTime);
50144      task.isQueued = false;
50145    }
50146  } // Null out the callback to indicate the task has been canceled. (Can't
50147  // remove from the queue because you can't remove arbitrary nodes from an
50148  // array based heap, only the first one.)
50149
50150
50151  task.callback = null;
50152}
50153
50154function unstable_getCurrentPriorityLevel() {
50155  return currentPriorityLevel;
50156}
50157
50158function unstable_shouldYield() {
50159  var currentTime = exports.unstable_now();
50160  advanceTimers(currentTime);
50161  var firstTask = peek(taskQueue);
50162  return firstTask !== currentTask && currentTask !== null && firstTask !== null && firstTask.callback !== null && firstTask.startTime <= currentTime && firstTask.expirationTime < currentTask.expirationTime || shouldYieldToHost();
50163}
50164
50165var unstable_requestPaint = requestPaint;
50166var unstable_Profiling =  {
50167  startLoggingProfilingEvents: startLoggingProfilingEvents,
50168  stopLoggingProfilingEvents: stopLoggingProfilingEvents,
50169  sharedProfilingBuffer: sharedProfilingBuffer
50170} ;
50171
50172exports.unstable_IdlePriority = IdlePriority;
50173exports.unstable_ImmediatePriority = ImmediatePriority;
50174exports.unstable_LowPriority = LowPriority;
50175exports.unstable_NormalPriority = NormalPriority;
50176exports.unstable_Profiling = unstable_Profiling;
50177exports.unstable_UserBlockingPriority = UserBlockingPriority;
50178exports.unstable_cancelCallback = unstable_cancelCallback;
50179exports.unstable_continueExecution = unstable_continueExecution;
50180exports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel;
50181exports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode;
50182exports.unstable_next = unstable_next;
50183exports.unstable_pauseExecution = unstable_pauseExecution;
50184exports.unstable_requestPaint = unstable_requestPaint;
50185exports.unstable_runWithPriority = unstable_runWithPriority;
50186exports.unstable_scheduleCallback = unstable_scheduleCallback;
50187exports.unstable_shouldYield = unstable_shouldYield;
50188exports.unstable_wrapCallback = unstable_wrapCallback;
50189  })();
50190}
50191
50192
50193/***/ }),
50194
vendor: 744 bytes, lines 50195-50211
50195/***/ "../../node_modules/scheduler/index.js":
50196/*!********************************************************************************************************************************!*\
50197  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/scheduler/index.js ***!
50198  \********************************************************************************************************************************/
50199/*! no static exports found */
50200/***/ (function(module, exports, __webpack_require__) {
50201
50202"use strict";
50203
50204
50205if (false) {} else {
50206  module.exports = __webpack_require__(/*! ./cjs/scheduler.development.js */ "../../node_modules/scheduler/cjs/scheduler.development.js");
50207}
50208
50209
50210/***/ }),
50211
vendor: 768 bytes, lines 50212-50228
50212/***/ "../../node_modules/scheduler/tracing.js":
50213/*!**********************************************************************************************************************************!*\
50214  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/scheduler/tracing.js ***!
50215  \**********************************************************************************************************************************/
50216/*! no static exports found */
50217/***/ (function(module, exports, __webpack_require__) {
50218
50219"use strict";
50220
50221
50222if (false) {} else {
50223  module.exports = __webpack_require__(/*! ./cjs/scheduler-tracing.development.js */ "../../node_modules/scheduler/cjs/scheduler-tracing.development.js");
50224}
50225
50226
50227/***/ }),
50228
vendor: 13,236 bytes, lines 50229-50669
50229/***/ "../../node_modules/smoothscroll-polyfill/dist/smoothscroll.js":
50230/*!********************************************************************************************************************************************************!*\
50231  !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/smoothscroll-polyfill/dist/smoothscroll.js ***!
50232  \********************************************************************************************************************************************************/
50233/*! no static exports found */
50234/***/ (function(module, exports, __webpack_require__) {
50235
50236/* smoothscroll v0.4.4 - 2019 - Dustan Kasten, Jeremias Menichelli - MIT License */
50237(function () {
50238  'use strict';
50239
50240  // polyfill
50241  function polyfill() {
50242    // aliases
50243    var w = window;
50244    var d = document;
50245
50246    // return if scroll behavior is supported and polyfill is not forced
50247    if (
50248      'scrollBehavior' in d.documentElement.style &&
50249      w.__forceSmoothScrollPolyfill__ !== true
50250    ) {
50251      return;
50252    }
50253
50254    // globals
50255    var Element = w.HTMLElement || w.Element;
50256    var SCROLL_TIME = 468;
50257
50258    // object gathering original scroll methods
50259    var original = {
50260      scroll: w.scroll || w.scrollTo,
50261      scrollBy: w.scrollBy,
50262      elementScroll: Element.prototype.scroll || scrollElement,
50263      scrollIntoView: Element.prototype.scrollIntoView
50264    };
50265
50266    // define timing method
50267    var now =
50268      w.performance && w.performance.now
50269        ? w.performance.now.bind(w.performance)
50270        : Date.now;
50271
50272    /**
50273     * indicates if a the current browser is made by Microsoft
50274     * @method isMicrosoftBrowser
50275     * @param {String} userAgent
50276     * @returns {Boolean}
50277     */
50278    function isMicrosoftBrowser(userAgent) {
50279      var userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/'];
50280
50281      return new RegExp(userAgentPatterns.join('|')).test(userAgent);
50282    }
50283
50284    /*
50285     * IE has rounding bug rounding down clientHeight and clientWidth and
50286     * rounding up scrollHeight and scrollWidth causing false positives
50287     * on hasScrollableSpace
50288     */
50289    var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;
50290
50291    /**
50292     * changes scroll position inside an element
50293     * @method scrollElement
50294     * @param {Number} x
50295     * @param {Number} y
50296     * @returns {undefined}
50297     */
50298    function scrollElement(x, y) {
50299      this.scrollLeft = x;
50300      this.scrollTop = y;
50301    }
50302
50303    /**
50304     * returns result of applying ease math function to a number
50305     * @method ease
50306     * @param {Number} k
50307     * @returns {Number}
50308     */
50309    function ease(k) {
50310      return 0.5 * (1 - Math.cos(Math.PI * k));
50311    }
50312
50313    /**
50314     * indicates if a smooth behavior should be applied
50315     * @method shouldBailOut
50316     * @param {Number|Object} firstArg
50317     * @returns {Boolean}
50318     */
50319    function shouldBailOut(firstArg) {
50320      if (
50321        firstArg === null ||
50322        typeof firstArg !== 'object' ||
50323        firstArg.behavior === undefined ||
50324        firstArg.behavior === 'auto' ||
50325        firstArg.behavior === 'instant'
50326      ) {
50327        // first argument is not an object/null
50328        // or behavior is auto, instant or undefined
50329        return true;
50330      }
50331
50332      if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') {
50333        // first argument is an object and behavior is smooth
50334        return false;
50335      }
50336
50337      // throw error when behavior is not supported
50338      throw new TypeError(
50339        'behavior member of ScrollOptions ' +
50340          firstArg.behavior +
50341          ' is not a valid value for enumeration ScrollBehavior.'
50342      );
50343    }
50344
50345    /**
50346     * indicates if an element has scrollable space in the provided axis
50347     * @method hasScrollableSpace
50348     * @param {Node} el
50349     * @param {String} axis
50350     * @returns {Boolean}
50351     */
50352    function hasScrollableSpace(el, axis) {
50353      if (axis === 'Y') {
50354        return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;
50355      }
50356
50357      if (axis === 'X') {
50358        return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;
50359      }
50360    }
50361
50362    /**
50363     * indicates if an element has a scrollable overflow property in the axis
50364     * @method canOverflow
50365     * @param {Node} el
50366     * @param {String} axis
50367     * @returns {Boolean}
50368     */
50369    function canOverflow(el, axis) {
50370      var overflowValue = w.getComputedStyle(el, null)['overflow' + axis];
50371
50372      return overflowValue === 'auto' || overflowValue === 'scroll';
50373    }
50374
50375    /**
50376     * indicates if an element can be scrolled in either axis
50377     * @method isScrollable
50378     * @param {Node} el
50379     * @param {String} axis
50380     * @returns {Boolean}
50381     */
50382    function isScrollable(el) {
50383      var isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y');
50384      var isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X');
50385
50386      return isScrollableY || isScrollableX;
50387    }
50388
50389    /**
50390     * finds scrollable parent of an element
50391     * @method findScrollableParent
50392     * @param {Node} el
50393     * @returns {Node} el
50394     */
50395    function findScrollableParent(el) {
50396      while (el !== d.body && isScrollable(el) === false) {
50397        el = el.parentNode || el.host;
50398      }
50399
50400      return el;
50401    }
50402
50403    /**
50404     * self invoked function that, given a context, steps through scrolling
50405     * @method step
50406     * @param {Object} context
50407     * @returns {undefined}
50408     */
50409    function step(context) {
50410      var time = now();
50411      var value;
50412      var currentX;
50413      var currentY;
50414      var elapsed = (time - context.startTime) / SCROLL_TIME;
50415
50416      // avoid elapsed times higher than one
50417      elapsed = elapsed > 1 ? 1 : elapsed;
50418
50419      // apply easing to elapsed time
50420      value = ease(elapsed);
50421
50422      currentX = context.startX + (context.x - context.startX) * value;
50423      currentY = context.startY + (context.y - context.startY) * value;
50424
50425      context.method.call(context.scrollable, currentX, currentY);
50426
50427      // scroll more if we have not reached our destination
50428      if (currentX !== context.x || currentY !== context.y) {
50429        w.requestAnimationFrame(step.bind(w, context));
50430      }
50431    }
50432
50433    /**
50434     * scrolls window or element with a smooth behavior
50435     * @method smoothScroll
50436     * @param {Object|Node} el
50437     * @param {Number} x
50438     * @param {Number} y
50439     * @returns {undefined}
50440     */
50441    function smoothScroll(el, x, y) {
50442      var scrollable;
50443      var startX;
50444      var startY;
50445      var method;
50446      var startTime = now();
50447
50448      // define scroll context
50449      if (el === d.body) {
50450        scrollable = w;
50451        startX = w.scrollX || w.pageXOffset;
50452        startY = w.scrollY || w.pageYOffset;
50453        method = original.scroll;
50454      } else {
50455        scrollable = el;
50456        startX = el.scrollLeft;
50457        startY = el.scrollTop;
50458        method = scrollElement;
50459      }
50460
50461      // scroll looping over a frame
50462      step({
50463        scrollable: scrollable,
50464        method: method,
50465        startTime: startTime,
50466        startX: startX,
50467        startY: startY,
50468        x: x,
50469        y: y
50470      });
50471    }
50472
50473    // ORIGINAL METHODS OVERRIDES
50474    // w.scroll and w.scrollTo
50475    w.scroll = w.scrollTo = function() {
50476      // avoid action when no arguments are passed
50477      if (arguments[0] === undefined) {
50478        return;
50479      }
50480
50481      // avoid smooth behavior if not required
50482      if (shouldBailOut(arguments[0]) === true) {
50483        original.scroll.call(
50484          w,
50485          arguments[0].left !== undefined
50486            ? arguments[0].left
50487            : typeof arguments[0] !== 'object'
50488              ? arguments[0]
50489              : w.scrollX || w.pageXOffset,
50490          // use top prop, second argument if present or fallback to scrollY
50491          arguments[0].top !== undefined
50492            ? arguments[0].top
50493            : arguments[1] !== undefined
50494              ? arguments[1]
50495              : w.scrollY || w.pageYOffset
50496        );
50497
50498        return;
50499      }
50500
50501      // LET THE SMOOTHNESS BEGIN!
50502      smoothScroll.call(
50503        w,
50504        d.body,
50505        arguments[0].left !== undefined
50506          ? ~~arguments[0].left
50507          : w.scrollX || w.pageXOffset,
50508        arguments[0].top !== undefined
50509          ? ~~arguments[0].top
50510          : w.scrollY || w.pageYOffset
50511      );
50512    };
50513
50514    // w.scrollBy
50515    w.scrollBy = function() {
50516      // avoid action when no arguments are passed
50517      if (arguments[0] === undefined) {
50518        return;
50519      }
50520
50521      // avoid smooth behavior if not required
50522      if (shouldBailOut(arguments[0])) {
50523        original.scrollBy.call(
50524          w,
50525          arguments[0].left !== undefined
50526            ? arguments[0].left
50527            : typeof arguments[0] !== 'object' ? arguments[0] : 0,
50528          arguments[0].top !== undefined
50529            ? arguments[0].top
50530            : arguments[1] !== undefined ? arguments[1] : 0
50531        );
50532
50533        return;
50534      }
50535
50536      // LET THE SMOOTHNESS BEGIN!
50537      smoothScroll.call(
50538        w,
50539        d.body,
50540        ~~arguments[0].left + (w.scrollX || w.pageXOffset),
50541        ~~arguments[0].top + (w.scrollY || w.pageYOffset)
50542      );
50543    };
50544
50545    // Element.prototype.scroll and Element.prototype.scrollTo
50546    Element.prototype.scroll = Element.prototype.scrollTo = function() {
50547      // avoid action when no arguments are passed
50548      if (arguments[0] === undefined) {
50549        return;
50550      }
50551
50552      // avoid smooth behavior if not required
50553      if (shouldBailOut(arguments[0]) === true) {
50554        // if one number is passed, throw error to match Firefox implementation
50555        if (typeof arguments[0] === 'number' && arguments[1] === undefined) {
50556          throw new SyntaxError('Value could not be converted');
50557        }
50558
50559        original.elementScroll.call(
50560          this,
50561          // use left prop, first number argument or fallback to scrollLeft
50562          arguments[0].left !== undefined
50563            ? ~~arguments[0].left
50564            : typeof arguments[0] !== 'object' ? ~~arguments[0] : this.scrollLeft,
50565          // use top prop, second argument or fallback to scrollTop
50566          arguments[0].top !== undefined
50567            ? ~~arguments[0].top
50568            : arguments[1] !== undefined ? ~~arguments[1] : this.scrollTop
50569        );
50570
50571        return;
50572      }
50573
50574      var left = arguments[0].left;
50575      var top = arguments[0].top;
50576
50577      // LET THE SMOOTHNESS BEGIN!
50578      smoothScroll.call(
50579        this,
50580        this,
50581        typeof left === 'undefined' ? this.scrollLeft : ~~left,
50582        typeof top === 'undefined' ? this.scrollTop : ~~top
50583      );
50584    };
50585
50586    // Element.prototype.scrollBy
50587    Element.prototype.scrollBy = function() {
50588      // avoid action when no arguments are passed
50589      if (arguments[0] === undefined) {
50590        return;
50591      }
50592
50593      // avoid smooth behavior if not required
50594      if (shouldBailOut(arguments[0]) === true) {
50595        original.elementScroll.call(
50596          this,
50597          arguments[0].left !== undefined
50598            ? ~~arguments[0].left + this.scrollLeft
50599            : ~~arguments[0] + this.scrollLeft,
50600          arguments[0].top !== undefined
50601            ? ~~arguments[0].top + this.scrollTop
50602            : ~~arguments[1] + this.scrollTop
50603        );
50604
50605        return;
50606      }
50607
50608      this.scroll({
50609        left: ~~arguments[0].left + this.scrollLeft,
50610        top: ~~arguments[0].top + this.scrollTop,
50611        behavior: arguments[0].behavior
50612      });
50613    };
50614
50615    // Element.prototype.scrollIntoView
50616    Element.prototype.scrollIntoView = function() {
50617      // avoid smooth behavior if not required
50618      if (shouldBailOut(arguments[0]) === true) {
50619        original.scrollIntoView.call(
50620          this,
50621          arguments[0] === undefined ? true : arguments[0]
50622        );
50623
50624        return;
50625      }
50626
50627      // LET THE SMOOTHNESS BEGIN!
50628      var scrollableParent = findScrollableParent(this);
50629      var parentRects = scrollableParent.getBoundingClientRect();
50630      var clientRects = this.getBoundingClientRect();
50631
50632      if (scrollableParent !== d.body) {
50633        // reveal element inside parent
50634        smoothScroll.call(
50635          this,
50636          scrollableParent,
50637          scrollableParent.scrollLeft + clientRects.left - parentRects.left,
50638          scrollableParent.scrollTop + clientRects.top - parentRects.top
50639        );
50640
50641        // reveal parent in viewport unless is fixed
50642        if (w.getComputedStyle(scrollableParent).position !== 'fixed') {
50643          w.scrollBy({
50644            left: parentRects.left,
50645            top: parentRects.top,
50646            behavior: 'smooth'
50647          });
50648        }
50649      } else {
50650        // reveal element in viewport
50651        w.scrollBy({
50652          left: clientRects.left,
50653          top: clientRects.top,
50654          behavior: 'smooth'
50655        });
50656      }
50657    };
50658  }
50659
50660  if (true) {
50661    // commonjs
50662    module.exports = { polyfill: polyfill };
50663  } else {}
50664
50665}());
50666
50667
50668/***/ }),
50669
vendor: 786 bytes, lines 50670-50702
50670/***/ "../../node_modules/webpack/buildin/module.js":
50671/*!***********************************!*\
50672  !*** (webpack)/buildin/module.js ***!
50673  \***********************************/
50674/*! no static exports found */
50675/***/ (function(module, exports) {
50676
50677module.exports = function(module) {
50678	if (!module.webpackPolyfill) {
50679		module.deprecate = function() {};
50680		module.paths = [];
50681		// module.parent = undefined by default
50682		if (!module.children) module.children = [];
50683		Object.defineProperty(module, "loaded", {
50684			enumerable: true,
50685			get: function() {
50686				return module.l;
50687			}
50688		});
50689		Object.defineProperty(module, "id", {
50690			enumerable: true,
50691			get: function() {
50692				return module.i;
50693			}
50694		});
50695		module.webpackPolyfill = 1;
50696	}
50697	return module;
50698};
50699
50700
50701/***/ }),
50702
50703/***/ "./search-filter-results/formats/job-card.jsx":
50704/*!****************************************************!*\
50705  !*** ./search-filter-results/formats/job-card.jsx ***!
50706  \****************************************************/
50707/*! exports provided: default */
50708/***/ (function(module, __webpack_exports__, __webpack_require__) {
50709
50710"use strict";
50711__webpack_require__.r(__webpack_exports__);
50712/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "../../node_modules/react/index.js");
50713/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
50714/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! moment */ "../../node_modules/moment/moment.js");
50715/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_1__);
50716/* harmony import */ var _utility__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utility */ "./utility.js");
50717function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
50718
50719function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
50720
50721function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
50722
50723function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
50724
50725function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
50726
50727function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
50728
50729function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
50730
50731function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
50732
50733function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
50734
50735function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
50736
50737function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
50738
50739
50740
50741
50742/**
50743 * PostRow
50744 * Formatted output for search and filter experience
50745 * Used for post, news, magazine, spotlight
50746 */
50747
50748var PostRow = /*#__PURE__*/function (_React$Component) {
50749  _inherits(PostRow, _React$Component);
50750
50751  var _super = _createSuper(PostRow);
50752
50753  function PostRow() {
50754    _classCallCheck(this, PostRow);
50755
50756    return _super.apply(this, arguments);
50757  }
50758
50759  _createClass(PostRow, [{
50760    key: "render",
50761    value: function render() {
50762      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("li", {
50763        key: this.props.key,
50764        className: "post-row results-grid__item job-card",
50765        style: {
50766          transitionDelay: this.props.index * 0.025 + 's'
50767        }
50768      }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("a", {
50769        "aria-labelledby": this.props.ID + '_header',
50770        href: this.props.permalink,
50771        className: "results-grid__item-link"
50772      }), this._getCategory(), this._getContent(), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
50773        className: "post-row__image"
50774      }, this._getImage()));
50775    }
50776  }, {
50777    key: "_getCategory",
50778    value: function _getCategory() {
50779      // news does not show a category label
50780      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
50781        className: "post-row__category"
50782      }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
50783        className: "supercap"
50784      }, this._getCategoryLabel()));
50785    }
50786    /**
50787     * Show a category label
50788     * @returns {*}
50789     * @private
50790     */
50791
50792  }, {
50793    key: "_getCategoryLabel",
50794    value: function _getCategoryLabel() {
50795      return this.props.terms['position-type'] ? this.props.terms['position-type'][0].name : 'JOB';
50796    }
50797  }, {
50798    key: "_getContent",
50799    value: function _getContent() {
50800      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
50801        className: "post-row__content"
50802      }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("h2", {
50803        id: this.props.ID + '_header',
50804        className: "post-row__title"
50805      }, this.props.post_title), this._getExcerpt(), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
50806        className: "post-row__byline supercap"
50807      }, this._getMetadata()));
50808    }
50809  }, {
50810    key: "_getMetadata",
50811    value: function _getMetadata() {
50812      return this.props.terms['job-area'] ? this.props.terms['job-area'][0].name : '';
50813    }
50814  }, {
50815    key: "_getImage",
50816    value: function _getImage() {
50817      if (this.props.featured_image_url) {
50818        return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("img", {
50819          src: this.props.featured_image_url,
50820          alt: this.props.featured_image_alt
50821        });
50822      }
50823    }
50824  }, {
50825    key: "_getExcerpt",
50826    value: function _getExcerpt() {
50827      if (this.props.post_excerpt) {
50828        return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("p", {
50829          className: "result-card__description"
50830        }, Object(_utility__WEBPACK_IMPORTED_MODULE_2__["decodeString"])(this.props.post_excerpt));
50831      }
50832    }
50833  }]);
50834
50835  return PostRow;
50836}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component);
50837
50838/* harmony default export */ __webpack_exports__["default"] = (PostRow);
50839
50840/***/ }),
50841
50842/***/ "./search-filter-results/formats/person-card.jsx":
50843/*!*******************************************************!*\
50844  !*** ./search-filter-results/formats/person-card.jsx ***!
50845  \*******************************************************/
50846/*! exports provided: default */
50847/***/ (function(module, __webpack_exports__, __webpack_require__) {
50848
50849"use strict";
50850__webpack_require__.r(__webpack_exports__);
50851/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "../../node_modules/react/index.js");
50852/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
50853function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
50854
50855function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
50856
50857function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
50858
50859function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
50860
50861function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
50862
50863function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
50864
50865function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
50866
50867function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
50868
50869function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
50870
50871function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
50872
50873function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
50874
50875
50876/**
50877 * The person card is used for the people post type
50878 * Searching a directory - faculty/ staff
50879 */
50880
50881var PersonCard = /*#__PURE__*/function (_React$Component) {
50882  _inherits(PersonCard, _React$Component);
50883
50884  var _super = _createSuper(PersonCard);
50885
50886  function PersonCard(props) {
50887    var _this;
50888
50889    _classCallCheck(this, PersonCard);
50890
50891    _this = _super.call(this, props);
50892    _this.inputRef = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createRef();
50893    return _this;
50894  }
50895
50896  _createClass(PersonCard, [{
50897    key: "componentDidUpdate",
50898    value: function componentDidUpdate(prevProps, prevState, snapshot) {
50899      /*if (this.props.index === 0) {
50900        this.inputRef.current.focus();
50901      }*/
50902    }
50903  }, {
50904    key: "render",
50905    value: function render() {
50906      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("li", {
50907        className: "results-grid__item person-card",
50908        style: {
50909          transitionDelay: this.props.index * 0.025 + 's'
50910        }
50911      }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("a", {
50912        ref: this.inputRef,
50913        href: this.props.permalink,
50914        className: "person-card__link",
50915        "aria-labelledby": this.props.ID + '_header'
50916      }), this._getProfileImage(), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
50917        className: "person-card__content"
50918      }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
50919        className: "person-card__department supercap"
50920      }, this.props.terms.department ? this.props.terms.department[0].name : 'Department'), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
50921        className: "person-card__name h4",
50922        id: this.props.ID + '_header'
50923      }, this.props.post_title), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
50924        className: "person-card__title"
50925      }, this.props.people_meta.title), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
50926        className: "person-card__contact"
50927      }, this._getEmail(), this._getPhone()), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
50928        className: "cta-link supercap"
50929      }, "See More")));
50930    }
50931  }, {
50932    key: "_getEmail",
50933    value: function _getEmail() {
50934      if (this.props.people_meta.email) {
50935        return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("p", {
50936          className: "person-card__email"
50937        }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
50938          className: "screen-reader-text"
50939        }, "Email: "), this.props.people_meta.email);
50940      }
50941    }
50942  }, {
50943    key: "_getPhone",
50944    value: function _getPhone() {
50945      if (this.props.people_meta.phone) {
50946        return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("p", {
50947          className: "person-card__phone"
50948        }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
50949          className: "screen-reader-text"
50950        }, "Phone: "), this.props.people_meta.phone);
50951      }
50952    }
50953  }, {
50954    key: "_getProfileImage",
50955    value: function _getProfileImage() {
50956      if (this.props.featured_image_url) {
50957        return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
50958          className: "person-card__image-container"
50959        }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("img", {
50960          className: "person-card__image",
50961          src: this.props.featured_image_url,
50962          alt: this.props.featured_image_alt
50963        }));
50964      }
50965    }
50966  }]);
50967
50968  return PersonCard;
50969}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component);
50970
50971/* harmony default export */ __webpack_exports__["default"] = (PersonCard);
50972
50973/***/ }),
50974
50975/***/ "./search-filter-results/formats/post-card.jsx":
50976/*!*****************************************************!*\
50977  !*** ./search-filter-results/formats/post-card.jsx ***!
50978  \*****************************************************/
50979/*! exports provided: default */
50980/***/ (function(module, __webpack_exports__, __webpack_require__) {
50981
50982"use strict";
50983__webpack_require__.r(__webpack_exports__);
50984/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "../../node_modules/react/index.js");
50985/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
50986/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! moment */ "../../node_modules/moment/moment.js");
50987/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_1__);
50988function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
50989
50990function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
50991
50992function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
50993
50994function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
50995
50996function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
50997
50998function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
50999
51000function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
51001
51002function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
51003
51004function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
51005
51006function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
51007
51008function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
51009
51010
51011
51012/**
51013 * PostCard
51014 * Handles Outputs for the programs and radio post types in search
51015 */
51016
51017var PostCard = /*#__PURE__*/function (_React$Component) {
51018  _inherits(PostCard, _React$Component);
51019
51020  var _super = _createSuper(PostCard);
51021
51022  function PostCard(props) {
51023    var _this;
51024
51025    _classCallCheck(this, PostCard);
51026
51027    _this = _super.call(this, props);
51028    _this.inputRef = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createRef();
51029    return _this;
51030  }
51031
51032  _createClass(PostCard, [{
51033    key: "componentDidUpdate",
51034    value: function componentDidUpdate(prevProps, prevState, snapshot) {
51035      /*if (this.props.index === 0) {
51036        this.inputRef.current.focus();
51037      }*/
51038    }
51039  }, {
51040    key: "render",
51041    value: function render() {
51042      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("li", {
51043        key: this.props.key,
51044        className: "post-card results-grid__item post-card--" + this.props.post_type,
51045        style: {
51046          transitionDelay: this.props.index * 0.025 + 's'
51047        }
51048      }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("a", {
51049        ref: this.inputRef,
51050        href: this.props.permalink,
51051        "aria-labelledby": this.props.ID + '_header',
51052        className: "results-grid__item-link"
51053      }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
51054        className: "post-card__category supercap"
51055      }, this._getCategory()), this._getTitle(), this._getSubLabel());
51056    }
51057  }, {
51058    key: "_getCategory",
51059    value: function _getCategory() {
51060      switch (this.props.post_type) {
51061        case 'program':
51062          return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", null, this.props.terms['program-type'] ? this.props.terms['program-type'][0].name : 'Program');
51063
51064        case 'radio':
51065          return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", null, this.props.terms['radio-category'] ? this.props.terms['radio-category'][0].name : 'Show');
51066
51067        default:
51068          return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", null, "Category Label");
51069      }
51070    }
51071  }, {
51072    key: "_getTitle",
51073    value: function _getTitle() {
51074      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
51075        id: this.props.ID + '_header',
51076        className: "post-card__title post-card__title--h2 post-card__title--" + this.props.post_type
51077      }, this.props.post_title);
51078    } // depends on post type what this outputs
51079
51080  }, {
51081    key: "_getSubLabel",
51082    value: function _getSubLabel() {
51083      switch (this.props.post_type) {
51084        // program shows the degree Types
51085        case 'program':
51086          return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
51087            className: "post-card__sub-label"
51088          }, this._getDegreeTypes());
51089
51090        case 'radio':
51091          return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
51092            className: "post-card__sub-label supercap"
51093          }, moment__WEBPACK_IMPORTED_MODULE_1___default()(this.props.post_date).format('MMMM D, Y'));
51094
51095        default:
51096          return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
51097            className: "post-card__sub-label"
51098          }, "Sub Label");
51099      }
51100    }
51101    /**
51102     * Get degree types for programs
51103     */
51104
51105  }, {
51106    key: "_getDegreeTypes",
51107    value: function _getDegreeTypes() {
51108      if (this.props.terms['degree-type']) {
51109        var degreeTypeNames = this.props.terms['degree-type'].map(function (term) {
51110          return term.name;
51111        });
51112        return degreeTypeNames.join(', ');
51113      }
51114    }
51115  }]);
51116
51117  return PostCard;
51118}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component);
51119
51120/* harmony default export */ __webpack_exports__["default"] = (PostCard);
51121
51122/***/ }),
51123
51124/***/ "./search-filter-results/formats/post-list-card.jsx":
51125/*!**********************************************************!*\
51126  !*** ./search-filter-results/formats/post-list-card.jsx ***!
51127  \**********************************************************/
51128/*! exports provided: default */
51129/***/ (function(module, __webpack_exports__, __webpack_require__) {
51130
51131"use strict";
51132__webpack_require__.r(__webpack_exports__);
51133/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "../../node_modules/react/index.js");
51134/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
51135/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! moment */ "../../node_modules/moment/moment.js");
51136/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_1__);
51137function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
51138
51139function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
51140
51141function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
51142
51143function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
51144
51145function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
51146
51147function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
51148
51149function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
51150
51151function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
51152
51153function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
51154
51155function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
51156
51157function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
51158
51159
51160
51161/**
51162 * PostCard
51163 * Handles Outputs for the programs and radio post types in search
51164 */
51165
51166var PostListCard = /*#__PURE__*/function (_React$Component) {
51167  _inherits(PostListCard, _React$Component);
51168
51169  var _super = _createSuper(PostListCard);
51170
51171  function PostListCard(props) {
51172    var _this;
51173
51174    _classCallCheck(this, PostListCard);
51175
51176    _this = _super.call(this, props);
51177    _this.inputRef = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createRef();
51178    return _this;
51179  }
51180
51181  _createClass(PostListCard, [{
51182    key: "componentDidUpdate",
51183    value: function componentDidUpdate(prevProps, prevState, snapshot) {
51184      /*if (this.props.index === 0) {
51185        this.inputRef.current.focus();
51186      }*/
51187    }
51188  }, {
51189    key: "render",
51190    value: function render() {
51191      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("li", {
51192        key: this.props.key,
51193        className: "post-card results-grid__item post-card--" + this.props.post_type,
51194        style: {
51195          transitionDelay: this.props.index * 0.025 + 's'
51196        }
51197      }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("a", {
51198        ref: this.inputRef,
51199        href: this.props.permalink,
51200        "aria-labelledby": this.props.ID + '_header',
51201        className: "results-grid__item-link"
51202      }), this._getTitle(), this._getSubLabel());
51203    }
51204  }, {
51205    key: "_getCategory",
51206    value: function _getCategory() {
51207      switch (this.props.post_type) {
51208        case 'program':
51209          return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", null, this.props.terms['program-type'] ? this.props.terms['program-type'][0].name : 'Program');
51210
51211        case 'radio':
51212          return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", null, this.props.terms['radio-category'] ? this.props.terms['radio-category'][0].name : 'Show');
51213
51214        default:
51215          return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", null, "Category Label");
51216      }
51217    }
51218  }, {
51219    key: "_getTitle",
51220    value: function _getTitle() {
51221      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
51222        id: this.props.ID + '_header',
51223        className: "post-card__title post-card__title--h2 post-card__title--" + this.props.post_type
51224      }, this.props.post_title);
51225    } // depends on post type what this outputs
51226
51227  }, {
51228    key: "_getSubLabel",
51229    value: function _getSubLabel() {
51230      switch (this.props.post_type) {
51231        // program shows the degree Types
51232        case 'program':
51233          return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
51234            className: "post-card__sub-label"
51235          }, this._getDegreeTypes());
51236
51237        case 'radio':
51238          return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
51239            className: "post-card__sub-label supercap"
51240          }, moment__WEBPACK_IMPORTED_MODULE_1___default()(this.props.post_date).format('MMMM D, Y'));
51241
51242        default:
51243          return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
51244            className: "post-card__sub-label"
51245          }, "Sub Label");
51246      }
51247    }
51248    /**
51249     * Get degree types for programs
51250     */
51251
51252  }, {
51253    key: "_getDegreeTypes",
51254    value: function _getDegreeTypes() {
51255      if (this.props.terms['degree-type']) {
51256        var degreeTypeNames = this.props.terms['degree-type'].map(function (term) {
51257          return term.name;
51258        });
51259        return degreeTypeNames.join(', ');
51260      }
51261    }
51262  }]);
51263
51264  return PostListCard;
51265}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component);
51266
51267/* harmony default export */ __webpack_exports__["default"] = (PostListCard);
51268
51269/***/ }),
51270
51271/***/ "./search-filter-results/formats/post-row.jsx":
51272/*!****************************************************!*\
51273  !*** ./search-filter-results/formats/post-row.jsx ***!
51274  \****************************************************/
51275/*! exports provided: default */
51276/***/ (function(module, __webpack_exports__, __webpack_require__) {
51277
51278"use strict";
51279__webpack_require__.r(__webpack_exports__);
51280/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "../../node_modules/react/index.js");
51281/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
51282/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! moment */ "../../node_modules/moment/moment.js");
51283/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_1__);
51284/* harmony import */ var _utility__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utility */ "./utility.js");
51285function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
51286
51287function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
51288
51289function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
51290
51291function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
51292
51293function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
51294
51295function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
51296
51297function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
51298
51299function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
51300
51301function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
51302
51303function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
51304
51305function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
51306
51307
51308
51309
51310/**
51311 * PostRow
51312 * Formatted output for search and filter experience
51313 * Used for post, news, magazine, spotlight
51314 */
51315
51316var PostRow = /*#__PURE__*/function (_React$Component) {
51317  _inherits(PostRow, _React$Component);
51318
51319  var _super = _createSuper(PostRow);
51320
51321  function PostRow() {
51322    _classCallCheck(this, PostRow);
51323
51324    return _super.apply(this, arguments);
51325  }
51326
51327  _createClass(PostRow, [{
51328    key: "render",
51329    value: function render() {
51330      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("li", {
51331        key: this.props.key,
51332        className: "post-row results-grid__item",
51333        style: {
51334          transitionDelay: this.props.index * 0.025 + 's'
51335        }
51336      }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("a", {
51337        "aria-labelledby": this.props.ID + '_header',
51338        href: this.props.permalink,
51339        className: "results-grid__item-link"
51340      }), this._getCategory(), this._getContent(), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
51341        className: "post-row__image"
51342      }, this._getImage()));
51343    }
51344  }, {
51345    key: "_getCategory",
51346    value: function _getCategory() {
51347      // news does not show a category label
51348      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
51349        className: "post-row__category"
51350      }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
51351        className: "supercap"
51352      }, this._getCategoryLabel()));
51353    }
51354    /**
51355     * Show a category label
51356     * @returns {*}
51357     * @private
51358     */
51359
51360  }, {
51361    key: "_getCategoryLabel",
51362    value: function _getCategoryLabel() {
51363      switch (this.props.post_type) {
51364        case 'spotlight':
51365          return this.props.terms['spotlight-category'] ? this.props.terms['spotlight-category'][0].name : 'No Category';
51366
51367        case 'magazine':
51368          return this.props.terms['magazine-category'] ? this.props.terms['magazine-category'][0].name : 'No Category';
51369
51370        case 'club':
51371          return this.props.terms['club-category'] ? this.props.terms['club-category'][0].name : 'No Category';
51372
51373        case 'press-release':
51374          return this.props.terms['press-release-category'] ? this.props.terms['press-release-category'][0].name : 'No Category';
51375
51376        case 'news':
51377          return this.props.terms['news-category'] ? this.props.terms['news-category'][0].name : 'No Category';
51378
51379        default:
51380          return this.props.terms.category ? this.props.terms.category[0].name : this.props.post_type_name;
51381      }
51382    }
51383  }, {
51384    key: "_getContent",
51385    value: function _getContent() {
51386      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
51387        className: "post-row__content"
51388      }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("h2", {
51389        id: this.props.ID + '_header',
51390        className: "post-row__title"
51391      }, this.props.post_title), this._getExcerpt(), this._getByline());
51392    }
51393  }, {
51394    key: "_getByline",
51395    value: function _getByline() {
51396      if (this.props.post_type !== 'club') {
51397        return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
51398          className: "post-row__byline supercap"
51399        }, this.props.author_name ? this.props.author_name + ' | ' : '', moment__WEBPACK_IMPORTED_MODULE_1___default()(this.props.post_date).format('MMMM D, Y'));
51400      }
51401    }
51402  }, {
51403    key: "_getImage",
51404    value: function _getImage() {
51405      if (this.props.featured_image_url) {
51406        return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("img", {
51407          src: this.props.featured_image_url,
51408          alt: this.props.featured_image_alt
51409        });
51410      }
51411    }
51412  }, {
51413    key: "_getExcerpt",
51414    value: function _getExcerpt() {
51415      if (this.props.post_excerpt) {
51416        return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("p", {
51417          className: "result-card__description"
51418        }, Object(_utility__WEBPACK_IMPORTED_MODULE_2__["decodeString"])(this.props.post_excerpt));
51419      }
51420    }
51421  }]);
51422
51423  return PostRow;
51424}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component);
51425
51426/* harmony default export */ __webpack_exports__["default"] = (PostRow);
51427
51428/***/ }),
51429
51430/***/ "./search-filter.jsx":
51431/*!***************************!*\
51432  !*** ./search-filter.jsx ***!
51433  \***************************/
51434/*! no exports provided */
51435/***/ (function(module, __webpack_exports__, __webpack_require__) {
51436
51437"use strict";
51438__webpack_require__.r(__webpack_exports__);
51439/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "../../node_modules/react/index.js");
51440/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
51441/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom */ "../../node_modules/react-dom/index.js");
51442/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_1__);
51443/* harmony import */ var smoothscroll_polyfill__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! smoothscroll-polyfill */ "../../node_modules/smoothscroll-polyfill/dist/smoothscroll.js");
51444/* harmony import */ var smoothscroll_polyfill__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(smoothscroll_polyfill__WEBPACK_IMPORTED_MODULE_2__);
51445/* harmony import */ var _search_filter_results_formats_post_row__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./search-filter-results/formats/post-row */ "./search-filter-results/formats/post-row.jsx");
51446/* harmony import */ var _search_filter_results_formats_post_card__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./search-filter-results/formats/post-card */ "./search-filter-results/formats/post-card.jsx");
51447/* harmony import */ var _search_filter_results_formats_person_card__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./search-filter-results/formats/person-card */ "./search-filter-results/formats/person-card.jsx");
51448/* harmony import */ var _search_filter_results_formats_post_list_card__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./search-filter-results/formats/post-list-card */ "./search-filter-results/formats/post-list-card.jsx");
51449/* harmony import */ var _search_filter_results_formats_job_card__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./search-filter-results/formats/job-card */ "./search-filter-results/formats/job-card.jsx");
51450
51451
51452
51453
51454
51455
51456
51457
51458window.registerSearchFilterFomat('post-row', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_search_filter_results_formats_post_row__WEBPACK_IMPORTED_MODULE_3__["default"], null));
51459window.registerSearchFilterFomat('post-card', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_search_filter_results_formats_post_card__WEBPACK_IMPORTED_MODULE_4__["default"], null));
51460window.registerSearchFilterFomat('person-card', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_search_filter_results_formats_person_card__WEBPACK_IMPORTED_MODULE_5__["default"], null));
51461window.registerSearchFilterFomat('post-list-card', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_search_filter_results_formats_post_list_card__WEBPACK_IMPORTED_MODULE_6__["default"], null));
51462window.registerSearchFilterFomat('job-card', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_search_filter_results_formats_job_card__WEBPACK_IMPORTED_MODULE_7__["default"], null));
51463
51464/***/ }),
51465
51466/***/ "./utility.js":
51467/*!********************!*\
51468  !*** ./utility.js ***!
51469  \********************/
51470/*! exports provided: setSearchHeaderHeight, handleAnchorHashJump, decodeString, decimalToUnicode, htmlEntityToUnicode */
51471/***/ (function(module, __webpack_exports__, __webpack_require__) {
51472
51473"use strict";
51474__webpack_require__.r(__webpack_exports__);
51475/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setSearchHeaderHeight", function() { return setSearchHeaderHeight; });
51476/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "handleAnchorHashJump", function() { return handleAnchorHashJump; });
51477/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "decodeString", function() { return decodeString; });
51478/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "decimalToUnicode", function() { return decimalToUnicode; });
51479/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "htmlEntityToUnicode", function() { return htmlEntityToUnicode; });
51480/* harmony import */ var _upup_baseline_js_src_utility__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../upup-baseline/js/src/utility */ "../../../upup-baseline/js/src/utility.js");
51481
51482function setSearchHeaderHeight() {
51483  var siteSearch = document.getElementById('site-search'),
51484      searchHeader = siteSearch.querySelector('.site-search__header'),
51485      searchHeaderHeight = searchHeader.offsetHeight;
51486  document.documentElement.style.setProperty('--searchHeaderHeight', searchHeaderHeight + 'px');
51487}
51488/**
51489 * Handles anchor jumping behavior
51490 * This is to handle offset for the fixed header
51491 */
51492
51493function handleAnchorHashJump(path) {
51494  // grab the hash
51495  // get the ID - look for this element on the page
51496  var link = document.createElement('a'),
51497      headerBottom = parseInt(document.documentElement.style.getPropertyValue('--headerBottom')),
51498      elem = null,
51499      offset = null;
51500  link.href = path;
51501
51502  if (link.hash) {
51503    elem = document.getElementById(link.hash.replace('#', ''));
51504
51505    if (elem) {
51506      offset = Object(_upup_baseline_js_src_utility__WEBPACK_IMPORTED_MODULE_0__["getElOffset"])(elem); // timing hiccup allows this to be applied after initial load/ behavior
51507
51508      setTimeout(function () {
51509        window.scrollTo({
51510          top: offset.top - (headerBottom ? headerBottom : 100) - 32,
51511          // offset for the header
51512          left: offset.left
51513        });
51514      }, 1);
51515    }
51516  }
51517}
51518function decodeString(incomingString) {
51519  return htmlEntityToUnicode(decimalToUnicode(incomingString));
51520}
51521/**
51522 * Map decimal values to char codes and output string using the char code
51523 * Since decimal format uses char code natively, this will catch/ convert all decimal codes
51524 * React will escape this output before render
51525 * @param incomingString
51526 * @returns {*}
51527 */
51528
51529function decimalToUnicode(incomingString) {
51530  return incomingString.replace(/&#(\w+);/gi, function (a, b) {
51531    var charCode = parseInt(b);
51532    return String.fromCharCode(charCode);
51533  });
51534}
51535/**
51536 * Convert select html entities in strings to corresponding unicode characters.
51537 * The contained map can be expanded as additional characters are identified.
51538 * React will escape this output before render
51539 * @param incomingString
51540 * @returns {*}
51541 */
51542
51543function htmlEntityToUnicode(incomingString) {
51544  var map = {
51545    'amp': 38,
51546    'nbsp': 160,
51547    'rsquo': 8217,
51548    'lsquo': 8216
51549  };
51550  return incomingString.replace(/&(\w+);/gi, function (a, b) {
51551    if (map[b]) {
51552      return String.fromCharCode(map[b]);
51553    } // no mapped value, return the original
51554
51555
51556    return a;
51557  });
51558}
51559
51560/***/ })
51560,
51561
51562/***/ 1:
51563/*!*****************************!*\
51564  !*** multi ./search-filter ***!
51565  \*****************************/
51566/*! no static exports found */
51567/***/ (function(module, exports, __webpack_require__) {
51568
51569module.exports = __webpack_require__(/*! ./search-filter */"./search-filter.jsx");
51570
51571
51572/***/ })
51573
51574/******/ });

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.