PageSourceSearch

https://certification.byblack.us/landing-page/js/byblack.js

js byblack.us collected 2026-09-24 12:07:11 UTC 670,920 bytes, 21,154 lines download raw bytes

vendor: 4,813 bytes, lines 1-153
1/*!
2 * Webflow: Front-end site library
3 * @license MIT
4 * Inline scripts may access the api using an async handler:
5 *   var Webflow = Webflow || [];
6 *   Webflow.push(readyFunction);
7 */
8/******/ (function(modules) { // webpackBootstrap
9/******/ 	// The module cache
10/******/ 	var installedModules = {};
11/******/
12/******/ 	// The require function
13/******/ 	function __webpack_require__(moduleId) {
14/******/
15/******/ 		// Check if module is in cache
16/******/ 		if(installedModules[moduleId]) {
17/******/ 			return installedModules[moduleId].exports;
18/******/ 		}
19/******/ 		// Create a new module (and put it into the cache)
20/******/ 		var module = installedModules[moduleId] = {
21/******/ 			i: moduleId,
22/******/ 			l: false,
23/******/ 			exports: {}
24/******/ 		};
25/******/
26/******/ 		// Execute the module function
27/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
28/******/
29/******/ 		// Flag the module as loaded
30/******/ 		module.l = true;
31/******/
32/******/ 		// Return the exports of the module
33/******/ 		return module.exports;
34/******/ 	}
35/******/
36/******/
37/******/ 	// expose the modules object (__webpack_modules__)
38/******/ 	__webpack_require__.m = modules;
39/******/
40/******/ 	// expose the module cache
41/******/ 	__webpack_require__.c = installedModules;
42/******/
43/******/ 	// define getter function for harmony exports
44/******/ 	__webpack_require__.d = function(exports, name, getter) {
45/******/ 		if(!__webpack_require__.o(exports, name)) {
46/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
47/******/ 		}
48/******/ 	};
49/******/
50/******/ 	// define __esModule on exports
51/******/ 	__webpack_require__.r = function(exports) {
52/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
53/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
54/******/ 		}
55/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
56/******/ 	};
57/******/
58/******/ 	// create a fake namespace object
59/******/ 	// mode & 1: value is a module id, require it
60/******/ 	// mode & 2: merge all properties of value into the ns
61/******/ 	// mode & 4: return value when already ns object
62/******/ 	// mode & 8|1: behave like require
63/******/ 	__webpack_require__.t = function(value, mode) {
64/******/ 		if(mode & 1) value = __webpack_require__(value);
65/******/ 		if(mode & 8) return value;
66/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
67/******/ 		var ns = Object.create(null);
68/******/ 		__webpack_require__.r(ns);
69/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
70/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
71/******/ 		return ns;
72/******/ 	};
73/******/
74/******/ 	// getDefaultExport function for compatibility with non-harmony modules
75/******/ 	__webpack_require__.n = function(module) {
76/******/ 		var getter = module && module.__esModule ?
77/******/ 			function getDefault() { return module['default']; } :
78/******/ 			function getModuleExports() { return module; };
79/******/ 		__webpack_require__.d(getter, 'a', getter);
80/******/ 		return getter;
81/******/ 	};
82/******/
83/******/ 	// Object.prototype.hasOwnProperty.call
84/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
85/******/
86/******/ 	// __webpack_public_path__
87/******/ 	__webpack_require__.p = "";
88/******/
89/******/
90/******/ 	// Load entry module and return exports
91/******/ 	return __webpack_require__(__webpack_require__.s = 120);
92/******/ })
93/************************************************************************/
94/******/ ([
95/* 0 */
96/***/ (function(module, exports) {
97
98function _interopRequireDefault(obj) {
99  return obj && obj.__esModule ? obj : {
100    "default": obj
101  };
102}
103
104module.exports = _interopRequireDefault;
105
106/***/ }),
107/* 1 */
108/***/ (function(module, exports) {
109
110/**
111 * Checks if `value` is classified as an `Array` object.
112 *
113 * @static
114 * @memberOf _
115 * @since 0.1.0
116 * @category Lang
117 * @param {*} value The value to check.
118 * @returns {boolean} Returns `true` if `value` is an array, else `false`.
119 * @example
120 *
121 * _.isArray([1, 2, 3]);
122 * // => true
123 *
124 * _.isArray(document.body.children);
125 * // => false
126 *
127 * _.isArray('abc');
128 * // => false
129 *
130 * _.isArray(_.noop);
131 * // => false
132 */
133var isArray = Array.isArray;
134
135module.exports = isArray;
136
137
138/***/ }),
139/* 2 */
140/***/ (function(module, exports, __webpack_require__) {
141
142"use strict";
143
144
145var _interopRequireWildcard = __webpack_require__(13);
146
147Object.defineProperty(exports, "__esModule", {
148  value: true
149});
150var _exportNames = {
151  IX2EngineActionTypes: true,
152  IX2EngineConstants: true
153};
154exports.IX2EngineConstants = exports.IX2EngineActionTypes = void 0;
155
156var _triggerEvents = __webpack_require__(169);
157
158Object.keys(_triggerEvents).forEach(function (key) {
159  if (key === "default" || key === "__esModule") return;
160  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
161  Object.defineProperty(exports, key, {
162    enumerable: true,
163    get: function get() {
164      return _triggerEvents[key];
165    }
166  });
167});
168
169var _animationActions = __webpack_require__(170);
170
171Object.keys(_animationActions).forEach(function (key) {
172  if (key === "default" || key === "__esModule") return;
173  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
174  Object.defineProperty(exports, key, {
175    enumerable: true,
176    get: function get() {
177      return _animationActions[key];
178    }
179  });
180});
181
182var _triggerInteractions = __webpack_require__(171);
183
184Object.keys(_triggerInteractions).forEach(function (key) {
185  if (key === "default" || key === "__esModule") return;
186  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
187  Object.defineProperty(exports, key, {
188    enumerable: true,
189    get: function get() {
190      return _triggerInteractions[key];
191    }
192  });
193});
194
195var IX2EngineActionTypes = _interopRequireWildcard(__webpack_require__(172));
196
197exports.IX2EngineActionTypes = IX2EngineActionTypes;
198
199var IX2EngineConstants = _interopRequireWildcard(__webpack_require__(173));
200
201exports.IX2EngineConstants = IX2EngineConstants;
202
203/***/ }),
204/* 3 */
205/***/ (function(module, exports, __webpack_require__) {
206
207"use strict";
208 // @wf-will-never-add-flow-to-this-file
209
210/* globals window, document, navigator, WEBFLOW_ENV_TEST */
211
212/* eslint-disable no-var */
213
214/**
215 * Webflow: Core site library
216 */
217
218var Webflow = {};
219var modules = {};
220var primary = [];
221var secondary = window.Webflow || [];
222var $ = window.jQuery;
223var $win = $(window);
224var $doc = $(document);
225var isFunction = $.isFunction;
226
227var _ = Webflow._ = __webpack_require__(122);
228
229var tram = Webflow.tram = __webpack_require__(65) && $.tram;
230var domready = false;
231var destroyed = false;
232tram.config.hideBackface = false;
233tram.config.keepInherited = true;
234/**
235 * Webflow.define - Define a named module
236 * @param  {string} name
237 * @param  {function} factory
238 * @param  {object} options
239 * @return {object}
240 */
241
242Webflow.define = function (name, factory, options) {
243  if (modules[name]) {
244    unbindModule(modules[name]);
245  }
246
247  var instance = modules[name] = factory($, _, options) || {};
248  bindModule(instance);
249  return instance;
250};
251/**
252 * Webflow.require - Require a named module
253 * @param  {string} name
254 * @return {object}
255 */
256
257
258Webflow.require = function (name) {
259  return modules[name];
260};
261
262function bindModule(module) {
263  // If running in Webflow app, subscribe to design/preview events
264  if (Webflow.env()) {
265    isFunction(module.design) && $win.on('__wf_design', module.design);
266    isFunction(module.preview) && $win.on('__wf_preview', module.preview);
267  } // Subscribe to front-end destroy event
268
269
270  isFunction(module.destroy) && $win.on('__wf_destroy', module.destroy); // Look for ready method on module
271
272  if (module.ready && isFunction(module.ready)) {
273    addReady(module);
274  }
275}
276
277function addReady(module) {
278  // If domready has already happened, run ready method
279  if (domready) {
280    module.ready();
281    return;
282  } // Otherwise add ready method to the primary queue (only once)
283
284
285  if (_.contains(primary, module.ready)) {
286    return;
287  }
288
289  primary.push(module.ready);
290}
291
292function unbindModule(module) {
293  // Unsubscribe module from window events
294  isFunction(module.design) && $win.off('__wf_design', module.design);
295  isFunction(module.preview) && $win.off('__wf_preview', module.preview);
296  isFunction(module.destroy) && $win.off('__wf_destroy', module.destroy); // Remove ready method from primary queue
297
298  if (module.ready && isFunction(module.ready)) {
299    removeReady(module);
300  }
301}
302
303function removeReady(module) {
304  primary = _.filter(primary, function (readyFn) {
305    return readyFn !== module.ready;
306  });
307}
308/**
309 * Webflow.push - Add a ready handler into secondary queue
310 * @param {function} ready  Callback to invoke on domready
311 */
312
313
314Webflow.push = function (ready) {
315  // If domready has already happened, invoke handler
316  if (domready) {
317    isFunction(ready) && ready();
318    return;
319  } // Otherwise push into secondary queue
320
321
322  secondary.push(ready);
323};
324/**
325 * Webflow.env - Get the state of the Webflow app
326 * @param {string} mode [optional]
327 * @return {boolean}
328 */
329
330
331Webflow.env = function (mode) {
332  var designFlag = window.__wf_design;
333  var inApp = typeof designFlag !== 'undefined';
334
335  if (!mode) {
336    return inApp;
337  }
338
339  if (mode === 'design') {
340    return inApp && designFlag;
341  }
342
343  if (mode === 'preview') {
344    return inApp && !designFlag;
345  }
346
347  if (mode === 'slug') {
348    return inApp && window.__wf_slug;
349  }
350
351  if (mode === 'editor') {
352    return window.WebflowEditor;
353  }
354
355  if (mode === 'test') {
356    return  false || window.__wf_test;
357  }
358
359  if (mode === 'frame') {
360    return window !== window.top;
361  }
362}; // Feature detects + browser sniffs  ಠ_ಠ
363
364
365var userAgent = navigator.userAgent.toLowerCase();
366var touch = Webflow.env.touch = 'ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch;
367var chrome = Webflow.env.chrome = /chrome/.test(userAgent) && /Google/.test(navigator.vendor) && parseInt(userAgent.match(/chrome\/(\d+)\./)[1], 10);
368var ios = Webflow.env.ios = /(ipod|iphone|ipad)/.test(userAgent);
369Webflow.env.safari = /safari/.test(userAgent) && !chrome && !ios; // Maintain current touch target to prevent late clicks on touch devices
370
371var touchTarget; // Listen for both events to support touch/mouse hybrid devices
372
373touch && $doc.on('touchstart mousedown', function (evt) {
374  touchTarget = evt.target;
375});
376/**
377 * Webflow.validClick - validate click target against current touch target
378 * @param  {HTMLElement} clickTarget  Element being clicked
379 * @return {Boolean}  True if click target is valid (always true on non-touch)
380 */
381
382Webflow.validClick = touch ? function (clickTarget) {
383  return clickTarget === touchTarget || $.contains(clickTarget, touchTarget);
384} : function () {
385  return true;
386};
387/**
388 * Webflow.resize, Webflow.scroll - throttled event proxies
389 */
390
391var resizeEvents = 'resize.webflow orientationchange.webflow load.webflow';
392var scrollEvents = 'scroll.webflow ' + resizeEvents;
393Webflow.resize = eventProxy($win, resizeEvents);
394Webflow.scroll = eventProxy($win, scrollEvents);
395Webflow.redraw = eventProxy(); // Create a proxy instance for throttled events
396
397function eventProxy(target, types) {
398  // Set up throttled method (using custom frame-based _.throttle)
399  var handlers = [];
400  var proxy = {};
401  proxy.up = _.throttle(function (evt) {
402    _.each(handlers, function (h) {
403      h(evt);
404    });
405  }); // Bind events to target
406
407  if (target && types) {
408    target.on(types, proxy.up);
409  }
410  /**
411   * Add an event handler
412   * @param  {function} handler
413   */
414
415
416  proxy.on = function (handler) {
417    if (typeof handler !== 'function') {
418      return;
419    }
420
421    if (_.contains(handlers, handler)) {
422      return;
423    }
424
425    handlers.push(handler);
426  };
427  /**
428   * Remove an event handler
429   * @param  {function} handler
430   */
431
432
433  proxy.off = function (handler) {
434    // If no arguments supplied, clear all handlers
435    if (!arguments.length) {
436      handlers = [];
437      return;
438    } // Otherwise, remove handler from the list
439
440
441    handlers = _.filter(handlers, function (h) {
442      return h !== handler;
443    });
444  };
445
446  return proxy;
447} // Webflow.location - Wrap window.location in api
448
449
450Webflow.location = function (url) {
451  window.location = url;
452};
453
454if (Webflow.env()) {
455  // Ignore redirects inside a Webflow design/edit environment
456  Webflow.location = function () {};
457} // Webflow.ready - Call primary and secondary handlers
458
459
460Webflow.ready = function () {
461  domready = true; // Restore modules after destroy
462
463  if (destroyed) {
464    restoreModules(); // Otherwise run primary ready methods
465  } else {
466    _.each(primary, callReady);
467  } // Run secondary ready methods
468
469
470  _.each(secondary, callReady); // Trigger resize
471
472
473  Webflow.resize.up();
474};
475
476function callReady(readyFn) {
477  isFunction(readyFn) && readyFn();
478}
479
480function restoreModules() {
481  destroyed = false;
482
483  _.each(modules, bindModule);
484}
485/**
486 * Webflow.load - Add a window load handler that will run even if load event has already happened
487 * @param  {function} handler
488 */
489
490
491var deferLoad;
492
493Webflow.load = function (handler) {
494  deferLoad.then(handler);
495};
496
497function bindLoad() {
498  // Reject any previous deferred (to support destroy)
499  if (deferLoad) {
500    deferLoad.reject();
501    $win.off('load', deferLoad.resolve);
502  } // Create deferred and bind window load event
503
504
505  deferLoad = new $.Deferred();
506  $win.on('load', deferLoad.resolve);
507} // Webflow.destroy - Trigger a destroy event for all modules
508
509
510Webflow.destroy = function (options) {
511  options = options || {};
512  destroyed = true;
513  $win.triggerHandler('__wf_destroy'); // Allow domready reset for tests
514
515  if (options.domready != null) {
516    domready = options.domready;
517  } // Unbind modules
518
519
520  _.each(modules, unbindModule); // Clear any proxy event handlers
521
522
523  Webflow.resize.off();
524  Webflow.scroll.off();
525  Webflow.redraw.off(); // Clear any queued ready methods
526
527  primary = [];
528  secondary = []; // If load event has not yet fired, replace the deferred
529
530  if (deferLoad.state() === 'pending') {
531    bindLoad();
532  }
533}; // Listen for domready
534
535
536$(Webflow.ready); // Listen for window.onload and resolve deferred
537
538bindLoad(); // Export commonjs module
539
540module.exports = window.Webflow = Webflow;
541
542/***/ }),
543/* 4 */
544/***/ (function(module, exports, __webpack_require__) {
545
546/* WEBPACK VAR INJECTION */(function(global) {var O = 'object';
547var check = function (it) {
548  return it && it.Math == Math && it;
549};
550
551// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
552module.exports =
553  // eslint-disable-next-line no-undef
554  check(typeof globalThis == O && globalThis) ||
555  check(typeof window == O && window) ||
556  check(typeof self == O && self) ||
557  check(typeof global == O && global) ||
558  // eslint-disable-next-line no-new-func
559  Function('return this')();
560
561/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(23)))
562
563/***/ }),
564/* 5 */
565/***/ (function(module, exports, __webpack_require__) {
566
567var freeGlobal = __webpack_require__(89);
568
569/** Detect free variable `self`. */
570var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
571
572/** Used as a reference to the global object. */
573var root = freeGlobal || freeSelf || Function('return this')();
574
575module.exports = root;
576
577
578/***/ }),
579/* 6 */
580/***/ (function(module, exports) {
581
582/**
583 * Checks if `value` is the
584 * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
585 * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
586 *
587 * @static
588 * @memberOf _
589 * @since 0.1.0
590 * @category Lang
591 * @param {*} value The value to check.
592 * @returns {boolean} Returns `true` if `value` is an object, else `false`.
593 * @example
594 *
595 * _.isObject({});
596 * // => true
597 *
598 * _.isObject([1, 2, 3]);
599 * // => true
600 *
601 * _.isObject(_.noop);
602 * // => true
603 *
604 * _.isObject(null);
605 * // => false
606 */
607function isObject(value) {
608  var type = typeof value;
609  return value != null && (type == 'object' || type == 'function');
610}
611
612module.exports = isObject;
613
614
615/***/ }),
616/* 7 */
617/***/ (function(module, exports, __webpack_require__) {
618
619var baseMatches = __webpack_require__(176),
620    baseMatchesProperty = __webpack_require__(230),
621    identity = __webpack_require__(59),
622    isArray = __webpack_require__(1),
623    property = __webpack_require__(239);
624
625/**
626 * The base implementation of `_.iteratee`.
627 *
628 * @private
629 * @param {*} [value=_.identity] The value to convert to an iteratee.
630 * @returns {Function} Returns the iteratee.
631 */
632function baseIteratee(value) {
633  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
634  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
635  if (typeof value == 'function') {
636    return value;
637  }
638  if (value == null) {
639    return identity;
640  }
641  if (typeof value == 'object') {
642    return isArray(value)
643      ? baseMatchesProperty(value[0], value[1])
644      : baseMatches(value);
645  }
646  return property(value);
647}
648
649module.exports = baseIteratee;
650
651
652/***/ }),
653/* 8 */
654/***/ (function(module, exports, __webpack_require__) {
655
656var baseIsNative = __webpack_require__(188),
657    getValue = __webpack_require__(193);
658
659/**
660 * Gets the native function at `key` of `object`.
661 *
662 * @private
663 * @param {Object} object The object to query.
664 * @param {string} key The key of the method to get.
665 * @returns {*} Returns the function if it's native, else `undefined`.
666 */
667function getNative(object, key) {
668  var value = getValue(object, key);
669  return baseIsNative(value) ? value : undefined;
670}
671
672module.exports = getNative;
673
674
675/***/ }),
676/* 9 */
677/***/ (function(module, exports) {
678
679/**
680 * Checks if `value` is object-like. A value is object-like if it's not `null`
681 * and has a `typeof` result of "object".
682 *
683 * @static
684 * @memberOf _
685 * @since 4.0.0
686 * @category Lang
687 * @param {*} value The value to check.
688 * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
689 * @example
690 *
691 * _.isObjectLike({});
692 * // => true
693 *
694 * _.isObjectLike([1, 2, 3]);
695 * // => true
696 *
697 * _.isObjectLike(_.noop);
698 * // => false
699 *
700 * _.isObjectLike(null);
701 * // => false
702 */
703function isObjectLike(value) {
704  return value != null && typeof value == 'object';
705}
706
707module.exports = isObjectLike;
708
709
710/***/ }),
711/* 10 */
712/***/ (function(module, exports, __webpack_require__) {
713
714"use strict";
715
716
717var _interopRequireWildcard = __webpack_require__(13);
718
719Object.defineProperty(exports, "__esModule", {
720  value: true
721});
722exports.IX2VanillaUtils = exports.IX2VanillaPlugins = exports.IX2ElementsReducer = exports.IX2EasingUtils = exports.IX2Easings = exp
722orts.IX2BrowserSupport = void 0;
723
724var IX2BrowserSupport = _interopRequireWildcard(__webpack_require__(45));
725
726exports.IX2BrowserSupport = IX2BrowserSupport;
727
728var IX2Easings = _interopRequireWildcard(__webpack_require__(106));
729
730exports.IX2Easings = IX2Easings;
731
732var IX2EasingUtils = _interopRequireWildcard(__webpack_require__(108));
733
734exports.IX2EasingUtils = IX2EasingUtils;
735
736var IX2ElementsReducer = _interopRequireWildcard(__webpack_require__(246));
737
738exports.IX2ElementsReducer = IX2ElementsReducer;
739
740var IX2VanillaPlugins = _interopRequireWildcard(__webpack_require__(110));
741
742exports.IX2VanillaPlugins = IX2VanillaPlugins;
743
744var IX2VanillaUtils = _interopRequireWildcard(__webpack_require__(248));
745
746exports.IX2VanillaUtils = IX2VanillaUtils;
747
748/***/ }),
749/* 11 */
750/***/ (function(module, exports, __webpack_require__) {
751
752var Symbol = __webpack_require__(19),
753    getRawTag = __webpack_require__(189),
754    objectToString = __webpack_require__(190);
755
756/** `Object#toString` result references. */
757var nullTag = '[object Null]',
758    undefinedTag = '[object Undefined]';
759
760/** Built-in value references. */
761var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
762
763/**
764 * The base implementation of `getTag` without fallbacks for buggy environments.
765 *
766 * @private
767 * @param {*} value The value to query.
768 * @returns {string} Returns the `toStringTag`.
769 */
770function baseGetTag(value) {
771  if (value == null) {
772    return value === undefined ? undefinedTag : nullTag;
773  }
774  return (symToStringTag && symToStringTag in Object(value))
775    ? getRawTag(value)
776    : objectToString(value);
777}
778
779module.exports = baseGetTag;
780
781
782/***/ }),
783/* 12 */
784/***/ (function(module, exports, __webpack_require__) {
785
786var isFunction = __webpack_require__(88),
787    isLength = __webpack_require__(53);
788
789/**
790 * Checks if `value` is array-like. A value is considered array-like if it's
791 * not a function and has a `value.length` that's an integer greater than or
792 * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
793 *
794 * @static
795 * @memberOf _
796 * @since 4.0.0
797 * @category Lang
798 * @param {*} value The value to check.
799 * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
800 * @example
801 *
802 * _.isArrayLike([1, 2, 3]);
803 * // => true
804 *
805 * _.isArrayLike(document.body.children);
806 * // => true
807 *
808 * _.isArrayLike('abc');
809 * // => true
810 *
811 * _.isArrayLike(_.noop);
812 * // => false
813 */
814function isArrayLike(value) {
815  return value != null && isLength(value.length) && !isFunction(value);
816}
817
818module.exports = isArrayLike;
819
820
821/***/ }),
822/* 13 */
823/***/ (function(module, exports) {
824
825function _interopRequireWildcard(obj) {
826  if (obj && obj.__esModule) {
827    return obj;
828  } else {
829    var newObj = {};
830
831    if (obj != null) {
832      for (var key in obj) {
833        if (Object.prototype.hasOwnProperty.call(obj, key)) {
834          var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
835
836          if (desc.get || desc.set) {
837            Object.defineProperty(newObj, key, desc);
838          } else {
839            newObj[key] = obj[key];
840          }
841        }
842      }
843    }
844
845    newObj["default"] = obj;
846    return newObj;
847  }
848}
849
850module.exports = _interopRequireWildcard;
851
852/***/ }),
853/* 14 */
854/***/ (function(module, exports, __webpack_require__) {
855
856var fails = __webpack_require__(15);
857
858// Thank's IE8 for his funny defineProperty
859module.exports = !fails(function () {
860  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
861});
862
863
864/***/ }),
865/* 15 */
866/***/ (function(module, exports) {
867
868module.exports = function (exec) {
869  try {
870    return !!exec();
871  } catch (error) {
872    return true;
873  }
874};
875
876
877/***/ }),
878/* 16 */
879/***/ (function(module, exports) {
880
881var hasOwnProperty = {}.hasOwnProperty;
882
883module.exports = function (it, key) {
884  return hasOwnProperty.call(it, key);
885};
886
887
888/***/ }),
889/* 17 */
890/***/ (function(module, exports, __webpack_require__) {
891
892var DESCRIPTORS = __webpack_require__(14);
893var definePropertyModule = __webpack_require__(39);
894var createPropertyDescriptor = __webpack_require__(67);
895
896module.exports = DESCRIPTORS ? function (object, key, value) {
897  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));
898} : function (object, key, value) {
899  object[key] = value;
900  return object;
901};
902
903
904/***/ }),
905/* 18 */
906/***/ (function(module, exports, __webpack_require__) {
907
908"use strict";
909
910
911Object.defineProperty(exports, "__esModule", {
912  value: true
913});
914
915var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
916
917exports.clone = clone;
918exports.addLast = addLast;
919exports.addFirst = addFirst;
920exports.removeLast = removeLast;
921exports.removeFirst = removeFirst;
922exports.insert = insert;
923exports.removeAt = removeAt;
924exports.replaceAt = replaceAt;
925exports.getIn = getIn;
926exports.set = set;
927exports.setIn = setIn;
928exports.update = update;
929exports.updateIn = updateIn;
930exports.merge = merge;
931exports.mergeDeep = mergeDeep;
932exports.mergeIn = mergeIn;
933exports.omit = omit;
934exports.addDefaults = addDefaults;
935
936
937/*!
938 * Timm
939 *
940 * Immutability helpers with fast reads and acceptable writes.
941 *
942 * @copyright Guillermo Grau Panea 2016
943 * @license MIT
944 */
945
946var INVALID_ARGS = 'INVALID_ARGS';
947
948// ===============================================
949// ### Helpers
950// ===============================================
951
952
953function throwStr(msg) {
954  throw new Error(msg);
955}
956
957function getKeysAndSymbols(obj) {
958  var keys = Object.keys(obj);
959  if (Object.getOwnPropertySymbols) {
960    return keys.concat(Object.getOwnPropertySymbols(obj));
961  }
962  return keys;
963}
964
965var hasOwnProperty = {}.hasOwnProperty;
966
967function clone(obj) {
968  if (Array.isArray(obj)) return obj.slice();
969  var keys = getKeysAndSymbols(obj);
970  var out = {};
971  for (var i = 0; i < keys.length; i++) {
972    var key = keys[i];
973    out[key] = obj[key];
974  }
975  return out;
976}
977
978function doMerge(fAddDefaults, fDeep, first) {
979  var out = first;
980  !(out != null) && throwStr( false ? undefined : INVALID_ARGS);
981  var fChanged = false;
982
983  for (var _len = arguments.length, rest = Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {
984    rest[_key - 3] = arguments[_key];
985  }
986
987  for (var idx = 0; idx < rest.length; idx++) {
988    var obj = rest[idx];
989    if (obj == null) continue;
990    var keys = getKeysAndSymbols(obj);
991    if (!keys.length) continue;
992    for (var j = 0; j <= keys.length; j++) {
993      var key = keys[j];
994      if (fAddDefaults && out[key] !== undefined) continue;
995      var nextVal = obj[key];
996      if (fDeep && isObject(out[key]) && isObject(nextVal)) {
997        nextVal = doMerge(fAddDefaults, fDeep, out[key], nextVal);
998      }
999      if (nextVal === undefined || nextVal === out[key]) continue;
1000      if (!fChanged) {
1001        fChanged = true;
1002        out = clone(out);
1003      }
1004      out[key] = nextVal;
1005    }
1006  }
1007  return out;
1008}
1009
1010function isObject(o) {
1011  var type = typeof o === 'undefined' ? 'undefined' : _typeof(o);
1012  return o != null && (type === 'object' || type === 'function');
1013}
1014
1015// _deepFreeze = (obj) ->
1016//   Object.freeze obj
1017//   for key in Object.getOwnPropertyNames obj
1018//     val = obj[key]
1019//     if isObject(val) and not Object.isFrozen val
1020//       _deepFreeze val
1021//   obj
1022
1023// ===============================================
1024// -- ### Arrays
1025// ===============================================
1026
1027// -- #### addLast()
1028// -- Returns a new array with an appended item or items.
1029// --
1030// -- Usage: `addLast<T>(array: Array<T>, val: Array<T>|T): Array<T>`
1031// --
1032// -- ```js
1033// -- arr = ['a', 'b']
1034// -- arr2 = addLast(arr, 'c')
1035// -- // ['a', 'b', 'c']
1036// -- arr2 === arr
1037// -- // false
1038// -- arr3 = addLast(arr, ['c', 'd'])
1039// -- // ['a', 'b', 'c', 'd']
1040// -- ```
1041// `array.concat(val)` also handles the scalar case,
1042// but is apparently very slow
1043function addLast(array, val) {
1044  if (Array.isArray(val)) return array.concat(val);
1045  return array.concat([val]);
1046}
1047
1048// -- #### addFirst()
1049// -- Returns a new array with a prepended item or items.
1050// --
1051// -- Usage: `addFirst<T>(array: Array<T>, val: Array<T>|T): Array<T>`
1052// --
1053// -- ```js
1054// -- arr = ['a', 'b']
1055// -- arr2 = addFirst(arr, 'c')
1056// -- // ['c', 'a', 'b']
1057// -- arr2 === arr
1058// -- // false
1059// -- arr3 = addFirst(arr, ['c', 'd'])
1060// -- // ['c', 'd', 'a', 'b']
1061// -- ```
1062function addFirst(array, val) {
1063  if (Array.isArray(val)) return val.concat(array);
1064  return [val].concat(array);
1065}
1066
1067// -- #### removeLast()
1068// -- Returns a new array removing the last item.
1069// --
1070// -- Usage: `removeLast<T>(array: Array<T>): Array<T>`
1071// --
1072// -- ```js
1073// -- arr = ['a', 'b']
1074// -- arr2 = removeLast(arr)
1075// -- // ['a']
1076// -- arr2 === arr
1077// -- // false
1078// --
1079// -- // The same array is returned if there are no changes:
1080// -- arr3 = []
1081// -- removeLast(arr3) === arr3
1082// -- // true
1083// -- ```
1084function removeLast(array) {
1085  if (!array.length) return array;
1086  return array.slice(0, array.length - 1);
1087}
1088
1089// -- #### removeFirst()
1090// -- Returns a new array removing the first item.
1091// --
1092// -- Usage: `removeFirst<T>(array: Array<T>): Array<T>`
1093// --
1094// -- ```js
1095// -- arr = ['a', 'b']
1096// -- arr2 = removeFirst(arr)
1097// -- // ['b']
1098// -- arr2 === arr
1099// -- // false
1100// --
1101// -- // The same array is returned if there are no changes:
1102// -- arr3 = []
1103// -- removeFirst(arr3) === arr3
1104// -- // true
1105// -- ```
1106function removeFirst(array) {
1107  if (!array.length) return array;
1108  return array.slice(1);
1109}
1110
1111// -- #### insert()
1112// -- Returns a new array obtained by inserting an item or items
1113// -- at a specified index.
1114// --
1115// -- Usage: `insert<T>(array: Array<T>, idx: number, val: Array<T>|T): Array<T>`
1116// --
1117// -- ```js
1118// -- arr = ['a', 'b', 'c']
1119// -- arr2 = insert(arr, 1, 'd')
1120// -- // ['a', 'd', 'b', 'c']
1121// -- arr2 === arr
1122// -- // false
1123// -- insert(arr, 1, ['d', 'e'])
1124// -- // ['a', 'd', 'e', 'b', 'c']
1125// -- ```
1126function insert(array, idx, val) {
1127  return array.slice(0, idx).concat(Array.isArray(val) ? val : [val]).concat(array.slice(idx));
1128}
1129
1130// -- #### removeAt()
1131// -- Returns a new array obtained by removing an item at
1132// -- a specified index.
1133// --
1134// -- Usage: `removeAt<T>(array: Array<T>, idx: number): Array<T>`
1135// --
1136// -- ```js
1137// -- arr = ['a', 'b', 'c']
1138// -- arr2 = removeAt(arr, 1)
1139// -- // ['a', 'c']
1140// -- arr2 === arr
1141// -- // false
1142// --
1143// -- // The same array is returned if there are no changes:
1144// -- removeAt(arr, 4) === arr
1145// -- // true
1146// -- ```
1147function removeAt(array, idx) {
1148  if (idx >= array.length || idx < 0) return array;
1149  return array.slice(0, idx).concat(array.slice(idx + 1));
1150}
1151
1152// -- #### replaceAt()
1153// -- Returns a new array obtained by replacing an item at
1154// -- a specified index. If the provided item is the same as
1155// -- (*referentially equal to*) the previous item at that position,
1156// -- the original array is returned.
1157// --
1158// -- Usage: `replaceAt<T>(array: Array<T>, idx: number, newItem: T): Array<T>`
1159// --
1160// -- ```js
1161// -- arr = ['a', 'b', 'c']
1162// -- arr2 = replaceAt(arr, 1, 'd')
1163// -- // ['a', 'd', 'c']
1164// -- arr2 === arr
1165// -- // false
1166// --
1167// -- // The same object is returned if there are no changes:
1168// -- replaceAt(arr, 1, 'b') === arr
1169// -- // true
1170// -- ```
1171function replaceAt(array, idx, newItem) {
1172  if (array[idx] === newItem) return array;
1173  var len = array.length;
1174  var result = Array(len);
1175  for (var i = 0; i < len; i++) {
1176    result[i] = array[i];
1177  }
1178  result[idx] = newItem;
1179  return result;
1180}
1181
1182// ===============================================
1183// -- ### Collections (objects and arrays)
1184// ===============================================
1185// -- The following types are used throughout this section
1186// -- ```js
1187// -- type ArrayOrObject = Array<any>|Object;
1188// -- type Key = number|string;
1189// -- ```
1190
1191// -- #### getIn()
1192// -- Returns a value from an object at a given path. Works with
1193// -- nested arrays and objects. If the path does not exist, it returns
1194// -- `undefined`.
1195// --
1196// -- Usage: `getIn(obj: ?ArrayOrObject, path: Array<Key>): any`
1197// --
1198// -- ```js
1199// -- obj = { a: 1, b: 2, d: { d1: 3, d2: 4 }, e: ['a', 'b', 'c'] }
1200// -- getIn(obj, ['d', 'd1'])
1201// -- // 3
1202// -- getIn(obj, ['e', 1])
1203// -- // 'b'
1204// -- ```
1205function getIn(obj, path) {
1206  !Array.isArray(path) && throwStr( false ? undefined : INVALID_ARGS);
1207  if (obj == null) return undefined;
1208  var ptr = obj;
1209  for (var i = 0; i < path.length; i++) {
1210    var key = path[i];
1211    ptr = ptr != null ? ptr[key] : undefined;
1212    if (ptr === undefined) return ptr;
1213  }
1214  return ptr;
1215}
1216
1217// -- #### set()
1218// -- Returns a new object with a modified attribute.
1219// -- If the provided value is the same as (*referentially equal to*)
1220// -- the previous value, the original object is returned.
1221// --
1222// -- Usage: `set<T>(obj: ?T, key: Key, val: any): T`
1223// --
1224// -- ```js
1225// -- obj = { a: 1, b: 2, c: 3 }
1226// -- obj2 = set(obj, 'b', 5)
1227// -- // { a: 1, b: 5, c: 3 }
1228// -- obj2 === obj
1229// -- // false
1230// --
1231// -- // The same object is returned if there are no changes:
1232// -- set(obj, 'b', 2) === obj
1233// -- // true
1234// -- ```
1235function set(obj, key, val) {
1236  var fallback = typeof key === 'number' ? [] : {};
1237  var finalObj = obj == null ? fallback : obj;
1238  if (finalObj[key] === val) return finalObj;
1239  var obj2 = clone(finalObj);
1240  obj2[key] = val;
1241  return obj2;
1242}
1243
1244// -- #### setIn()
1245// -- Returns a new object with a modified **nested** attribute.
1246// --
1247// -- Notes:
1248// --
1249// -- * If the provided value is the same as (*referentially equal to*)
1250// -- the previous value, the original object is returned.
1251// -- * If the path does not exist, it will be created before setting
1252// -- the new value.
1253// --
1254// -- Usage: `setIn<T: ArrayOrObject>(obj: T, path: Array<Key>, val: any): T`
1255// --
1256// -- ```js
1257// -- obj = { a: 1, b: 2, d: { d1: 3, d2: 4 }, e: { e1: 'foo', e2: 'bar' } }
1258// -- obj2 = setIn(obj, ['d', 'd1'], 4)
1259// -- // { a: 1, b: 2, d: { d1: 4, d2: 4 }, e: { e1: 'foo', e2: 'bar' } }
1260// -- obj2 === obj
1261// -- // false
1262// -- obj2.d === obj.d
1263// -- // false
1264// -- obj2.e === obj.e
1265// -- // true
1266// --
1267// -- // The same object is returned if there are no changes:
1268// -- obj3 = setIn(obj, ['d', 'd1'], 3)
1269// -- // { a: 1, b: 2, d: { d1: 3, d2: 4 }, e: { e1: 'foo', e2: 'bar' } }
1270// -- obj3 === obj
1271// -- // true
1272// -- obj3.d === obj.d
1273// -- // true
1274// -- obj3.e === obj.e
1275// -- // true
1276// --
1277// -- // ... unknown paths create intermediate keys. Numeric segments are treated as array indices:
1278// -- setIn({ a: 3 }, ['unknown', 0, 'path'], 4)
1279// -- // { a: 3, unknown: [{ path: 4 }] }
1280// -- ```
1281function doSetIn(obj, path, val, idx) {
1282  var newValue = void 0;
1283  var key = path[idx];
1284  if (idx === path.length - 1) {
1285    newValue = val;
1286  } else {
1287    var nestedObj = isObject(obj) && isObject(obj[key]) ? obj[key] : typeof path[idx + 1] === 'number' ? [] : {};
1288    newValue = doSetIn(nestedObj, path, val, idx + 1);
1289  }
1290  return set(obj, key, newValue);
1291}
1292
1293function setIn(obj, path, val) {
1294  if (!path.length) return val;
1295  return doSetIn(obj, path, val, 0);
1296}
1297
1298// -- #### update()
1299// -- Returns a new object with a modified attribute,
1300// -- calculated via a user-provided callback based on the current value.
1301// -- If the calculated value is the same as (*referentially equal to*)
1302// -- the previous value, the original object is returned.
1303// --
1304// -- Usage: `update<T: ArrayOrObject>(obj: T, key: Key,
1305// -- fnUpdate: (prevValue: any) => any): T`
1306// --
1307// -- ```js
1308// -- obj = { a: 1, b: 2, c: 3 }
1309// -- obj2 = update(obj, 'b', (val) => val + 1)
1310// -- // { a: 1, b: 3, c: 3 }
1311// -- obj2 === obj
1312// -- // false
1313// --
1314// -- // The same object is returned if there are no changes:
1315// -- update(obj, 'b', (val) => val) === obj
1316// -- // true
1317// -- ```
1318function update(obj, key, fnUpdate) {
1319  var prevVal = obj == null ? undefined : obj[key];
1320  var nextVal = fnUpdate(prevVal);
1321  return set(obj, key, nextVal);
1322}
1323
1324// -- #### updateIn()
1325// -- Returns a new object with a modified **nested** attribute,
1326// -- calculated via a user-provided callback based on the current value.
1327// -- If the calculated value is the same as (*referentially equal to*)
1328// -- the previous value, the original object is returned.
1329// --
1330// -- Usage: `updateIn<T: ArrayOrObject>(obj: T, path: Array<Key>,
1331// -- fnUpdate: (prevValue: any) => any): T`
1332// --
1333// -- ```js
1334// -- obj = { a: 1, d: { d1: 3, d2: 4 } }
1335// -- obj2 = updateIn(obj, ['d', 'd1'], (val) => val + 1)
1336// -- // { a: 1, d: { d1: 4, d2: 4 } }
1337// -- obj2 === obj
1338// -- // false
1339// --
1340// -- // The same object is returned if there are no changes:
1341// -- obj3 = updateIn(obj, ['d', 'd1'], (val) => val)
1342// -- // { a: 1, d: { d1: 3, d2: 4 } }
1343// -- obj3 === obj
1344// -- // true
1345// -- ```
1346function updateIn(obj, path, fnUpdate) {
1347  var prevVal = getIn(obj, path);
1348  var nextVal = fnUpdate(prevVal);
1349  return setIn(obj, path, nextVal);
1350}
1351
1352// -- #### merge()
1353// -- Returns a new object built as follows: the overlapping keys from the
1354// -- second one overwrite the corresponding entries from the first one.
1355// -- Similar to `Object.assign()`, but immutable.
1356// --
1357// -- Usage:
1358// --
1359// -- * `merge(obj1: Object, obj2: ?Object): Object`
1360// -- * `merge(obj1: Object, ...objects: Array<?Object>): Object`
1361// --
1362// -- The unmodified `obj1` is returned if `obj2` does not *provide something
1363// -- new to* `obj1`, i.e. if either of the following
1364// -- conditions are true:
1365// --
1366// -- * `obj2` is `null` or `undefined`
1367// -- * `obj2` is an object, but it is empty
1368// -- * All attributes of `obj2` are `undefined`
1369// -- * All attributes of `obj2` are referentially equal to the
1370// --   corresponding attributes of `obj1`
1371// --
1372// -- Note that `undefined` attributes in `obj2` do not modify the
1373// -- corresponding attributes in `obj1`.
1374// --
1375// -- ```js
1376// -- obj1 = { a: 1, b: 2, c: 3 }
1377// -- obj2 = { c: 4, d: 5 }
1378// -- obj3 = merge(obj1, obj2)
1379// -- // { a: 1, b: 2, c: 4, d: 5 }
1380// -- obj3 === obj1
1381// -- // false
1382// --
1383// -- // The same object is returned if there are no changes:
1384// -- merge(obj1, { c: 3 }) === obj1
1385// -- // true
1386// -- ```
1387function merge(a, b, c, d, e, f) {
1388  for (var _len2 = arguments.length, rest = Array(_len2 > 6 ? _len2 - 6 : 0), _key2 = 6; _key2 < _len2; _key2++) {
1389    rest[_key2 - 6] = arguments[_key2];
1390  }
1391
1392  return rest.length ? doMerge.call.apply(doMerge, [null, false, false, a, b, c, d, e, f].concat(rest)) : doMerge(false, false, a, b, c, d, e, f);
1393}
1394
1395// -- #### mergeDeep()
1396// -- Returns a new object built as follows: the overlapping keys from the
1397// -- second one overwrite the corresponding entries from the first one.
1398// -- If both the first and second entries are objects they are merged recursively.
1399// -- Similar to `Object.assign()`, but immutable, and deeply merging.
1400// --
1401// -- Usage:
1402// --
1403// -- * `mergeDeep(obj1: Object, obj2: ?Object): Object`
1404// -- * `mergeDeep(obj1: Object, ...objects: Array<?Object>): Object`
1405// --
1406// -- The unmodified `obj1` is returned if `obj2` does not *provide something
1407// -- new to* `obj1`, i.e. if either of the following
1408// -- conditions are true:
1409// --
1410// -- * `obj2` is `null` or `undefined`
1411// -- * `obj2` is an object, but it is empty
1412// -- * All attributes of `obj2` are `undefined`
1413// -- * All attributes of `obj2` are referentially equal to the
1414// --   corresponding attributes of `obj1`
1415// --
1416// -- Note that `undefined` attributes in `obj2` do not modify the
1417// -- corresponding attributes in `obj1`.
1418// --
1419// -- ```js
1420// -- obj1 = { a: 1, b: 2, c: { a: 1 } }
1421// -- obj2 = { b: 3, c: { b: 2 } }
1422// -- obj3 = mergeDeep(obj1, obj2)
1423// -- // { a: 1, b: 3, c: { a: 1, b: 2 }  }
1424// -- obj3 === obj1
1425// -- // false
1426// --
1427// -- // The same object is returned if there are no changes:
1428// -- mergeDeep(obj1, { c: { a: 1 } }) === obj1
1429// -- // true
1430// -- ```
1431function mergeDeep(a, b, c, d, e, f) {
1432  for (var _len3 = arguments.length, rest = Array(_len3 > 6 ? _len3 - 6 : 0), _key3 = 6; _key3 < _len3; _key3++) {
1433    rest[_key3 - 6] = arguments[_key3];
1434  }
1435
1436  return rest.length ? doMerge.call.apply(doMerge, [null, false, true, a, b, c, d, e, f].concat(rest)) : doMerge(false, true, a, b, c, d, e, f);
1437}
1438
1439// -- #### mergeIn()
1440// -- Similar to `merge()`, but merging the value at a given nested path.
1441// -- Note that the returned type is the same as that of the first argument.
1442// --
1443// -- Usage:
1444// --
1445// -- * `mergeIn<T: ArrayOrObject>(obj1: T, path: Array<Key>, obj2: ?Object): T`
1446// -- * `mergeIn<T: ArrayOrObject>(obj1: T, path: Array<Key>,
1447// -- ...objects: Array<?Object>): T`
1448// --
1449// -- ```js
1450// -- obj1 = { a: 1, d: { b: { d1: 3, d2: 4 } } }
1451// -- obj2 = { d3: 5 }
1452// -- obj3 = mergeIn(obj1, ['d', 'b'], obj2)
1453// -- // { a: 1, d: { b: { d1: 3, d2: 4, d3: 5 } } }
1454// -- obj3 === obj1
1455// -- // false
1456// --
1457// -- // The same object is returned if there are no changes:
1458// -- mergeIn(obj1, ['d', 'b'], { d2: 4 }) === obj1
1459// -- // true
1460// -- ```
1461function mergeIn(a, path, b, c, d, e, f) {
1462  var prevVal = getIn(a, path);
1463  if (prevVal == null) prevVal = {};
1464  var nextVal = void 0;
1465
1466  for (var _len4 = arguments.length, rest = Array(_len4 > 7 ? _len4 - 7 : 0), _key4 = 7; _key4 < _len4; _key4++) {
1467    rest[_key4 - 7] = arguments[_key4];
1468  }
1469
1470  if (rest.length) {
1471    nextVal = doMerge.call.apply(doMerge, [null, false, false, prevVal, b, c, d, e, f].concat(rest));
1472  } else {
1473    nextVal = doMerge(false, false, prevVal, b, c, d, e, f);
1474  }
1475  return setIn(a, path, nextVal);
1476}
1477
1478// -- #### omit()
1479// -- Returns an object excluding one or several attributes.
1480// --
1481// -- Usage: `omit(obj: Object, attrs: Array<string>|string): Object`
1482//
1483// -- ```js
1484// -- obj = { a: 1, b: 2, c: 3, d: 4 }
1485// -- omit(obj, 'a')
1486// -- // { b: 2, c: 3, d: 4 }
1487// -- omit(obj, ['b', 'c'])
1488// -- // { a: 1, d: 4 }
1489// --
1490// -- // The same object is returned if there are no changes:
1491// -- omit(obj, 'z') === obj1
1492// -- // true
1493// -- ```
1494function omit(obj, attrs) {
1495  var omitList = Array.isArray(attrs) ? attrs : [attrs];
1496  var fDoSomething = false;
1497  for (var i = 0; i < omitList.length; i++) {
1498    if (hasOwnProperty.call(obj, omitList[i])) {
1499      fDoSomething = true;
1500      break;
1501    }
1502  }
1503  if (!fDoSomething) return obj;
1504  var out = {};
1505  var keys = getKeysAndSymbols(obj);
1506  for (var _i = 0; _i < keys.length; _i++) {
1507    var key = keys[_i];
1508    if (omitList.indexOf(key) >= 0) continue;
1509    out[key] = obj[key];
1510  }
1511  return out;
1512}
1513
1514// -- #### addDefaults()
1515// -- Returns a new object built as follows: `undefined` keys in the first one
1516// -- are filled in with the corresponding values from the second one
1517// -- (even if they are `null`).
1518// --
1519// -- Usage:
1520// --
1521// -- * `addDefaults(obj: Object, defaults: Object): Object`
1522// -- * `addDefaults(obj: Object, ...defaultObjects: Array<?Object>): Object`
1523// --
1524// -- ```js
1525// -- obj1 = { a: 1, b: 2, c: 3 }
1526// -- obj2 = { c: 4, d: 5, e: null }
1527// -- obj3 = addDefaults(obj1, obj2)
1528// -- // { a: 1, b: 2, c: 3, d: 5, e: null }
1529// -- obj3 === obj1
1530// -- // false
1531// --
1532// -- // The same object is returned if there are no changes:
1533// -- addDefaults(obj1, { c: 4 }) === obj1
1534// -- // true
1535// -- ```
1536function addDefaults(a, b, c, d, e, f) {
1537  for (var _len5 = arguments.length, rest = Array(_len5 > 6 ? _len5 - 6 : 0), _key5 = 6; _key5 < _len5; _key5++) {
1538    rest[_key5 - 6] = arguments[_key5];
1539  }
1540
1541  return rest.length ? doMerge.call.apply(doMerge, [null, true, false, a, b, c, d, e, f].concat(rest)) : doMerge(true, false, a, b, c, d, e, f);
1542}
1543
1544// ===============================================
1545// ### Public API
1546// ===============================================
1547var timm = {
1548  clone: clone,
1549  addLast: addLast,
1550  addFirst: addFirst,
1551  removeLast: removeLast,
1552  removeFirst: removeFirst,
1553  insert: insert,
1554  removeAt: removeAt,
1555  replaceAt: replaceAt,
1556
1557  getIn: getIn,
1558  // eslint-disable-next-line object-shorthand
1559  set: set, // so that flow doesn't complain
1560  setIn: setIn,
1561  update: update,
1562  updateIn: updateIn,
1563  merge: merge,
1564  mergeDeep: mergeDeep,
1565  mergeIn: mergeIn,
1566  omit: omit,
1567  addDefaults: addDefaults
1568};
1569
1570exports.default = timm;
1571
1572
1573/***/ }),
1574/* 19 */
1575/***/ (function(module, exports, __webpack_require__) {
1576
1577var root = __webpack_require__(5);
1578
1579/** Built-in value references. */
1580var Symbol = root.Symbol;
1581
1582module.exports = Symbol;
1583
1584
1585/***/ }),
1586/* 20 */
1587/***/ (function(module, exports, __webpack_require__) {
1588
1589var isSymbol = __webpack_require__(37);
1590
1591/** Used as references for various `Number` constants. */
1592var INFINITY = 1 / 0;
1593
1594/**
1595 * Converts `value` to a string key if it's not a string or symbol.
1596 *
1597 * @private
1598 * @param {*} value The value to inspect.
1599 * @returns {string|symbol} Returns the key.
1600 */
1601function toKey(value) {
1602  if (typeof value == 'string' || isSymbol(value)) {
1603    return value;
1604  }
1605  var result = (value + '');
1606  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
1607}
1608
1609module.exports = toKey;
1610
1611
1612/***/ }),
1613/* 21 */
1614/***/ (function(module, exports) {
1615
1616function _typeof2(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof2(obj); }
1617
1618function _typeof(obj) {
1619  if (typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol") {
1620    module.exports = _typeof = function _typeof(obj) {
1621      return _typeof2(obj);
1622    };
1623  } else {
1624    module.exports = _typeof = function _typeof(obj) {
1625      return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj);
1626    };
1627  }
1628
1629  return _typeof(obj);
1630}
1631
1632module.exports = _typeof;
1633
1634/***/ }),
1635/* 22 */
1636/***/ (function(module, exports, __webpack_require__) {
1637
1638"use strict";
1639// @wf-will-never-add-flow-to-this-file
1640
1641/* globals window, document */
1642
1643/* eslint-disable no-var */
1644// eslint-disable-next-line strict
1645
1646
1647var IXEvents = __webpack_require__(123);
1648
1649function dispatchCustomEvent(element, eventName) {
1650  var event = document.createEvent('CustomEvent');
1651  event.initCustomEvent(eventName, true, true, null);
1652  element.dispatchEvent(event);
1653}
1654/**
1655 * Webflow: IX Event triggers for other modules
1656 */
1657
1658
1659var $ = window.jQuery;
1660var api = {};
1661var namespace = '.w-ix';
1662var eventTriggers = {
1663  reset: function reset(i, el) {
1664    IXEvents.triggers.reset(i, el);
1665  },
1666  intro: function intro(i, el) {
1667    IXEvents.triggers.intro(i, el);
1668    dispatchCustomEvent(el, 'COMPONENT_ACTIVE');
1669  },
1670  outro: function outro(i, el) {
1671    IXEvents.triggers.outro(i, el);
1672    dispatchCustomEvent(el, 'COMPONENT_INACTIVE');
1673  }
1674};
1675api.triggers = {};
1676api.types = {
1677  INTRO: 'w-ix-intro' + namespace,
1678  OUTRO: 'w-ix-outro' + namespace
1679};
1680$.extend(api.triggers, eventTriggers);
1681module.exports = api;
1682
1683/***/ }),
1684/* 23 */
1685/***/ (function(module, exports) {
1686
1687var g;
1688
1689// This works in non-strict mode
1690g = (function() {
1691	return this;
1692})();
1693
1694try {
1695	// This works if eval is allowed (see CSP)
1696	g = g || new Function("return this")();
1697} catch (e) {
1698	// This works if the window reference is available
1699	if (typeof window === "object") g = window;
1700}
1701
1702// g can still be undefined, but nothing to do about it...
1703// We return undefined, instead of nothing here, so it's
1704// easier to handle this case. if(!global) { ...}
1705
1706module.exports = g;
1707
1708
1709/***/ }),
1710/* 24 */
1711/***/ (function(module, exports) {
1712
1713module.exports = function (it) {
1714  return typeof it === 'object' ? it !== null : typeof it === 'function';
1715};
1716
1717
1718/***/ }),
1719/* 25 */
1720/***/ (function(module, exports, __webpack_require__) {
1721
1722var isObject = __webpack_require__(24);
1723
1724module.exports = function (it) {
1725  if (!isObject(it)) {
1726    throw TypeError(String(it) + ' is not an object');
1727  } return it;
1728};
1729
1730
1731/***/ }),
1732/* 26 */
1733/***/ (function(module, exports, __webpack_require__) {
1734
1735var global = __webpack_require__(4);
1736var setGlobal = __webpack_require__(40);
1737var IS_PURE = __webpack_require__(135);
1738
1739var SHARED = '__core-js_shared__';
1740var store = global[SHARED] || setGlobal(SHARED, {});
1741
1742(module.exports = function (key, value) {
1743  return store[key] || (store[key] = value !== undefined ? value : {});
1744})('versions', []).push({
1745  version: '3.1.3',
1746  mode: IS_PURE ? 'pure' : 'global',
1747  copyright: '© 2019 Denis Pushkarev (zloirock.ru)'
1748});
1749
1750
1751/***/ }),
1752/* 27 */
1753/***/ (function(module, exports) {
1754
1755function _defineProperty(obj, key, value) {
1756  if (key in obj) {
1757    Object.defineProperty(obj, key, {
1758      value: value,
1759      enumerable: true,
1760      configurable: true,
1761      writable: true
1762    });
1763  } else {
1764    obj[key] = value;
1765  }
1766
1767  return obj;
1768}
1769
1770module.exports = _defineProperty;
1771
1772/***/ }),
1773/* 28 */
1774/***/ (function(module, exports) {
1775
1776function _extends() {
1777  module.exports = _extends = Object.assign || function (target) {
1778    for (var i = 1; i < arguments.length; i++) {
1779      var source = arguments[i];
1780
1781      for (var key in source) {
1782        if (Object.prototype.hasOwnProperty.call(source, key)) {
1783          target[key] = source[key];
1784        }
1785      }
1786    }
1787
1788    return target;
1789  };
1790
1791  return _extends.apply(this, arguments);
1792}
1793
1794module.exports = _extends;
1795
1796/***/ }),
1797/* 29 */
1798/***/ (function(module, exports, __webpack_require__) {
1799
1800var listCacheClear = __webpack_require__(178),
1801    listCacheDelete = __webpack_require__(179),
1802    listCacheGet = __webpack_require__(180),
1803    listCacheHas = __webpack_require__(181),
1804    listCacheSet = __webpack_require__(182);
1805
1806/**
1807 * Creates an list cache object.
1808 *
1809 * @private
1810 * @constructor
1811 * @param {Array} [entries] The key-value pairs to cache.
1812 */
1813function ListCache(entries) {
1814  var index = -1,
1815      length = entries == null ? 0 : entries.length;
1816
1817  this.clear();
1818  while (++index < length) {
1819    var entry = entries[index];
1820    this.set(entry[0], entry[1]);
1821  }
1822}
1823
1824// Add methods to `ListCache`.
1825ListCache.prototype.clear = listCacheClear;
1826ListCache.prototype['delete'] = listCacheDelete;
1827ListCache.prototype.get = listCacheGet;
1828ListCache.prototype.has = listCacheHas;
1829ListCache.prototype.set = listCacheSet;
1830
vendor: 4,828 bytes, lines 1831-2036
1831module.exports = ListCache;
1832
1833
1834/***/ }),
1835/* 30 */
1836/***/ (function(module, exports, __webpack_require__) {
1837
1838var eq = __webpack_require__(46);
1839
1840/**
1841 * Gets the index at which the `key` is found in `array` of key-value pairs.
1842 *
1843 * @private
1844 * @param {Array} array The array to inspect.
1845 * @param {*} key The key to search for.
1846 * @returns {number} Returns the index of the matched value, else `-1`.
1847 */
1848function assocIndexOf(array, key) {
1849  var length = array.length;
1850  while (length--) {
1851    if (eq(array[length][0], key)) {
1852      return length;
1853    }
1854  }
1855  return -1;
1856}
1857
1858module.exports = assocIndexOf;
1859
1860
1861/***/ }),
1862/* 31 */
1863/***/ (function(module, exports, __webpack_require__) {
1864
1865var getNative = __webpack_require__(8);
1866
1867/* Built-in method references that are verified to be native. */
1868var nativeCreate = getNative(Object, 'create');
1869
1870module.exports = nativeCreate;
1871
1872
1873/***/ }),
1874/* 32 */
1875/***/ (function(module, exports, __webpack_require__) {
1876
1877var isKeyable = __webpack_require__(202);
1878
1879/**
1880 * Gets the data for `map`.
1881 *
1882 * @private
1883 * @param {Object} map The map to query.
1884 * @param {string} key The reference key.
1885 * @returns {*} Returns the map data.
1886 */
1887function getMapData(map, key) {
1888  var data = map.__data__;
1889  return isKeyable(key)
1890    ? data[typeof key == 'string' ? 'string' : 'hash']
1891    : data.map;
1892}
1893
1894module.exports = getMapData;
1895
1896
1897/***/ }),
1898/* 33 */
1899/***/ (function(module, exports, __webpack_require__) {
1900
1901var arrayLikeKeys = __webpack_require__(96),
1902    baseKeys = __webpack_require__(54),
1903    isArrayLike = __webpack_require__(12);
1904
1905/**
1906 * Creates an array of the own enumerable property names of `object`.
1907 *
1908 * **Note:** Non-object values are coerced to objects. See the
1909 * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
1910 * for more details.
1911 *
1912 * @static
1913 * @since 0.1.0
1914 * @memberOf _
1915 * @category Object
1916 * @param {Object} object The object to query.
1917 * @returns {Array} Returns the array of property names.
1918 * @example
1919 *
1920 * function Foo() {
1921 *   this.a = 1;
1922 *   this.b = 2;
1923 * }
1924 *
1925 * Foo.prototype.c = 3;
1926 *
1927 * _.keys(new Foo);
1928 * // => ['a', 'b'] (iteration order is not guaranteed)
1929 *
1930 * _.keys('hi');
1931 * // => ['0', '1']
1932 */
1933function keys(object) {
1934  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
1935}
1936
1937module.exports = keys;
1938
1939
1940/***/ }),
1941/* 34 */
1942/***/ (function(module, exports, __webpack_require__) {
1943
1944var baseIsArguments = __webpack_require__(220),
1945    isObjectLike = __webpack_require__(9);
1946
1947/** Used for built-in method references. */
1948var objectProto = Object.prototype;
1949
1950/** Used to check objects for own properties. */
1951var hasOwnProperty = objectProto.hasOwnProperty;
1952
1953/** Built-in value references. */
1954var propertyIsEnumerable = objectProto.propertyIsEnumerable;
1955
1956/**
1957 * Checks if `value` is likely an `arguments` object.
1958 *
1959 * @static
1960 * @memberOf _
1961 * @since 0.1.0
1962 * @category Lang
1963 * @param {*} value The value to check.
1964 * @returns {boolean} Returns `true` if `value` is an `arguments` object,
1965 *  else `false`.
1966 * @example
1967 *
1968 * _.isArguments(function() { return arguments; }());
1969 * // => true
1970 *
1971 * _.isArguments([1, 2, 3]);
1972 * // => false
1973 */
1974var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
1975  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
1976    !propertyIsEnumerable.call(value, 'callee');
1977};
1978
1979module.exports = isArguments;
1980
1981
1982/***/ }),
1983/* 35 */
1984/***/ (function(module, exports, __webpack_require__) {
1985
1986var baseGet = __webpack_require__(57);
1987
1988/**
1989 * Gets the value at `path` of `object`. If the resolved value is
1990 * `undefined`, the `defaultValue` is returned in its place.
1991 *
1992 * @static
1993 * @memberOf _
1994 * @since 3.7.0
1995 * @category Object
1996 * @param {Object} object The object to query.
1997 * @param {Array|string} path The path of the property to get.
1998 * @param {*} [defaultValue] The value returned for `undefined` resolved values.
1999 * @returns {*} Returns the resolved value.
2000 * @example
2001 *
2002 * var object = { 'a': [{ 'b': { 'c': 3 } }] };
2003 *
2004 * _.get(object, 'a[0].b.c');
2005 * // => 3
2006 *
2007 * _.get(object, ['a', '0', 'b', 'c']);
2008 * // => 3
2009 *
2010 * _.get(object, 'a.b.c', 'default');
2011 * // => 'default'
2012 */
2013function get(object, path, defaultValue) {
2014  var result = object == null ? undefined : baseGet(object, path);
2015  return result === undefined ? defaultValue : result;
2016}
2017
2018module.exports = get;
2019
2020
2021/***/ }),
2022/* 36 */
2023/***/ (function(module, exports, __webpack_require__) {
2024
2025var isArray = __webpack_require__(1),
2026    isKey = __webpack_require__(58),
2027    stringToPath = __webpack_require__(231),
2028    toString = __webpack_require__(234);
2029
2030/**
2031 * Casts `value` to a path array if it's not one.
2032 *
2033 * @private
2034 * @param {*} value The value to inspect.
2035 * @param {Object} [object] The object to query keys on.
2036 * @returns {Array} Returns the cast property path array.
2037 */
2038function castPath(value, object) {
2039  if (isArray(value)) {
2040    return value;
2041  }
2042  return isKey(value, object) ? [value] : stringToPath(toString(value));
2043}
2044
2045module.exports = castPath;
2046
2047
2048/***/ }),
2049/* 37 */
2050/***/ (function(module, exports, __webpack_require__) {
2051
2052var baseGetTag = __webpack_require__(11),
2053    isObjectLike = __webpack_require__(9);
2054
2055/** `Object#toString` result references. */
2056var symbolTag = '[object Symbol]';
2057
2058/**
2059 * Checks if `value` is classified as a `Symbol` primitive or object.
2060 *
2061 * @static
2062 * @memberOf _
2063 * @since 4.0.0
2064 * @category Lang
2065 * @param {*} value The value to check.
2066 * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
2067 * @example
2068 *
2069 * _.isSymbol(Symbol.iterator);
2070 * // => true
2071 *
2072 * _.isSymbol('abc');
2073 * // => false
2074 */
2075function isSymbol(value) {
2076  return typeof value == 'symbol' ||
2077    (isObjectLike(value) && baseGetTag(value) == symbolTag);
2078}
2079
2080module.exports = isSymbol;
2081
2082
2083/***/ }),
2084/* 38 */
2085/***/ (function(module, exports, __webpack_require__) {
2086
2087// toObject with fallback for non-array-like ES3 strings
2088var IndexedObject = __webpack_require__(131);
2089var requireObjectCoercible = __webpack_require__(133);
2090
2091module.exports = function (it) {
2092  return IndexedObject(requireObjectCoercible(it));
2093};
2094
2095
2096/***/ }),
2097/* 39 */
2098/***/ (function(module, exports, __webpack_require__) {
2099
2100var DESCRIPTORS = __webpack_require__(14);
2101var IE8_DOM_DEFINE = __webpack_require__(69);
2102var anObject = __webpack_require__(25);
2103var toPrimitive = __webpack_require__(68);
2104
2105var nativeDefineProperty = Object.defineProperty;
2106
2107// `Object.defineProperty` method
2108// https://tc39.github.io/ecma262/#sec-object.defineproperty
2109exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {
2110  anObject(O);
2111  P = toPrimitive(P, true);
2112  anObject(Attributes);
2113  if (IE8_DOM_DEFINE) try {
2114    return nativeDefineProperty(O, P, Attributes);
2115  } catch (error) { /* empty */ }
2116  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');
2117  if ('value' in Attributes) O[P] = Attributes.value;
2118  return O;
2119};
2120
2121
2122/***/ }),
2123/* 40 */
2124/***/ (function(module, exports, __webpack_require__) {
2125
2126var global = __webpack_require__(4);
2127var hide = __webpack_require__(17);
2128
2129module.exports = function (key, value) {
2130  try {
2131    hide(global, key, value);
2132  } catch (error) {
2133    global[key] = value;
2134  } return value;
2135};
2136
2137
2138/***/ }),
2139/* 41 */
2140/***/ (function(module, exports) {
2141
2142module.exports = {};
2143
2144
2145/***/ }),
2146/* 42 */
2147/***/ (function(module, exports) {
2148
2149// IE8- don't enum bug keys
2150module.exports = [
2151  'constructor',
2152  'hasOwnProperty',
2153  'isPrototypeOf',
2154  'propertyIsEnumerable',
2155  'toLocaleString',
2156  'toString',
2157  'valueOf'
2158];
2159
2160
2161/***/ }),
2162/* 43 */
2163/***/ (function(module, __webpack_exports__, __webpack_require__) {
2164
2165"use strict";
2166__webpack_require__.r(__webpack_exports__);
2167/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ActionTypes", function() { return ActionTypes; });
2168/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return createStore; });
2169/* harmony import */ var lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(79);
2170/* harmony import */ var symbol_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(164);
2171
2172
2173
2174/**
2175 * These are private action types reserved by Redux.
2176 * For any unknown actions, you must return the current state.
2177 * If the current state is undefined, you must return the initial state.
2178 * Do not reference these action types directly in your code.
2179 */
2180var ActionTypes = {
2181  INIT: '@@redux/INIT'
2182};
2183
2184/**
2185 * Creates a Redux store that holds the state tree.
2186 * The only way to change the data in the store is to call `dispatch()` on it.
2187 *
2188 * There should only be a single store in your app. To specify how different
2189 * parts of the state tree respond to actions, you may combine several reducers
2190 * into a single reducer function by using `combineReducers`.
2191 *
2192 * @param {Function} reducer A function that returns the next state tree, given
2193 * the current state tree and the action to handle.
2194 *
2195 * @param {any} [preloadedState] The initial state. You may optionally specify it
2196 * to hydrate the state from the server in universal apps, or to restore a
2197 * previously serialized user session.
2198 * If you use `combineReducers` to produce the root reducer function, this must be
2199 * an object with the same shape as `combineReducers` keys.
2200 *
2201 * @param {Function} enhancer The store enhancer. You may optionally specify it
2202 * to enhance the store with third-party capabilities such as middleware,
2203 * time travel, persistence, etc. The only store enhancer that ships with Redux
2204 * is `applyMiddleware()`.
2205 *
2206 * @returns {Store} A Redux store that lets you read the state, dispatch actions
2207 * and subscribe to changes.
2208 */
2209function createStore(reducer, preloadedState, enhancer) {
2210  var _ref2;
2211
2212  if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {
2213    enhancer = preloadedState;
2214    preloadedState = undefined;
2215  }
2216
2217  if (typeof enhancer !== 'undefined') {
2218    if (typeof enhancer !== 'function') {
2219      throw new Error('Expected the enhancer to be a function.');
2220    }
2221
2222    return enhancer(createStore)(reducer, preloadedState);
2223  }
2224
2225  if (typeof reducer !== 'function') {
2226    throw new Error('Expected the reducer to be a function.');
2227  }
2228
2229  var currentReducer = reducer;
2230  var currentState = preloadedState;
2231  var currentListeners = [];
2232  var nextListeners = currentListeners;
2233  var isDispatching = false;
2234
2235  function ensureCanMutateNextListeners() {
2236    if (nextListeners === currentListeners) {
2237      nextListeners = currentListeners.slice();
2238    }
2239  }
2240
2241  /**
2242   * Reads the state tree managed by the store.
2243   *
2244   * @returns {any} The current state tree of your application.
2245   */
2246  function getState() {
2247    return currentState;
2248  }
2249
2250  /**
2251   * Adds a change listener. It will be called any time an action is dispatched,
2252   * and some part of the state tree may potentially have changed. You may then
2253   * call `getState()` to read the current state tree inside the callback.
2254   *
2255   * You may call `dispatch()` from a change listener, with the following
2256   * caveats:
2257   *
2258   * 1. The subscriptions are snapshotted just before every `dispatch()` call.
2259   * If you subscribe or unsubscribe while the listeners are being invoked, this
2260   * will not have any effect on the `dispatch()` that is currently in progress.
2261   * However, the next `dispatch()` call, whether nested or not, will use a more
2262   * recent snapshot of the subscription list.
2263   *
2264   * 2. The listener should not expect to see all state changes, as the state
2265   * might have been updated multiple times during a nested `dispatch()` before
2266   * the listener is called. It is, however, guaranteed that all subscribers
2267   * registered before the `dispatch()` started will be called with the latest
2268   * state by the time it exits.
2269   *
2270   * @param {Function} listener A callback to be invoked on every dispatch.
2271   * @returns {Function} A function to remove this change listener.
2272   */
2273  function subscribe(listener) {
2274    if (typeof listener !== 'function') {
2275      throw new Error('Expected listener to be a function.');
2276    }
2277
2278    var isSubscribed = true;
2279
2280    ensureCanMutateNextListeners();
2281    nextListeners.push(listener);
2282
2283    return function unsubscribe() {
2284      if (!isSubscribed) {
2285        return;
2286      }
2287
2288      isSubscribed = false;
2289
2290      ensureCanMutateNextListeners();
2291      var index = nextListeners.indexOf(listener);
2292      nextListeners.splice(index, 1);
2293    };
2294  }
2295
2296  /**
2297   * Dispatches an action. It is the only way to trigger a state change.
2298   *
2299   * The `reducer` function, used to create the store, will be called with the
2300   * current state tree and the given `action`. Its return value will
2301   * be considered the **next** state of the tree, and the change listeners
2302   * will be notified.
2303   *
2304   * The base implementation only supports plain object actions. If you want to
2305   * dispatch a Promise, an Observable, a thunk, or something else, you need to
2306   * wrap your store creating function into the corresponding middleware. For
2307   * example, see the documentation for the `redux-thunk` package. Even the
2308   * middleware will eventually dispatch plain object actions using this method.
2309   *
2310   * @param {Object} action A plain object representing “what changed”. It is
2311   * a good idea to keep actions serializable so you can record and replay user
2312   * sessions, or use the time travelling `redux-devtools`. An action must have
2313   * a `type` property which may not be `undefined`. It is a good idea to use
2314   * string constants for action types.
2315   *
2316   * @returns {Object} For convenience, the same action object you dispatched.
2317   *
2318   * Note that, if you use a custom middleware, it may wrap `dispatch()` to
2319   * return something else (for example, a Promise you can await).
2320   */
2321  function dispatch(action) {
2322    if (!Object(lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_0__["default"])(action)) {
2323      throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');
2324    }
2325
2326    if (typeof action.type === 'undefined') {
2327      throw new Error('Actions may not have an undefined "type" property. ' + 'Have you misspelled a constant?');
2328    }
2329
2330    if (isDispatching) {
2331      throw new Error('Reducers may not dispatch actions.');
2332    }
2333
2334    try {
2335      isDispatching = true;
2336      currentState = currentReducer(currentState, action);
2337    } finally {
2338      isDispatching = false;
2339    }
2340
2341    var listeners = currentListeners = nextListeners;
2342    for (var i = 0; i < listeners.length; i++) {
2343      listeners[i]();
2344    }
2345
2346    return action;
2347  }
2348
2349  /**
2350   * Replaces the reducer currently used by the store to calculate the state.
2351   *
2352   * You might need this if your app implements code splitting and you want to
2353   * load some of the reducers dynamically. You might also need this if you
2354   * implement a hot reloading mechanism for Redux.
2355   *
2356   * @param {Function} nextReducer The reducer for the store to use instead.
2357   * @returns {void}
2358   */
2359  function replaceReducer(nextReducer) {
2360    if (typeof nextReducer !== 'function') {
2361      throw new Error('Expected the nextReducer to be a function.');
2362    }
2363
2364    currentReducer = nextReducer;
2365    dispatch({ type: ActionTypes.INIT });
2366  }
2367
2368  /**
2369   * Interoperability point for observable/reactive libraries.
2370   * @returns {observable} A minimal observable of state changes.
2371   * For more information, see the observable proposal:
2372   * https://github.com/zenparsing/es-observable
2373   */
2374  function observable() {
2375    var _ref;
2376
2377    var outerSubscribe = subscribe;
2378    return _ref = {
2379      /**
2380       * The minimal observable subscription method.
2381       * @param {Object} observer Any object that can be used as an observer.
2382       * The observer object should have a `next` method.
2383       * @returns {subscription} An object with an `unsubscribe` method that can
2384       * be used to unsubscribe the observable from the store, and prevent further
2385       * emission of values from the observable.
2386       */
2387      subscribe: function subscribe(observer) {
2388        if (typeof observer !== 'object') {
2389          throw new TypeError('Expected the observer to be an object.');
2390        }
2391
2392        function observeState() {
2393          if (observer.next) {
2394            observer.next(getState());
2395          }
2396        }
2397
2398        observeState();
2399        var unsubscribe = outerSubscribe(observeState);
2400        return { unsubscribe: unsubscribe };
2401      }
2402    }, _ref[symbol_observable__WEBPACK_IMPORTED_MODULE_1__["default"]] = function () {
2403      return this;
2404    }, _ref;
2405  }
2406
2407  // When a store is created, an "INIT" action is dispatched so that every
2408  // reducer returns their initial state. This effectively populates
2409  // the initial state tree.
2410  dispatch({ type: ActionTypes.INIT });
2411
2412  return _ref2 = {
2413    dispatch: dispatch,
2414    subscribe: subscribe,
2415    getState: getState,
2416    replaceReducer: replaceReducer
2417  }, _ref2[symbol_observable__WEBPACK_IMPORTED_MODULE_1__["default"]] = observable, _ref2;
2418}
2419
2420/***/ }),
2421/* 44 */
2422/***/ (function(module, __webpack_exports__, __webpack_require__) {
2423
2424"use strict";
2425__webpack_require__.r(__webpack_exports__);
2426/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return compose; });
2427/**
2428 * Composes single-argument functions from right to left. The rightmost
2429 * function can take multiple arguments as it provides the signature for
2430 * the resulting composite function.
2431 *
2432 * @param {...Function} funcs The functions to compose.
2433 * @returns {Function} A function obtained by composing the argument functions
2434 * from right to left. For example, compose(f, g, h) is identical to doing
2435 * (...args) => f(g(h(...args))).
2436 */
2437
2438function compose() {
2439  for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {
2440    funcs[_key] = arguments[_key];
2441  }
2442
2443  if (funcs.length === 0) {
2444    return function (arg) {
2445      return arg;
2446    };
2447  }
2448
2449  if (funcs.length === 1) {
2450    return funcs[0];
2451  }
2452
2453  var last = funcs[funcs.length - 1];
2454  var rest = funcs.slice(0, -1);
2455  return function () {
2456    return rest.reduceRight(function (composed, f) {
2457      return f(composed);
2458    }, last.apply(undefined, arguments));
2459  };
2460}
2461
2462/***/ }),
2463/* 45 */
2464/***/ (function(module, exports, __webpack_require__) {
2465
2466"use strict";
2467
2468
2469var _interopRequireDefault = __webpack_require__(0);
2470
2471Object.defineProperty(exports, "__esModule", {
2472  value: true
2473});
2474exports.TRANSFORM_STYLE_PREFIXED = exports.TRANSFORM_PREFIXED = exports.FLEX_PREFIXED = exports.ELEMENT_MATCHES = exports.withBrowser = exports.IS_BROW
2474SER_ENV = void 0;
2475
2476var _find = _interopRequireDefault(__webpack_require__(85));
2477/* eslint-env browser */
2478
2479
2480var IS_BROWSER_ENV = typeof window !== 'undefined'; // $FlowFixMe
2481
2482exports.IS_BROWSER_ENV = IS_BROWSER_ENV;
2483
2484var withBrowser = function withBrowser(fn, fallback) {
2485  if (IS_BROWSER_ENV) {
2486    return fn();
2487  }
2488
2489  return fallback;
2490};
2491
2492exports.withBrowser = withBrowser;
2493var ELEMENT_MATCHES = withBrowser(function () {
2494  return (0, _find["default"])(['matches', 'matchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector', 'webkitMatchesSelector'], function (key) {
2495    return key in Element.prototype;
2496  });
2497});
2498exports.ELEMENT_MATCHES = ELEMENT_MATCHES;
2499var FLEX_PREFIXED = withBrowser(function () {
2500  var el = document.createElement('i');
2501  var values = ['flex', '-webkit-flex', '-ms-flexbox', '-moz-box', '-webkit-box'];
2502  var none = '';
2503
2504  try {
2505    var length = values.length;
2506
2507    for (var i = 0; i < length; i++) {
2508      var value = values[i];
2509      el.style.display = value;
2510
2511      if (el.style.display === value) {
2512        return value;
2513      }
2514    }
2515
2516    return none;
2517  } catch (err) {
2518    return none;
2519  }
2520}, 'flex');
2521exports.FLEX_PREFIXED = FLEX_PREFIXED;
2522var TRANSFORM_PREFIXED = withBrowser(function () {
2523  var el = document.createElement('i');
2524
2525  if (el.style.transform == null) {
2526    var prefixes = ['Webkit', 'Moz', 'ms'];
2527    var suffix = 'Transform';
2528    var length = prefixes.length;
2529
2530    for (var i = 0; i < length; i++) {
2531      var prop = prefixes[i] + suffix; // $FlowFixMe
2532
2533      if (el.style[prop] !== undefined) {
2534        return prop;
2535      }
2536    }
2537  }
2538
2539  return 'transform';
2540}, 'transform'); // $FlowFixMe
2541
2542exports.TRANSFORM_PREFIXED = TRANSFORM_PREFIXED;
2543var TRANSFORM_PREFIX = TRANSFORM_PREFIXED.split('transform')[0];
2544var TRANSFORM_STYLE_PREFIXED = TRANSFORM_PREFIX ? TRANSFORM_PREFIX + 'TransformStyle' : 'transformStyle';
2545exports.TRANSFORM_STYLE_PREFIXED = TRANSFORM_STYLE_PREFIXED;
2546
2547/***/ }),
2548/* 46 */
2549/***/ (function(module, exports) {
2550
2551/**
2552 * Performs a
2553 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
2554 * comparison between two values to determine if they are equivalent.
2555 *
2556 * @static
2557 * @memberOf _
2558 * @since 4.0.0
2559 * @category Lang
2560 * @param {*} value The value to compare.
2561 * @param {*} other The other value to compare.
2562 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
2563 * @example
2564 *
2565 * var object = { 'a': 1 };
2566 * var other = { 'a': 1 };
2567 *
2568 * _.eq(object, object);
2569 * // => true
2570 *
2571 * _.eq(object, other);
2572 * // => false
2573 *
2574 * _.eq('a', 'a');
2575 * // => true
2576 *
2577 * _.eq('a', Object('a'));
2578 * // => false
2579 *
2580 * _.eq(NaN, NaN);
2581 * // => true
2582 */
2583function eq(value, other) {
2584  return value === other || (value !== value && other !== other);
2585}
2586
2587module.exports = eq;
2588
2589
2590/***/ }),
2591/* 47 */
2592/***/ (function(module, exports, __webpack_require__) {
2593
2594var getNative = __webpack_require__(8),
2595    root = __webpack_require__(5);
2596
2597/* Built-in method references that are verified to be native. */
2598var Map = getNative(root, 'Map');
2599
2600module.exports = Map;
2601
2602
2603/***/ }),
2604/* 48 */
2605/***/ (function(module, exports, __webpack_require__) {
2606
2607var mapCacheClear = __webpack_require__(194),
2608    mapCacheDelete = __webpack_require__(201),
2609    mapCacheGet = __webpack_require__(203),
2610    mapCacheHas = __webpack_require__(204),
2611    mapCacheSet = __webpack_require__(205);
2612
2613/**
2614 * Creates a map cache object to store key-value pairs.
2615 *
2616 * @private
2617 * @constructor
2618 * @param {Array} [entries] The key-value pairs to cache.
2619 */
2620function MapCache(entries) {
2621  var index = -1,
2622      length = entries == null ? 0 : entries.length;
2623
2624  this.clear();
2625  while (++index < length) {
2626    var entry = entries[index];
2627    this.set(entry[0], entry[1]);
2628  }
2629}
2630
2631// Add methods to `MapCache`.
2632MapCache.prototype.clear = mapCacheClear;
2633MapCache.prototype['delete'] = mapCacheDelete;
2634MapCache.prototype.get = mapCacheGet;
2635MapCache.prototype.has = mapCacheHas;
2636MapCache.prototype.set = mapCacheSet;
2637
2638module.exports = MapCache;
2639
2640
2641/***/ }),
2642/* 49 */
2643/***/ (function(module, exports) {
2644
2645/**
2646 * Appends the elements of `values` to `array`.
2647 *
2648 * @private
2649 * @param {Array} array The array to modify.
2650 * @param {Array} values The values to append.
2651 * @returns {Array} Returns `array`.
2652 */
2653function arrayPush(array, values) {
2654  var index = -1,
2655      length = values.length,
2656      offset = array.length;
2657
2658  while (++index < length) {
2659    array[offset + index] = values[index];
2660  }
2661  return array;
2662}
2663
2664module.exports = arrayPush;
2665
2666
2667/***/ }),
2668/* 50 */
2669/***/ (function(module, exports, __webpack_require__) {
2670
2671/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(5),
2672    stubFalse = __webpack_require__(221);
2673
2674/** Detect free variable `exports`. */
2675var freeExports =  true && exports && !exports.nodeType && exports;
2676
2677/** Detect free variable `module`. */
2678var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
2679
2680/** Detect the popular CommonJS extension `module.exports`. */
2681var moduleExports = freeModule && freeModule.exports === freeExports;
2682
2683/** Built-in value references. */
2684var Buffer = moduleExports ? root.Buffer : undefined;
2685
2686/* Built-in method references for those with the same name as other `lodash` methods. */
2687var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;
2688
2689/**
2690 * Checks if `value` is a buffer.
2691 *
2692 * @static
2693 * @memberOf _
2694 * @since 4.3.0
2695 * @category Lang
2696 * @param {*} value The value to check.
2697 * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
2698 * @example
2699 *
2700 * _.isBuffer(new Buffer(2));
2701 * // => true
2702 *
2703 * _.isBuffer(new Uint8Array(2));
2704 * // => false
2705 */
2706var isBuffer = nativeIsBuffer || stubFalse;
2707
2708module.exports = isBuffer;
2709
2710/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(97)(module)))
2711
2712/***/ }),
2713/* 51 */
vendor: 5,342 bytes, lines 2714-2922
2714/***/ (function(module, exports) {
2715
2716/** Used as references for various `Number` constants. */
2717var MAX_SAFE_INTEGER = 9007199254740991;
2718
2719/** Used to detect unsigned integer values. */
2720var reIsUint = /^(?:0|[1-9]\d*)$/;
2721
2722/**
2723 * Checks if `value` is a valid array-like index.
2724 *
2725 * @private
2726 * @param {*} value The value to check.
2727 * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
2728 * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
2729 */
2730function isIndex(value, length) {
2731  var type = typeof value;
2732  length = length == null ? MAX_SAFE_INTEGER : length;
2733
2734  return !!length &&
2735    (type == 'number' ||
2736      (type != 'symbol' && reIsUint.test(value))) &&
2737        (value > -1 && value % 1 == 0 && value < length);
2738}
2739
2740module.exports = isIndex;
2741
2742
2743/***/ }),
2744/* 52 */
2745/***/ (function(module, exports, __webpack_require__) {
2746
2747var baseIsTypedArray = __webpack_require__(222),
2748    baseUnary = __webpack_require__(223),
2749    nodeUtil = __webpack_require__(224);
2750
2751/* Node.js helper references. */
2752var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
2753
2754/**
2755 * Checks if `value` is classified as a typed array.
2756 *
2757 * @static
2758 * @memberOf _
2759 * @since 3.0.0
2760 * @category Lang
2761 * @param {*} value The value to check.
2762 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
2763 * @example
2764 *
2765 * _.isTypedArray(new Uint8Array);
2766 * // => true
2767 *
2768 * _.isTypedArray([]);
2769 * // => false
2770 */
2771var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
2772
2773module.exports = isTypedArray;
2774
2775
2776/***/ }),
2777/* 53 */
2778/***/ (function(module, exports) {
2779
2780/** Used as references for various `Number` constants. */
2781var MAX_SAFE_INTEGER = 9007199254740991;
2782
2783/**
2784 * Checks if `value` is a valid array-like length.
2785 *
2786 * **Note:** This method is loosely based on
2787 * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
2788 *
2789 * @static
2790 * @memberOf _
2791 * @since 4.0.0
2792 * @category Lang
2793 * @param {*} value The value to check.
2794 * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
2795 * @example
2796 *
2797 * _.isLength(3);
2798 * // => true
2799 *
2800 * _.isLength(Number.MIN_VALUE);
2801 * // => false
2802 *
2803 * _.isLength(Infinity);
2804 * // => false
2805 *
2806 * _.isLength('3');
2807 * // => false
2808 */
2809function isLength(value) {
2810  return typeof value == 'number' &&
2811    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
2812}
2813
2814module.exports = isLength;
2815
2816
2817/***/ }),
2818/* 54 */
2819/***/ (function(module, exports, __webpack_require__) {
2820
2821var isPrototype = __webpack_require__(55),
2822    nativeKeys = __webpack_require__(225);
2823
2824/** Used for built-in method references. */
2825var objectProto = Object.prototype;
2826
2827/** Used to check objects for own properties. */
2828var hasOwnProperty = objectProto.hasOwnProperty;
2829
2830/**
2831 * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
2832 *
2833 * @private
2834 * @param {Object} object The object to query.
2835 * @returns {Array} Returns the array of property names.
2836 */
2837function baseKeys(object) {
2838  if (!isPrototype(object)) {
2839    return nativeKeys(object);
2840  }
2841  var result = [];
2842  for (var key in Object(object)) {
2843    if (hasOwnProperty.call(object, key) && key != 'constructor') {
2844      result.push(key);
2845    }
2846  }
2847  return result;
2848}
2849
2850module.exports = baseKeys;
2851
2852
2853/***/ }),
2854/* 55 */
2855/***/ (function(module, exports) {
2856
2857/** Used for built-in method references. */
2858var objectProto = Object.prototype;
2859
2860/**
2861 * Checks if `value` is likely a prototype object.
2862 *
2863 * @private
2864 * @param {*} value The value to check.
2865 * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
2866 */
2867function isPrototype(value) {
2868  var Ctor = value && value.constructor,
2869      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
2870
2871  return value === proto;
2872}
2873
2874module.exports = isPrototype;
2875
2876
2877/***/ }),
2878/* 56 */
2879/***/ (function(module, exports, __webpack_require__) {
2880
2881var DataView = __webpack_require__(226),
2882    Map = __webpack_require__(47),
2883    Promise = __webpack_require__(227),
2884    Set = __webpack_require__(228),
2885    WeakMap = __webpack_require__(99),
2886    baseGetTag = __webpack_require__(11),
2887    toSource = __webpack_require__(90);
2888
2889/** `Object#toString` result references. */
2890var mapTag = '[object Map]',
2891    objectTag = '[object Object]',
2892    promiseTag = '[object Promise]',
2893    setTag = '[object Set]',
2894    weakMapTag = '[object WeakMap]';
2895
2896var dataViewTag = '[object DataView]';
2897
2898/** Used to detect maps, sets, and weakmaps. */
2899var dataViewCtorString = toSource(DataView),
2900    mapCtorString = toSource(Map),
2901    promiseCtorString = toSource(Promise),
2902    setCtorString = toSource(Set),
2903    weakMapCtorString = toSource(WeakMap);
2904
2905/**
2906 * Gets the `toStringTag` of `value`.
2907 *
2908 * @private
2909 * @param {*} value The value to query.
2910 * @returns {string} Returns the `toStringTag`.
2911 */
2912var getTag = baseGetTag;
2913
2914// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
2915if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
2916    (Map && getTag(new Map) != mapTag) ||
2917    (Promise && getTag(Promise.resolve()) != promiseTag) ||
2918    (Set && getTag(new Set) != setTag) ||
2919    (WeakMap && getTag(new WeakMap) != weakMapTag)) {
2920  getTag = function(value) {
2921    var result = baseGetTag(value),
2922        Ctor = result == objectTag ? value.constructor : undefined,
2923        ctorString = Ctor ? toSource(Ctor) : '';
2924
2925    if (ctorString) {
2926      switch (ctorString) {
2927        case dataViewCtorString: return dataViewTag;
2928        case mapCtorString: return mapTag;
2929        case promiseCtorString: return promiseTag;
2930        case setCtorString: return setTag;
2931        case weakMapCtorString: return weakMapTag;
2932      }
2933    }
2934    return result;
2935  };
2936}
2937
2938module.exports = getTag;
2939
2940
2941/***/ }),
2942/* 57 */
2943/***/ (function(module, exports, __webpack_require__) {
2944
2945var castPath = __webpack_require__(36),
2946    toKey = __webpack_require__(20);
2947
2948/**
2949 * The base implementation of `_.get` without support for default values.
2950 *
2951 * @private
2952 * @param {Object} object The object to query.
2953 * @param {Array|string} path The path of the property to get.
2954 * @returns {*} Returns the resolved value.
2955 */
2956function baseGet(object, path) {
2957  path = castPath(path, object);
2958
2959  var index = 0,
2960      length = path.length;
2961
2962  while (object != null && index < length) {
2963    object = object[toKey(path[index++])];
2964  }
2965  return (index && index == length) ? object : undefined;
2966}
2967
2968module.exports = baseGet;
2969
2970
2971/***/ }),
2972/* 58 */
2973/***/ (function(module, exports, __webpack_require__) {
2974
2975var isArray = __webpack_require__(1),
2976    isSymbol = __webpack_require__(37);
2977
2978/** Used to match property names within property paths. */
2979var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
2980    reIsPlainProp = /^\w*$/;
2981
2982/**
2983 * Checks if `value` is a property name and not a property path.
2984 *
2985 * @private
2986 * @param {*} value The value to check.
2987 * @param {Object} [object] The object to query keys on.
2988 * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
2989 */
2990function isKey(value, object) {
2991  if (isArray(value)) {
2992    return false;
2993  }
2994  var type = typeof value;
2995  if (type == 'number' || type == 'symbol' || type == 'boolean' ||
2996      value == null || isSymbol(value)) {
2997    return true;
2998  }
2999  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
3000    (object != null && value in Object(object));
3001}
3002
3003module.exports = isKey;
3004
3005
3006/***/ }),
3007/* 59 */
3008/***/ (function(module, exports) {
3009
3010/**
3011 * This method returns the first argument it receives.
3012 *
3013 * @static
3014 * @since 0.1.0
3015 * @memberOf _
3016 * @category Util
3017 * @param {*} value Any value.
3018 * @returns {*} Returns `value`.
3019 * @example
3020 *
3021 * var object = { 'a': 1 };
3022 *
3023 * console.log(_.identity(object) === object);
3024 * // => true
3025 */
3026function identity(value) {
3027  return value;
3028}
3029
3030module.exports = identity;
3031
3032
3033/***/ }),
3034/* 60 */
3035/***/ (function(module, exports, __webpack_require__) {
3036
3037var isObject = __webpack_require__(6),
3038    isSymbol = __webpack_require__(37);
3039
3040/** Used as references for various `Number` constants. */
3041var NAN = 0 / 0;
3042
3043/** Used to match leading and trailing whitespace. */
3044var reTrim = /^\s+|\s+$/g;
3045
3046/** Used to detect bad signed hexadecimal string values. */
3047var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
3048
3049/** Used to detect binary string values. */
3050var reIsBinary = /^0b[01]+$/i;
3051
3052/** Used to detect octal string values. */
3053var reIsOctal = /^0o[0-7]+$/i;
3054
3055/** Built-in method references without a dependency on `root`. */
3056var freeParseInt = parseInt;
3057
3058/**
3059 * Converts `value` to a number.
3060 *
3061 * @static
3062 * @memberOf _
3063 * @since 4.0.0
3064 * @category Lang
3065 * @param {*} value The value to process.
3066 * @returns {number} Returns the number.
3067 * @example
3068 *
3069 * _.toNumber(3.2);
3070 * // => 3.2
3071 *
3072 * _.toNumber(Number.MIN_VALUE);
3073 * // => 5e-324
3074 *
3075 * _.toNumber(Infinity);
3076 * // => Infinity
3077 *
3078 * _.toNumber('3.2');
3079 * // => 3.2
3080 */
3081function toNumber(value) {
3082  if (typeof value == 'number') {
3083    return value;
3084  }
3085  if (isSymbol(value)) {
3086    return NAN;
3087  }
3088  if (isObject(value)) {
3089    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
3090    value = isObject(other) ? (other + '') : other;
3091  }
3092  if (typeof value != 'string') {
3093    return value === 0 ? value : +value;
3094  }
3095  value = value.replace(reTrim, '');
3096  var isBinary = reIsBinary.test(value);
3097  return (isBinary || reIsOctal.test(value))
3098    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
3099    : (reIsBadHex.test(value) ? NAN : +value);
3100}
3101
3102module.exports = toNumber;
3103
3104
3105/***/ }),
3106/* 61 */
3107/***/ (function(module, exports, __webpack_require__) {
3108
3109"use strict";
3110
3111
3112var _interopRequireDefault = __webpack_require__(0);
3113
3114Object.defineProperty(exports, "__esModule", {
3115  value: true
3116});
3117exports.mediaQueriesDefined = exports.viewportWidthChanged = exports.actionListPlaybackChanged = exports.elementStateChanged = exports.instanceRemoved = exports.instanceStarted = exports.instanceAdded = exports.parameterChanged = exports.animationFrameChanged = exports.eventStateChanged = exports.testFrameRendered = exports.eventListenerAdded = exports.clearRequested = exports.stopRequested = exports.playbackRequested = exports.previewRequested = exports.sessionStopped = exports.sessionStarted = exports.sessionInitialized = exports.rawDataImported = void 0;
3118
3119var _extends2 = _interopRequireDefault(__webpack_require__(28));
3120
3121var _constants = __webpack_require__(2);
3122
3123var _shared = __webpack_require__(10);
3124
3125var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
3126    IX2_RAW_DATA_IMPORTED = _constants$IX2EngineA.IX2_RAW_DATA_IMPORTED,
3127    IX2_SESSION_INITIALIZED = _constants$IX2EngineA.IX2_SESSION_INITIALIZED,
3128    IX2_SESSION_STARTED = _constants$IX2EngineA.IX2_SESSION_STARTED,
3129    IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED,
3130    IX2_PREVIEW_REQUESTED = _constants$IX2EngineA.IX2_PREVIEW_REQUESTED,
3131    IX2_PLAYBACK_REQUESTED = _constants$IX2EngineA.IX2_PLAYBACK_REQUESTED,
3132    IX2_STOP_REQUESTED = _constants$IX2EngineA.IX2_STOP_REQUESTED,
3133    IX2_CLEAR_REQUESTED = _constants$IX2EngineA.IX2_CLEAR_REQUESTED,
3134    IX2_EVENT_LISTENER_ADDED = _constants$IX2EngineA.IX2_EVENT_LISTENER_ADDED,
3135    IX2_TEST_FRAME_RENDERED = _constants$IX2EngineA.IX2_TEST_FRAME_RENDERED,
3136    IX2_EVENT_STATE_CHANGED = _constants$IX2EngineA.IX2_EVENT_STATE_CHANGED,
3137    IX2_ANIMATION_FRAME_CHANGED = _constants$IX2EngineA.IX2_ANIMATION_FRAME_CHANGED,
3138    IX2_PARAMETER_CHANGED = _constants$IX2EngineA.IX2_PARAMETER_CHANGED,
3139    IX2_INSTANCE_ADDED = _constants$IX2EngineA.IX2_INSTANCE_ADDED,
3140    IX2_INSTANCE_STARTED = _constants$IX2EngineA.IX2_INSTANCE_STARTED,
3141    IX2_INSTANCE_REMOVED = _constants$IX2EngineA.IX2_INSTANCE_REMOVED,
3142    IX2_ELEMENT_STATE_CHANGED = _constants$IX2EngineA.IX2_ELEMENT_STATE_CHANGED,
3143    IX2_ACTION_LIST_PLAYBACK_CHANGED = _constants$IX2EngineA.IX2_ACTION_LIST_PLAYBACK_CHANGED,
3144    IX2_VIEWPORT_WIDTH_CHANGED = _constants$IX2EngineA.IX2_VIEWPORT_WIDTH_CHANGED,
3145    IX2_MEDIA_QUERIES_DEFINED = _constants$IX2EngineA.IX2_MEDIA_QUERIES_DEFINED;
3146var reifyState = _shared.IX2VanillaUtils.reifyState; // TODO: Figure out what this is and elevate it
3147
3148var rawDataImported = function rawDataImported(rawData) {
3149  return {
3150    type: IX2_RAW_DATA_IMPORTED,
3151    payload: (0, _extends2["default"])({}, reifyState(rawData))
3152  };
3153};
3154
3155exports.rawDataImported = rawDataImported;
3156
3157var sessionInitialized = function sessionInitialized(_ref) {
3158  var hasBoundaryNodes = _ref.hasBoundaryNodes;
3159  return {
3160    type: IX2_SESSION_INITIALIZED,
3161    payload: {
3162      hasBoundaryNodes: hasBoundaryNodes
3163    }
3164  };
3165};
3166
3167exports.sessionInitialized = sessionInitialized;
3168
3169var sessionStarted = function sessionStarted() {
3170  return {
3171    type: IX2_SESSION_STARTED
3172  };
3173};
3174
3175exports.sessionStarted = sessionStarted;
3176
3177var sessionStopped = function sessionStopped() {
3178  return {
3179    type: IX2_SESSION_STOPPED
3180  };
3181};
3182
3183exports.sessionStopped = sessionStopped;
3184
3185var previewRequested = function previewRequested(_ref2) {
3186  var rawData = _ref2.rawData,
3187      defer = _ref2.defer;
3188  return {
3189    type: IX2_PREVIEW_REQUESTED,
3190    payload: {
3191      defer: defer,
3192      rawData: rawData
3193    }
3194  };
3195};
3196
3197exports.previewRequested = previewRequested;
3198
3199var playbackRequested = function playbackRequested(_ref3) {
3200  var _ref3$actionTypeId = _ref3.actionTypeId,
3201      actionTypeId = _ref3$actionTypeId === void 0 ? _constants.ActionTypeConsts.GENERAL_START_ACTION : _ref3$actionTypeId,
3202      actionListId = _ref3.actionListId,
3203      actionItemId = _ref3.actionItemId,
3204      eventId = _ref3.eventId,
3205      allowEvents = _ref3.allowEvents,
3206      immediate = _ref3.immediate,
3207      testManual = _ref3.testManual,
3208      verbose = _ref3.verbose,
3209      rawData = _ref3.rawData;
3210  return {
3211    type: IX2_PLAYBACK_REQUESTED,
3212    payload: {
3213      actionTypeId: actionTypeId,
3214      actionListId: actionListId,
3215      actionItemId: actionItemId,
3216      testManual: testManual,
3217      eventId: eventId,
3218      allowEvents: allowEvents,
3219      immediate: immediate,
3220      verbose: verbose,
3221      rawData: rawData
3222    }
3223  };
3224};
3225
3226exports.playbackRequested = playbackRequested;
3227
3228var stopRequested = function stopRequested(actionListId) {
3229  return {
3230    type: IX2_STOP_REQUESTED,
3231    payload: {
3232      actionListId: actionListId
3233    }
3234  };
3235};
3236
3237exports.stopRequested = stopRequested;
3238
3239var clearRequested = function clearRequested() {
3240  return {
3241    type: IX2_CLEAR_REQUESTED
3242  };
3243};
3244
3245exports.clearRequested = clearRequested;
3246
3247var eventListenerAdded = function eventListenerAdded(target, listenerParams) {
3248  return {
3249    type: IX2_EVENT_LISTENER_ADDED,
3250    payload: {
3251      target: target,
3252      listenerParams: listenerParams
3253    }
3254  };
3255};
3256
3257exports.eventListenerAdded = eventListenerAdded;
3258
3259var testFrameRendered = function testFrameRendered() {
3260  var step = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
3261  return {
3262    type: IX2_TEST_FRAME_RENDERED,
3263    payload: {
3264      step: step
3265    }
3266  };
3267};
3268
3269exports.testFrameRendered = testFrameRendered;
3270
3271var eventStateChanged = function eventStateChanged(stateKey, newState) {
3272  return {
3273    type: IX2_EVENT_STATE_CHANGED,
3274    payload: {
3275      stateKey: stateKey,
3276      newState: newState
3277    }
3278  };
3279};
3280
3281exports.eventStateChanged = eventStateChanged;
3282
3283var animationFrameChanged = function animationFrameChanged(now, parameters) {
3284  return {
3285    type: IX2_ANIMATION_FRAME_CHANGED,
3286    payload: {
3287      now: now,
3288      parameters: parameters
3289    }
3290  };
3291};
3292
3293exports.animationFrameChanged = animationFrameChanged;
3294
3295var parameterChanged = function parameterChanged(key, value) {
3296  return {
3297    type: IX2_PARAMETER_CHANGED,
3298    payload: {
3299      key: key,
3300      value: value
3301    }
3302  };
3303};
3304
3305exports.parameterChanged = parameterChanged;
3306
3307var instanceAdded = function instanceAdded(options) {
3308  return {
3309    type: IX2_INSTANCE_ADDED,
3310    payload: (0, _extends2["default"])({}, options)
3311  };
3312};
3313
3314exports.instanceAdded = instanceAdded;
3315
3316var instanceStarted = function instanceStarted(instanceId, time) {
3317  return {
3318    type: IX2_INSTANCE_STARTED,
3319    payload: {
3320      instanceId: instanceId,
3321      time: time
3322    }
3323  };
3324};
3325
3326exports.instanceStarted = instanceStarted;
3327
3328var instanceRemoved = function instanceRemoved(instanceId) {
3329  return {
3330    type: IX2_INSTANCE_REMOVED,
3331    payload: {
3332      instanceId: instanceId
3333    }
3334  };
3335};
3336
3337exports.instanceRemoved = instanceRemoved;
3338
3339var elementStateChanged = function elementStateChanged(elementId, actionTypeId, current, actionItem) {
3340  return {
3341    type: IX2_ELEMENT_STATE_CHANGED,
3342    payload: {
3343      elementId: elementId,
3344      actionTypeId: actionTypeId,
3345      current: current,
3346      actionItem: actionItem
3347    }
3348  };
3349};
3350
3351exports.elementStateChanged = elementStateChanged;
3352
3353var actionListPlaybackChanged = function actionListPlaybackChanged(_ref4) {
3354  var actionListId = _ref4.actionListId,
3355      isPlaying = _ref4.isPlaying;
3356  return {
3357    type: IX2_ACTION_LIST_PLAYBACK_CHANGED,
3358    payload: {
3359      actionListId: actionListId,
3360      isPlaying: isPlaying
3361    }
3362  };
3363};
3364
3365exports.actionListPlaybackChanged = actionListPlaybackChanged;
3366
3367var viewportWidthChanged = function viewportWidthChanged(_ref5) {
3368  var width = _ref5.width,
3369      mediaQueries = _ref5.mediaQueries;
3370  return {
3371    type: IX2_VIEWPORT_WIDTH_CHANGED,
3372    payload: {
3373      width: width,
3374      mediaQueries: mediaQueries
3375    }
3376  };
3377};
3378
3379exports.viewportWidthChanged = viewportWidthChanged;
3380
3381var mediaQueriesDefined = function mediaQueriesDefined() {
3382  return {
3383    type: IX2_MEDIA_QUERIES_DEFINED
3384  };
3385};
3386
3387exports.mediaQueriesDefined = mediaQueriesDefined;
3388
3389/***/ }),
3390/* 62 */
3391/***/ (function(module, exports, __webpack_require__) {
3392
3393var baseCreate = __webpack_require__(117),
3394    baseLodash = __webpack_require__(63);
3395
3396/**
3397 * The base constructor for creating `lodash` wrapper objects.
3398 *
3399 * @private
3400 * @param {*} value The value to wrap.
3401 * @param {boolean} [chainAll] Enable explicit method chain sequences.
3402 */
3403function LodashWrapper(value, chainAll) {
3404  this.__wrapped__ = value;
3405  this.__actions__ = [];
3406  this.__chain__ = !!chainAll;
3407  this.__index__ = 0;
3408  this.__values__ = undefined;
3409}
3410
3411LodashWrapper.prototype = baseCreate(baseLodash.prototype);
3412LodashWrapper.prototype.constructor = LodashWrapper;
3413
3414module.exports = LodashWrapper;
3415
3416
3417/***/ }),
3418/* 63 */
3419/***/ (function(module, exports) {
3420
3421/**
3422 * The function whose prototype chain sequence wrappers inherit from.
3423 *
3424 * @private
3425 */
3426function baseLodash() {
3427  // No operation performed.
3428}
3429
3430module.exports = baseLodash;
3431
3432
3433/***/ }),
3434/* 64 */
3435/***/ (function(module, exports, __webpack_require__) {
3436
3437var baseCreate = __webpack_require__(117),
3438    baseLodash = __webpack_require__(63);
3439
3440/** Used as references for the maximum length and index of an array. */
3441var MAX_ARRAY_LENGTH = 4294967295;
3442
3443/**
3444 * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.
3445 *
3446 * @private
3447 * @constructor
3448 * @param {*} value The value to wrap.
3449 */
3450function LazyWrapper(value) {
3451  this.__wrapped__ = value;
3452  this.__actions__ = [];
3453  this.__dir__ = 1;
3454  this.__filtered__ = false;
3455  this.__iteratees__ = [];
3456  this.__takeCount__ = MAX_ARRAY_LENGTH;
3457  this.__views__ = [];
3458}
3459
3460// Ensure `LazyWrapper` is an instance of `baseLodash`.
3461LazyWrapper.prototype = baseCreate(baseLodash.prototype);
3462LazyWrapper.prototype.constructor = LazyWrapper;
3463
3464module.exports = LazyWrapper;
3465
3466
3467/***/ }),
3468/* 65 */
3469/***/ (function(module, exports, __webpack_require__) {
3470
3471"use strict";
3472 // @wf-will-never-add-flow-to-this-file
3473
3474/* eslint-disable eslint-comments/no-unlimited-disable */
3475
3476/* eslint-disable */
3477
3478/*!
3479 * tram.js v0.8.2-global
3480 * Cross-browser CSS3 transitions in JavaScript
3481 * https://github.com/bkwld/tram
3482 * MIT License
3483 */
3484
3485/* prettier-ignore */
3486
3487var _interopRequireDefault = __webpack_require__(0);
3488
3489var _typeof2 = _interopRequireDefault(__webpack_require__(21));
3490
3491window.tram = function (a) {
3492  function b(a, b) {
3493    var c = new M.Bare();
3494    return c.init(a, b);
3495  }
3496
3497  function c(a) {
3498    return a.replace(/[A-Z]/g, function (a) {
3499      return "-" + a.toLowerCase();
3500    });
3501  }
3502
3503  function d(a) {
3504    var b = parseInt(a.slice(1), 16),
3505        c = b >> 16 & 255,
3506        d = b >> 8 & 255,
3507        e = 255 & b;
3508    return [c, d, e];
3509  }
3510
3511  function e(a, b, c) {
3512    return "#" + (1 << 24 | a << 16 | b << 8 | c).toString(16).slice(1);
3513  }
3514
3515  function f() {}
3516
3517  function g(a, b) {
3518    j("Type warning: Expected: [" + a + "] Got: [" + (0, _typeof2["default"])(b) + "] " + b);
3519  }
3520
3521  function h(a, b, c) {
3522    j("Units do not match [" + a + "]: " + b + ", " + c);
3523  }
3524
3525  function i(a, b, c) {
3526    if (void 0 !== b && (c = b), void 0 === a) return c;
3527    var d = c;
3528    return $.test(a) || !_.test(a) ? d = parseInt(a, 10) : _.test(a) && (d = 1e3 * parseFloat(a)), 0 > d && (d = 0), d === d ? d : c;
3529  }
3530
3531  function j(a) {
3532    U.debug && window && window.console.warn(a);
3533  }
3534
3535  function k(a) {
3536    for (var b = -1, c = a ? a.length : 0, d = []; ++b < c;) {
3537      var e = a[b];
3538      e && d.push(e);
3539    }
3540
3541    return d;
3542  }
3543
3544  var l = function (a, b, c) {
3545    function d(a) {
3546      return "object" == (0, _typeof2["default"])(a);
3547    }
3548
3549    function e(a) {
3550      return "function" == typeof a;
3551    }
3552
3553    function f() {}
3554
3555    function g(h, i) {
3556      function j() {
3557        var a = new k();
3558        return e(a.init) && a.init.apply(a, arguments), a;
3559      }
3560
3561      function k() {}
3562
3563      i === c && (i = h, h = Object), j.Bare = k;
3564      var l,
3565          m = f[a] = h[a],
3566          n = k[a] = j[a] = new f();
3567      return n.constructor = j, j.mixin = function (b) {
3568        return k[a] = j[a] = g(j, b)[a], j;
3569      }, j.open = function (a) {
3570        if (l = {}, e(a) ? l = a.call(j, n, m, j, h) : d(a) && (l = a), d(l)) for (var c in l) {
3571          b.call(l, c) && (n[c] = l[c]);
3572        }
3573        return e(n.init) || (n.init = h), j;
3574      }, j.open(i);
3575    }
3576
3577    return g;
3578  }("prototype", {}.hasOwnProperty),
3579      m = {
3580    ease: ["ease", function (a, b, c, d) {
3581      var e = (a /= d) * a,
3582          f = e * a;
3583      return b + c * (-2.75 * f * e + 11 * e * e + -15.5 * f + 8 * e + .25 * a);
3584    }],
3585    "ease-in": ["ease-in", function (a, b, c, d) {
3586      var e = (a /= d) * a,
3587          f = e * a;
3588      return b + c * (-1 * f * e + 3 * e * e + -3 * f + 2 * e);
3589    }],
3590    "ease-out": ["ease-out", function (a, b, c, d) {
3591      var e = (a /= d) * a,
3592          f = e * a;
3593      return b + c * (.3 * f * e + -1.6 * e * e + 2.2 * f + -1.8 * e + 1.9 * a);
3594    }],
3595    "ease-in-out": ["ease-in-out", function (a, b, c, d) {
3596      var e = (a /= d) * a,
3597          f = e * a;
3598      return b + c * (2 * f * e + -5 * e * e + 2 * f + 2 * e);
3599    }],
3600    linear: ["linear", function (a, b, c, d) {
3601      return c * a / d + b;
3602    }],
3603    "ease-in-quad": ["cubic-bezier(0.550, 0.085, 0.680, 0.530)", function (a, b, c, d) {
3604      return c * (a /= d) * a + b;
3605    }],
3606    "ease-out-quad": ["cubic-bezier(0.250, 0.460, 0.450, 0.940)", function (a, b, c, d) {
3607      return -c * (a /= d) * (a - 2) + b;
3608    }],
3609    "ease-in-out-quad": ["cubic-bezier(0.455, 0.030, 0.515, 0.955)", function (a, b, c, d) {
3610      return (a /= d / 2) < 1 ? c / 2 * a * a + b : -c / 2 * (--a * (a - 2) - 1) + b;
3611    }],
3612    "ease-in-cubic": ["cubic-bezier(0.550, 0.055, 0.675, 0.190)", function (a, b, c, d) {
3613      return c * (a /= d) * a * a + b;
3614    }],
3615    "ease-out-cubic": ["cubic-bezier(0.215, 0.610, 0.355, 1)", function (a, b, c, d) {
3616      return c * ((a = a / d - 1) * a * a + 1) + b;
3617    }],
3618    "ease-in-out-cubic": ["cubic-bezier(0.645, 0.045, 0.355, 1)", function (a, b, c, d) {
3619      return (a /= d / 2) < 1 ? c / 2 * a * a * a + b : c / 2 * ((a -= 2) * a * a + 2) + b;
3620    }],
3621    "ease-in-quart": ["cubic-bezier(0.895, 0.030, 0.685, 0.220)", function (a, b, c, d) {
3622      return c * (a /= d) * a * a * a + b;
3623    }],
3624    "ease-out-quart": ["cubic-bezier(0.165, 0.840, 0.440, 1)", function (a, b, c, d) {
3625      return -c * ((a = a / d - 1) * a * a * a - 1) + b;
3626    }],
3627    "ease-in-out-quart": ["cubic-bezier(0.770, 0, 0.175, 1)", function (a, b, c, d) {
3628      return (a /= d / 2) < 1 ? c / 2 * a * a * a * a + b : -c / 2 * ((a -= 2) * a * a * a - 2) + b;
3629    }],
3630    "ease-in-quint": ["cubic-bezier(0.755, 0.050, 0.855, 0.060)", function (a, b, c, d) {
3631      return c * (a /= d) * a * a * a * a + b;
3632    }],
3633    "ease-out-quint": ["cubic-bezier(0.230, 1, 0.320, 1)", function (a, b, c, d) {
3634      return c * ((a = a / d - 1) * a * a * a * a + 1) + b;
3635    }],
3636    "ease-in-out-quint": ["cubic-bezier(0.860, 0, 0.070, 1)", function (a, b, c, d) {
3637      return (a /= d / 2) < 1 ? c / 2 * a * a * a * a * a + b : c / 2 * ((a -= 2) * a * a * a * a + 2) + b;
3638    }],
3639    "ease-in-sine": ["cubic-bezier(0.470, 0, 0.745, 0.715)", function (a, b, c, d) {
3640      return -c * Math.cos(a / d * (Math.PI / 2)) + c + b;
3641    }],
3642    "ease-out-sine": ["cubic-bezier(0.390, 0.575, 0.565, 1)", function (a, b, c, d) {
3643      return c * Math.sin(a / d * (Math.PI / 2)) + b;
3644    }],
3645    "ease-in-out-sine": ["cubic-bezier(0.445, 0.050, 0.550, 0.950)", function (a, b, c, d) {
3646      return -c / 2 * (Math.cos(Math.PI * a / d) - 1) + b;
3647    }],
3648    "ease-in-expo": ["cubic-bezier(0.950, 0.050, 0.795, 0.035)", function (a, b, c, d) {
3649      return 0 === a ? b : c * Math.pow(2, 10 * (a / d - 1)) + b;
3650    }],
3651    "ease-out-expo": ["cubic-bezier(0.190, 1, 0.220, 1)", function (a, b, c, d) {
3652      return a === d ? b + c : c * (-Math.pow(2, -10 * a / d) + 1) + b;
3653    }],
3654    "ease-in-out-expo": ["cubic-bezier(1, 0, 0, 1)", function (a, b, c, d) {
3655      return 0 === a ? b : a === d ? b + c : (a /= d / 2) < 1 ? c / 2 * Math.pow(2, 10 * (a - 1)) + b : c / 2 * (-Math.pow(2, -10 * --a) + 2) + b;
3656    }],
3657    "ease-in-circ": ["cubic-bezier(0.600, 0.040, 0.980, 0.335)", function (a, b, c, d) {
3658      return -c * (Math.sqrt(1 - (a /= d) * a) - 1) + b;
3659    }],
3660    "ease-out-circ": ["cubic-bezier(0.075, 0.820, 0.165, 1)", function (a, b, c, d) {
3661      return c * Math.sqrt(1 - (a = a / d - 1) * a) + b;
3662    }],
3663    "ease-in-out-circ": ["cubic-bezier(0.785, 0.135, 0.150, 0.860)", function (a, b, c, d) {
3664      return (a /= d / 2) < 1 ? -c / 2 * (Math.sqrt(1 - a * a) - 1) + b : c / 2 * (Math.sqrt(1 - (a -= 2) * a) + 1) + b;
3665    }],
3666    "ease-in-back": ["cubic-bezier(0.600, -0.280, 0.735, 0.045)", function (a, b, c, d, e) {
3667      return void 0 === e && (e = 1.70158), c * (a /= d) * a * ((e + 1) * a - e) + b;
3668    }],
3669    "ease-out-back": ["cubic-bezier(0.175, 0.885, 0.320, 1.275)", function (a, b, c, d, e) {
3670      return void 0 === e && (e = 1.70158), c * ((a = a / d - 1) * a * ((e + 1) * a + e) + 1) + b;
3671    }],
3672    "ease-in-out-back": ["cubic-bezier(0.680, -0.550, 0.265, 1.550)", function (a, b, c, d, e) {
3673      return void 0 === e && (e = 1.70158), (a /= d / 2) < 1 ? c / 2 * a * a * (((e *= 1.525) + 1) * a - e) + b : c / 2 * ((a -= 2) * a * (((e *= 1.525) + 1) * a + e) + 2) + b;
3674    }]
3675  },
3676      n = {
3677    "ease-in-back": "cubic-bezier(0.600, 0, 0.735, 0.045)",
3678    "ease-out-back": "cubic-bezier(0.175, 0.885, 0.320, 1)",
3679    "ease-in-out-back": "cubic-bezier(0.680, 0, 0.265, 1)"
3680  },
3681      o = document,
3682      p = window,
3683      q = "bkwld-tram",
3684      r = /[\-\.0-9]/g,
3685      s = /[A-Z]/,
3686      t = "number",
3687      u = /^(rgb|#)/,
3688      v = /(em|cm|mm|in|pt|pc|px)$/,
3689      w = /(em|cm|mm|in|pt|pc|px|%)$/,
3690      x = /(deg|rad|turn)$/,
3691      y = "unitless",
3692      z = /(all|none) 0s ease 0s/,
3693      A = /^(width|height)$/,
3694      B = " ",
3695      C = o.createElement("a"),
3696      D = ["Webkit", "Moz", "O", "ms"],
3697      E = ["-webkit-", "-moz-", "-o-", "-ms-"],
3698      F = function F(a) {
3699    if (a in C.style) return {
3700      dom: a,
3701      css: a
3702    };
3703    var b,
3704        c,
3705        d = "",
3706        e = a.split("-");
3707
3708    for (b = 0; b < e.length; b++) {
3709      d += e[b].charAt(0).toUpperCase() + e[b].slice(1);
3710    }
3711
3712    for (b = 0; b < D.length; b++) {
3713      if (c = D[b] + d, c in C.style) return {
3714        dom: c,
3715        css: E[b] + a
3716      };
3717    }
3718  },
3719      G = b.support = {
3720    bind: Function.prototype.bind,
3721    transform: F("transform"),
3722    transition: F("transition"),
3723    backface: F("backface-visibility"),
3724    timing: F("transition-timing-function")
3725  };
3726
3727  if (G.transition) {
3728    var H = G.timing.dom;
3729    if (C.style[H] = m["ease-in-back"][0], !C.style[H]) for (var I in n) {
3730      m[I][0] = n[I];
3731    }
3732  }
3733
3734  var J = b.frame = function () {
3735    var a = p.requestAnimationFrame || p.webkitRequestAnimationFrame || p.mozRequestAnimationFrame || p.oRequestAnimationFrame || p.msRequestAnimationFrame;
3736    return a && G.bind ? a.bind(p) : function (a) {
3737      p.setTimeout(a, 16);
3738    };
3739  }(),
3740      K = b.now = function () {
3741    var a = p.performance,
3742        b = a && (a.now || a.webkitNow || a.msNow || a.mozNow);
3743    return b && G.bind ? b.bind(a) : Date.now || function () {
3744      return +new Date();
3745    };
3746  }(),
3747      L = l(function (b) {
3748    function d(a, b) {
3749      var c = k(("" + a).split(B)),
3750          d = c[0];
3751      b = b || {};
3752      var e = Y[d];
3753      if (!e) return j("Unsupported property: " + d);
3754
3755      if (!b.weak || !this.props[d]) {
3756        var f = e[0],
3757            g = this.props[d];
3758        return g || (g = this.props[d] = new f.Bare()), g.init(this.$el, c, e, b), g;
3759      }
3760    }
3761
3762    function e(a, b, c) {
3763      if (a) {
3764        var e = (0, _typeof2["default"])(a);
3765        if (b || (this.timer && this.timer.destroy(), this.queue = [], this.active = !1), "number" == e && b) return this.timer = new S({
3766          duration: a,
3767          context: this,
3768          complete: h
3769        }), void (this.active = !0);
3770
3771        if ("string" == e && b) {
3772          switch (a) {
3773            case "hide":
3774              o.call(this);
3775              break;
3776
3777            case "stop":
3778              l.call(this);
3779              break;
3780
3781            case "redraw":
3782              p.call(this);
3783              break;
3784
3785            default:
3786              d.call(this, a, c && c[1]);
3787          }
3788
3789          return h.call(this);
3790        }
3791
3792        if ("function" == e) return void a.call(this, this);
3793
3794        if ("object" == e) {
3795          var f = 0;
3796          u.call(this, a, function (a, b) {
3797            a.span > f && (f = a.span), a.stop(), a.animate(b);
3798          }, function (a) {
3799            "wait" in a && (f = i(a.wait, 0));
3800          }), t.call(this), f > 0 && (this.timer = new S({
3801            duration: f,
3802            context: this
3803          }), this.active = !0, b && (this.timer.complete = h));
3804          var g = this,
3805              j = !1,
3806              k = {};
3807          J(function () {
3808            u.call(g, a, function (a) {
3809              a.active && (j = !0, k[a.name] = a.nextStyle);
3810            }), j && g.$el.css(k);
3811          });
3812        }
3813      }
3814    }
3815
3816    function f(a) {
3817      a = i(a, 0), this.active ? this.queue.push({
3818        options: a
3819      }) : (this.timer = new S({
3820        duration: a,
3821        context: this,
3822        complete: h
3823      }), this.active = !0);
3824    }
3825
3826    function g(a) {
3827      return this.active ? (this.queue.push({
3828        options: a,
3829        args: arguments
3830      }), void (this.timer.complete = h)) : j("No active transition timer. Use start() or wait() before then().");
3831    }
3832
3833    function h() {
3834      if (this.timer && this.timer.destroy(), this.active = !1, this.queue.length) {
3835        var a = this.queue.shift();
3836        e.call(this, a.options, !0, a.args);
3837      }
3838    }
3839
3840    function l(a) {
3841      this.timer && this.timer.destroy(), this.queue = [], this.active = !1;
3842      var b;
3843      "string" == typeof a ? (b = {}, b[a] = 1) : b = "object" == (0, _typeof2["default"])(a) && null != a ? a : this.props, u.call(this, b, v), t.call(this);
3844    }
3845
3846    function m(a) {
3847      l.call(this, a), u.call(this, a, w, x);
3848    }
3849
3850    function n(a) {
3851      "string" != typeof a && (a = "block"), this.el.style.display = a;
3852    }
3853
3854    function o() {
3855      l.call(this), this.el.style.display = "none";
3856    }
3857
3858    function p() {
3859      this.el.offsetHeight;
3860    }
3861
3862    function r() {
3863      l.call(this), a.removeData(this.el, q), this.$el = this.el = null;
3864    }
3865
3866    function t() {
3867      var a,
3868          b,
3869          c = [];
3870      this.upstream && c.push(this.upstream);
3871
3872      for (a in this.props) {
3873        b = this.props[a], b.active && c.push(b.string);
3874      }
3875
3876      c = c.join(","), this.style !== c && (this.style = c, this.el.style[G.transition.dom] = c);
3877    }
3878
3879    function u(a, b, e) {
3880      var f,
3881          g,
3882          h,
3883          i,
3884          j = b !== v,
3885          k = {};
3886
3887      for (f in a) {
3888        h = a[f], f in Z ? (k.transform || (k.transform = {}), k.transform[f] = h) : (s.test(f) && (f = c(f)), f in Y ? k[f] = h : (i || (i = {}), i[f] = h));
3889      }
3890
3891      for (f in k) {
3892        if (h = k[f], g = this.props[f], !g) {
3893          if (!j) continue;
3894          g = d.call(this, f);
3895        }
3896
3897        b.call(this, g, h);
3898      }
3899
3900      e && i && e.call(this, i);
3901    }
3902
3903    function v(a) {
3904      a.stop();
3905    }
3906
3907    function w(a, b) {
3908      a.set(b);
3909    }
3910
3911    function x(a) {
3912      this.$el.css(a);
3913    }
3914
3915    function y(a, c) {
3916      b[a] = function () {
3917        return this.children ? A.call(this, c, arguments) : (this.el && c.apply(this, arguments), this);
3918      };
3919    }
3920
3921    function A(a, b) {
3922      var c,
3923          d = this.children.length;
3924
3925      for (c = 0; d > c; c++) {
3926        a.apply(this.children[c], b);
3927      }
3928
3929      return this;
3930    }
3931
3932    b.init = function (b) {
3933      if (this.$el = a(b), this.el = this.$el[0], this.props = {}, this.queue = [], this.style = "", this.active = !1, U.keepInherited && !U.fallback) {
3934        var c = W(this.el, "transition");
3935        c && !z.test(c) && (this.upstream = c);
3936      }
3937
3938      G.backface && U.hideBackface && V(this.el, G.backface.css, "hidden");
3939    }, y("add", d), y("start", e), y("wait", f), y("then", g), y("next", h), y("stop", l), y("set", m), y("show", n), y("hide", o), y("redraw", p), y("destroy", r);
3940  }),
3941      M = l(L, function (b) {
3942    function c(b, c) {
3943      var d = a.data(b, q) || a.data(b, q, new L.Bare());
3944      return d.el || d.init(b), c ? d.start(c) : d;
3945    }
3946
3947    b.init = function (b, d) {
3948      var e = a(b);
3949      if (!e.length) return this;
3950      if (1 === e.length) return c(e[0], d);
3951      var f = [];
3952      return e.each(function (a, b) {
3953        f.push(c(b, d));
3954      }), this.children = f, this;
3955    };
3956  }),
3957      N = l(function (a) {
3958    function b() {
3959      var a = this.get();
3960      this.update("auto");
3961      var b = this.get();
3962      return this.update(a), b;
3963    }
3964
3965    function c(a, b, c) {
3966      return void 0 !== b && (c = b), a in m ? a : c;
3967    }
3968
3969    function d(a) {
3970      var b = /rgba?\((\d+),\s*(\d+),\s*(\d+)/.exec(a);
3971      return (b ? e(b[1], b[2], b[3]) : a).replace(/#(\w)(\w)(\w)$/, "#$1$1$2$2$3$3");
3972    }
3973
3974    var f = {
3975      duration: 500,
3976      ease: "ease",
3977      delay: 0
3978    };
3979    a.init = function (a, b, d, e) {
3980      this.$el = a, this.el = a[0];
3981      var g = b[0];
3982      d[2] && (g = d[2]), X[g] && (g = X[g]), this.name = g, this.type = d[1], this.duration = i(b[1], this.duration, f.duration), this.ease = c(b[2], this.ease, f.ease), this.delay = i(b[3], this.delay, f.delay), this.span = this.duration + this.delay, this.active = !1, this.nextStyle = null, this.auto = A.test(this.name), this.unit = e.unit || this.unit || U.defaultUnit, this.angle = e.angle || this.angle || U.defaultAngle, U.fallback || e.fallback ? this.animate = this.fallback : (this.animate = this.transition, this.string = this.name + B + this.duration + "ms" + ("ease" != this.ease ? B + m[this.ease][0] : "") + (this.delay ? B + this.delay + "ms" : ""));
3983    }, a.set = function (a) {
3984      a = this.convert(a, this.type), this.update(a), this.redraw();
3985    }, a.transition = function (a) {
3986      this.active = !0, a = this.convert(a, this.type), this.auto && ("auto" == this.el.style[this.name] && (this.update(this.get()), this.redraw()), "auto" == a && (a = b.call(this))), this.nextStyle = a;
3987    }, a.fallback = function (a) {
3988      var c = this.el.style[this.name] || this.convert(this.get(), this.type);
3989      a = this.convert(a, this.type), this.auto && ("auto" == c && (c = this.convert(this.get(), this.type)), "auto" == a && (a = b.call(this))), this.tween = new R({
3990        from: c,
3991        to: a,
3992        duration: this.duration,
3993        delay: this.delay,
3994        ease: this.ease,
3995        update: this.update,
3996        context: this
3997      });
3998    }, a.get = function () {
3999      return W(this.el, this.name);
4000    }, a.update = function (a) {
4001      V(this.el, this.name, a);
4002    }, a.stop = function () {
4003      (this.active || this.nextStyle) && (this.active = !1, this.nextStyle = null, V(this.el, this.name, this.get()));
4004      var a = this.tween;
4005      a && a.context && a.destroy();
4006    }, a.convert = function (a, b) {
4007      if ("auto" == a && this.auto) return a;
4008      var c,
4009          e = "number" == typeof a,
4010          f = "string" == typeof a;
4011
4012      switch (b) {
4013        case t:
4014          if (e) return a;
4015          if (f && "" === a.replace(r, "")) return +a;
4016          c = "number(unitless)";
4017          break;
4018
4019        case u:
4020          if (f) {
4021            if ("" === a && this.original) return this.original;
4022            if (b.test(a)) return "#" == a.charAt(0) && 7 == a.length ? a : d(a);
4023          }
4024
4025          c = "hex or rgb string";
4026          break;
4027
4028        case v:
4029          if (e) return a + this.unit;
4030          if (f && b.test(a)) return a;
4031          c = "number(px) or string(unit)";
4032          break;
4033
4034        case w:
4035          if (e) return a + this.unit;
4036          if (f && b.test(a)) return a;
4037          c = "number(px) or string(unit or %)";
4038          break;
4039
4040        case x:
4041          if (e) return a + this.angle;
4042          if (f && b.test(a)) return a;
4043          c = "number(deg) or string(angle)";
4044          break;
4045
4046        case y:
4047          if (e) return a;
4048          if (f && w.test(a)) return a;
4049          c = "number(unitless) or string(unit or %)";
4050      }
4051
4052      return g(c, a), a;
4053    }, a.redraw = function () {
4054      this.el.offsetHeight;
4055    };
4056  }),
4057      O = l(N, function (a, b) {
4058    a.init = function () {
4059      b.init.apply(this, arguments), this.original || (this.original = this.convert(this.get(), u));
4060    };
4061  }),
4062      P = l(N, function (a, b) {
4063    a.init = function () {
4064      b.init.apply(this, arguments), this.animate = this.fallback;
4065    }, a.get = function () {
4066      return this.$el[this.name]();
4067    }, a.update = function (a) {
4068      this.$el[this.name](a);
4069    };
4070  }),
4071      Q = l(N, function (a, b) {
4072    function c(a, b) {
4073      var c, d, e, f, g;
4074
4075      for (c in a) {
4076        f = Z[c], e = f[0], d = f[1] || c, g = this.convert(a[c], e), b.call(this, d, g, e);
4077      }
4078    }
4079
4080    a.init = function () {
4081      b.init.apply(this, arguments), this.current || (this.current = {}, Z.perspective && U.perspective && (this.current.perspective = U.perspective, V(this.el, this.name, this.style(this.current)), this.redraw()));
4082    }, a.set = function (a) {
4083      c.call(this, a, function (a, b) {
4084        this.current[a] = b;
4085      }), V(this.el, this.name, this.style(this.current)), this.redraw();
4086    }, a.transition = function (a) {
4087      var b = this.values(a);
4088      this.tween = new T({
4089        current: this.current,
4090        values: b,
4091        duration: this.duration,
4092        delay: this.delay,
4093        ease: this.ease
4094      });
4095      var c,
4096          d = {};
4097
4098      for (c in this.current) {
4099        d[c] = c in b ? b[c] : this.current[c];
4100      }
4101
4102      this.active = !0, this.nextStyle = this.style(d);
4103    }, a.fallback = function (a) {
4104      var b = this.values(a);
4105      this.tween = new T({
4106        current: this.current,
4107        values: b,
4108        duration: this.duration,
4109        delay: this.delay,
4110        ease: this.ease,
4111        update: this.update,
4112        context: this
4113      });
4114    }, a.update = function () {
4115      V(this.el, this.name, this.style(this.current));
4116    }, a.style = function (a) {
4117      var b,
4118          c = "";
4119
4120      for (b in a) {
4121        c += b + "(" + a[b] + ") ";
4122      }
4123
4124      return c;
4125    }, a.values = function (a) {
4126      var b,
4127          d = {};
4128      return c.call(this, a, function (a, c, e) {
4129        d[a] = c, void 0 === this.current[a] && (b = 0, ~a.indexOf("scale") && (b = 1), this.current[a] = this.convert(b, e));
4130      }), d;
4131    };
4132  }),
4133      R = l(function (b) {
4134    function c(a) {
4135      1 === n.push(a) && J(g);
4136    }
4137
4138    function g() {
4139      var a,
4140          b,
4141          c,
4142          d = n.length;
4143      if (d) for (J(g), b = K(), a = d; a--;) {
4144        c = n[a], c && c.render(b);
4145      }
4146    }
4147
4148    function i(b) {
4149      var c,
4150          d = a.inArray(b, n);
4151      d >= 0 && (c = n.slice(d + 1), n.length = d, c.length && (n = n.concat(c)));
4152    }
4153
4154    function j(a) {
4155      return Math.round(a * o) / o;
4156    }
4157
4158    function k(a, b, c) {
4159      return e(a[0] + c * (b[0] - a[0]), a[1] + c * (b[1] - a[1]), a[2] + c * (b[2] - a[2]));
4160    }
4161
4162    var l = {
4163      ease: m.ease[1],
4164      from: 0,
4165      to: 1
4166    };
4167    b.init = function (a) {
4168      this.duration = a.duration || 0, this.delay = a.delay || 0;
4169      var b = a.ease || l.ease;
4170      m[b] && (b = m[b][1]), "function" != typeof b && (b = l.ease), this.ease = b, this.update = a.update || f, this.complete = a.complete || f, this.context = a.context || this, this.name = a.name;
4171      var c = a.from,
4172          d = a.to;
4173      void 0 === c && (c = l.from), void 0 === d && (d = l.to), this.unit = a.unit || "", "number" == typeof c && "number" == typeof d ? (this.begin = c, this.change = d - c) : this.format(d, c), this.value = this.begin + this.unit, this.start = K(), a.autoplay !== !1 && this.play();
4174    }, b.play = function () {
4175      this.active || (this.start || (this.start = K()), this.active = !0, c(this));
4176    }, b.stop = function () {
4177      this.active && (this.active = !1, i(this));
4178    }, b.render = function (a) {
4179      var b,
4180          c = a - this.start;
4181
4182      if (this.delay) {
4183        if (c <= this.delay) return;
4184        c -= this.delay;
4185      }
4186
4187      if (c < this.duration) {
4188        var d = this.ease(c, 0, 1, this.duration);
4189        return b = this.startRGB ? k(this.startRGB, this.endRGB, d) : j(this.begin + d * this.change), this.value = b + this.unit, void this.update.call(this.context, this.value);
4190      }
4191
4192      b = this.endHex || this.begin + this.change, this.value = b + this.unit, this.update.call(this.context, this.value), this.complete.call(this.context), this.destroy();
4193    }, b.format = function (a, b) {
4194      if (b += "", a += "", "#" == a.charAt(0)) return this.startRGB = d(b), this.endRGB = d(a), this.endHex = a, this.begin = 0, void (this.change = 1);
4195
4196      if (!this.unit) {
4197        var c = b.replace(r, ""),
4198            e = a.replace(r, "");
4199        c !== e && h("tween", b, a), this.unit = c;
4200      }
4201
4202      b = parseFloat(b), a = parseFloat(a), this.begin = this.value = b, this.change = a - b;
4203    }, b.destroy = function () {
4204      this.stop(), this.context = null, this.ease = this.update = this.complete = f;
4205    };
4206    var n = [],
4207        o = 1e3;
4208  }),
4209      S = l(R, function (a) {
4210    a.init = function (a) {
4211      this.duration = a.duration || 0, this.complete = a.complete || f, this.context = a.context, this.play();
4212    }, a.render = function (a) {
4213      var b = a - this.start;
4214      b < this.duration || (this.complete.call(this.context), this.destroy());
4215    };
4216  }),
4217      T = l(R, function (a, b) {
4218    a.init = function (a) {
4219      this.context = a.context, this.update = a.update, this.tweens = [], this.current = a.current;
4220      var b, c;
4221
4222      for (b in a.values) {
4223        c = a.values[b], this.current[b] !== c && this.tweens.push(new R({
4224          name: b,
4225          from: this.current[b],
4226          to: c,
4227          duration: a.duration,
4228          delay: a.delay,
4229          ease: a.ease,
4230          autoplay: !1
4231        }));
4232      }
4233
4234      this.play();
4235    }, a.render = function (a) {
4236      var b,
4237          c,
4238          d = this.tweens.length,
4239          e = !1;
4240
4241      for (b = d; b--;) {
4242        c = this.tweens[b], c.context && (c.render(a), this.current[c.name] = c.value, e = !0);
4243      }
4244
4245      return e ? void (this.update && this.update.call(this.context)) : this.destroy();
4246    }, a.destroy = function () {
4247      if (b.destroy.call(this), this.tweens) {
4248        var a,
4249            c = this.tweens.length;
4250
4251        for (a = c; a--;) {
4252          this.tweens[a].destroy();
4253        }
4254
4255        this.tweens = null, this.current = null;
4256      }
4257    };
4258  }),
4259      U = b.config = {
4260    debug: !1,
4261    defaultUnit: "px",
4262    defaultAngle: "deg",
4263    keepInherited: !1,
4264    hideBackface: !1,
4265    perspective: "",
4266    fallback: !G.transition,
4267    agentTests: []
4268  };
4269
4270  b.fallback = function (a) {
4271    if (!G.transition) return U.fallback = !0;
4272    U.agentTests.push("(" + a + ")");
4273    var b = new RegExp(U.agentTests.join("|"), "i");
4274    U.fallback = b.test(navigator.userAgent);
4275  }, b.fallback("6.0.[2-5] Safari"), b.tween = function (a) {
4276    return new R(a);
4277  }, b.delay = function (a, b, c) {
4278    return new S({
4279      complete: b,
4280      duration: a,
4281      context: c
4282    });
4283  }, a.fn.tram = function (a) {
4284    return b.call(null, this, a);
4285  };
4286  var V = a.style,
4287      W = a.css,
4288      X = {
4289    transform: G.transform && G.transform.css
4290  },
4291      Y = {
4292    color: [O, u],
4293    background: [O, u, "background-color"],
4294    "outline-color": [O, u],
4295    "border-color": [O, u],
4296    "border-top-color": [O, u],
4297    "border-right-color": [O, u],
4298    "border-bottom-color": [O, u],
4299    "border-left-color": [O, u],
4300    "border-width": [N, v],
4301    "border-top-width": [N, v],
4302    "border-right-width": [N, v],
4303    "border-bottom-width": [N, v],
4304    "border-left-width": [N, v],
4305    "border-spacing": [N, v],
4306    "letter-spacing": [N, v],
4307    margin: [N, v],
4308    "margin-top": [N, v],
4309    "margin-right": [N, v],
4310    "margin-bottom": [N, v],
4311    "margin-left": [N, v],
4312    padding: [N, v],
4313    "padding-top": [N, v],
4314    "padding-right": [N, v],
4315    "padding-bottom": [N, v],
4316    "padding-left": [N, v],
4317    "outline-width": [N, v],
4318    opacity: [N, t],
4319    top: [N, w],
4320    right: [N, w],
4321    bottom: [N, w],
4322    left: [N, w],
4323    "font-size": [N, w],
4324    "text-indent": [N, w],
4325    "word-spacing": [N, w],
4326    width: [N, w],
4327    "min-width": [N, w],
4328    "max-width": [N, w],
4329    height: [N, w],
4330    "min-height": [N, w],
4331    "max-height": [N, w],
4332    "line-height": [N, y],
4333    "scroll-top": [P, t, "scrollTop"],
4334    "scroll-left": [P, t, "scrollLeft"]
4335  },
4336      Z = {};
4337  G.transform && (Y.transform = [Q], Z = {
4338    x: [w, "translateX"],
4339    y: [w, "translateY"],
4340    rotate: [x],
4341    rotateX: [x],
4342    rotateY: [x],
4343    scale: [t],
4344    scaleX: [t],
4345    scaleY: [t],
4346    skew: [x],
4347    skewX: [x],
4348    skewY: [x]
4349  }), G.transform && G.backface && (Z.z = [w, "translateZ"], Z.rotateZ = [x], Z.scaleZ = [t], Z.perspective = [v]);
4350  var $ = /ms/,
4351      _ = /s|\./;
4352  return a.tram = b;
4353}(window.jQuery);
4354
4355/***/ }),
4356/* 66 */
4357/***/ (function(module, exports, __webpack_require__) {
4358
4359var DESCRIPTORS = __webpack_require__(14);
4360var propertyIsEnumerableModule = __webpack_require__(130);
4361var createPropertyDescriptor = __webpack_require__(67);
4362var toIndexedObject = __webpack_require__(38);
4363var toPrimitive = __webpack_require__(68);
4364var has = __webpack_require__(16);
4365var IE8_DOM_DEFINE = __webpack_require__(69);
4366
4367var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
4368
4369// `Object.getOwnPropertyDescriptor` method
4370// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor
4371exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
4372  O = toIndexedObject(O);
4373  P = toPrimitive(P, true);
4374  if (IE8_DOM_DEFINE) try {
4375    return nativeGetOwnPropertyDescriptor(O, P);
4376  } catch (error) { /* empty */ }
4377  if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);
4378};
4379
4380
4381/***/ }),
4382/* 67 */
vendor: 4,284 bytes, lines 4383-4538
4383/***/ (function(module, exports) {
4384
4385module.exports = function (bitmap, value) {
4386  return {
4387    enumerable: !(bitmap & 1),
4388    configurable: !(bitmap & 2),
4389    writable: !(bitmap & 4),
4390    value: value
4391  };
4392};
4393
4394
4395/***/ }),
4396/* 68 */
4397/***/ (function(module, exports, __webpack_require__) {
4398
4399var isObject = __webpack_require__(24);
4400
4401// `ToPrimitive` abstract operation
4402// https://tc39.github.io/ecma262/#sec-toprimitive
4403// instead of the ES6 spec version, we didn't implement @@toPrimitive case
4404// and the second argument - flag - preferred type is a string
4405module.exports = function (input, PREFERRED_STRING) {
4406  if (!isObject(input)) return input;
4407  var fn, val;
4408  if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
4409  if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;
4410  if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
4411  throw TypeError("Can't convert object to primitive value");
4412};
4413
4414
4415/***/ }),
4416/* 69 */
4417/***/ (function(module, exports, __webpack_require__) {
4418
4419var DESCRIPTORS = __webpack_require__(14);
4420var fails = __webpack_require__(15);
4421var createElement = __webpack_require__(70);
4422
4423// Thank's IE8 for his funny defineProperty
4424module.exports = !DESCRIPTORS && !fails(function () {
4425  return Object.defineProperty(createElement('div'), 'a', {
4426    get: function () { return 7; }
4427  }).a != 7;
4428});
4429
4430
4431/***/ }),
4432/* 70 */
4433/***/ (function(module, exports, __webpack_require__) {
4434
4435var global = __webpack_require__(4);
4436var isObject = __webpack_require__(24);
4437
4438var document = global.document;
4439// typeof document.createElement is 'object' in old IE
4440var EXISTS = isObject(document) && isObject(document.createElement);
4441
4442module.exports = function (it) {
4443  return EXISTS ? document.createElement(it) : {};
4444};
4445
4446
4447/***/ }),
4448/* 71 */
4449/***/ (function(module, exports, __webpack_require__) {
4450
4451var shared = __webpack_require__(26);
4452
4453module.exports = shared('native-function-to-string', Function.toString);
4454
4455
4456/***/ }),
4457/* 72 */
4458/***/ (function(module, exports, __webpack_require__) {
4459
4460var shared = __webpack_require__(26);
4461var uid = __webpack_require__(73);
4462
4463var keys = shared('keys');
4464
4465module.exports = function (key) {
4466  return keys[key] || (keys[key] = uid(key));
4467};
4468
4469
4470/***/ }),
4471/* 73 */
4472/***/ (function(module, exports) {
4473
4474var id = 0;
4475var postfix = Math.random();
4476
4477module.exports = function (key) {
4478  return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);
4479};
4480
4481
4482/***/ }),
4483/* 74 */
4484/***/ (function(module, exports, __webpack_require__) {
4485
4486var path = __webpack_require__(140);
4487var global = __webpack_require__(4);
4488
4489var aFunction = function (variable) {
4490  return typeof variable == 'function' ? variable : undefined;
4491};
4492
4493module.exports = function (namespace, method) {
4494  return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])
4495    : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];
4496};
4497
4498
4499/***/ }),
4500/* 75 */
4501/***/ (function(module, exports, __webpack_require__) {
4502
4503var has = __webpack_require__(16);
4504var toIndexedObject = __webpack_require__(38);
4505var indexOf = __webpack_require__(76).indexOf;
4506var hiddenKeys = __webpack_require__(41);
4507
4508module.exports = function (object, names) {
4509  var O = toIndexedObject(object);
4510  var i = 0;
4511  var result = [];
4512  var key;
4513  for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);
4514  // Don't enum bug & hidden keys
4515  while (names.length > i) if (has(O, key = names[i++])) {
4516    ~indexOf(result, key) || result.push(key);
4517  }
4518  return result;
4519};
4520
4521
4522/***/ }),
4523/* 76 */
4524/***/ (function(module, exports, __webpack_require__) {
4525
4526var toIndexedObject = __webpack_require__(38);
4527var toLength = __webpack_require__(142);
4528var toAbsoluteIndex = __webpack_require__(143);
4529
4530// `Array.prototype.{ indexOf, includes }` methods implementation
4531var createMethod = function (IS_INCLUDES) {
4532  return function ($this, el, fromIndex) {
4533    var O = toIndexedObject($this);
4534    var length = toLength(O.length);
4535    var index = toAbsoluteIndex(fromIndex, length);
4536    var value;
4537    // Array#includes uses SameValueZero equality algorithm
4538    // eslint-disable-next-line no-self-compare
4539    if (IS_INCLUDES && el != el) while (length > index) {
4540      value = O[index++];
4541      // eslint-disable-next-line no-self-compare
4542      if (value != value) return true;
4543    // Array#indexOf ignores holes, Array#includes - not
4544    } else for (;length > index; index++) {
4545      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
4546    } return !IS_INCLUDES && -1;
4547  };
4548};
4549
4550module.exports = {
4551  // `Array.prototype.includes` method
4552  // https://tc39.github.io/ecma262/#sec-array.prototype.includes
4553  includes: createMethod(true),
4554  // `Array.prototype.indexOf` method
4555  // https://tc39.github.io/ecma262/#sec-array.prototype.indexof
4556  indexOf: createMethod(false)
4557};
4558
4559
4560/***/ }),
4561/* 77 */
4562/***/ (function(module, exports) {
4563
4564var ceil = Math.ceil;
4565var floor = Math.floor;
4566
4567// `ToInteger` abstract operation
4568// https://tc39.github.io/ecma262/#sec-tointeger
4569module.exports = function (argument) {
4570  return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);
4571};
4572
4573
4574/***/ }),
4575/* 78 */
4576/***/ (function(module, __webpack_exports__, __webpack_require__) {
4577
4578"use strict";
4579__webpack_require__.r(__webpack_exports__);
4580/* harmony import */ var _createStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(43);
4581/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "createStore", function() { return _createStore__WEBPACK_IMPORTED_MODULE_0__["default"]; });
4582
4583/* harmony import */ var _combineReducers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(81);
4584/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineReducers", function() { return _combineReducers__WEBPACK_IMPORTED_MODULE_1__["default"]; });
4585
4586/* harmony import */ var _bindActionCreators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(83);
4587/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bindActionCreators", function() { return _bindActionCreators__WEBPACK_IMPORTED_MODULE_2__["default"]; });
4588
4589/* harmony import */ var _applyMiddleware__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(84);
4590/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "applyMiddleware", function() { return _applyMiddleware__WEBPACK_IMPORTED_MODULE_3__["default"]; });
4591
4592/* harmony import */ var _compose__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(44);
4593/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "compose", function() { return _compose__WEBPACK_IMPORTED_MODULE_4__["default"]; });
4594
4595/* harmony import */ var _utils_warning__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(82);
4596
4597
4598
4599
4600
4601
4602
4603/*
4604* This is a dummy function to check if the function name has been altered by minification.
4605* If the function has been minified and NODE_ENV !== 'production', warn the user.
4606*/
4607function isCrushed() {}
4608
4609if (false) {}
4610
4611
4612
4613/***/ }),
4614/* 79 */
4615/***/ (function(module, __webpack_exports__, __webpack_require__) {
4616
4617"use strict";
4618__webpack_require__.r(__webpack_exports__);
4619/* harmony import */ var _baseGetTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(156);
4620/* harmony import */ var _getPrototype_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161);
4621/* harmony import */ var _isObjectLike_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(163);
4622
4623
4624
4625
4626/** `Object#toString` result references. */
4627var objectTag = '[object Object]';
4628
4629/** Used for built-in method references. */
4630var funcProto = Function.prototype,
4631    objectProto = Object.prototype;
4632
4633/** Used to resolve the decompiled source of functions. */
4634var funcToString = funcProto.toString;
4635
4636/** Used to check objects for own properties. */
4637var hasOwnProperty = objectProto.hasOwnProperty;
4638
4639/** Used to infer the `Object` constructor. */
4640var objectCtorString = funcToString.call(Object);
4641
4642/**
4643 * Checks if `value` is a plain object, that is, an object created by the
4644 * `Object` constructor or one with a `[[Prototype]]` of `null`.
4645 *
4646 * @static
4647 * @memberOf _
4648 * @since 0.8.0
4649 * @category Lang
4650 * @param {*} value The value to check.
4651 * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
4652 * @example
4653 *
4654 * function Foo() {
4655 *   this.a = 1;
4656 * }
4657 *
4658 * _.isPlainObject(new Foo);
4659 * // => false
4660 *
4661 * _.isPlainObject([1, 2, 3]);
4662 * // => false
4663 *
4664 * _.isPlainObject({ 'x': 0, 'y': 0 });
4665 * // => true
4666 *
4667 * _.isPlainObject(Object.create(null));
4668 * // => true
4669 */
4670function isPlainObject(value) {
4671  if (!Object(_isObjectLike_js__WEBPACK_IMPORTED_MODULE_2__["default"])(value) || Object(_baseGetTag_js__WEBPACK_IMPORTED_MODULE_0__["default"])(value) != objectTag) {
4672    return false;
4673  }
4674  var proto = Object(_getPrototype_js__WEBPACK_IMPORTED_MODULE_1__["default"])(value);
4675  if (proto === null) {
4676    return true;
4677  }
4678  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
4679  return typeof Ctor == 'function' && Ctor instanceof Ctor &&
4680    funcToString.call(Ctor) == objectCtorString;
4681}
4682
4683/* harmony default export */ __webpack_exports__["default"] = (isPlainObject);
4684
4685
4686/***/ }),
4687/* 80 */
4688/***/ (function(module, __webpack_exports__, __webpack_require__) {
4689
4690"use strict";
4691__webpack_require__.r(__webpack_exports__);
4692/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(157);
4693
4694
4695/** Built-in value references. */
4696var Symbol = _root_js__WEBPACK_IMPORTED_MODULE_0__["default"].Symbol;
4697
4698/* harmony default export */ __webpack_exports__["default"] = (Symbol);
4699
4700
4701/***/ }),
4702/* 81 */
4703/***/ (function(module, __webpack_exports__, __webpack_require__) {
4704
4705"use strict";
4706__webpack_require__.r(__webpack_exports__);
4707/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return combineReducers; });
4708/* harmony import */ var _createStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(43);
4709/* harmony import */ var lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(79);
4710/* harmony import */ var _utils_warning__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(82);
4711
4712
4713
4714
4715function getUndefinedStateErrorMessage(key, action) {
4716  var actionType = action && action.type;
4717  var actionName = actionType && '"' + actionType.toString() + '"' || 'an action';
4718
4719  return 'Given action ' + actionName + ', reducer "' + key + '" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state.';
4720}
4721
4722function getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unex
4722pectedKeyCache) {
4723  var reducerKeys = Object.keys(reducers);
4724  var argumentName = action && action.type === _createStore__WEBPACK_IMPORTED_MODULE_0__["ActionTypes"].INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';
4725
4726  if (reducerKeys.length === 0) {
4727    return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';
4728  }
4729
4730  if (!Object(lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_1__["default"])(inputState)) {
4731    return 'The ' + argumentName + ' has unexpected type of "' + {}.toString.call(inputState).match(/\s([a-z|A-Z]+)/)[1] + '". Expected argument to be an object with the following ' + ('keys: "' + reducerKeys.join('", "') + '"');
4732  }
4733
4734  var unexpectedKeys = Object.keys(inputState).filter(function (key) {
4735    return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];
4736  });
4737
4738  unexpectedKeys.forEach(function (key) {
4739    unexpectedKeyCache[key] = true;
4740  });
4741
4742  if (unexpectedKeys.length > 0) {
4743    return 'Unexpected ' + (unexpectedKeys.length > 1 ? 'keys' : 'key') + ' ' + ('"' + unexpectedKeys.join('", "') + '" found in ' + argumentName + '. ') + 'Expected to find one of the known reducer keys instead: ' + ('"' + reducerKeys.join('", "') + '". Unexpected keys will be ignored.');
4744  }
4745}
4746
4747function assertReducerSanity(reducers) {
4748  Object.keys(reducers).forEach(function (key) {
4749    var reducer = reducers[key];
4750    var initialState = reducer(undefined, { type: _createStore__WEBPACK_IMPORTED_MODULE_0__["ActionTypes"].INIT });
4751
4752    if (typeof initialState === 'undefined') {
4753      throw new Error('Reducer "' + key + '" returned undefined during initialization. ' + 'If the state passed to the reducer is undefined, you must ' + 'explicitly return the initial state. The initial state may ' + 'not be undefined.');
4754    }
4755
4756    var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.');
4757    if (typeof reducer(undefined, { type: type }) === 'undefined') {
4758      throw new Error('Reducer "' + key + '" returned undefined when probed with a random type. ' + ('Don\'t try to handle ' + _createStore__WEBPACK_IMPORTED_MODULE_0__["ActionTypes"].INIT + ' or other actions in "redux/*" ') + 'namespace. They are considered private. Instead, you must return the ' + 'current state for any unknown actions, unless it is undefined, ' + 'in which case you must return the initial state, regardless of the ' + 'action type. The initial state may not be undefined.');
4759    }
4760  });
4761}
4762
4763/**
4764 * Turns an object whose values are different reducer functions, into a single
4765 * reducer function. It will call every child reducer, and gather their results
4766 * into a single state object, whose keys correspond to the keys of the passed
4767 * reducer functions.
4768 *
4769 * @param {Object} reducers An object whose values correspond to different
4770 * reducer functions that need to be combined into one. One handy way to obtain
4771 * it is to use ES6 `import * as reducers` syntax. The reducers may never return
4772 * undefined for any action. Instead, they should return their initial state
4773 * if the state passed to them was undefined, and the current state for any
4774 * unrecognized action.
4775 *
4776 * @returns {Function} A reducer function that invokes every reducer inside the
4777 * passed object, and builds a state object with the same shape.
4778 */
4779function combineReducers(reducers) {
4780  var reducerKeys = Object.keys(reducers);
4781  var finalReducers = {};
4782  for (var i = 0; i < reducerKeys.length; i++) {
4783    var key = reducerKeys[i];
4784
4785    if (false) {}
4786
4787    if (typeof reducers[key] === 'function') {
4788      finalReducers[key] = reducers[key];
4789    }
4790  }
4791  var finalReducerKeys = Object.keys(finalReducers);
4792
4793  if (false) { var unexpectedKeyCache; }
4794
4795  var sanityError;
4796  try {
4797    assertReducerSanity(finalReducers);
4798  } catch (e) {
4799    sanityError = e;
4800  }
4801
4802  return function combination() {
4803    var state = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
4804    var action = arguments[1];
4805
4806    if (sanityError) {
4807      throw sanityError;
4808    }
4809
4810    if (false) { var warningMessage; }
4811
4812    var hasChanged = false;
4813    var nextState = {};
4814    for (var i = 0; i < finalReducerKeys.length; i++) {
4815      var key = finalReducerKeys[i];
4816      var reducer = finalReducers[key];
4817      var previousStateForKey = state[key];
4818      var nextStateForKey = reducer(previousStateForKey, action);
4819      if (typeof nextStateForKey === 'undefined') {
4820        var errorMessage = getUndefinedStateErrorMessage(key, action);
4821        throw new Error(errorMessage);
4822      }
4823      nextState[key] = nextStateForKey;
4824      hasChanged = hasChanged || nextStateForKey !== previousStateForKey;
4825    }
4826    return hasChanged ? nextState : state;
4827  };
4828}
4829
4830/***/ }),
4831/* 82 */
4832/***/ (function(module, __webpack_exports__, __webpack_require__) {
4833
4834"use strict";
4835__webpack_require__.r(__webpack_exports__);
4836/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return warning; });
4837/**
4838 * Prints a warning in the console if it exists.
4839 *
4840 * @param {String} message The warning message.
4841 * @returns {void}
4842 */
4843function warning(message) {
4844  /* eslint-disable no-console */
4845  if (typeof console !== 'undefined' && typeof console.error === 'function') {
4846    console.error(message);
4847  }
4848  /* eslint-enable no-console */
4849  try {
4850    // This error was thrown as a convenience so that if you enable
4851    // "break on all exceptions" in your console,
4852    // it would pause the execution at this line.
4853    throw new Error(message);
4854    /* eslint-disable no-empty */
4855  } catch (e) {}
4856  /* eslint-enable no-empty */
4857}
4858
4859/***/ }),
4860/* 83 */
4861/***/ (function(module, __webpack_exports__, __webpack_require__) {
4862
4863"use strict";
4864__webpack_require__.r(__webpack_exports__);
4865/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return bindActionCreators; });
4866function bindActionCreator(actionCreator, dispatch) {
4867  return function () {
4868    return dispatch(actionCreator.apply(undefined, arguments));
4869  };
4870}
4871
4872/**
4873 * Turns an object whose values are action creators, into an object with the
4874 * same keys, but with every function wrapped into a `dispatch` call so they
4875 * may be invoked directly. This is just a convenience method, as you can call
4876 * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.
4877 *
4878 * For convenience, you can also pass a single function as the first argument,
4879 * and get a function in return.
4880 *
4881 * @param {Function|Object} actionCreators An object whose values are action
4882 * creator functions. One handy way to obtain it is to use ES6 `import * as`
4883 * syntax. You may also pass a single function.
4884 *
4885 * @param {Function} dispatch The `dispatch` function available on your Redux
4886 * store.
4887 *
4888 * @returns {Function|Object} The object mimicking the original object, but with
4889 * every action creator wrapped into the `dispatch` call. If you passed a
4890 * function as `actionCreators`, the return value will also be a single
4891 * function.
4892 */
4893function bindActionCreators(actionCreators, dispatch) {
4894  if (typeof actionCreators === 'function') {
4895    return bindActionCreator(actionCreators, dispatch);
4896  }
4897
4898  if (typeof actionCreators !== 'object' || actionCreators === null) {
4899    throw new Error('bindActionCreators expected an object or a function, instead received ' + (actionCreators === null ? 'null' : typeof actionCreators) + '. ' + 'Did you write "import ActionCreators from" instead of "import * as ActionCreators from"?');
4900  }
4901
4902  var keys = Object.keys(actionCreators);
4903  var boundActionCreators = {};
4904  for (var i = 0; i < keys.length; i++) {
4905    var key = keys[i];
4906    var actionCreator = actionCreators[key];
4907    if (typeof actionCreator === 'function') {
4908      boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);
4909    }
4910  }
4911  return boundActionCreators;
4912}
4913
4914/***/ }),
4915/* 84 */
4916/***/ (function(module, __webpack_exports__, __webpack_require__) {
4917
4918"use strict";
4919__webpack_require__.r(__webpack_exports__);
4920/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return applyMiddleware; });
4921/* harmony import */ var _compose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(44);
4922var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
4923
4924
4925
4926/**
4927 * Creates a store enhancer that applies middleware to the dispatch method
4928 * of the Redux store. This is handy for a variety of tasks, such as expressing
4929 * asynchronous actions in a concise manner, or logging every action payload.
4930 *
4931 * See `redux-thunk` package as an example of the Redux middleware.
4932 *
4933 * Because middleware is potentially asynchronous, this should be the first
4934 * store enhancer in the composition chain.
4935 *
4936 * Note that each middleware will be given the `dispatch` and `getState` functions
4937 * as named arguments.
4938 *
4939 * @param {...Function} middlewares The middleware chain to be applied.
4940 * @returns {Function} A store enhancer applying the middleware.
4941 */
4942function applyMiddleware() {
4943  for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {
4944    middlewares[_key] = arguments[_key];
4945  }
4946
4947  return function (createStore) {
4948    return function (reducer, preloadedState, enhancer) {
4949      var store = createStore(reducer, preloadedState, enhancer);
4950      var _dispatch = store.dispatch;
4951      var chain = [];
4952
4953      var middlewareAPI = {
4954        getState: store.getState,
4955        dispatch: function dispatch(action) {
4956          return _dispatch(action);
4957        }
4958      };
4959      chain = middlewares.map(function (middleware) {
4960        return middleware(middlewareAPI);
4961      });
4962      _dispatch = _compose__WEBPACK_IMPORTED_MODULE_0__["default"].apply(undefined, chain)(store.dispatch);
4963
4964      return _extends({}, store, {
4965        dispatch: _dispatch
4966      });
4967    };
4968  };
4969}
4970
4971/***/ }),
4972/* 85 */
4973/***/ (function(module, exports, __webpack_require__) {
4974
4975var createFind = __webpack_require__(86),
4976    findIndex = __webpack_require__(241);
4977
4978/**
4979 * Iterates over elements of `collection`, returning the first element
4980 * `predicate` returns truthy for. The predicate is invoked with three
4981 * arguments: (value, index|key, collection).
4982 *
4983 * @static
4984 * @memberOf _
4985 * @since 0.1.0
4986 * @category Collection
4987 * @param {Array|Object} collection The collection to inspect.
4988 * @param {Function} [predicate=_.identity] The function invoked per iteration.
4989 * @param {number} [fromIndex=0] The index to search from.
4990 * @returns {*} Returns the matched element, else `undefined`.
4991 * @example
4992 *
4993 * var users = [
4994 *   { 'user': 'barney',  'age': 36, 'active': true },
4995 *   { 'user': 'fred',    'age': 40, 'active': false },
4996 *   { 'user': 'pebbles', 'age': 1,  'active': true }
4997 * ];
4998 *
4999 * _.find(users, function(o) { return o.age < 40; });
5000 * // => object for 'barney'
5001 *
5002 * // The `_.matches` iteratee shorthand.
5003 * _.find(users, { 'age': 1, 'active': true });
5004 * // => object for 'pebbles'
5005 *
5006 * // The `_.matchesProperty` iteratee shorthand.
5007 * _.find(users, ['active', false]);
5008 * // => object for 'fred'
5009 *
5010 * // The `_.property` iteratee shorthand.
5011 * _.find(users, 'active');
5012 * // => object for 'barney'
5013 */
5014var find = createFind(findIndex);
5015
5016module.exports = find;
5017
5018
5019/***/ }),
5020/* 86 */
5021/***/ (function(module, exports, __webpack_require__) {
5022
5023var baseIteratee = __webpack_require__(7),
5024    isArrayLike = __webpack_require__(12),
5025    keys = __webpack_require__(33);
5026
5027/**
5028 * Creates a `_.find` or `_.findLast` function.
5029 *
5030 * @private
5031 * @param {Function} findIndexFunc The function to find the collection index.
5032 * @returns {Function} Returns the new find function.
5033 */
5034function createFind(findIndexFunc) {
5035  return function(collection, predicate, fromIndex) {
5036    var iterable = Object(collection);
5037    if (!isArrayLike(collection)) {
5038      var iteratee = baseIteratee(predicate, 3);
5039      collection = keys(collection);
5040      predicate = function(key) { return iteratee(iterable[key], key, iterable); };
5041    }
5042    var index = findIndexFunc(collection, predicate, fromIndex);
5043    return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
5044  };
5045}
5046
5047module.exports = createFind;
5048
5049
5050/***/ }),
5051/* 87 */
5052/***/ (function(module, exports, __webpack_require__) {
5053
5054var ListCache = __webpack_require__(29),
5055    stackClear = __webpack_require__(183),
5056    stackDelete = __webpack_require__(184),
5057    stackGet = __webpack_require__(185),
5058    stackHas = __webpack_require__(186),
5059    stackSet = __webpack_require__(187);
5060
5061/**
5062 * Creates a stack cache object to store key-value pairs.
5063 *
5064 * @private
5065 * @constructor
5066 * @param {Array} [entries] The key-value pairs to cache.
5067 */
5068function Stack(entries) {
5069  var data = this.__data__ = new ListCache(entries);
5070  this.size = data.size;
5071}
5072
5073// Add methods to `Stack`.
5074Stack.prototype.clear = stackClear;
5075Stack.prototype['delete'] = stackDelete;
5076Stack.prototype.get = stackGet;
vendor: 4,437 bytes, lines 5077-5234
5077Stack.prototype.has = stackHas;
5078Stack.prototype.set = stackSet;
5079
5080module.exports = Stack;
5081
5082
5083/***/ }),
5084/* 88 */
5085/***/ (function(module, exports, __webpack_require__) {
5086
5087var baseGetTag = __webpack_require__(11),
5088    isObject = __webpack_require__(6);
5089
5090/** `Object#toString` result references. */
5091var asyncTag = '[object AsyncFunction]',
5092    funcTag = '[object Function]',
5093    genTag = '[object GeneratorFunction]',
5094    proxyTag = '[object Proxy]';
5095
5096/**
5097 * Checks if `value` is classified as a `Function` object.
5098 *
5099 * @static
5100 * @memberOf _
5101 * @since 0.1.0
5102 * @category Lang
5103 * @param {*} value The value to check.
5104 * @returns {boolean} Returns `true` if `value` is a function, else `false`.
5105 * @example
5106 *
5107 * _.isFunction(_);
5108 * // => true
5109 *
5110 * _.isFunction(/abc/);
5111 * // => false
5112 */
5113function isFunction(value) {
5114  if (!isObject(value)) {
5115    return false;
5116  }
5117  // The use of `Object#toString` avoids issues with the `typeof` operator
5118  // in Safari 9 which returns 'object' for typed arrays and other constructors.
5119  var tag = baseGetTag(value);
5120  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
5121}
5122
5123module.exports = isFunction;
5124
5125
5126/***/ }),
5127/* 89 */
5128/***/ (function(module, exports, __webpack_require__) {
5129
5130/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */
5131var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
5132
5133module.exports = freeGlobal;
5134
5135/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(23)))
5136
5137/***/ }),
5138/* 90 */
5139/***/ (function(module, exports) {
5140
5141/** Used for built-in method references. */
5142var funcProto = Function.prototype;
5143
5144/** Used to resolve the decompiled source of functions. */
5145var funcToString = funcProto.toString;
5146
5147/**
5148 * Converts `func` to its source code.
5149 *
5150 * @private
5151 * @param {Function} func The function to convert.
5152 * @returns {string} Returns the source code.
5153 */
5154function toSource(func) {
5155  if (func != null) {
5156    try {
5157      return funcToString.call(func);
5158    } catch (e) {}
5159    try {
5160      return (func + '');
5161    } catch (e) {}
5162  }
5163  return '';
5164}
5165
5166module.exports = toSource;
5167
5168
5169/***/ }),
5170/* 91 */
5171/***/ (function(module, exports, __webpack_require__) {
5172
5173var baseIsEqualDeep = __webpack_require__(206),
5174    isObjectLike = __webpack_require__(9);
5175
5176/**
5177 * The base implementation of `_.isEqual` which supports partial comparisons
5178 * and tracks traversed objects.
5179 *
5180 * @private
5181 * @param {*} value The value to compare.
5182 * @param {*} other The other value to compare.
5183 * @param {boolean} bitmask The bitmask flags.
5184 *  1 - Unordered comparison
5185 *  2 - Partial comparison
5186 * @param {Function} [customizer] The function to customize comparisons.
5187 * @param {Object} [stack] Tracks traversed `value` and `other` objects.
5188 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
5189 */
5190function baseIsEqual(value, other, bitmask, customizer, stack) {
5191  if (value === other) {
5192    return true;
5193  }
5194  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
5195    return value !== value && other !== other;
5196  }
5197  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
5198}
5199
5200module.exports = baseIsEqual;
5201
5202
5203/***/ }),
5204/* 92 */
5205/***/ (function(module, exports, __webpack_require__) {
5206
5207var SetCache = __webpack_require__(207),
5208    arraySome = __webpack_require__(210),
5209    cacheHas = __webpack_require__(211);
5210
5211/** Used to compose bitmasks for value comparisons. */
5212var COMPARE_PARTIAL_FLAG = 1,
5213    COMPARE_UNORDERED_FLAG = 2;
5214
5215/**
5216 * A specialized version of `baseIsEqualDeep` for arrays with support for
5217 * partial deep comparisons.
5218 *
5219 * @private
5220 * @param {Array} array The array to compare.
5221 * @param {Array} other The other array to compare.
5222 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
5223 * @param {Function} customizer The function to customize comparisons.
5224 * @param {Function} equalFunc The function to determine equivalents of values.
5225 * @param {Object} stack Tracks traversed `array` and `other` objects.
5226 * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
5227 */
5228function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
5229  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
5230      arrLength = array.length,
5231      othLength = other.length;
5232
5233  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
5234    return false;
vendor: 1,160 bytes, lines 5235-5273
5235  }
5236  // Assume cyclic values are equal.
5237  var stacked = stack.get(array);
5238  if (stacked && stack.get(other)) {
5239    return stacked == other;
5240  }
5241  var index = -1,
5242      result = true,
5243      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;
5244
5245  stack.set(array, other);
5246  stack.set(other, array);
5247
5248  // Ignore non-index properties.
5249  while (++index < arrLength) {
5250    var arrValue = array[index],
5251        othValue = other[index];
5252
5253    if (customizer) {
5254      var compared = isPartial
5255        ? customizer(othValue, arrValue, index, other, array, stack)
5256        : customizer(arrValue, othValue, index, array, other, stack);
5257    }
5258    if (compared !== undefined) {
5259      if (compared) {
5260        continue;
5261      }
5262      result = false;
5263      break;
5264    }
5265    // Recursively compare arrays (susceptible to call stack limits).
5266    if (seen) {
5267      if (!arraySome(other, function(othValue, othIndex) {
5268            if (!cacheHas(seen, othIndex) &&
5269                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
5270              return seen.push(othIndex);
5271            }
5272          })) {
5273        result = false;
vendor: 3,432 bytes, lines 5274-5410
5274        break;
5275      }
5276    } else if (!(
5277          arrValue === othValue ||
5278            equalFunc(arrValue, othValue, bitmask, customizer, stack)
5279        )) {
5280      result = false;
5281      break;
5282    }
5283  }
5284  stack['delete'](array);
5285  stack['delete'](other);
5286  return result;
5287}
5288
5289module.exports = equalArrays;
5290
5291
5292/***/ }),
5293/* 93 */
5294/***/ (function(module, exports, __webpack_require__) {
5295
5296var arrayPush = __webpack_require__(49),
5297    isArray = __webpack_require__(1);
5298
5299/**
5300 * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
5301 * `keysFunc` and `symbolsFunc` to get the enumerable property names and
5302 * symbols of `object`.
5303 *
5304 * @private
5305 * @param {Object} object The object to query.
5306 * @param {Function} keysFunc The function to get the keys of `object`.
5307 * @param {Function} symbolsFunc The function to get the symbols of `object`.
5308 * @returns {Array} Returns the array of property names and symbols.
5309 */
5310function baseGetAllKeys(object, keysFunc, symbolsFunc) {
5311  var result = keysFunc(object);
5312  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
5313}
5314
5315module.exports = baseGetAllKeys;
5316
5317
5318/***/ }),
5319/* 94 */
5320/***/ (function(module, exports, __webpack_require__) {
5321
5322var arrayFilter = __webpack_require__(218),
5323    stubArray = __webpack_require__(95);
5324
5325/** Used for built-in method references. */
5326var objectProto = Object.prototype;
5327
5328/** Built-in value references. */
5329var propertyIsEnumerable = objectProto.propertyIsEnumerable;
5330
5331/* Built-in method references for those with the same name as other `lodash` methods. */
5332var nativeGetSymbols = Object.getOwnPropertySymbols;
5333
5334/**
5335 * Creates an array of the own enumerable symbols of `object`.
5336 *
5337 * @private
5338 * @param {Object} object The object to query.
5339 * @returns {Array} Returns the array of symbols.
5340 */
5341var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
5342  if (object == null) {
5343    return [];
5344  }
5345  object = Object(object);
5346  return arrayFilter(nativeGetSymbols(object), function(symbol) {
5347    return propertyIsEnumerable.call(object, symbol);
5348  });
5349};
5350
5351module.exports = getSymbols;
5352
5353
5354/***/ }),
5355/* 95 */
5356/***/ (function(module, exports) {
5357
5358/**
5359 * This method returns a new empty array.
5360 *
5361 * @static
5362 * @memberOf _
5363 * @since 4.13.0
5364 * @category Util
5365 * @returns {Array} Returns the new empty array.
5366 * @example
5367 *
5368 * var arrays = _.times(2, _.stubArray);
5369 *
5370 * console.log(arrays);
5371 * // => [[], []]
5372 *
5373 * console.log(arrays[0] === arrays[1]);
5374 * // => false
5375 */
5376function stubArray() {
5377  return [];
5378}
5379
5380module.exports = stubArray;
5381
5382
5383/***/ }),
5384/* 96 */
5385/***/ (function(module, exports, __webpack_require__) {
5386
5387var baseTimes = __webpack_require__(219),
5388    isArguments = __webpack_require__(34),
5389    isArray = __webpack_require__(1),
5390    isBuffer = __webpack_require__(50),
5391    isIndex = __webpack_require__(51),
5392    isTypedArray = __webpack_require__(52);
5393
5394/** Used for built-in method references. */
5395var objectProto = Object.prototype;
5396
5397/** Used to check objects for own properties. */
5398var hasOwnProperty = objectProto.hasOwnProperty;
5399
5400/**
5401 * Creates an array of the enumerable property names of the array-like `value`.
5402 *
5403 * @private
5404 * @param {*} value The value to query.
5405 * @param {boolean} inherited Specify returning inherited property names.
5406 * @returns {Array} Returns the array of property names.
5407 */
5408function arrayLikeKeys(value, inherited) {
5409  var isArr = isArray(value),
5410      isArg = !isArr && isArguments(value),
vendor: 4,425 bytes, lines 5411-5595
5411      isBuff = !isArr && !isArg && isBuffer(value),
5412      isType = !isArr && !isArg && !isBuff && isTypedArray(value),
5413      skipIndexes = isArr || isArg || isBuff || isType,
5414      result = skipIndexes ? baseTimes(value.length, String) : [],
5415      length = result.length;
5416
5417  for (var key in value) {
5418    if ((inherited || hasOwnProperty.call(value, key)) &&
5419        !(skipIndexes && (
5420           // Safari 9 has enumerable `arguments.length` in strict mode.
5421           key == 'length' ||
5422           // Node.js 0.10 has enumerable non-index properties on buffers.
5423           (isBuff && (key == 'offset' || key == 'parent')) ||
5424           // PhantomJS 2 has enumerable non-index properties on typed arrays.
5425           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
5426           // Skip index properties.
5427           isIndex(key, length)
5428        ))) {
5429      result.push(key);
5430    }
5431  }
5432  return result;
5433}
5434
5435module.exports = arrayLikeKeys;
5436
5437
5438/***/ }),
5439/* 97 */
5440/***/ (function(module, exports) {
5441
5442module.exports = function(module) {
5443	if (!module.webpackPolyfill) {
5444		module.deprecate = function() {};
5445		module.paths = [];
5446		// module.parent = undefined by default
5447		if (!module.children) module.children = [];
5448		Object.defineProperty(module, "loaded", {
5449			enumerable: true,
5450			get: function() {
5451				return module.l;
5452			}
5453		});
5454		Object.defineProperty(module, "id", {
5455			enumerable: true,
5456			get: function() {
5457				return module.i;
5458			}
5459		});
5460		module.webpackPolyfill = 1;
5461	}
5462	return module;
5463};
5464
5465
5466/***/ }),
5467/* 98 */
5468/***/ (function(module, exports) {
5469
5470/**
5471 * Creates a unary function that invokes `func` with its argument transformed.
5472 *
5473 * @private
5474 * @param {Function} func The function to wrap.
5475 * @param {Function} transform The argument transform.
5476 * @returns {Function} Returns the new function.
5477 */
5478function overArg(func, transform) {
5479  return function(arg) {
5480    return func(transform(arg));
5481  };
5482}
5483
5484module.exports = overArg;
5485
5486
5487/***/ }),
5488/* 99 */
5489/***/ (function(module, exports, __webpack_require__) {
5490
5491var getNative = __webpack_require__(8),
5492    root = __webpack_require__(5);
5493
5494/* Built-in method references that are verified to be native. */
5495var WeakMap = getNative(root, 'WeakMap');
5496
5497module.exports = WeakMap;
5498
5499
5500/***/ }),
5501/* 100 */
5502/***/ (function(module, exports, __webpack_require__) {
5503
5504var isObject = __webpack_require__(6);
5505
5506/**
5507 * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
5508 *
5509 * @private
5510 * @param {*} value The value to check.
5511 * @returns {boolean} Returns `true` if `value` if suitable for strict
5512 *  equality comparisons, else `false`.
5513 */
5514function isStrictComparable(value) {
5515  return value === value && !isObject(value);
5516}
5517
5518module.exports = isStrictComparable;
5519
5520
5521/***/ }),
5522/* 101 */
5523/***/ (function(module, exports) {
5524
5525/**
5526 * A specialized version of `matchesProperty` for source values suitable
5527 * for strict equality comparisons, i.e. `===`.
5528 *
5529 * @private
5530 * @param {string} key The key of the property to get.
5531 * @param {*} srcValue The value to match.
5532 * @returns {Function} Returns the new spec function.
5533 */
5534function matchesStrictComparable(key, srcValue) {
5535  return function(object) {
5536    if (object == null) {
5537      return false;
5538    }
5539    return object[key] === srcValue &&
5540      (srcValue !== undefined || (key in Object(object)));
5541  };
5542}
5543
5544module.exports = matchesStrictComparable;
5545
5546
5547/***/ }),
5548/* 102 */
5549/***/ (function(module, exports) {
5550
5551/**
5552 * A specialized version of `_.map` for arrays without support for iteratee
5553 * shorthands.
5554 *
5555 * @private
5556 * @param {Array} [array] The array to iterate over.
5557 * @param {Function} iteratee The function invoked per iteration.
5558 * @returns {Array} Returns the new mapped array.
5559 */
5560function arrayMap(array, iteratee) {
5561  var index = -1,
5562      length = array == null ? 0 : array.length,
5563      result = Array(length);
5564
5565  while (++index < length) {
5566    result[index] = iteratee(array[index], index, array);
5567  }
5568  return result;
5569}
5570
5571module.exports = arrayMap;
5572
5573
5574/***/ }),
5575/* 103 */
5576/***/ (function(module, exports) {
5577
5578/**
5579 * The base implementation of `_.property` without support for deep paths.
5580 *
5581 * @private
5582 * @param {string} key The key of the property to get.
5583 * @returns {Function} Returns the new accessor function.
5584 */
5585function baseProperty(key) {
5586  return function(object) {
5587    return object == null ? undefined : object[key];
5588  };
5589}
5590
5591module.exports = baseProperty;
5592
5593
5594/***/ }),
5595/* 104 */
5596/***/ (function(module, exports) {
5597
5598/**
5599 * The base implementation of `_.findIndex` and `_.findLastIndex` without
5600 * support for iteratee shorthands.
5601 *
5602 * @private
5603 * @param {Array} array The array to inspect.
5604 * @param {Function} predicate The function invoked per iteration.
5605 * @param {number} fromIndex The index to search from.
5606 * @param {boolean} [fromRight] Specify iterating from right to left.
5607 * @returns {number} Returns the index of the matched value, else `-1`.
5608 */
5609function baseFindIndex(array, predicate, fromIndex, fromRight) {
5610  var length = array.length,
5611      index = fromIndex + (fromRight ? 1 : -1);
5612
5613  while ((fromRight ? index-- : ++index < length)) {
5614    if (predicate(array[index], index, array)) {
5615      return index;
5616    }
5617  }
5618  return -1;
5619}
5620
5621module.exports = baseFindIndex;
5622
5623
5624/***/ }),
5625/* 105 */
5626/***/ (function(module, exports, __webpack_require__) {
5627
5628var toFinite = __webpack_require__(242);
5629
5630/**
5631 * Converts `value` to an integer.
5632 *
5633 * **Note:** This method is loosely based on
5634 * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
5635 *
5636 * @static
5637 * @memberOf _
5638 * @since 4.0.0
5639 * @category Lang
5640 * @param {*} value The value to convert.
5641 * @returns {number} Returns the converted integer.
5642 * @example
5643 *
5644 * _.toInteger(3.2);
5645 * // => 3
5646 *
5647 * _.toInteger(Number.MIN_VALUE);
5648 * // => 0
5649 *
5650 * _.toInteger(Infinity);
5651 * // => 1.7976931348623157e+308
5652 *
5653 * _.toInteger('3.2');
5654 * // => 3
5655 */
5656function toInteger(value) {
5657  var result = toFinite(value),
5658      remainder = result % 1;
5659
5660  return result === result ? (remainder ? result - remainder : result) : 0;
5661}
5662
5663module.exports = toInteger;
5664
5665
5666/***/ }),
5667/* 106 */
5668/***/ (function(module, exports, __webpack_require__) {
5669
5670"use strict";
5671
5672
5673var _interopRequireDefault = __webpack_require__(0);
5674
5675Object.defineProperty(exports, "__esModule", {
5676  value: true
5677});
5678exports.inQuad = inQuad;
5679exports.outQuad = outQuad;
5680exports.inOutQuad = inOutQuad;
5681exports.inCubic = inCubic;
5682exports.outCubic = outCubic;
5683exports.inOutCubic = inOutCubic;
5684exports.inQuart = inQuart;
5685exports.outQuart = outQuart;
5686exports.inOutQuart = inOutQuart;
5687exports.inQuint = inQuint;
5688exports.outQuint = outQuint;
5689exports.inOutQuint = inOutQuint;
5690exports.inSine = inSine;
5691exports.outSine = outSine;
5692exports.inOutSine = inOutSine;
5693exports.inExpo = inExpo;
5694exports.outExpo = outExpo;
5695exports.inOutExpo = inOutExpo;
5696exports.inCirc = inCirc;
5697exports.outCirc = outCirc;
5698exports.inOutCirc = inOutCirc;
5699exports.outBounce = outBounce;
5700exports.inBack = inBack;
5701exports.outBack = outBack;
5702exports.inOutBack = inOutBack;
5703exports.inElastic = inElastic;
5704exports.outElastic = outElastic;
5705exports.inOutElastic = inOutElastic;
5706exports.swingFromTo = swingFromTo;
5707exports.swingFrom = swingFrom;
5708exports.swingTo = swingTo;
5709exports.bounce = bounce;
5710exports.bouncePast = bouncePast;
5711exports.easeInOut = exports.easeOut = exports.easeIn = exports.ease = void 0;
5712
5713var _bezierEasing = _interopRequireDefault(__webpack_require__(107)); // Easing functions adapted from Thomas Fuchs & Jeremy Kahn
5714// Easing Equations (c) 2003 Robert Penner, BSD license
5715// https://raw.github.com/danro/easing-js/master/LICENSE
5716
5717
5718var magicSwing = 1.70158;
5719var ease = (0, _bezierEasing["default"])(0.25, 0.1, 0.25, 1.0);
5720exports.ease = ease;
5721var easeIn = (0, _bezierEasing["default"])(0.42, 0.0, 1.0, 1.0);
5722exports.easeIn = easeIn;
5723var easeOut = (0, _bezierEasing["default"])(0.0, 0.0, 0.58, 1.0);
5724exports.easeOut = easeOut;
5725var easeInOut = (0, _bezierEasing["default"])(0.42, 0.0, 0.58, 1.0);
5726exports.easeInOut = easeInOut;
5727
5728function inQuad(pos) {
5729  return Math.pow(pos, 2);
5730}
5731
5732function outQuad(pos) {
5733  return -(Math.pow(pos - 1, 2) - 1);
5734}
5735
5736function inOutQuad(pos) {
5737  if ((pos /= 0.5) < 1) {
5738    return 0.5 * Math.pow(pos, 2);
5739  }
5740
5741  return -0.5 * ((pos -= 2) * pos - 2);
5742}
5743
5744function inCubic(pos) {
5745  return Math.pow(pos, 3);
5746}
5747
5748function outCubic(pos) {
5749  return Math.pow(pos - 1, 3) + 1;
5750}
5751
5752function inOutCubic(pos) {
5753  if ((pos /= 0.5) < 1) {
5754    return 0.5 * Math.pow(pos, 3);
5755  }
5756
5757  return 0.5 * (Math.pow(pos - 2, 3) + 2);
5758}
5759
5760function inQuart(pos) {
5761  return Math.pow(pos, 4);
5762}
5763
5764function outQuart(pos) {
5765  return -(Math.pow(pos - 1, 4) - 1);
5766}
5767
5768function inOutQuart(pos) {
5769  if ((pos /= 0.5) < 1) {
5770    return 0.5 * Math.pow(pos, 4);
5771  }
5772
5773  return -0.5 * ((pos -= 2) * Math.pow(pos, 3) - 2);
5774}
5775
5776function inQuint(pos) {
5777  return Math.pow(pos, 5);
5778}
5779
5780function outQuint(pos) {
5781  return Math.pow(pos - 1, 5) + 1;
5782}
5783
5784function inOutQuint(pos) {
5785  if ((pos /= 0.5) < 1) {
5786    return 0.5 * Math.pow(pos, 5);
5787  }
5788
5789  return 0.5 * (Math.pow(pos - 2, 5) + 2);
5790}
5791
5792function inSine(pos) {
5793  return -Math.cos(pos * (Math.PI / 2)) + 1;
5794}
5795
5796function outSine(pos) {
5797  return Math.sin(pos * (Math.PI / 2));
5798}
5799
5800function inOutSine(pos) {
5801  return -0.5 * (Math.cos(Math.PI * pos) - 1);
5802}
5803
5804function inExpo(pos) {
5805  return pos === 0 ? 0 : Math.pow(2, 10 * (pos - 1));
5806}
5807
5808function outExpo(pos) {
5809  return pos === 1 ? 1 : -Math.pow(2, -10 * pos) + 1;
5810}
5811
5812function inOutExpo(pos) {
5813  if (pos === 0) {
5814    return 0;
5815  }
5816
5817  if (pos === 1) {
5818    return 1;
5819  }
5820
5821  if ((pos /= 0.5) < 1) {
5822    return 0.5 * Math.pow(2, 10 * (pos - 1));
5823  }
5824
5825  return 0.5 * (-Math.pow(2, -10 * --pos) + 2);
5826}
5827
5828function inCirc(pos) {
5829  return -(Math.sqrt(1 - pos * pos) - 1);
5830}
5831
5832function outCirc(pos) {
5833  return Math.sqrt(1 - Math.pow(pos - 1, 2));
5834}
5835
5836function inOutCirc(pos) {
5837  if ((pos /= 0.5) < 1) {
5838    return -0.5 * (Math.sqrt(1 - pos * pos) - 1);
5839  }
5840
5841  return 0.5 * (Math.sqrt(1 - (pos -= 2) * pos) + 1);
5842}
5843
5844function outBounce(pos) {
5845  if (pos < 1 / 2.75) {
5846    return 7.5625 * pos * pos;
5847  } else if (pos < 2 / 2.75) {
5848    return 7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75;
5849  } else if (pos < 2.5 / 2.75) {
5850    return 7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375;
5851  } else {
5852    return 7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375;
5853  }
5854}
5855
5856function inBack(pos) {
5857  var s = magicSwing;
5858  return pos * pos * ((s + 1) * pos - s);
5859}
5860
5861function outBack(pos) {
5862  var s = magicSwing;
5863  return (pos -= 1) * pos * ((s + 1) * pos + s) + 1;
5864}
5865
5866function inOutBack(pos) {
5867  var s = magicSwing;
5868
5869  if ((pos /= 0.5) < 1) {
5870    return 0.5 * (pos * pos * (((s *= 1.525) + 1) * pos - s));
5871  }
5872
5873  return 0.5 * ((pos -= 2) * pos * (((s *= 1.525) + 1) * pos + s) + 2);
5874}
5875
5876function inElastic(pos) {
5877  var s = magicSwing;
5878  var p = 0;
5879  var a = 1;
5880
5881  if (pos === 0) {
5882    return 0;
5883  }
5884
5885  if (pos === 1) {
5886    return 1;
5887  }
5888
5889  if (!p) {
5890    p = 0.3;
5891  }
5892
5893  if (a < 1) {
5894    a = 1;
5895    s = p / 4;
5896  } else {
5897    s = p / (2 * Math.PI) * Math.asin(1 / a);
5898  }
5899
5900  return -(a * Math.pow(2, 10 * (pos -= 1)) * Math.sin((pos - s) * (2 * Math.PI) / p));
5901}
5902
5903function outElastic(pos) {
5904  var s = magicSwing;
5905  var p = 0;
5906  var a = 1;
5907
5908  if (pos === 0) {
5909    return 0;
5910  }
5911
5912  if (pos === 1) {
5913    return 1;
5914  }
5915
5916  if (!p) {
5917    p = 0.3;
5918  }
5919
5920  if (a < 1) {
5921    a = 1;
5922    s = p / 4;
5923  } else {
5924    s = p / (2 * Math.PI) * Math.asin(1 / a);
5925  }
5926
5927  return a * Math.pow(2, -10 * pos) * Math.sin((pos - s) * (2 * Math.PI) / p) + 1;
5928}
5929
5930function inOutElastic(pos) {
5931  var s = magicSwing;
5932  var p = 0;
5933  var a = 1;
5934
5935  if (pos === 0) {
5936    return 0;
5937  }
5938
5939  if ((pos /= 1 / 2) === 2) {
5940    return 1;
5941  }
5942
5943  if (!p) {
5944    p = 0.3 * 1.5;
5945  }
5946
5947  if (a < 1) {
5948    a = 1;
5949    s = p / 4;
5950  } else {
5951    s = p / (2 * Math.PI) * Math.asin(1 / a);
5952  }
5953
5954  if (pos < 1) {
5955    return -0.5 * (a * Math.pow(2, 10 * (pos -= 1)) * Math.sin((pos - s) * (2 * Math.PI) / p));
5956  }
5957
5958  return a * Math.pow(2, -10 * (pos -= 1)) * Math.sin((pos - s) * (2 * Math.PI) / p) * 0.5 + 1;
5959}
5960
5961function swingFromTo(pos) {
5962  var s = magicSwing;
5963  return (pos /= 0.5) < 1 ? 0.5 * (pos * pos * (((s *= 1.525) + 1) * pos - s)) : 0.5 * ((pos -= 2) * pos * (((s *= 1.525) + 1) * pos + s) + 2);
5964}
5965
5966function swingFrom(pos) {
5967  var s = magicSwing;
5968  return pos * pos * ((s + 1) * pos - s);
5969}
5970
5971function swingTo(pos) {
5972  var s = magicSwing;
5973  return (pos -= 1) * pos * ((s + 1) * pos + s) + 1;
5974}
5975
5976function bounce(pos) {
5977  if (pos < 1 / 2.75) {
5978    return 7.5625 * pos * pos;
5979  } else if (pos < 2 / 2.75) {
5980    return 7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75;
5981  } else if (pos < 2.5 / 2.75) {
5982    return 7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375;
5983  } else {
5984    return 7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375;
5985  }
5986}
5987
5988function bouncePast(pos) {
5989  if (pos < 1 / 2.75) {
5990    return 7.5625 * pos * pos;
5991  } else if (pos < 2 / 2.75) {
5992    return 2 - (7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75);
5993  } else if (pos < 2.5 / 2.75) {
5994    return 2 - (7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375);
5995  } else {
5996    return 2 - (7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375);
5997  }
5998}
5999
6000/***/ }),
6001/* 107 */
6002/***/ (function(module, exports) {
6003
6004/**
6005 * https://github.com/gre/bezier-easing
6006 * BezierEasing - use bezier curve for transition easing function
6007 * by Gaëtan Renaudeau 2014 - 2015 – MIT License
6008 */
6009
6010// These values are established by empiricism with tests (tradeoff: performance VS precision)
6011var NEWTON_ITERATIONS = 4;
6012var NEWTON_MIN_SLOPE = 0.001;
6013var SUBDIVISION_PRECISION = 0.0000001;
6014var SUBDIVISION_MAX_ITERATIONS = 10;
6015
6016var kSplineTableSize = 11;
6017var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);
6018
6019var float32ArraySupported = typeof Float32Array === 'function';
6020
6021function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }
6022function B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }
6023function C (aA1)      { return 3.0 * aA1; }
6024
6025// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.
6026function calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; }
6027
6028// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.
6029function getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }
6030
6031function binarySubdivide (aX, aA, aB, mX1, mX2) {
6032  var currentX, currentT, i = 0;
6033  do {
6034    currentT = aA + (aB - aA) / 2.0;
6035    currentX = calcBezier(currentT, mX1, mX2) - aX;
6036    if (currentX > 0.0) {
6037      aB = currentT;
6038    } else {
6039      aA = currentT;
6040    }
6041  } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);
6042  return currentT;
6043}
6044
6045function newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {
6046 for (var i = 0; i < NEWTON_ITERATIONS; ++i) {
6047   var currentSlope = getSlope(aGuessT, mX1, mX2);
6048   if (currentSlope === 0.0) {
6049     return aGuessT;
6050   }
6051   var currentX = calcBezier(aGuessT, mX1, mX2) - aX;
6052   aGuessT -= currentX / currentSlope;
6053 }
6054 return aGuessT;
6055}
6056
6057module.exports = function bezier (mX1, mY1, mX2, mY2) {
6058  if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {
6059    throw new Error('bezier x values must be in [0, 1] range');
6060  }
6061
6062  // Precompute samples table
6063  var sampleValues = float32ArraySupported ? new Float32Array(kS
6063plineTableSize) : new Array(kSplineTableSize);
6064  if (mX1 !== mY1 || mX2 !== mY2) {
6065    for (var i = 0; i < kSplineTableSize; ++i) {
6066      sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);
6067    }
6068  }
6069
6070  function getTForX (aX) {
6071    var intervalStart = 0.0;
6072    var currentSample = 1;
6073    var lastSample = kSplineTableSize - 1;
6074
6075    for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {
6076      intervalStart += kSampleStepSize;
6077    }
6078    --currentSample;
6079
6080    // Interpolate to provide an initial guess for t
6081    var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);
6082    var guessForT = intervalStart + dist * kSampleStepSize;
6083
6084    var initialSlope = getSlope(guessForT, mX1, mX2);
6085    if (initialSlope >= NEWTON_MIN_SLOPE) {
6086      return newtonRaphsonIterate(aX, guessForT, mX1, mX2);
6087    } else if (initialSlope === 0.0) {
6088      return guessForT;
6089    } else {
6090      return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);
6091    }
6092  }
6093
6094  return function BezierEasing (x) {
6095    if (mX1 === mY1 && mX2 === mY2) {
6096      return x; // linear
6097    }
6098    // Because JavaScript number are imprecise, we should guarantee the extremes are right.
6099    if (x === 0) {
6100      return 0;
6101    }
6102    if (x === 1) {
6103      return 1;
6104    }
6105    return calcBezier(getTForX(x), mY1, mY2);
6106  };
6107};
6108
6109
6110/***/ }),
6111/* 108 */
6112/***/ (function(module, exports, __webpack_require__) {
6113
6114"use strict";
6115
6116
6117var _interopRequireDefault2 = __webpack_require__(0);
6118
6119var _toConsumableArray2 = _interopRequireDefault2(__webpack_require__(109));
6120
6121var _interopRequireDefault = __webpack_require__(0);
6122
6123var _interopRequireWildcard = __webpack_require__(13);
6124
6125Object.defineProperty(exports, "__esModule", {
6126  value: true
6127});
6128exports.optimizeFloat = optimizeFloat;
6129exports.createBezierEasing = createBezierEasing;
6130exports.applyEasing = applyEasing;
6131
6132var easings = _interopRequireWildcard(__webpack_require__(106));
6133
6134var _bezierEasing = _interopRequireDefault(__webpack_require__(107));
6135
6136function optimizeFloat(value) {
6137  var digits = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;
6138  var base = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;
6139  var pow = Math.pow(base, digits);
6140
6141  var _float = Number(Math.round(value * pow) / pow);
6142
6143  return Math.abs(_float) > 0.0001 ? _float : 0;
6144}
6145
6146function createBezierEasing(easing) {
6147  return (0, _bezierEasing["default"]).apply(void 0, (0, _toConsumableArray2["default"])(easing));
6148}
6149
6150function applyEasing(easing, position, customEasingFn) {
6151  if (position === 0) {
6152    return 0;
6153  }
6154
6155  if (position === 1) {
6156    return 1;
6157  }
6158
6159  if (customEasingFn) {
6160    return optimizeFloat(position > 0 ? customEasingFn(position) : position);
6161  }
6162
6163  return optimizeFloat(position > 0 && easing && easings[easing] ? easings[easing](position) : position);
6164}
6165
6166/***/ }),
6167/* 109 */
6168/***/ (function(module, exports, __webpack_require__) {
6169
6170var arrayWithoutHoles = __webpack_require__(243);
6171
6172var iterableToArray = __webpack_require__(244);
6173
6174var nonIterableSpread = __webpack_require__(245);
6175
6176function _toConsumableArray(arr) {
6177  return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();
6178}
6179
6180module.exports = _toConsumableArray;
6181
6182/***/ }),
6183/* 110 */
6184/***/ (function(module, exports, __webpack_require__) {
6185
6186"use strict";
6187
6188
6189var _interopRequireDefault = __webpack_require__(0);
6190
6191var _defineProperty2 = _interopRequireDefault(__webpack_require__(27));
6192
6193Object.defineProperty(exports, "__esModule", {
6194  value: true
6195});
6196exports.isPluginType = isPluginType;
6197exports.clearPlugin = exports.renderPlugin = exports.createPluginInstance = exports.getPluginDestination = exports.getPluginDuration = exports.getPluginOrigin = exports.getPluginConfig = void 0;
6198
6199var _IX2LottieUtils = __webpack_require__(247);
6200
6201var _constants = __webpack_require__(2);
6202
6203var _IX2BrowserSupport = __webpack_require__(45); // eslint-disable-next-line webflow/module-top-level-imports, webflow/packages-must-be-defined
6204
6205
6206var pluginMethodMap = (0, _defineProperty2["default"])({}, _constants.ActionTypeConsts.PLUGIN_LOTTIE, {
6207  getConfig: _IX2LottieUtils.getPluginConfig,
6208  getOrigin: _IX2LottieUtils.getPluginOrigin,
6209  getDuration: _IX2LottieUtils.getPluginDuration,
6210  getDestination: _IX2LottieUtils.getPluginDestination,
6211  createInstance: _IX2LottieUtils.createPluginInstance,
6212  render: _IX2LottieUtils.renderPlugin,
6213  clear: _IX2LottieUtils.clearPlugin
6214});
6215
6216function isPluginType(actionTypeId) {
6217  return actionTypeId === _constants.ActionTypeConsts.PLUGIN_LOTTIE;
6218}
6219
6220var pluginMethod = function pluginMethod(methodName) {
6221  return function (actionTypeId) {
6222    if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
6223      // IX2 plugins require browser libs for now
6224      return function () {
6225        return null;
6226      };
6227    }
6228
6229    var plugin = pluginMethodMap[actionTypeId];
6230
6231    if (!plugin) {
6232      throw new Error("IX2 no plugin configured for: ".concat(actionTypeId));
6233    }
6234
6235    var method = plugin[methodName];
6236
6237    if (!method) {
6238      throw new Error("IX2 invalid plugin method: ".concat(methodName));
6239    }
6240
6241    return method;
6242  };
6243};
6244
6245var getPluginConfig = pluginMethod('getConfig');
6246exports.getPluginConfig = getPluginConfig;
6247var getPluginOrigin = pluginMethod('getOrigin');
6248exports.getPluginOrigin = getPluginOrigin;
6249var getPluginDuration = pluginMethod('getDuration');
6250exports.getPluginDuration = getPluginDuration;
6251var getPluginDestination = pluginMethod('getDestination');
6252exports.getPluginDestination = getPluginDestination;
6253var createPluginInstance = pluginMethod('createInstance');
6254exports.createPluginInstance = createPluginInstance;
6255var renderPlugin = pluginMethod('render');
6256exports.renderPlugin = renderPlugin;
6257var clearPlugin = pluginMethod('clear');
6258exports.clearPlugin = clearPlugin;
6259
6260/***/ }),
6261/* 111 */
6262/***/ (function(module, exports, __webpack_require__) {
6263
6264var baseForOwn = __webpack_require__(112),
6265    createBaseEach = __webpack_require__(254);
6266
6267/**
6268 * The base implementation of `_.forEach` without support for iteratee shorthands.
6269 *
6270 * @private
6271 * @param {Array|Object} collection The collection to iterate over.
6272 * @param {Function} iteratee The function invoked per iteration.
6273 * @returns {Array|Object} Returns `collection`.
6274 */
6275var baseEach = createBaseEach(baseForOwn);
6276
6277module.exports = baseEach;
6278
6279
6280/***/ }),
6281/* 112 */
6282/***/ (function(module, exports, __webpack_require__) {
6283
6284var baseFor = __webpack_require__(252),
6285    keys = __webpack_require__(33);
6286
6287/**
6288 * The base implementation of `_.forOwn` without support for iteratee shorthands.
6289 *
6290 * @private
6291 * @param {Object} object The object to iterate over.
6292 * @param {Function} iteratee The function invoked per iteration.
6293 * @returns {Object} Returns `object`.
6294 */
6295function baseForOwn(object, iteratee) {
6296  return object && baseFor(object, iteratee, keys);
6297}
6298
6299module.exports = baseForOwn;
6300
6301
6302/***/ }),
6303/* 113 */
6304/***/ (function(module, exports, __webpack_require__) {
6305
6306"use strict";
6307
6308
6309var _interopRequireDefault = __webpack_require__(258);
6310
6311exports.__esModule = true;
6312exports.default = void 0;
6313
6314var _shallowEqual = _interopRequireDefault(__webpack_require__(259));
6315
6316var _default = _shallowEqual.default;
6317exports.default = _default;
6318
6319/***/ }),
6320/* 114 */
6321/***/ (function(module, exports, __webpack_require__) {
6322
6323"use strict";
6324
6325
6326var _interopRequireDefault2 = __webpack_require__(0);
6327
6328var _toConsumableArray2 = _interopRequireDefault2(__webpack_require__(109));
6329
6330var _interopRequireWildcard = __webpack_require__(13);
6331
6332var _interopRequireDefault = __webpack_require__(0);
6333
6334Object.defineProperty(exports, "__esModule", {
6335  value: true
6336});
6337exports.observeRequests = observeRequests;
6338exports.startEngine = startEngine;
6339exports.stopEngine = stopEngine;
6340exports.stopAllActionGroups = stopAllActionGroups;
6341exports.stopActionGroup = stopActionGroup;
6342exports.startActionGroup = startActionGroup;
6343
6344var _extends2 = _interopRequireDefault(__webpack_require__(28));
6345
6346var _objectWithoutPropertiesLoose2 = _interopRequireDefault(__webpack_require__(262));
6347
6348var _find = _interopRequireDefault(__webpack_require__(85));
6349
6350var _get = _interopRequireDefault(__webpack_require__(35));
6351
6352var _size = _interopRequireDefault(__webpack_require__(263));
6353
6354var _omitBy = _interopRequireDefault(__webpack_require__(269));
6355
6356var _isEmpty = _interopRequireDefault(__webpack_require__(281));
6357
6358var _mapValues = _interopRequireDefault(__webpack_require__(282));
6359
6360var _forEach = _interopRequireDefault(__webpack_require__(283));
6361
6362var _throttle = _interopRequireDefault(__webpack_require__(286));
6363
6364var _shallowEqual = _interopRequireDefault(__webpack_require__(113));
6365
6366var _constants = __webpack_require__(2);
6367
6368var _utils = __webpack_require__(289);
6369
6370var _shared = __webpack_require__(10);
6371
6372var _IX2EngineActions = __webpack_require__(61);
6373
6374var elementApi = _interopRequireWildcard(__webpack_require__(291));
6375
6376var _IX2VanillaEvents = _interopRequireDefault(__webpack_require__(292));
6377/* eslint-env browser */
6378
6379
6380var _constants$IX2EngineC = _constants.IX2EngineConstants,
6381    COLON_DELIMITER = _constants$IX2EngineC.COLON_DELIMITER,
6382    BOUNDARY_SELECTOR = _constants$IX2EngineC.BOUNDARY_SELECTOR,
6383    HTML_ELEMENT = _constants$IX2EngineC.HTML_ELEMENT,
6384    RENDER_GENERAL = _constants$IX2EngineC.RENDER_GENERAL,
6385    W_MOD_IX = _constants$IX2EngineC.W_MOD_IX;
6386var _shared$IX2VanillaUti = _shared.IX2VanillaUtils,
6387    getAffectedElements = _shared$IX2VanillaUti.getAffectedElements,
6388    getElementId = _shared$IX2VanillaUti.getElementId,
6389    getDestinationValues = _shared$IX2VanillaUti.getDestinationValues,
6390    observeStore = _shared$IX2VanillaUti.observeStore,
6391    getInstanceId = _shared$IX2VanillaUti.getInstanceId,
6392    renderHTMLElement = _shared$IX2VanillaUti.renderHTMLElement,
6393    clearAllStyles = _shared$IX2VanillaUti.clearAllStyles,
6394    getMaxDurationItemIndex = _shared$IX2VanillaUti.getMaxDurationItemIndex,
6395    getComputedStyle = _shared$IX2VanillaUti.getComputedStyle,
6396    getInstanceOrigin = _shared$IX2VanillaUti.getInstanceOrigin,
6397    reduceListToGroup = _shared$IX2VanillaUti.reduceListToGroup,
6398    shouldNamespaceEventParameter = _shared$IX2VanillaUti.shouldNamespaceEventParameter,
6399    getNamespacedParameterId = _shared$IX2VanillaUti.getNamespacedParameterId,
6400    shouldAllowMediaQuery = _shared$IX2VanillaUti.shouldAllowMediaQuery,
6401    cleanupHTMLElement = _shared$IX2VanillaUti.cleanupHTMLElement,
6402    stringifyTarget = _shared$IX2VanillaUti.stringifyTarget,
6403    mediaQueriesEqual = _shared$IX2VanillaUti.mediaQueriesEqual;
6404var _shared$IX2VanillaPlu = _shared.IX2VanillaPlugins,
6405    isPluginType = _shared$IX2VanillaPlu.isPluginType,
6406    createPluginInstance = _shared$IX2VanillaPlu.createPluginInstance,
6407    getPluginDuration = _shared$IX2VanillaPlu.getPluginDuration;
6408var ua = navigator.userAgent;
6409var IS_MOBILE_SAFARI = ua.match(/iPad/i) || ua.match(/iPhone/); // Keep throttled events at ~80fps to reduce reflows while maintaining render accuracy
6410
6411var THROTTLED_EVENT_WAIT = 12; // $FlowFixMe
6412
6413function observeRequests(store) {
6414  observeStore({
6415    store: store,
6416    select: function select(_ref) {
6417      var ixRequest = _ref.ixRequest;
6418      return ixRequest.preview;
6419    },
6420    onChange: handlePreviewRequest
6421  });
6422  observeStore({
6423    store: store,
6424    select: function select(_ref2) {
6425      var ixRequest = _ref2.ixRequest;
6426      return ixRequest.playback;
6427    },
6428    onChange: handlePlaybackRequest
6429  });
6430  observeStore({
6431    store: store,
6432    select: function select(_ref3) {
6433      var ixRequest = _ref3.ixRequest;
6434      return ixRequest.stop;
6435    },
6436    onChange: handleStopRequest
6437  });
6438  observeStore({
6439    store: store,
6440    select: function select(_ref4) {
6441      var ixRequest = _ref4.ixRequest;
6442      return ixRequest.clear;
6443    },
6444    onChange: handleClearRequest
6445  });
6446}
6447
6448function observeMediaQueryChange(store) {
6449  observeStore({
6450    store: store,
6451    select: function select(_ref5) {
6452      var ixSession = _ref5.ixSession;
6453      return ixSession.mediaQueryKey;
6454    },
6455    onChange: function onChange() {
6456      stopEngine(store);
6457      clearAllStyles({
6458        store: store,
6459        elementApi: elementApi
6460      });
6461      startEngine({
6462        store: store,
6463        allowEvents: true
6464      });
6465      dispatchPageUpdateEvent();
6466    }
6467  });
6468}
6469
6470function observeOneRenderTick(store, onTick) {
6471  var unsubscribe = observeStore({
6472    store: store,
6473    select: function select(_ref6) {
6474      var ixSession = _ref6.ixSession;
6475      return ixSession.tick;
6476    },
6477    onChange: function onChange(tick) {
6478      onTick(tick);
6479      unsubscribe();
6480    }
6481  });
6482}
6483
6484function handlePreviewRequest(_ref7, store) {
6485  var rawData = _ref7.rawData,
6486      defer = _ref7.defer;
6487
6488  var start = function start() {
6489    startEngine({
6490      store: store,
6491      rawData: rawData,
6492      allowEvents: true
6493    });
6494    dispatchPageUpdateEvent();
6495  };
6496
6497  defer ? setTimeout(start, 0) : start();
6498}
6499
6500function dispatchPageUpdateEvent() {
6501  document.dispatchEvent(new CustomEvent('IX2_PAGE_UPDATE'));
6502}
6503
6504function handlePlaybackRequest(playback, store) {
6505  var actionTypeId = playback.actionTypeId,
6506      actionListId = playback.actionListId,
6507      actionItemId = playback.actionItemId,
6508      eventId = playback.eventId,
6509      allowEvents = playback.allowEvents,
6510      immediate = playback.immediate,
6511      testManual = playback.testManual,
6512      _playback$verbose = playback.verbose,
6513      verbose = _playback$verbose === void 0 ? true : _playback$verbose;
6514  var rawData = playback.rawData;
6515
6516  if (actionListId && actionItemId && rawData && immediate) {
6517    var actionList = rawData.actionLists[actionListId];
6518
6519    if (actionList) {
6520      rawData = reduceListToGroup({
6521        actionList: actionList,
6522        actionItemId: actionItemId,
6523        rawData: rawData
6524      });
6525    }
6526  }
6527
6528  startEngine({
6529    store: store,
6530    rawData: rawData,
6531    allowEvents: allowEvents,
6532    testManual: testManual
6533  });
6534
6535  if (actionListId && actionTypeId === _constants.ActionTypeConsts.GENERAL_START_ACTION || (0, _utils.isQuickEffect)(actionTypeId)) {
6536    stopActionGroup({
6537      store: store,
6538      actionListId: actionListId
6539    });
6540    renderInitialGroup({
6541      store: store,
6542      actionListId: actionListId,
6543      eventId: eventId
6544    });
6545    var started = startActionGroup({
6546      store: store,
6547      eventId: eventId,
6548      actionListId: actionListId,
6549      immediate: immediate,
6550      verbose: verbose
6551    });
6552
6553    if (verbose && started) {
6554      store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({
6555        actionListId: actionListId,
6556        isPlaying: !immediate
6557      }));
6558    }
6559  }
6560}
6561
6562function handleStopRequest(_ref8, store) {
6563  var actionListId = _ref8.actionListId;
6564
6565  if (actionListId) {
6566    stopActionGroup({
6567      store: store,
6568      actionListId: actionListId
6569    });
6570  } else {
6571    stopAllActionGroups({
6572      store: store
6573    });
6574  }
6575
6576  stopEngine(store);
6577}
6578
6579function handleClearRequest(state, store) {
6580  stopEngine(store);
6581  clearAllStyles({
6582    store: store,
6583    elementApi: elementApi
6584  });
6585} // $FlowFixMe
6586
6587
6588function startEngine(_ref9) {
6589  var store = _ref9.store,
6590      rawData = _ref9.rawData,
6591      allowEvents = _ref9.allowEvents,
6592      testManual = _ref9.testManual;
6593
6594  var _store$getState = store.getState(),
6595      ixSession = _store$getState.ixSession;
6596
6597  if (rawData) {
6598    store.dispatch((0, _IX2EngineActions.rawDataImported)(rawData));
6599  }
6600
6601  if (!ixSession.active) {
6602    store.dispatch((0, _IX2EngineActions.sessionInitialized)({
6603      hasBoundaryNodes: Boolean(document.querySelector(BOUNDARY_SELECTOR))
6604    }));
6605
6606    if (allowEvents) {
6607      bindEvents(store);
6608      addDocumentClass();
6609
6610      if (store.getState().ixSession.hasDefinedMediaQueries) {
6611        observeMediaQueryChange(store);
6612      }
6613    }
6614
6615    store.dispatch((0, _IX2EngineActions.sessionStarted)());
6616    startRenderLoop(store, testManual);
6617  }
6618}
6619
6620function addDocumentClass() {
6621  var _document = document,
6622      documentElement = _document.documentElement; // $FlowFixMe
6623
6624  if (documentElement.className.indexOf(W_MOD_IX) === -1) {
6625    // $FlowFixMe
6626    documentElement.className += " ".concat(W_MOD_IX);
6627  }
6628}
6629
6630function startRenderLoop(store, testManual) {
6631  var handleFrame = function handleFrame(now) {
6632    var _store$getState2 = store.getState(),
6633        ixSession = _store$getState2.ixSession,
6634        ixParameters = _store$getState2.ixParameters;
6635
6636    if (ixSession.active) {
6637      store.dispatch((0, _IX2EngineActions.animationFrameChanged)(now, ixParameters));
6638
6639      if (testManual) {
6640        observeOneRenderTick(store, handleFrame);
6641      } else {
6642        requestAnimationFrame(handleFrame);
6643      }
6644    }
6645  };
6646
6647  handleFrame(window.performance.now());
6648} // $FlowFixMe
6649
6650
6651function stopEngine(store) {
6652  var _store$getState3 = store.getState(),
6653      ixSession = _store$getState3.ixSession;
6654
6655  if (ixSession.active) {
6656    var eventListeners = ixSession.eventListeners;
6657    eventListeners.forEach(clearEventListener);
6658    store.dispatch((0, _IX2EngineActions.sessionStopped)());
6659  }
6660}
6661
6662function clearEventListener(_ref10) {
6663  var target = _ref10.target,
6664      listenerParams = _ref10.listenerParams;
6665  target.removeEventListener.apply(target, listenerParams);
6666}
6667
6668function createGroupInstances(_ref11) {
6669  var store = _ref11.store,
6670      eventStateKey = _ref11.eventStateKey,
6671      eventTarget = _ref11.eventTarget,
6672      eventId = _ref11.eventId,
6673      eventConfig = _ref11.eventConfig,
6674      actionListId = _ref11.actionListId,
6675      parameterGroup = _ref11.parameterGroup,
6676      smoothing = _ref11.smoothing,
6677      restingValue = _ref11.restingValue;
6678
6679  var _store$getState4 = store.getState(),
6680      ixData = _store$getState4.ixData,
6681      ixSession = _store$getState4.ixSession;
6682
6683  var events = ixData.events;
6684  var event = events[eventId];
6685  var eventTypeId = event.eventTypeId;
6686  var targetCache = {};
6687  var instanceActionGroups = {};
6688  var instanceConfigs = [];
6689  var continuousActionGroups = parameterGroup.continuousActionGroups;
6690  var parameterId = parameterGroup.id;
6691
6692  if (shouldNamespaceEventParameter(eventTypeId, eventConfig)) {
6693    parameterId = getNamespacedParameterId(eventStateKey, parameterId);
6694  } // Limit affected elements when event target is within a boundary node
6695
6696
6697  var eventElementRoot = ixSession.hasBoundaryNodes && eventTarget ? elementApi.getClosestElement(eventTarget, BOUNDARY_SELECTOR) : null;
6698  continuousActionGroups.forEach(function (actionGroup) {
6699    var keyframe = actionGroup.keyframe,
6700        actionItems = actionGroup.actionItems;
6701    actionItems.forEach(function (actionItem) {
6702      var actionTypeId = actionItem.actionTypeId;
6703      var target = actionItem.config.target;
6704
6705      if (!target) {
6706        return;
6707      }
6708
6709      var elementRoot = target.boundaryMode ? eventElementRoot : null;
6710      var key = stringifyTarget(target) + COLON_DELIMITER + actionTypeId;
6711      instanceActionGroups[key] = appendActionItem(instanceActionGroups[key], keyframe, actionItem);
6712
6713      if (!targetCache[key]) {
6714        targetCache[key] = true;
6715        var config = actionItem.config;
6716        getAffectedElements({
6717          config: config,
6718          event: event,
6719          eventTarget: eventTarget,
6720          elementRoot: elementRoot,
6721          elementApi: elementApi
6722        }).forEach(function (element) {
6723          instanceConfigs.push({
6724            element: element,
6725            key: key
6726          });
6727        });
6728      }
6729    });
6730  });
6731  instanceConfigs.forEach(function (_ref12) {
6732    var element = _ref12.element,
6733        key = _ref12.key;
6734    var actionGroups = instanceActionGroups[key];
6735    var actionItem = (0, _get["default"])(actionGroups, "[0].actionItems[0]", {});
6736    var actionTypeId = actionItem.actionTypeId;
6737    var pluginInstance = isPluginType(actionTypeId) ? // $FlowFixMe
6738    createPluginInstance(actionTypeId)(element, actionItem) : null;
6739    var destination = getDestinationValues({
6740      element: element,
6741      actionItem: actionItem,
6742      elementApi: elementApi
6743    }, // $FlowFixMe
6744    pluginInstance);
6745    createInstance({
6746      store: store,
6747      element: element,
6748      eventId: eventId,
6749      actionListId: actionListId,
6750      actionItem: actionItem,
6751      destination: destination,
6752      continuous: true,
6753      parameterId: parameterId,
6754      actionGroups: actionGroups,
6755      smoothing: smoothing,
6756      restingValue: restingValue,
6757      pluginInstance: pluginInstance
6758    });
6759  });
6760}
6761
6762function appendActionItem() {
6763  var actionGroups = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
6764  var keyframe = arguments.length > 1 ? arguments[1] : undefined;
6765  var actionItem = arguments.length > 2 ? arguments[2] : undefined;
6766  var newActionGroups = (0, _toConsumableArray2["default"])(actionGroups);
6767  var groupIndex;
6768  newActionGroups.some(function (group, index) {
6769    if (group.keyframe === keyframe) {
6770      groupIndex = index;
6771      return true;
6772    }
6773
6774    return false;
6775  });
6776
6777  if (groupIndex == null) {
6778    groupIndex = newActionGroups.length;
6779    newActionGroups.push({
6780      keyframe: keyframe,
6781      actionItems: []
6782    });
6783  }
6784
6785  newActionGroups[groupIndex].actionItems.push(actionItem);
6786  return newActionGroups;
6787}
6788
6789function bindEvents(store) {
6790  var _store$getState5 = store.getState(),
6791      ixData = _store$getState5.ixData;
6792
6793  var eventTypeMap = ixData.eventTypeMap;
6794  updateViewportWidth(store);
6795  (0, _forEach["default"])(eventTypeMap, function (events, key) {
6796    var logic = _IX2VanillaEvents["default"][key];
6797
6798    if (!logic) {
6799      console.warn("IX2 event type not configured: ".concat(key));
6800      return;
6801    }
6802
6803    bindEventType({
6804      logic: logic,
6805      store: store,
6806      events: events
6807    });
6808  });
6809
6810  var _store$getState6 = store.getState(),
6811      ixSession = _store$getState6.ixSession;
6812
6813  if (ixSession.eventListeners.length) {
6814    bindResizeEvents(store);
6815  }
6816}
6817
6818var WINDOW_RESIZE_EVENTS = ['resize', 'orientationchange'];
6819
6820function bindResizeEvents(store) {
6821  var handleResize = function handleResize() {
6822    updateViewportWidth(store);
6823  };
6824
6825  WINDOW_RESIZE_EVENTS.forEach(function (type) {
6826    window.addEventListener(type, handleResize);
6827    store.dispatch((0, _IX2EngineActions.eventListenerAdded)(window, [type, handleResize]));
6828  });
6829  handleResize();
6830}
6831
6832function updateViewportWidth(store) {
6833  var _store$getState7 = store.getState(),
6834      ixSession = _store$getState7.ixSession,
6835      ixData = _store$getState7.ixData;
6836
6837  var width = window.innerWidth;
6838
6839  if (width !== ixSession.viewportWidth) {
6840    var mediaQueries = ixData.mediaQueries;
6841    store.dispatch((0, _IX2EngineActions.viewportWidthChanged)({
6842      width: width,
6843      mediaQueries: mediaQueries
6844    }));
6845  }
6846}
6847
6848var mapFoundValues = function mapFoundValues(object, iteratee) {
6849  return (0, _omitBy["default"])((0, _mapValues["default"])(object, iteratee), _isEmpty["default"]);
6850};
6851
6852var forEachEventTarget = function forEachEventTarget(eventTargets, eventCallback) {
6853  (0, _forEach["default"])(eventTargets, function (elements, eventId) {
6854    elements.forEach(function (element, index) {
6855      var eventStateKey = eventId + COLON_DELIMITER + index;
6856      eventCallback(element, eventId, eventStateKey);
6857    });
6858  });
6859};
6860
6861var getAffectedForEvent = function getAffectedForEvent(_ref13) {
6862  var singleTarget = _ref13.target,
6863      targets = _ref13.targets;
6864
6865  if (targets && targets.length) {
6866    return targets.reduce(function (acc, target) {
6867      var config = {
6868        target: target
6869      };
6870      return acc.concat(getAffectedElements({
6871        config: config,
6872        elementApi: elementApi
6873      }));
6874    }, []);
6875  } else {
6876    var config = {
6877      target: singleTarget
6878    };
6879    return getAffectedElements({
6880      config: config,
6881      elementApi: elementApi
6882    });
6883  }
6884};
6885
6886function bindEventType(_ref14) {
6887  var logic = _ref14.logic,
6888      store = _ref14.store,
6889      events = _ref14.events;
6890  injectBehaviorCSSFixes(events);
6891  var eventTypes = logic.types,
6892      eventHandler = logic.handler;
6893
6894  var _store$getState8 = store.getState(),
6895      ixData = _store$getState8.ixData;
6896
6897  var actionLists = ixData.actionLists;
6898  var eventTargets = mapFoundValues(events, getAffectedForEvent);
6899
6900  if (!(0, _size["default"])(eventTargets)) {
6901    return;
6902  }
6903
6904  (0, _forEach["default"])(eventTargets, function (elements, key) {
6905    var event = events[key];
6906    var eventAction = event.action,
6907        eventId = event.id,
6908        _event$mediaQueries = event.mediaQueries,
6909        mediaQueries = _event$mediaQueries === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries;
6910    var actionListId = eventAction.config.actionListId;
6911
6912    if (!mediaQueriesEqual(mediaQueries, ixData.mediaQueryKeys)) {
6913      store.dispatch((0, _IX2EngineActions.mediaQueriesDefined)());
6914    }
6915
6916    if (eventAction.actionTypeId === _constants.ActionTypeConsts.GENERAL_CONTINUOUS_ACTION) {
6917      var configs = Array.isArray(event.config) ? event.config : [event.config];
6918      configs.forEach(function (eventConfig) {
6919        var continuousParameterGroupId = eventConfig.continuousParameterGroupId;
6920        var paramGroups = (0, _get["default"])(actionLists, "".concat(actionListId, ".continuousParameterGroups"), []);
6921        var parameterGroup = (0, _find["default"])(paramGroups, function (_ref15) {
6922          var id = _ref15.id;
6923          return id === continuousParameterGroupId;
6924        });
6925        var smoothing = (eventConfig.smoothing || 0) / 100;
6926        var restingValue = (eventConfig.restingState || 0) / 100;
6927
6928        if (!parameterGroup) {
6929          return;
6930        }
6931
6932        elements.forEach(function (eventTarget, index) {
6933          var eventStateKey = eventId + COLON_DELIMITER + index;
6934          createGroupInstances({
6935            store: store,
6936            eventStateKey: eventStateKey,
6937            eventTarget: eventTarget,
6938            eventId: eventId,
6939            eventConfig: eventConfig,
6940            actionListId: actionListId,
6941            parameterGroup: parameterGroup,
6942            smoothing: smoothing,
6943            restingValue: restingValue
6944          });
6945        });
6946      });
6947    }
6948
6949    if (eventAction.actionTypeId === _constants.ActionTypeConsts.GENERAL_START_ACTION || (0, _utils.isQuickEffect)(eventAction.actionTypeId)) {
6950      renderInitialGroup({
6951        store: store,
6952        actionListId: actionListId,
6953        eventId: eventId
6954      });
6955    }
6956  });
6957
6958  var handleEvent = function handleEvent(nativeEvent) {
6959    var _store$getState9 = store.getState(),
6960        ixSession = _store$getState9.ixSession;
6961
6962    forEachEventTarget(eventTargets, function (element, eventId, eventStateKey) {
6963      var event = events[eventId];
6964      var oldState = ixSession.eventState[eventStateKey];
6965      var eventAction = event.action,
6966          _event$mediaQueries2 = event.mediaQueries,
6967          mediaQueries = _event$mediaQueries2 === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries2; // Bypass event handler if current media query is not listed in event config
6968
6969      if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) {
6970        return;
6971      }
6972
6973      var handleEventWithConfig = function handleEventWithConfig() {
6974        var eventConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
6975        var newState = eventHandler({
6976          store: store,
6977          element: element,
6978          event: event,
6979          eventConfig: eventConfig,
6980          nativeEvent: nativeEvent,
6981          eventStateKey: eventStateKey
6982        }, oldState);
6983
6984        if (!(0, _shallowEqual["default"])(newState, oldState)) {
6985          store.dispatch((0, _IX2EngineActions.eventStateChanged)(eventStateKey, newState));
6986        }
6987      };
6988
6989      if (eventAction.actionTypeId === _constants.ActionTypeConsts.GENERAL_CONTINUOUS_ACTION) {
6990        var configs = Array.isArray(event.config) ? event.config : [event.config];
6991        configs.forEach(handleEventWithConfig);
6992      } else {
6993        handleEventWithConfig();
6994      }
6995    });
6996  };
6997
6998  var handleEventThrottled = (0, _throttle["default"])(handleEvent, THROTTLED_EVENT_WAIT);
6999
7000  var addListeners = function addListeners(_ref16) {
7001    var _ref16$target = _ref16.target,
7002        target = _ref16$target === void 0 ? document : _ref16$target,
7003        types = _ref16.types,
7004        shouldThrottle = _ref16.throttle;
7005    types.split(' ').filter(Boolean).forEach(function (type) {
7006      var handlerFunc = shouldThrottle ? handleEventThrottled : handleEvent; // $FlowFixMe
7007
7008      target.addEventListener(type, handlerFunc);
7009      store.dispatch((0, _IX2EngineActions.eventListenerAdded)(target, [type, handlerFunc]));
7010    });
7011  };
7012
7013  if (Array.isArray(eventTypes)) {
7014    eventTypes.forEach(addListeners);
7015  } else if (typeof eventTypes === 'string') {
7016    addListeners(logic);
7017  }
7018}
7019/**
7020 * Injects CSS into the document to fix behavior issues across
7021 * different devices.
7022 */
7023
7024
7025function injectBehaviorCSSFixes(events) {
7026  if (!IS_MOBILE_SAFARI) {
7027    return;
7028  }
7029
7030  var injectedSelectors = {};
7031  var cssText = '';
7032
7033  for (var eventId in events) {
7034    var _events$eventId = events[eventId],
7035        eventTypeId = _events$eventId.eventTypeId,
7036        target = _events$eventId.target;
7037    var selector = elementApi.getQuerySelector(target); // $FlowFixMe
7038
7039    if (injectedSelectors[selector]) {
7040      continue;
7041    } // add a "cursor: pointer" style rule to ensure that CLICK events get fired for IOS devices
7042
7043
7044    if (eventTypeId === _constants.EventTypeConsts.MOUSE_CLICK || eventTypeId === _constants.EventTypeConsts.MOUSE_SECOND_CLICK) {
7045      // $FlowFixMe
7046      injectedSelectors[selector] = true;
7047      cssText += // $FlowFixMe
7048      selector + '{' + 'cursor: pointer;' + 'touch-action: manipulation;' + '}';
7049    }
7050  }
7051
7052  if (cssText) {
7053    var style = document.createElement('style');
7054    style.textContent = cssText; // $FlowFixMe
7055
7056    document.body.appendChild(style);
7057  }
7058}
7059
7060function renderInitialGroup(_ref17) {
7061  var store = _ref17.store,
7062      actionListId = _ref17.actionListId,
7063      eventId = _ref17.eventId;
7064
7065  var _store$getState10 = store.getState(),
7066      ixData = _store$getState10.ixData,
7067      ixSession = _store$getState10.ixSession;
7068
7069  var actionLists = ixData.actionLists,
7070      events = ixData.events;
7071  var event = events[eventId];
7072  var actionList = actionLists[actionListId];
7073
7074  if (actionList && actionList.useFirstGroupAsInitialState) {
7075    var initialStateItems = (0, _get["default"])(actionList, 'actionItemGroups[0].actionItems', []); // Bypass initial state render if current media query is not listed in event config
7076
7077    var mediaQueries = (0, _get["default"])(event, 'mediaQueries', ixData.mediaQueryKeys);
7078
7079    if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) {
7080      return;
7081    }
7082
7083    initialStateItems.forEach(function (actionItem) {
7084      var config = actionItem.config,
7085          actionTypeId = actionItem.actionTypeId;
7086      var itemElements = getAffectedElements({
7087        config: config,
7088        event: event,
7089        elementApi: elementApi
7090      });
7091      var shouldUsePlugin = isPluginType(actionTypeId);
7092      itemElements.forEach(function (element) {
7093        var pluginInstance = shouldUsePlugin ? // $FlowFixMe
7094        createPluginInstance(actionTypeId)(element, actionItem) : null;
7095        createInstance({
7096          destination: getDestinationValues({
7097            element: element,
7098            actionItem: actionItem,
7099            elementApi: elementApi
7100          }, // $FlowFixMe
7101          pluginInstance),
7102          immediate: true,
7103          store: store,
7104          element: element,
7105          eventId: eventId,
7106          actionItem: actionItem,
7107          actionListId: actionListId,
7108          pluginInstance: pluginInstance
7109        });
7110      });
7111    });
7112  }
7113} // $FlowFixMe
7114
7115
7116function stopAllActionGroups(_ref18) {
7117  var store = _ref18.store;
7118
7119  var _store$getState11 = store.getState(),
7120      ixInstances = _store$getState11.ixInstances;
7121
7122  (0, _forEach["default"])(ixInstances, function (instance) {
7123    if (!instance.continuous) {
7124      var actionListId = instance.actionListId,
7125          verbose = instance.verbose;
7126      removeInstance(instance, store);
7127
7128      if (verbose) {
7129        store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({
7130          actionListId: actionListId,
7131          isPlaying: false
7132        }));
7133      }
7134    }
7135  });
7136} // $FlowFixMe
7137
7138
7139function stopActionGroup(_ref19) {
7140  var store = _ref19.store,
7141      eventId = _ref19.eventId,
7142      eventTarget = _ref19.eventTarget,
7143      eventStateKey = _ref19.eventStateKey,
7144      actionListId = _ref19.actionListId;
7145
7146  var _store$getState12 = store.getState(),
7147      ixInstances = _store$getState12.ixInstances,
7148      ixSession = _store$getState12.ixSession; // Check for element boundary before stopping engine instances
7149
7150
7151  var eventElementRoot = ixSession.hasBoundaryNodes && eventTarget ? elementApi.getClosestElement(eventTarget, BOUNDARY_SELECTOR) : null;
7152  (0, _forEach["default"])(ixInstances, function (instance) {
7153    var boundaryMode = (0, _get["default"])(instance, 'actionItem.config.target.boundaryMode'); // Validate event key if eventStateKey was provided, otherwise default to true
7154
7155    var validEventKey = eventStateKey ? instance.eventStateKey === eventStateKey : true; // Remove engine instances that match the required ids
7156
7157    if (instance.actionListId === actionListId && instance.eventId === eventId && validEventKey) {
7158      // Avoid removal when root boundary does not contain instance element
7159      if (eventElementRoot && boundaryMode && !elementApi.elementContains(eventElementRoot, instance.element)) {
7160        return;
7161      }
7162
7163      removeInstance(instance, store);
7164
7165      if (instance.verbose) {
7166        store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({
7167          actionListId: actionListId,
7168          isPlaying: false
7169        }));
7170      }
7171    }
7172  });
7173} // $FlowFixMe
7174
7175
7176function startActionGroup(_ref20) {
7177  var store = _ref20.store,
7178      eventId = _ref20.eventId,
7179      eventTarget = _ref20.eventTarget,
7180      eventStateKey = _ref20.eventStateKey,
7181      actionListId = _ref20.actionListId,
7182      _ref20$groupIndex = _ref20.groupIndex,
7183      groupIndex = _ref20$groupIndex === void 0 ? 0 : _ref20$groupIndex,
7184      immediate = _ref20.immediate,
7185      verbose = _ref20.verbose;
7186
7187  var _event$action;
7188
7189  var _store$getState13 = store.getState(),
7190      ixData = _store$getState13.ixData,
7191      ixSession = _store$getState13.ixSession;
7192
7193  var events = ixData.events;
7194  var event = events[eventId] || {};
7195  var _event$mediaQueries3 = event.mediaQueries,
7196      mediaQueries = _event$mediaQueries3 === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries3;
7197  var actionList = (0, _get["default"])(ixData, "actionLists.".concat(actionListId), {});
7198  var actionItemGroups = actionList.actionItemGroups,
7199      useFirstGroupAsInitialState = actionList.useFirstGroupAsInitialState; // Abort playback if no action groups
7200
7201  if (!actionItemGroups || !actionItemGroups.length) {
7202    return false;
7203  } // Reset to first group when event loop is configured
7204
7205
7206  if (groupIndex >= actionItemGroups.length && (0, _get["default"])(event, 'config.loop')) {
7207    groupIndex = 0;
7208  } // Skip initial state group during action list playback, as it should already be applied
7209
7210
7211  if (groupIndex === 0 && useFirstGroupAsInitialState) {
7212    groupIndex++;
7213  } // Identify first animated group and apply the initial QuickEffect delay
7214
7215
7216  var isFirstGroup = groupIndex === 0 || groupIndex === 1 && useFirstGroupAsInitialState;
7217  var instanceDelay = isFirstGroup && (0, _utils.isQuickEffect)((_event$action = event.action) === null || _event$action === void 0 ? void 0 : _event$action.actionTypeId) ? event.config.delay : undefined; // Abort playback if no action items exist at group index
7218
7219  var actionItems = (0, _get["default"])(actionItemGroups, [groupIndex, 'actionItems'], []);
7220
7221  if (!actionItems.length) {
7222    return false;
7223  } // Abort playback if current media query is not listed in event config
7224
7225
7226  if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) {
7227    return false;
7228  } // Limit affected elements when event target is within a boundary node
7229
7230
7231  var eventElementRoot = ixSession.hasBoundaryNodes && eventTarget ? elementApi.getClosestElement(eventTarget, BOUNDARY_SELECTOR) : null;
7232  var carrierIndex = getMaxDurationItemIndex(actionItems);
7233  var groupStartResult = false;
7234  actionItems.forEach(function (actionItem, actionIndex) {
7235    var config = actionItem.config,
7236        actionTypeId = actionItem.actionTypeId;
7237    var shouldUsePlugin = isPluginType(actionTypeId);
7238    var target = config.target;
7239
7240    if (!target) {
7241      return;
7242    }
7243
7244    var elementRoot = target.boundaryMode ? eventElementRoot : null;
7245    var elements = getAffectedElements({
7246      config: config,
7247      event: event,
7248      eventTarget: eventTarget,
7249      elementRoot: elementRoot,
7250      elementApi: elementApi
7251    });
7252    elements.forEach(function (element, elementIndex) {
7253      var pluginInstance = shouldUsePlugin ? // $FlowFixMe
7254      createPluginInstance(actionTypeId)(element, actionItem) : null;
7255      var pluginDuration = shouldUsePlugin ? // $FlowFixMe
7256      getPluginDuration(actionTypeId)(element, actionItem) : null;
7257      groupStartResult = true;
7258      var isCarrier = carrierIndex === actionIndex && elementIndex === 0;
7259      var computedStyle = getComputedStyle({
7260        element: element,
7261        actionItem: actionItem
7262      });
7263      var destination = getDestinationValues({
7264        element: element,
7265        actionItem: actionItem,
7266        elementApi: elementApi
7267      }, // $FlowFixMe
7268      pluginInstance);
7269      createInstance({
7270        store: store,
7271        element: element,
7272        actionItem: actionItem,
7273        eventId: eventId,
7274        eventTarget: eventTarget,
7275        eventStateKey: eventStateKey,
7276        actionListId: actionListId,
7277        groupIndex: groupIndex,
7278        isCarrier: isCarrier,
7279        computedStyle: computedStyle,
7280        destination: destination,
7281        immediate: immediate,
7282        verbose: verbose,
7283        pluginInstance: pluginInstance,
7284        pluginDuration: pluginDuration,
7285        instanceDelay: instanceDelay
7286      });
7287    });
7288  });
7289  return groupStartResult;
7290}
7291
7292function createInstance(options) {
7293  // $FlowFixMe
7294  var store = options.store,
7295      computedStyle = options.computedStyle,
7296      rest = (0, _objectWithoutPropertiesLoose2["default"])(options, ["store", "computedStyle"]); // $FlowFixMe
7297
7298  var autoStart = !rest.continuous; // $FlowFixMe
7299
7300  var element = rest.element,
7301      actionItem = rest.actionItem,
7302      immediate = rest.immediate,
7303      pluginInstance = rest.pluginInstance;
7304  var instanceId = getInstanceId();
7305
7306  var _store$getState14 = store.getState(),
7307      ixElements = _store$getState14.ixElements,
7308      ixSession = _store$getState14.ixSession;
7309
7310  var elementId = getElementId(ixElements, element);
7311
7312  var _ref21 = ixElements[elementId] || {},
7313      refState = _ref21.refState;
7314
7315  var refType = elementApi.getRefType(element);
7316  var origin = getInstanceOrigin(element, refState, computedStyle, actionItem, elementApi, // $FlowFixMe
7317  pluginInstance);
7318  store.dispatch((0, _IX2EngineActions.instanceAdded)((0, _extends2["default"])({
7319    instanceId: instanceId,
7320    elementId: elementId,
7321    origin: origin,
7322    refType: refType
7323  }, rest)));
7324  dispatchCustomEvent(document.body, 'ix2-animation-started', instanceId);
7325
7326  if (immediate) {
7327    renderImmediateInstance(store, instanceId);
7328    return;
7329  }
7330
7331  observeStore({
7332    store: store,
7333    select: function select(_ref22) {
7334      var ixInstances = _ref22.ixInstances;
7335      return ixInstances[instanceId];
7336    },
7337    onChange: handleInstanceChange
7338  });
7339
7340  if (autoStart) {
7341    store.dispatch((0, _IX2EngineActions.instanceStarted)(instanceId, ixSession.tick));
7342  }
7343}
7344
7345function removeInstance(instance, store) {
7346  dispatchCustomEvent(document.body, 'ix2-animation-stopping', {
7347    instanceId: instance.id,
7348    state: store.getState()
7349  });
7350  var elementId = instance.elementId,
7351      actionItem = instance.actionItem;
7352
7353  var _store$getState15 = store.getState(),
7354      ixElements = _store$getState15.ixElements;
7355
7356  var _ref23 = ixElements[elementId] || {},
7357      ref = _ref23.ref,
7358      refType = _ref23.refType;
7359
7360  if (refType === HTML_ELEMENT) {
7361    cleanupHTMLElement(ref, actionItem, elementApi);
7362  }
7363
7364  store.dispatch((0, _IX2EngineActions.instanceRemoved)(instance.id));
7365}
7366
7367function dispatchCustomEvent(element, eventName, detail) {
7368  var event = document.createEvent('CustomEvent');
7369  event.initCustomEvent(eventName, true, true, detail); // $FlowFixMe
7370
7371  element.dispatchEvent(event);
7372}
7373
7374function renderImmediateInstance(store, instanceId) {
7375  var _store$getState16 = store.getState(),
7376      ixParameters = _store$getState16.ixParameters;
7377
7378  store.dispatch((0, _IX2EngineActions.instanceStarted)(instanceId, 0));
7379  store.dispatch((0, _IX2EngineActions.animationFrameChanged)(performance.now(), ixParameters));
7380
7381  var _store$getState17 = store.getState(),
7382      ixInstances = _store$getState17.ixInstances;
7383
7384  handleInstanceChange(ixInstances[instanceId], store);
7385}
7386
7387function handleInstanceChange(instance, store) {
7388  var active = instance.active,
7389      continuous = instance.continuous,
7390      complete = instance.complete,
7391      elementId = instance.elementId,
7392      actionItem = instance.actionItem,
7393      actionTypeId = instance.actionTypeId,
7394      renderType = instance.renderType,
7395      current = instance.current,
7396      groupIndex = instance.groupIndex,
7397      eventId = instance.eventId,
7398      eventTarget = instance.eventTarget,
7399      eventStateKey = instance.eventStateKey,
7400      actionListId = instance.actionListId,
7401      isCarrier = instance.isCarrier,
7402      styleProp = instance.styleProp,
7403      verbose = instance.verbose,
7404      pluginInstance = instance.pluginInstance; // Bypass render if current media query is not listed in event config
7405
7406  var _store$getState18 = store.getState(),
7407      ixData = _store$getState18.ixData,
7408      ixSession = _store$getState18.ixSession;
7409
7410  var events = ixData.events;
7411  var event = events[eventId] || {};
7412  var _event$mediaQueries4 = event.mediaQueries,
7413      mediaQueries = _event$mediaQueries4 === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries4;
7414
7415  if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) {
7416    return;
7417  }
7418
7419  if (continuous || active || complete) {
7420    if (current || renderType === RENDER_GENERAL && complete) {
7421      // Render current values to ref state and grab latest
7422      store.dispatch((0, _IX2EngineActions.elementStateChanged)(elementId, actionTypeId, current, actionItem));
7423
7424      var _store$getState19 = store.getState(),
7425          ixElements = _store$getState19.ixElements;
7426
7427      var _ref24 = ixElements[elementId] || {},
7428          ref = _ref24.ref,
7429          refType = _ref24.refType,
7430          refState = _ref24.refState;
7431
7432      var actionState = refState && refState[actionTypeId]; // Choose render based on ref type
7433
7434      switch (refType) {
7435        case HTML_ELEMENT:
7436          {
7437            renderHTMLElement(ref, refState, actionState, eventId, actionItem, styleProp, elementApi, renderType, pluginInstance);
7438            break;
7439          }
7440      }
7441    }
7442
7443    if (complete) {
7444      if (isCarrier) {
7445        var started = startActionGroup({
7446          store: store,
7447          eventId: eventId,
7448          eventTarget: eventTarget,
7449          eventStateKey: eventStateKey,
7450          actionListId: actionListId,
7451          groupIndex: groupIndex + 1,
7452          verbose: verbose
7453        });
7454
7455        if (verbose && !started) {
7456          store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({
7457            actionListId: actionListId,
7458            isPlaying: false
7459          }));
7460        }
7461      }
7462
7463      removeInstance(instance, store);
7464    }
7465  }
7466}
7467
7468/***/ }),
7469/* 115 */
7470/***/ (function(module, exports, __webpack_require__) {
7471
7472var defineProperty = __webpack_require__(116);
7473
7474/**
7475 * The base implementation of `assignValue` and `assignMergeValue` without
7476 * value checks.
7477 *
7478 * @private
7479 * @param {Object} object The object to modify.
7480 * @param {string} key The key of the property to assign.
7481 * @param {*} value The value to assign.
7482 */
7483function baseAssignValue(object, key, value) {
7484  if (key == '__proto__' && defineProperty) {
7485    defineProperty(object, key, {
7486      'configurable': true,
7487      'enumerable': true,
7488      'value': value,
7489      'writable': true
7490    });
7491  } else {
7492    object[key] = value;
7493  }
7494}
7495
7496module.exports = baseAssignValue;
7497
7498
7499/***/ }),
7500/* 116 */
7501/***/ (function(module, exports, __webpack_require__) {
7502
7503var getNative = __webpack_require__(8);
7504
7505var defineProperty = (function() {
7506  try {
7507    var func = getNative(Object, 'defineProperty');
7508    func({}, '', {});
7509    return func;
7510  } catch (e) {}
7511}());
7512
7513module.exports = defineProperty;
7514
7515
7516/***/ }),
7517/* 117 */
7518/***/ (function(module, exports, __webpack_require__) {
7519
7520var isObject = __webpack_require__(6);
7521
7522/** Built-in value references. */
7523var objectCreate = Object.create;
7524
7525/**
7526 * The base implementation of `_.create` without support for assigning
7527 * properties to the created object.
7528 *
7529 * @private
7530 * @param {Object} proto The object to inherit from.
7531 * @returns {Object} Returns the new object.
7532 */
7533var baseCreate = (function() {
7534  function object() {}
7535  return function(proto) {
7536    if (!isObject(proto)) {
7537      return {};
7538    }
7539    if (objectCreate) {
7540      return objectCreate(proto);
7541    }
7542    object.prototype = proto;
7543    var result = new object;
7544    object.prototype = undefined;
7545    return result;
7546  };
7547}());
7548
7549module.exports = baseCreate;
7550
7551
7552/***/ }),
7553/* 118 */
7554/***/ (function(module, exports, __webpack_require__) {
7555
7556var metaMap = __webpack_require__(305),
7557    noop = __webpack_require__(306);
7558
7559/**
7560 * Gets metadata for `func`.
7561 *
7562 * @private
7563 * @param {Function} func The function to query.
7564 * @returns {*} Returns the metadata for `func`.
7565 */
7566var getData = !metaMap ? noop : function(func) {
7567  return metaMap.get(func);
7568};
7569
7570module.exports = getData;
7571
7572
7573/***/ }),
7574/* 119 */
7575/***/ (function(module, exports, __webpack_require__) {
7576
7577var realNames = __webpack_require__(307);
7578
7579/** Used for built-in method references. */
7580var objectProto = Object.prototype;
7581
7582/** Used to check objects for own properties. */
7583var hasOwnProperty = objectProto.hasOwnProperty;
7584
7585/**
7586 * Gets the name of `func`.
7587 *
7588 * @private
7589 * @param {Function} func The function to query.
7590 * @returns {string} Returns the function name.
7591 */
7592function getFuncName(func) {
7593  var result = (func.name + ''),
7594      array = realNames[result],
7595      length = hasOwnProperty.call(realNames, result) ? array.length : 0;
7596
7597  while (length--) {
7598    var data = array[length],
7599        otherFunc = data.func;
7600    if (otherFunc == null || otherFunc == func) {
7601      return data.name;
7602    }
7603  }
7604  return result;
7605}
7606
7607module.exports = getFuncName;
7608
7609
7610/***/ }),
7611/* 120 */
7612/***/ (function(module, exports, __webpack_require__) {
7613
7614__webpack_require__(121);
7615__webpack_require__(22);
7616__webpack_require__(124);
7617__webpack_require__(314);
7618__webpack_require__(315);
7619__webpack_require__(316);
7620__webpack_require__(317);
7621__webpack_require__(318);
7622__webpack_require__(323);
7623__webpack_require__(324);
7624__webpack_require__(325);
7625module.exports = __webpack_require__(326);
7626
7627
7628/***/ }),
7629/* 121 */
7630/***/ (function(module, exports, __webpack_require__) {
7631
7632"use strict";
7633 // @wf-will-never-add-flow-to-this-file
7634
7635/* globals document, window, navigator */
7636
7637/* eslint-disable no-var */
7638
7639/**
7640 * Webflow: Brand pages on the subdomain
7641 */
7642
7643var Webflow = __webpack_require__(3);
7644
7645Webflow.define('brand', module.exports = function ($) {
7646  var api = {};
7647  var doc = document;
7648  var $html = $('html');
7649  var $body = $('body');
7650  var namespace = '.w-webflow-badge';
7651  var location = window.location;
7652  var isPhantom = /PhantomJS/i.test(navigator.userAgent);
7653  var fullScreenEvents = 'fullscreenchange webkitfullscreenchange mozfullscreenchange msfullscreenchange';
7654  var brandElement; // -----------------------------------
7655  // Module methods
7656
7657  api.ready = function () {
7658    var shouldBrand = $html.attr('data-wf-status');
7659    var publishedDomain = $html.attr('data-wf-domain') || '';
7660
7661    if (/\.webflow\.io$/i.test(publishedDomain) && location.hostname !== publishedDomain) {
7662      shouldBrand = true;
7663    }
7664
7665    if (shouldBrand && !isPhantom) {
7666      brandElement = brandElement || createBadge();
7667      ensureBrand();
7668      setTimeout(ensureBrand, 500);
7669      $(doc).off(fullScreenEvents, onFullScreenChange).on(fullScreenEvents, onFullScreenChange);
7670    }
7671  };
7672
7673  function onFullScreenChange() {
7674    var fullScreen = doc.fullScreen || doc.mozFullScreen || doc.webkitIsFullScreen || doc.msFullscreenElement || Boolean(doc.webkitFullscreenElement);
7675    $(brandElement).attr('style', fullScreen ? 'display: none !important;' : '');
7676  }
7677
7678  function createBadge() {
7679    var $brand = $('<a class="w-webflow-badge"></a>').attr('href', 'https://webflow.com?utm_campaign=brandjs');
7680    var $logoArt = $('<img>').attr('src', 'https://d3e54v103j8qbb.cloudfront.net/img/webflow-badge-icon.f67cd735e3.svg').attr('alt', '').css({
7681      marginRight: '8px',
7682      width: '16px'
7683    });
7684    var $logoText = $('<img>').attr('src', 'https://d1otoma47x30pg.cloudfront.net/img/webflow-badge-text.6faa6a38cd.svg').attr('alt', 'Made in Webflow');
7685    $brand.append($logoArt, $logoText);
7686    return $brand[0];
7687  }
7688
7689  function ensureBrand() {
7690    var found = $body.children(namespace);
7691    var match = found.length && found.get(0) === brandElement;
7692    var inEditor = Webflow.env('editor');
7693
7694    if (match) {
7695      // Remove brand when Editor is active
7696      if (inEditor) {
7697        found.remove();
7698      } // Exit early, brand is in place
7699
7700
7701      return;
7702    } // Remove any invalid brand elements
7703
7704
7705    if (found.length) {
7706      found.remove();
7707    } // Append the brand (unless Editor is active)
7708
7709
7710    if (!inEditor) {
7711      $body.append(brandElement);
7712    }
7713  } // Export module
7714
7715
7716  return api;
7717});
7718
7719/***/ }),
7720/* 122 */
7721/***/ (function(module, exports, __webpack_require__) {
7722
7723"use strict";
7724 // @wf-will-never-add-flow-to-this-file
7725// Include tram for frame-throttling
7726
7727/* globals window */
7728
7729/* eslint-disable no-var */
7730
7731var $ = window.$;
7732var tram = __webpack_require__(65) && $.tram;
7733/*!
7734 * Webflow._ (aka) Underscore.js 1.6.0 (custom build)
7735 * _.each
7736 * _.map
7737 * _.find
7738 * _.filter
7739 * _.any
7740 * _.contains
7741 * _.delay
7742 * _.defer
7743 * _.throttle (webflow)
7744 * _.debounce
7745 * _.keys
7746 * _.has
7747 * _.now
7748 *
7749 * http://underscorejs.org
7750 * (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
7751 * Underscore may be freely distributed under the MIT license.
7752 * @license MIT
7753 */
7754
7755module.exports = function () {
7756  var _ = {}; // Current version.
7757
7758  _.VERSION = '1.6.0-Webflow'; // Establish the object that gets returned to break out of a loop iteration.
7759
7760  var breaker = {}; // Save bytes in the minified (but not gzipped) version:
7761
7762  /* eslint-disable one-var */
7763
7764  var ArrayProto = Array.prototype,
7765      ObjProto = Object.prototype,
7766      FuncProto = Function.prototype;
7767  /* eslint-enable one-var */
7768  // Create quick reference variables for speed access to core prototypes.
7769
7770  /* eslint-disable one-var, no-unused-vars */
7771
7772  var push = ArrayProto.push,
7773      slice = ArrayProto.slice,
7774      concat = ArrayProto.concat,
7775      toString = ObjProto.toString,
7776      hasOwnProperty = ObjProto.hasOwnProperty;
7777  /* eslint-enable one-var, no-unused-vars */
7778  // All **ECMAScript 5** native function implementations that we hope to use
7779  // are declared here.
7780
7781  /* eslint-disable one-var, no-unused-vars */
7782
7783  var nativeForEach = ArrayProto.forEach,
7784      nativeMap = ArrayProto.map,
7785      nativeReduce = ArrayProto.reduce,
7786      nativeReduceRight = ArrayProto.reduceRight,
7787      nativeFilter = ArrayProto.filter,
7788      nativeEvery = ArrayProto.every,
7789      nativeSome = ArrayProto.some,
7790      nativeIndexOf = ArrayProto.indexOf,
7791      nativeLastIndexOf = ArrayProto.lastIndexOf,
7792      nativeIsArray = Array.isArray,
7793      nativeKeys = Object.keys,
7794      nativeBind = FuncProto.bind;
7795  /* eslint-enable one-var, no-unused-vars */
7796  // Collection Functions
7797  // --------------------
7798  // The cornerstone, an `each` implementation, aka `forEach`.
7799  // Handles objects with the built-in `forEach`, arrays, and raw objects.
7800  // Delegates to **ECMAScript 5**'s native `forEach` if available.
7801
7802  var each = _.each = _.forEach = function (obj, iterator, context) {
7803    /* jshint shadow:true */
7804    if (obj == null) return obj;
7805
7806    if (nativeForEach && obj.forEach === nativeForEach) {
7807      obj.forEach(iterator, context); // eslint-disable-next-line no-implicit-coercion
7808    } else if (obj.length === +obj.length) {
7809      for (var i = 0, length = obj.length; i < length; i++) {
7810        if (iterator.call(context, obj[i], i, obj) === breaker) return;
7811      }
7812    } else {
7813      var keys = _.keys(obj); // eslint-disable-next-line no-redeclare
7814
7815
7816      for (var i = 0, length = keys.length; i < length; i++) {
7817        if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return;
7818      }
7819    }
7820
7821    return obj;
7822  }; // Return the results of applying the iterator to each element.
7823  // Delegates to **ECMAScript 5**'s native `map` if available.
7824
7825
7826  _.map = _.collect = function (obj, iterator, context) {
7827    var results = [];
7828    if (obj == null) return results;
7829    if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
7830    each(obj, function (value, index, list) {
7831      results.push(iterator.call(context, value, index, list));
7832    });
7833    return results;
7834  }; // Return the first value which passes a truth test. Aliased as `detect`.
7835
7836
7837  _.find = _.detect = function (obj, predicate, context) {
7838    var result;
7839    any(obj, function (value, index, list) {
7840      if (predicate.call(context, value, index, list)) {
7841        result = value;
7842        return true;
7843      }
7844    });
7845    return result;
7846  }; // Return all the elements that pass a truth test.
7847  // Delegates to **ECMAScript 5**'s native `filter` if available.
7848  // Aliased as `select`.
7849
7850
7851  _.filter = _.select = function (obj, predicate, context) {
7852    var results = [];
7853    if (obj == null) return results;
7854    if (nativeFilter && obj.filter === nativeFilter) return obj.filter(predicate, context);
7855    each(obj, function (value, index, list) {
7856      if (predicate.call(context, value, index, list)) results.push(value);
7857    });
7858    return results;
7859  }; // Determine if at least one element in the object matches a truth test.
7860  // Delegates to **ECMAScript 5**'s native `some` if available.
7861  // Aliased as `any`.
7862
7863
7864  var any = _.some = _.any = function (obj, predicate, context) {
7865    predicate || (predicate = _.identity);
7866    var result = false;
7867    if (obj == null) return result;
7868    if (nativeSome && obj.some === nativeSome) return obj.some(predicate, context);
7869    each(obj, function (value, index, list) {
7870      if (result || (result = predicate.call(context, value, index, list))) return breaker;
7871    });
7872    return !!result; // eslint-disable-line no-implicit-coercion
7873  }; // Determine if the array or object contains a given value (using `===`).
7874  // Aliased as `include`.
7875
7876
7877  _.contains = _.include = function (obj, target) {
7878    if (obj == null) return false;
7879    if (nativeIndexOf && obj.indexOf === nativeIndexOf) // eslint-disable-next-line eqeqeq
7880      return obj.indexOf(target) != -1;
7881    return any(obj, function (value) {
7882      return value === target;
7883    });
7884  }; // Function (ahem) Functions
7885  // --------------------
7886  // Delays a function for the given number of milliseconds, and then calls
7887  // it with the arguments supplied.
7888
7889
7890  _.delay = function (func, wait) {
7891    var args = slice.call(arguments, 2);
7892    return setTimeout(function () {
7893      return func.apply(null, args);
7894    }, wait);
7895  }; // Defers a function, scheduling it to run after the current call stack has
7896  // cleared.
7897
7898
7899  _.defer = function (func) {
7900    return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
7901  }; // Returns a function, that, when invoked, will only be triggered once every
7902  // browser animation frame - using tram's requestAnimationFrame polyfill.
7903
7904
7905  _.throttle = function (func) {
7906    // eslint-disable-next-line one-var
7907    var wait, args, context;
7908    return function () {
7909      if (wait) return;
7910      wait = true;
7911      args = arguments;
7912      context = this;
7913      tram.frame(function () {
7914        wait = false;
7915        func.apply(context, args);
7916      });
7917    };
7918  }; // Returns a function, that, as long as it continues to be invoked, will not
7919  // be triggered. The function will be called after it stops being called for
7920  // N milliseconds. If `immediate` is passed, trigger the function on the
7921  // leading edge, instead of the trailing.
7922
7923
7924  _.debounce = function (func, wait, immediate) {
7925    // eslint-disable-next-line one-var
7926    var timeout, args, context, timestamp, result;
7927
7928    var later = function later() {
7929      var last = _.now() - timestamp;
7930
7931      if (last < wait) {
7932        timeout = setTimeout(later, wait - last);
7933      } else {
7934        timeout = null;
7935
7936        if (!immediate) {
7937          result = func.apply(context, args);
7938          context = args = null;
7939        }
7940      }
7941    };
7942
7943    return function () {
7944      context = this;
7945      args = arguments;
7946      timestamp = _.now();
7947      var callNow = immediate && !timeout;
7948
7949      if (!timeout) {
7950        timeout = setTimeout(later, wait);
7951      }
7952
7953      if (callNow) {
7954        result = func.apply(context, args);
7955        context = args = null;
7956      }
7957
7958      return result;
7959    };
7960  }; // Object Functions
7961  // ----------------
7962  // Fill in a given object with default properties.
7963
7964
7965  _.defaults = function (obj) {
7966    if (!_.isObject(obj)) return obj;
7967
7968    for (var i = 1, length = arguments.length; i < length; i++) {
7969      var source = arguments[i];
7970
7971      for (var prop in source) {
7972        // eslint-disable-next-line no-void
7973        if (obj[prop] === void 0) obj[prop] = source[prop];
7974      }
7975    }
7976
7977    return obj;
7978  }; // Retrieve the names of an object's properties.
7979  // Delegates to **ECMAScript 5**'s native `Object.keys`
7980
7981
7982  _.keys = function (obj) {
7983    if (!_.isObject(obj)) return [];
7984    if (nativeKeys) return nativeKeys(obj);
7985    var keys = [];
7986
7987    for (var key in obj) {
7988      if (_.has(obj, key)) keys.push(key);
7989    }
7990
7991    return keys;
7992  }; // Shortcut function for checking if an object has a given property directly
7993  // on itself (in other words, not on a prototype).
7994
7995
7996  _.has = function (obj, key) {
7997    return hasOwnProperty.call(obj, key);
7998  }; // Is a given variable an object?
7999
8000
8001  _.isObject = function (obj) {
8002    return obj === Object(obj);
8003  }; // Utility Functions
8004  // -----------------
8005  // A (possibly faster) way to get the current timestamp as an integer.
8006
8007
8008  _.now = Date.now || function () {
8009    return new Date().getTime();
8010  }; // By default, Underscore uses ERB-style template delimiters, change the
8011  // following template settings to use alternative delimiters.
8012
8013
8014  _.templateSettings = {
8015    evaluate: /<%([\s\S]+?)%>/g,
8016    interpolate: /<%=([\s\S]+?)%>/g,
8017    escape: /<%-([\s\S]+?)%>/g
8018  }; // When customizing `templateSettings`, if you don't want to define an
8019  // interpolation, evaluation or escaping regex, we need one that is
8020  // guaranteed not to match.
8021
8022  var noMatch = /(.)^/; // Certain characters need to be escaped so that they can be put into a
8023  // string literal.
8024
8025  var escapes = {
8026    "'": "'",
8027    '\\': '\\',
8028    '\r': 'r',
8029    '\n': 'n',
8030    "\u2028": 'u2028',
8031    "\u2029": 'u2029'
8032  };
8033  var escaper = /\\|'|\r|\n|\u2028|\u2029/g;
8034
8035  var escapeChar = function escapeChar(match) {
8036    return '\\' + escapes[match];
8037  }; // JavaScript micro-templating, similar to John Resig's implementation.
8038  // Underscore templating handles arbitrary delimiters, preserves whitespace,
8039  // and correctly escapes quotes within interpolated code.
8040  // NB: `oldSettings` only exists for backwards compatibility.
8041
8042
8043  _.template = function (text, settings, oldSettings) {
8044    if (!settings && oldSettings) settings = oldSettings;
8045    settings = _.defaults({}, settings, _.templateSettings); // Combine delimiters into one regular expression via alternation.
8046
8047    var matcher = RegExp([(settings.escape || noMatch).source, (settings.interpolate || noMatch).source, (settings.evaluate || noMatch).source].join('|') + '|$', 'g'); // Compile the template source, escaping string literals appropriately.
8048
8049    var index = 0;
8050    var source = "__p+='";
8051    text.replace(matcher, function (match, escape, interpolate, evaluate, offset) {
8052      source += text.slice(index, offset).replace(escaper, escapeChar);
8053      index = offset + match.length;
8054
8055      if (escape) {
8056        source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'";
8057      } else if (interpolate) {
8058        source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
8059      } else if (evaluate) {
8060        source += "';\n" + evaluate + "\n__p+='";
8061      } // Adobe VMs need the match returned to produce the correct offest.
8062
8063
8064      return match;
8065    });
8066    source += "';\n"; // If a variable is not specified, place data values in local scope.
8067
8068    if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';
8069    source = "var __t,__p='',__j=Array.prototype.join," + "print=function(){__p+=__j.call(arguments,'');};\n" + source + 'return __p;\n';
8070
8071    try {
8072      // eslint-disable-next-line no-new-func
8073      var render = new Function(settings.variable || 'obj', '_', source);
8074    } catch (e) {
8075      e.source = source;
8076      throw e;
8077    }
8078
8079    var template = function template(data) {
8080      return render.call(this, data, _);
8081    }; // Provide the compiled source as a convenience for precompilation.
8082
8083
8084    var argument = settings.variable || 'obj';
8085    template.source = 'function(' + argument + '){\n' + source + '}';
8086    return template;
8087  }; // Export underscore
8088
8089
8090  return _;
8091}();
8092/* eslint-enable */
8093
8094/***/ }),
8095/* 123 */
8096/***/ (function(module, exports, __webpack_require__) {
8097
8098"use strict";
8099// @wf-will-never-add-flow-to-this-file
8100
8101/* globals window */
8102
8103/* eslint-disable no-var */
8104
8105/**
8106 * Webflow: IX Event triggers for other modules
8107 */
8108// eslint-disable-next-line strict
8109
8110
8111var $ = window.jQuery;
8112var api = {};
8113var eventQueue = [];
8114var namespace = '.w-ix';
8115var eventTriggers = {
8116  reset: function reset(i, el) {
8117    el.__wf_intro = null;
8118  },
8119  intro: function intro(i, el) {
8120    if (el.__wf_intro) {
8121      return;
8122    }
8123
8124    el.__wf_intro = true;
8125    $(el).triggerHandler(api.types.INTRO);
8126  },
8127  outro: function outro(i, el) {
8128    if (!el.__wf_intro) {
8129      return;
8130    }
8131
8132    el.__wf_intro = null;
8133    $(el).triggerHandler(api.types.OUTRO);
8134  }
8135};
8136api.triggers = {};
8137api.types = {
8138  INTRO: 'w-ix-intro' + namespace,
8139  OUTRO: 'w-ix-outro' + namespace
8140}; // Trigger any events in queue + restore trigger methods
8141
8142api.init = function () {
8143  var count = eventQueue.length;
8144
8145  for (var i = 0; i < count; i++) {
8146    var memo = eventQueue[i];
8147    memo[0](0, memo[1]);
8148  }
8149
8150  eventQueue = [];
8151  $.extend(api.triggers, eventTriggers);
8152}; // Replace all triggers with async wrapper to queue events until init
8153
8154
8155api.async = function () {
8156  for (var key in eventTriggers) {
8157    var func = eventTriggers[key];
8158
8159    if (!eventTriggers.hasOwnProperty(key)) {
8160      continue;
8161    } // Replace trigger method with async wrapper
8162
8163
8164    api.triggers[key] = function (i, el) {
8165      eventQueue.push([func, el]);
8166    };
8167  }
8168}; // Default triggers to async queue
8169
8170
8171api.async();
8172module.exports = api;
8173
8174/***/ }),
8175/* 124 */
8176/***/ (function(module, exports, __webpack_require__) {
8177
8178"use strict";
8179 // @wf-will-never-add-flow-to-this-file
8180
8181/* eslint-disable no-var */
8182
8183/**
8184 * Webflow: Interactions 2
8185 */
8186
8187var Webflow = __webpack_require__(3);
8188
8189var ix2 = __webpack_require__(125);
8190
8191ix2.setEnv(Webflow.env);
8192Webflow.define('ix2', module.exports = function () {
8193  return ix2;
8194});
8195
8196/***/ }),
8197/* 125 */
8198/***/ (function(module, exports, __webpack_require__) {
8199
8200"use strict";
8201
8202
8203var _interopRequireWildcard = __webpack_require__(13);
8204
8205var _interopRequireDefault = __webpack_require__(0);
8206
8207Object.defineProperty(exports, "__esModule", {
8208  value: true
8209});
8210exports.setEnv = setEnv;
8211exports.init = init;
8212exports.destroy = destroy;
8213exports.actions = exports.store = void 0;
8214
8215__webpack_require__(126);
8216
8217var _redux = __webpack_require__(78);
8218
8219var _IX2Reducer = _interopRequireDefault(__webpack_require__(167));
8220
8221var _IX2VanillaEngine = __webpack_require__(114);
8222
8223var actions = _interopRequireWildcard(__webpack_require__(61));
8224
8225exports.actions = actions; // Array.includes needed for IE11 @packages/systems/ix2/shared/utils/quick-effects
8226
8227var store = (0, _redux.createStore)(_IX2Reducer["default"]);
8228exports.store = store;
8229
8230function setEnv(env) {
8231  if (env()) {
8232    (0, _IX2VanillaEngine.observeRequests)(store);
8233  }
8234}
8235
8236function init(rawData) {
8237  destroy();
8238  (0, _IX2VanillaEngine.startEngine)({
8239    store: store,
8240    rawData: rawData,
8241    allowEvents: true
8242  });
8243}
8244
8245function destroy() {
8246  (0, _IX2VanillaEngine.stopEngine)(store);
8247}
8248
8249/***/ }),
8250/* 126 */
8251/***/ (function(module, exports, __webpack_require__) {
8252
8253module.exports = __webpack_require__(127);
8254
8255
8256/***/ }),
8257/* 127 */
8258/***/ (function(module, exports, __webpack_require__) {
8259
8260__webpack_require__(128);
8261var entryUnbind = __webpack_require__(153);
8262
8263module.exports = entryUnbind('Array', 'includes');
8264
8265
8266/***/ }),
8267/* 128 */
8268/***/ (function(module, exports, __webpack_require__) {
8269
8270"use strict";
8271
8272var $ = __webpack_require__(129);
8273var $includes = __webpack_require__(76).includes;
8274var addToUnscopables = __webpack_require__(146);
8275
8276// `Array.prototype.includes` method
8277// https://tc39.github.io/ecma262/#sec-array.prototype.includes
8278$({ target: 'Array', proto: true }, {
8279  includes: function includes(el /* , fromIndex = 0 */) {
8280    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
8281  }
8282});
8283
8284// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
8285addToUnscopables('includes');
8286
8287
8288/***/ }),
8289/* 129 */
8290/***/ (function(module, exports, __webpack_require__) {
8291
8292var global = __webpack_require__(4);
8293var getOwnPropertyDescriptor = __webpack_require__(66).f;
8294var hide = __webpack_require__(17);
8295var redefine = __webpack_require__(134);
8296var setGlobal = __webpack_require__(40);
8297var copyConstructorProperties = __webpack_require__(138);
8298var isForced = __webpack_require__(145);
8299
8300/*
8301  options.target      - name of the target object
8302  options.global      - target is the global object
8303  options.stat        - export as static methods of target
8304  options.proto       - export as prototype methods of target
8305  options.real        - real prototype method for the `pure` version
8306  options.forced      - export even if the native feature is available
vendor: 15,063 bytes, lines 8307-8841
8307  options.bind        - bind methods to the target, required for the `pure` version
8308  options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version
8309  options.unsafe      - use the simple assignment of property instead of delete + defineProperty
8310  options.sham        - add a flag to not completely full polyfills
8311  options.enumerable  - export as enumerable property
8312  options.noTargetGet - prevent calling a getter on target
8313*/
8314module.exports = function (options, source) {
8315  var TARGET = options.target;
8316  var GLOBAL = options.global;
8317  var STATIC = options.stat;
8318  var FORCED, target, key, targetProperty, sourceProperty, descriptor;
8319  if (GLOBAL) {
8320    target = global;
8321  } else if (STATIC) {
8322    target = global[TARGET] || setGlobal(TARGET, {});
8323  } else {
8324    target = (global[TARGET] || {}).prototype;
8325  }
8326  if (target) for (key in source) {
8327    sourceProperty = source[key];
8328    if (options.noTargetGet) {
8329      descriptor = getOwnPropertyDescriptor(target, key);
8330      targetProperty = descriptor && descriptor.value;
8331    } else targetProperty = target[key];
8332    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
8333    // contained in target
8334    if (!FORCED && targetProperty !== undefined) {
8335      if (typeof sourceProperty === typeof targetProperty) continue;
8336      copyConstructorProperties(sourceProperty, targetProperty);
8337    }
8338    // add a flag to not completely full polyfills
8339    if (options.sham || (targetProperty && targetProperty.sham)) {
8340      hide(sourceProperty, 'sham', true);
8341    }
8342    // extend global
8343    redefine(target, key, sourceProperty, options);
8344  }
8345};
8346
8347
8348/***/ }),
8349/* 130 */
8350/***/ (function(module, exports, __webpack_require__) {
8351
8352"use strict";
8353
8354var nativePropertyIsEnumerable = {}.propertyIsEnumerable;
8355var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
8356
8357// Nashorn ~ JDK8 bug
8358var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);
8359
8360// `Object.prototype.propertyIsEnumerable` method implementation
8361// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable
8362exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
8363  var descriptor = getOwnPropertyDescriptor(this, V);
8364  return !!descriptor && descriptor.enumerable;
8365} : nativePropertyIsEnumerable;
8366
8367
8368/***/ }),
8369/* 131 */
8370/***/ (function(module, exports, __webpack_require__) {
8371
8372var fails = __webpack_require__(15);
8373var classof = __webpack_require__(132);
8374
8375var split = ''.split;
8376
8377// fallback for non-array-like ES3 and non-enumerable old V8 strings
8378module.exports = fails(function () {
8379  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
8380  // eslint-disable-next-line no-prototype-builtins
8381  return !Object('z').propertyIsEnumerable(0);
8382}) ? function (it) {
8383  return classof(it) == 'String' ? split.call(it, '') : Object(it);
8384} : Object;
8385
8386
8387/***/ }),
8388/* 132 */
8389/***/ (function(module, exports) {
8390
8391var toString = {}.toString;
8392
8393module.exports = function (it) {
8394  return toString.call(it).slice(8, -1);
8395};
8396
8397
8398/***/ }),
8399/* 133 */
8400/***/ (function(module, exports) {
8401
8402// `RequireObjectCoercible` abstract operation
8403// https://tc39.github.io/ecma262/#sec-requireobjectcoercible
8404module.exports = function (it) {
8405  if (it == undefined) throw TypeError("Can't call method on " + it);
8406  return it;
8407};
8408
8409
8410/***/ }),
8411/* 134 */
8412/***/ (function(module, exports, __webpack_require__) {
8413
8414var global = __webpack_require__(4);
8415var shared = __webpack_require__(26);
8416var hide = __webpack_require__(17);
8417var has = __webpack_require__(16);
8418var setGlobal = __webpack_require__(40);
8419var nativeFunctionToString = __webpack_require__(71);
8420var InternalStateModule = __webpack_require__(136);
8421
8422var getInternalState = InternalStateModule.get;
8423var enforceInternalState = InternalStateModule.enforce;
8424var TEMPLATE = String(nativeFunctionToString).split('toString');
8425
8426shared('inspectSource', function (it) {
8427  return nativeFunctionToString.call(it);
8428});
8429
8430(module.exports = function (O, key, value, options) {
8431  var unsafe = options ? !!options.unsafe : false;
8432  var simple = options ? !!options.enumerable : false;
8433  var noTargetGet = options ? !!options.noTargetGet : false;
8434  if (typeof value == 'function') {
8435    if (typeof key == 'string' && !has(value, 'name')) hide(value, 'name', key);
8436    enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');
8437  }
8438  if (O === global) {
8439    if (simple) O[key] = value;
8440    else setGlobal(key, value);
8441    return;
8442  } else if (!unsafe) {
8443    delete O[key];
8444  } else if (!noTargetGet && O[key]) {
8445    simple = true;
8446  }
8447  if (simple) O[key] = value;
8448  else hide(O, key, value);
8449// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
8450})(Function.prototype, 'toString', function toString() {
8451  return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this);
8452});
8453
8454
8455/***/ }),
8456/* 135 */
8457/***/ (function(module, exports) {
8458
8459module.exports = false;
8460
8461
8462/***/ }),
8463/* 136 */
8464/***/ (function(module, exports, __webpack_require__) {
8465
8466var NATIVE_WEAK_MAP = __webpack_require__(137);
8467var global = __webpack_require__(4);
8468var isObject = __webpack_require__(24);
8469var hide = __webpack_require__(17);
8470var objectHas = __webpack_require__(16);
8471var sharedKey = __webpack_require__(72);
8472var hiddenKeys = __webpack_require__(41);
8473
8474var WeakMap = global.WeakMap;
8475var set, get, has;
8476
8477var enforce = function (it) {
8478  return has(it) ? get(it) : set(it, {});
8479};
8480
8481var getterFor = function (TYPE) {
8482  return function (it) {
8483    var state;
8484    if (!isObject(it) || (state = get(it)).type !== TYPE) {
8485      throw TypeError('Incompatible receiver, ' + TYPE + ' required');
8486    } return state;
8487  };
8488};
8489
8490if (NATIVE_WEAK_MAP) {
8491  var store = new WeakMap();
8492  var wmget = store.get;
8493  var wmhas = store.has;
8494  var wmset = store.set;
8495  set = function (it, metadata) {
8496    wmset.call(store, it, metadata);
8497    return metadata;
8498  };
8499  get = function (it) {
8500    return wmget.call(store, it) || {};
8501  };
8502  has = function (it) {
8503    return wmhas.call(store, it);
8504  };
8505} else {
8506  var STATE = sharedKey('state');
8507  hiddenKeys[STATE] = true;
8508  set = function (it, metadata) {
8509    hide(it, STATE, metadata);
8510    return metadata;
8511  };
8512  get = function (it) {
8513    return objectHas(it, STATE) ? it[STATE] : {};
8514  };
8515  has = function (it) {
8516    return objectHas(it, STATE);
8517  };
8518}
8519
8520module.exports = {
8521  set: set,
8522  get: get,
8523  has: has,
8524  enforce: enforce,
8525  getterFor: getterFor
8526};
8527
8528
8529/***/ }),
8530/* 137 */
8531/***/ (function(module, exports, __webpack_require__) {
8532
8533var global = __webpack_require__(4);
8534var nativeFunctionToString = __webpack_require__(71);
8535
8536var WeakMap = global.WeakMap;
8537
8538module.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap));
8539
8540
8541/***/ }),
8542/* 138 */
8543/***/ (function(module, exports, __webpack_require__) {
8544
8545var has = __webpack_require__(16);
8546var ownKeys = __webpack_require__(139);
8547var getOwnPropertyDescriptorModule = __webpack_require__(66);
8548var definePropertyModule = __webpack_require__(39);
8549
8550module.exports = function (target, source) {
8551  var keys = ownKeys(source);
8552  var defineProperty = definePropertyModule.f;
8553  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
8554  for (var i = 0; i < keys.length; i++) {
8555    var key = keys[i];
8556    if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));
8557  }
8558};
8559
8560
8561/***/ }),
8562/* 139 */
8563/***/ (function(module, exports, __webpack_require__) {
8564
8565var getBuiltIn = __webpack_require__(74);
8566var getOwnPropertyNamesModule = __webpack_require__(141);
8567var getOwnPropertySymbolsModule = __webpack_require__(144);
8568var anObject = __webpack_require__(25);
8569
8570// all object keys, includes non-enumerable and symbols
8571module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {
8572  var keys = getOwnPropertyNamesModule.f(anObject(it));
8573  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
8574  return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;
8575};
8576
8577
8578/***/ }),
8579/* 140 */
8580/***/ (function(module, exports, __webpack_require__) {
8581
8582module.exports = __webpack_require__(4);
8583
8584
8585/***/ }),
8586/* 141 */
8587/***/ (function(module, exports, __webpack_require__) {
8588
8589var internalObjectKeys = __webpack_require__(75);
8590var enumBugKeys = __webpack_require__(42);
8591
8592var hiddenKeys = enumBugKeys.concat('length', 'prototype');
8593
8594// `Object.getOwnPropertyNames` method
8595// https://tc39.github.io/ecma262/#sec-object.getownpropertynames
8596exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
8597  return internalObjectKeys(O, hiddenKeys);
8598};
8599
8600
8601/***/ }),
8602/* 142 */
8603/***/ (function(module, exports, __webpack_require__) {
8604
8605var toInteger = __webpack_require__(77);
8606
8607var min = Math.min;
8608
8609// `ToLength` abstract operation
8610// https://tc39.github.io/ecma262/#sec-tolength
8611module.exports = function (argument) {
8612  return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
8613};
8614
8615
8616/***/ }),
8617/* 143 */
8618/***/ (function(module, exports, __webpack_require__) {
8619
8620var toInteger = __webpack_require__(77);
8621
8622var max = Math.max;
8623var min = Math.min;
8624
8625// Helper for a popular repeating case of the spec:
8626// Let integer be ? ToInteger(index).
8627// If integer < 0, let result be max((length + integer), 0); else let result be min(length, length).
8628module.exports = function (index, length) {
8629  var integer = toInteger(index);
8630  return integer < 0 ? max(integer + length, 0) : min(integer, length);
8631};
8632
8633
8634/***/ }),
8635/* 144 */
8636/***/ (function(module, exports) {
8637
8638exports.f = Object.getOwnPropertySymbols;
8639
8640
8641/***/ }),
8642/* 145 */
8643/***/ (function(module, exports, __webpack_require__) {
8644
8645var fails = __webpack_require__(15);
8646
8647var replacement = /#|\.prototype\./;
8648
8649var isForced = function (feature, detection) {
8650  var value = data[normalize(feature)];
8651  return value == POLYFILL ? true
8652    : value == NATIVE ? false
8653    : typeof detection == 'function' ? fails(detection)
8654    : !!detection;
8655};
8656
8657var normalize = isForced.normalize = function (string) {
8658  return String(string).replace(replacement, '.').toLowerCase();
8659};
8660
8661var data = isForced.data = {};
8662var NATIVE = isForced.NATIVE = 'N';
8663var POLYFILL = isForced.POLYFILL = 'P';
8664
8665module.exports = isForced;
8666
8667
8668/***/ }),
8669/* 146 */
8670/***/ (function(module, exports, __webpack_require__) {
8671
8672var wellKnownSymbol = __webpack_require__(147);
8673var create = __webpack_require__(149);
8674var hide = __webpack_require__(17);
8675
8676var UNSCOPABLES = wellKnownSymbol('unscopables');
8677var ArrayPrototype = Array.prototype;
8678
8679// Array.prototype[@@unscopables]
8680// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
8681if (ArrayPrototype[UNSCOPABLES] == undefined) {
8682  hide(ArrayPrototype, UNSCOPABLES, create(null));
8683}
8684
8685// add a key to Array.prototype[@@unscopables]
8686module.exports = function (key) {
8687  ArrayPrototype[UNSCOPABLES][key] = true;
8688};
8689
8690
8691/***/ }),
8692/* 147 */
8693/***/ (function(module, exports, __webpack_require__) {
8694
8695var global = __webpack_require__(4);
8696var shared = __webpack_require__(26);
8697var uid = __webpack_require__(73);
8698var NATIVE_SYMBOL = __webpack_require__(148);
8699
8700var Symbol = global.Symbol;
8701var store = shared('wks');
8702
8703module.exports = function (name) {
8704  return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name]
8705    || (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name));
8706};
8707
8708
8709/***/ }),
8710/* 148 */
8711/***/ (function(module, exports, __webpack_require__) {
8712
8713var fails = __webpack_require__(15);
8714
8715module.exports = !!Object.getOwnPropertySymbols && !fails(function () {
8716  // Chrome 38 Symbol has incorrect toString conversion
8717  // eslint-disable-next-line no-undef
8718  return !String(Symbol());
8719});
8720
8721
8722/***/ }),
8723/* 149 */
8724/***/ (function(module, exports, __webpack_require__) {
8725
8726var anObject = __webpack_require__(25);
8727var defineProperties = __webpack_require__(150);
8728var enumBugKeys = __webpack_require__(42);
8729var hiddenKeys = __webpack_require__(41);
8730var html = __webpack_require__(152);
8731var documentCreateElement = __webpack_require__(70);
8732var sharedKey = __webpack_require__(72);
8733var IE_PROTO = sharedKey('IE_PROTO');
8734
8735var PROTOTYPE = 'prototype';
8736var Empty = function () { /* empty */ };
8737
8738// Create object with fake `null` prototype: use iframe Object with cleared prototype
8739var createDict = function () {
8740  // Thrash, waste and sodomy: IE GC bug
8741  var iframe = documentCreateElement('iframe');
8742  var length = enumBugKeys.length;
8743  var lt = '<';
8744  var script = 'script';
8745  var gt = '>';
8746  var js = 'java' + script + ':';
8747  var iframeDocument;
8748  iframe.style.display = 'none';
8749  html.appendChild(iframe);
8750  iframe.src = String(js);
8751  iframeDocument = iframe.contentWindow.document;
8752  iframeDocument.open();
8753  iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt);
8754  iframeDocument.close();
8755  createDict = iframeDocument.F;
8756  while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]];
8757  return createDict();
8758};
8759
8760// `Object.create` method
8761// https://tc39.github.io/ecma262/#sec-object.create
8762module.exports = Object.create || function create(O, Properties) {
8763  var result;
8764  if (O !== null) {
8765    Empty[PROTOTYPE] = anObject(O);
8766    result = new Empty();
8767    Empty[PROTOTYPE] = null;
8768    // add "__proto__" for Object.getPrototypeOf polyfill
8769    result[IE_PROTO] = O;
8770  } else result = createDict();
8771  return Properties === undefined ? result : defineProperties(result, Properties);
8772};
8773
8774hiddenKeys[IE_PROTO] = true;
8775
8776
8777/***/ }),
8778/* 150 */
8779/***/ (function(module, exports, __webpack_require__) {
8780
8781var DESCRIPTORS = __webpack_require__(14);
8782var definePropertyModule = __webpack_require__(39);
8783var anObject = __webpack_require__(25);
8784var objectKeys = __webpack_require__(151);
8785
8786// `Object.defineProperties` method
8787// https://tc39.github.io/ecma262/#sec-object.defineproperties
8788module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {
8789  anObject(O);
8790  var keys = objectKeys(Properties);
8791  var length = keys.length;
8792  var index = 0;
8793  var key;
8794  while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);
8795  return O;
8796};
8797
8798
8799/***/ }),
8800/* 151 */
8801/***/ (function(module, exports, __webpack_require__) {
8802
8803var internalObjectKeys = __webpack_require__(75);
8804var enumBugKeys = __webpack_require__(42);
8805
8806// `Object.keys` method
8807// https://tc39.github.io/ecma262/#sec-object.keys
8808module.exports = Object.keys || function keys(O) {
8809  return internalObjectKeys(O, enumBugKeys);
8810};
8811
8812
8813/***/ }),
8814/* 152 */
8815/***/ (function(module, exports, __webpack_require__) {
8816
8817var getBuiltIn = __webpack_require__(74);
8818
8819module.exports = getBuiltIn('document', 'documentElement');
8820
8821
8822/***/ }),
8823/* 153 */
8824/***/ (function(module, exports, __webpack_require__) {
8825
8826var global = __webpack_require__(4);
8827var bind = __webpack_require__(154);
8828
8829var call = Function.call;
8830
8831module.exports = function (CONSTRUCTOR, METHOD, length) {
8832  return bind(call, global[CONSTRUCTOR].prototype[METHOD], length);
8833};
8834
8835
8836/***/ }),
8837/* 154 */
8838/***/ (function(module, exports, __webpack_require__) {
8839
8840var aFunction = __webpack_require__(155);
8841
8842// optional / simple context binding
8843module.exports = function (fn, that, length) {
8844  aFunction(fn);
8845  if (that === undefined) return fn;
8846  switch (length) {
8847    case 0: return function () {
8848      return fn.call(that);
8849    };
8850    case 1: return function (a) {
8851      return fn.call(that, a);
8852    };
8853    case 2: return function (a, b) {
8854      return fn.call(that, a, b);
8855    };
8856    case 3: return function (a, b, c) {
8857      return fn.call(that, a, b, c);
8858    };
8859  }
8860  return function (/* ...args */) {
8861    return fn.apply(that, arguments);
8862  };
8863};
8864
8865
8866/***/ }),
8867/* 155 */
8868/***/ (function(module, exports) {
8869
8870module.exports = function (it) {
8871  if (typeof it != 'function') {
8872    throw TypeError(String(it) + ' is not a function');
8873  } return it;
8874};
8875
8876
8877/***/ }),
8878/* 156 */
8879/***/ (function(module, __webpack_exports__, __webpack_require__) {
8880
8881"use strict";
8882__webpack_require__.r(__webpack_exports__);
8883/* harmony import */ var _Symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(80);
8884/* harmony import */ var _getRawTag_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(159);
8885/* harmony import */ var _objectToString_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(160);
8886
8887
8888
8889
8890/** `Object#toString` result references. */
8891var nullTag = '[object Null]',
8892    undefinedTag = '[object Undefined]';
8893
8894/** Built-in value references. */
8895var symToStringTag = _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"] ? _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"].toStringTag : undefined;
8896
8897/**
8898 * The base implementation of `getTag` without fallbacks for buggy environments.
8899 *
8900 * @private
8901 * @param {*} value The value to query.
8902 * @returns {string} Returns the `toStringTag`.
8903 */
8904function baseGetTag(value) {
8905  if (value == null) {
8906    return value === undefined ? undefinedTag : nullTag;
8907  }
8908  return (symToStringTag && symToStringTag in Object(value))
8909    ? Object(_getRawTag_js__WEBPACK_IMPORTED_MODULE_1__["default"])(value)
8910    : Object(_objectToString_js__WEBPACK_IMPORTED_MODULE_2__["default"])(value);
8911}
8912
8913/* harmony default export */ __webpack_exports__["default"] = (baseGetTag);
8914
8915
8916/***/ }),
8917/* 157 */
8918/***/ (function(module, __webpack_exports__, __webpack_require__) {
8919
8920"use strict";
8921__webpack_require__.r(__webpack_exports__);
8922/* harmony import */ var _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(158);
8923
8924
8925/** Detect free variable `self`. */
8926var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
8927
8928/** Used as a reference to the global object. */
8929var root = _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__["default"] || freeSelf || Function('return this')();
8930
8931/* harmony default export */ __webpack_exports__["default"] = (root);
8932
8933
8934/***/ }),
8935/* 158 */
8936/***/ (function(module, __webpack_exports__, __webpack_require__) {
8937
8938"use strict";
8939__webpack_require__.r(__webpack_exports__);
8940/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */
8941var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
8942
8943/* harmony default export */ __webpack_exports__["default"] = (freeGlobal);
8944
8945/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(23)))
8946
8947/***/ }),
8948/* 159 */
8949/***/ (function(module, __webpack_exports__, __webpack_require__) {
8950
8951"use strict";
8952__webpack_require__.r(__webpack_exports__);
8953/* harmony import */ var _Symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(80);
8954
8955
8956/** Used for built-in method references. */
8957var objectProto = Object.prototype;
8958
8959/** Used to check objects for own properties. */
8960var hasOwnProperty = objectProto.hasOwnProperty;
8961
8962/**
8963 * Used to resolve the
8964 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
8965 * of values.
8966 */
8967var nativeObjectToString = objectProto.toString;
8968
8969/** Built-in value references. */
8970var symToStringTag = _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"] ? _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"].toStringTag : undefined;
8971
8972/**
8973 * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
8974 *
8975 * @private
8976 * @param {*} value The value to query.
8977 * @returns {string} Returns the raw `toStringTag`.
8978 */
8979function getRawTag(value) {
8980  var isOwn = hasOwnProperty.call(value, symToStringTag),
8981      tag = value[symToStringTag];
8982
8983  try {
8984    value[symToStringTag] = undefined;
8985    var unmasked = true;
8986  } catch (e) {}
8987
8988  var result = nativeObjectToString.call(value);
8989  if (unmasked) {
8990    if (isOwn) {
8991      value[symToStringTag] = tag;
8992    } else {
8993      delete value[symToStringTag];
8994    }
8995  }
8996  return result;
8997}
8998
8999/* harmony default export */ __webpack_exports__["default"] = (getRawTag);
9000
9001
9002/***/ }),
9003/* 160 */
9004/***/ (function(module, __webpack_exports__, __webpack_require__) {
9005
9006"use strict";
9007__webpack_require__.r(__webpack_exports__);
9008/** Used for built-in method references. */
9009var objectProto = Object.prototype;
9010
9011/**
9012 * Used to resolve the
9013 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
9014 * of values.
9015 */
9016var nativeObjectToString = objectProto.toString;
9017
9018/**
9019 * Converts `value` to a string using `Object.prototype.toString`.
9020 *
9021 * @private
9022 * @param {*} value The value to convert.
9023 * @returns {string} Returns the converted string.
9024 */
9025function objectToString(value) {
9026  return nativeObjectToString.call(value);
9027}
9028
9029/* harmony default export */ __webpack_exports__["default"] = (objectToString);
9030
9031
9032/***/ }),
9033/* 161 */
9034/***/ (function(module, __webpack_exports__, __webpack_require__) {
9035
9036"use strict";
9037__webpack_require__.r(__webpack_exports__);
9038/* harmony import */ var _overArg_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(162);
9039
9040
9041/** Built-in value references. */
9042var getPrototype = Object(_overArg_js__WEBPACK_IMPORTED_MODULE_0__["default"])(Object.getPrototypeOf, Object);
9043
9044/* harmony default export */ __webpack_exports__["default"] = (getPrototype);
9045
9046
9047/***/ }),
9048/* 162 */
9049/***/ (function(module, __webpack_exports__, __webpack_require__) {
9050
9051"use strict";
9052__webpack_require__.r(__webpack_exports__);
9053/**
9054 * Creates a unary function that invokes `func` with its argument transformed.
9055 *
9056 * @private
9057 * @param {Function} func The function to wrap.
9058 * @param {Function} transform The argument transform.
9059 * @returns {Function} Returns the new function.
9060 */
9061function overArg(func, transform) {
9062  return function(arg) {
9063    return func(transform(arg));
9064  };
9065}
9066
9067/* harmony default export */ __webpack_exports__["default"] = (overArg);
9068
9069
9070/***/ }),
9071/* 163 */
9072/***/ (function(module, __webpack_exports__, __webpack_require__) {
9073
9074"use strict";
9075__webpack_require__.r(__webpack_exports__);
9076/**
9077 * Checks if `value` is object-like. A value is object-like if it's not `null`
9078 * and has a `typeof` result of "object".
9079 *
9080 * @static
9081 * @memberOf _
9082 * @since 4.0.0
9083 * @category Lang
9084 * @param {*} value The value to check.
9085 * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
9086 * @example
9087 *
9088 * _.isObjectLike({});
9089 * // => true
9090 *
9091 * _.isObjectLike([1, 2, 3]);
9092 * // => true
9093 *
9094 * _.isObjectLike(_.noop);
9095 * // => false
9096 *
9097 * _.isObjectLike(null);
9098 * // => false
9099 */
9100function isObjectLike(value) {
9101  return value != null && typeof value == 'object';
9102}
9103
9104/* harmony default export */ __webpack_exports__["default"] = (isObjectLike);
9105
9106
9107/***/ }),
9108/* 164 */
9109/***/ (function(module, __webpack_exports__, __webpack_require__) {
9110
9111"use strict";
9112__webpack_require__.r(__webpack_exports__);
9113/* WEBPACK VAR INJECTION */(function(global, module) {/* harmony import */ var _ponyfill_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(166);
9114/* global window */
9115
9116
9117var root;
9118
9119if (typeof self !== 'undefined') {
9120  root = self;
9121} else if (typeof window !== 'undefined') {
9122  root = window;
9123} else if (typeof global !== 'undefined') {
9124  root = global;
9125} else if (true) {
9126  root = module;
9127} else {}
9128
9129var result = Object(_ponyfill_js__WEBPACK_IMPORTED_MODULE_0__["default"])(root);
9130/* harmony default export */ __webpack_exports__["default"] = (result);
9131
9132/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(23), __webpack_require__(165)(module)))
9133
9134/***/ }),
9135/* 165 */
9136/***/ (function(module, exports) {
9137
9138module.exports = function(originalModule) {
9139	if (!originalModule.webpackPolyfill) {
9140		var module = Object.create(originalModule);
9141		// module.parent = undefined by default
9142		if (!module.children) module.children = [];
9143		Object.defineProperty(module, "loaded", {
9144			enumerable: true,
9145			get: function() {
9146				return module.l;
9147			}
9148		});
9149		Object.defineProperty(module, "id", {
9150			enumerable: true,
9151			get: function() {
9152				return module.i;
9153			}
9154		});
9155		Object.defineProperty(module, "exports", {
9156			enumerable: true
9157		});
9158		module.webpackPolyfill = 1;
9159	}
9160	return module;
9161};
9162
9163
9164/***/ }),
9165/* 166 */
9166/***/ (function(module, __webpack_exports__, __webpack_require__) {
9167
9168"use strict";
9169__webpack_require__.r(__webpack_exports__);
9170/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return symbolObservablePonyfill; });
9171function symbolObservablePonyfill(root) {
9172	var result;
9173	var Symbol = root.Symbol;
9174
9175	if (typeof Symbol === 'function') {
9176		if (Symbol.observable) {
9177			result = Symbol.observable;
9178		} else {
9179			result = Symbol('observable');
9180			Symbol.observable = result;
9181		}
9182	} else {
9183		result = '@@observable';
9184	}
9185
9186	return result;
9187};
9188
9189
9190/***/ }),
9191/* 167 */
9192/***/ (function(module, exports, __webpack_require__) {
9193
9194"use strict";
9195
9196
9197Object.defineProperty(exports, "__esModule", {
9198  value: true
9199});
9200exports["default"] = void 0;
9201
9202var _redux = __webpack_require__(78);
9203
9204var _IX2DataReducer = __webpack_require__(168);
9205
9206var _IX2RequestReducer = __webpack_require__(174);
9207
9208var _IX2SessionReducer = __webpack_require__(175);
9209
9210var _shared = __webpack_require__(10);
9211
9212var _IX2InstancesReducer = __webpack_require__(260);
9213
9214var _IX2ParametersReducer = __webpack_require__(261);
9215
9216var ixElements = _shared.IX2ElementsReducer.ixElements;
9217
9218var _default = (0, _redux.combineReducers)({
9219  ixData: _IX2DataReducer.ixData,
9220  ixRequest: _IX2RequestReducer.ixRequest,
9221  ixSession: _IX2SessionReducer.ixSession,
9222  ixElements: ixElements,
9223  ixInstances: _IX2InstancesReducer.ixInstances,
9224  ixParameters: _IX2ParametersReducer.ixParameters
9225});
9226
9227exports["default"] = _default;
9228
9229/***/ }),
9230/* 168 */
9231/***/ (function(module, exports, __webpack_require__) {
9232
9233"use strict";
9234
9235
9236Object.defineProperty(exports, "__esModule", {
9237  value: true
9238});
9239exports.ixData = void 0;
9240
9241var _constants = __webpack_require__(2);
9242
9243var IX2_RAW_DATA_IMPORTED = _constants.IX2EngineActionTypes.IX2_RAW_DATA_IMPORTED;
9244
9245var ixData = function ixData() {
9246  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Object.freeze({});
9247  var action = arguments.length > 1 ? arguments[1] : undefined;
9248
9249  switch (action.type) {
9250    case IX2_RAW_DATA_IMPORTED:
9251      {
9252        return action.payload.ixData || Object.freeze({});
9253      }
9254
9255    default:
9256      {
9257        return state;
9258      }
9259  }
9260};
9261
9262exports.ixData = ixData;
9263
9264/***/ }),
9265/* 169 */
9266/***/ (function(module, exports, __webpack_require__) {
9267
9268"use strict";
9269
9270
9271Object.defineProperty(exports, "__esModule", {
9272  value: true
9273});
9274exports.QuickEffectDirectionConsts = exports.QuickEffectIds = exports.EventLimitAffectedElements = exports.EventContinuousMouseAxes = exports.EventBasedOn = exports.EventAppliesTo = exports.EventTypeConsts = void 0;
9275/**
9276 * Event Type IDs
9277 */
9278
9279var EventTypeConsts = {
9280  NAVBAR_OPEN: 'NAVBAR_OPEN',
9281  NAVBAR_CLOSE: 'NAVBAR_CLOSE',
9282  TAB_ACTIVE: 'TAB_ACTIVE',
9283  TAB_INACTIVE: 'TAB_INACTIVE',
9284  SLIDER_ACTIVE: 'SLIDER_ACTIVE',
9285  SLIDER_INACTIVE: 'SLIDER_INACTIVE',
9286  DROPDOWN_OPEN: 'DROPDOWN_OPEN',
9287  DROPDOWN_CLOSE: 'DROPDOWN_CLOSE',
9288  MOUSE_CLICK: 'MOUSE_CLICK',
9289  MOUSE_SECOND_CLICK: 'MOUSE_SECOND_CLICK',
9290  MOUSE_DOWN: 'MOUSE_DOWN',
9291  MOUSE_UP: 'MOUSE_UP',
9292  MOUSE_OVER: 'MOUSE_OVER',
9293  MOUSE_OUT: 'MOUSE_OUT',
9294  MOUSE_MOVE: 'MOUSE_MOVE',
9295  MOUSE_MOVE_IN_VIEWPORT: 'MOUSE_MOVE_IN_VIEWPORT',
9296  SCROLL_INTO_VIEW: 'SCROLL_INTO_VIEW',
9297  SCROLL_OUT_OF_VIEW: 'SCROLL_OUT_OF_VIEW',
9298  SCROLLING_IN_VIEW: 'SCROLLING_IN_VIEW',
9299  ECOMMERCE_CART_OPEN: 'ECOMMERCE_CART_OPEN',
9300  ECOMMERCE_CART_CLOSE: 'ECOMMERCE_CART_CLOSE',
9301  PAGE_START: 'PAGE_START',
9302  PAGE_FINISH: 'PAGE_FINISH',
9303  PAGE_SCROLL_UP: 'PAGE_SCROLL_UP',
9304  PAGE_SCROLL_DOWN: 'PAGE_SCROLL_DOWN',
9305  PAGE_SCROLL: 'PAGE_SCROLL'
9306};
9307/**
9308 * Event Config Enums
9309 */
9310
9311exports.EventTypeConsts = EventTypeConsts;
9312var EventAppliesTo = {
9313  ELEMENT: 'ELEMENT',
9314  CLASS: 'CLASS',
9315  PAGE: 'PAGE'
9316};
9317exports.EventAppliesTo = EventAppliesTo;
9318var EventBasedOn = {
9319  ELEMENT: 'ELEMENT',
9320  VIEWPORT: 'VIEWPORT'
9321};
9322exports.EventBasedOn = EventBasedOn;
9323var EventContinuousMouseAxes = {
9324  X_AXIS: 'X_AXIS',
9325  Y_AXIS: 'Y_AXIS'
9326};
9327exports.EventContinuousMouseAxes = EventContinuousMouseAxes;
9328var EventLimitAffectedElements = {
9329  CHILDREN: 'CHILDREN',
9330  SIBLINGS: 'SIBLINGS',
9331  IMMEDIATE_CHILDREN: 'IMMEDIATE_CHILDREN'
9332};
9333/**
9334 * Quick Effect Enums
9335 */
9336
9337exports.EventLimitAffectedElements = EventLimitAffectedElements;
9338var QuickEffectIds = {
9339  FADE_EFFECT: 'FADE_EFFECT',
9340  SLIDE_EFFECT: 'SLIDE_EFFECT',
9341  GROW_EFFECT: 'GROW_EFFECT',
9342  SHRINK_EFFECT: 'SHRINK_EFFECT',
9343  SPIN_EFFECT: 'SPIN_EFFECT',
9344  FLY_EFFECT: 'FLY_EFFECT',
9345  POP_EFFECT: 'POP_EFFECT',
9346  FLIP_EFFECT: 'FLIP_EFFECT',
9347  JIGGLE_EFFECT: 'JIGGLE_EFFECT',
9348  PULSE_EFFECT: 'PULSE_EFFECT',
9349  DROP_EFFECT: 'DROP_EFFECT',
9350  BLINK_EFFECT: 'BLINK_EFFECT',
9351  BOUNCE_EFFECT: 'BOUNCE_EFFECT',
9352  FLIP_LEFT_TO_RIGHT_EFFECT: 'FLIP_LEFT_TO_RIGHT_EFFECT',
9353  FLIP_RIGHT_TO_LEFT_EFFECT: 'FLIP_RIGHT_TO_LEFT_EFFECT',
9354  RUBBER_BAND_EFFECT: 'RUBBER_BAND_EFFECT',
9355  JELLO_EFFECT: 'JELLO_EFFECT',
9356  GROW_BIG_EFFECT: 'GROW_BIG_EFFECT',
9357  SHRINK_BIG_EFFECT: 'SHRINK_BIG_EFFECT',
9358  PLUGIN_LOTTIE_EFFECT: 'PLUGIN_LOTTIE_EFFECT'
9359};
9360/**
9361 * Quick Effect Direction Enums
9362 */
9363
9364exports.QuickEffectIds = QuickEffectIds;
9365var QuickEffectDirectionConsts = {
9366  LEFT: 'LEFT',
9367  RIGHT: 'RIGHT',
9368  BOTTOM: 'BOTTOM',
9369  TOP: 'TOP',
9370  BOTTOM_LEFT: 'BOTTOM_LEFT',
9371  BOTTOM_RIGHT: 'BOTTOM_RIGHT',
9372  TOP_RIGHT: 'TOP_RIGHT',
9373  TOP_LEFT: 'TOP_LEFT',
9374  CLOCKWISE: 'CLOCKWISE',
9375  COUNTER_CLOCKWISE: 'COUNTER_CLOCKWISE'
9376};
9377exports.QuickEffectDirectionConsts = QuickEffectDirectionConsts;
9378
9379/***/ }),
9380/* 170 */
9381/***/ (function(module, exports, __webpack_require__) {
9382
9383"use strict";
9384
9385
9386Object.defineProperty(exports, "__esModule", {
9387  value: true
9388});
9389exports.ActionAppliesTo = exports.ActionTypeConsts = void 0;
9390var ActionTypeConsts = {
9391  TRANSFORM_MOVE: 'TRANSFORM_MOVE',
9392  TRANSFORM_SCALE: 'TRANSFORM_SCALE',
9393  TRANSFORM_ROTATE: 'TRANSFORM_ROTATE',
9394  TRANSFORM_SKEW: 'TRANSFORM_SKEW',
9395  STYLE_OPACITY: 'STYLE_OPACITY',
9396  STYLE_SIZE: 'STYLE_SIZE',
9397  STYLE_FILTER: 'STYLE_FILTER',
9398  STYLE_BACKGROUND_COLOR: 'STYLE_BACKGROUND_COLOR',
9399  STYLE_BORDER: 'STYLE_BORDER',
9400  STYLE_TEXT_COLOR: 'STYLE_TEXT_COLOR',
9401  PLUGIN_LOTTIE: 'PLUGIN_LOTTIE',
9402  GENERAL_DISPLAY: 'GENERAL_DISPLAY',
9403  GENERAL_START_ACTION: 'GENERAL_START_ACTION',
9404  GENERAL_CONTINUOUS_ACTION: 'GENERAL_CONTINUOUS_ACTION',
9405  // TODO: Clean these up below because they're not used at this time
9406  GENERAL_COMBO_CLASS: 'GENERAL_COMBO_CLASS',
9407  GENERAL_STOP_ACTION: 'GENERAL_STOP_ACTION',
9408  GENERAL_LOOP: 'GENERAL_LOOP',
9409  STYLE_BOX_SHADOW: 'STYLE_BOX_SHADOW'
9410};
9411exports.ActionTypeConsts = ActionTypeConsts;
9412var ActionAppliesTo = {
9413  ELEMENT: 'ELEMENT',
9414  ELEMENT_CLASS: 'ELEMENT_CLASS',
9415  TRIGGER_ELEMENT: 'TRIGGER_ELEMENT'
9416};
9417exports.ActionAppliesTo = ActionAppliesTo;
9418
9419/***/ }),
9420/* 171 */
9421/***/ (function(module, exports, __webpack_require__) {
9422
9423"use strict";
9424
9425
9426Object.defineProperty(exports, "__esModule", {
9427  value: true
9428});
9429exports.InteractionTypeConsts = void 0;
9430var InteractionTypeConsts = {
9431  MOUSE_CLICK_INTERACTION: 'MOUSE_CLICK_INTERACTION',
9432  MOUSE_HOVER_INTERACTION: 'MOUSE_HOVER_INTERACTION',
9433  MOUSE_MOVE_INTERACTION: 'MOUSE_MOVE_INTERACTION',
9434  SCROLL_INTO_VIEW_INTERACTION: 'SCROLL_INTO_VIEW_INTERACTION',
9435  SCROLLING_IN_VIEW_INTERACTION: 'SCROLLING_IN_VIEW_INTERACTION',
9436  MOUSE_MOVE_IN_VIEWPORT_INTERACTION: 'MOUSE_MOVE_IN_VIEWPORT_INTERACTION',
9437  PAGE_IS_SCROLLING_INTERACTION: 'PAGE_IS_SCROLLING_INTERACTION',
9438  PAGE_LOAD_INTERACTION: 'PAGE_LOAD_INTERACTION',
9439  PAGE_SCROLLED_INTERACTION: 'PAGE_SCROLLED_INTERACTION',
9440  NAVBAR_INTERACTION: 'NAVBAR_INTERACTION',
9441  DROPDOWN_INTERACTION: 'DROPDOWN_INTERACTION',
9442  ECOMMERCE_CART_INTERACTION: 'ECOMMERCE_CART_INTERACTION',
9443  TAB_INTERACTION: 'TAB_INTERACTION',
9444  SLIDER_INTERACTION: 'SLIDER_INTERACTION'
9445};
9446exports.InteractionTypeConsts = InteractionTypeConsts;
9447
9448/***/ }),
9449/* 172 */
9450/***/ (function(module, exports, __webpack_require__) {
9451
9452"use strict";
9453
9454
9455Object.defineProperty(exports, "__esModule", {
9456  value: true
9457});
9458exports.IX2_TEST_FRAME_RENDERED = exports.IX2_MEDIA_QUERIES_DEFINED = exports.IX2_VIEWPORT_WIDTH_CHANGED = exports.IX2_ACTION_LIST_PLAYBACK_CHANGED = exports.IX2_ELEMENT_STATE_CHANGED = exports.IX2_INSTANCE_REMOVED = exports.IX2_INSTANCE_STARTED = exports.IX2_INSTANCE_ADDED = exports.IX2_PARAMETER_CHANGED = exports.IX2_ANIMATION_FRAME_CHANGED = exports.IX2_EVENT_STATE_CHANGED = exports.IX2_EVENT_LISTENER_ADDED = exports.IX2_CLEAR_REQUESTED = exports.IX2_STOP_REQUESTED = exports.IX2_PLAYBACK_REQUESTED = exports.IX2_PREVIEW_REQUESTED = exports.IX2_SESSION_STOPPED = exports.IX2_SESSION_STARTED = exports.IX2_SESSION_INITIALIZED = exports.IX2_RAW_DATA_IMPORTED = void 0;
9459var IX2_RAW_DATA_IMPORTED = 'IX2_RAW_DATA_IMPORTED';
9460exports.IX2_RAW_DATA_IMPORTED = IX2_RAW_DATA_IMPORTED;
9461var IX2_SESSION_INITIALIZED = 'IX2_SESSION_INITIALIZED';
9462exports.IX2_SESSION_INITIALIZED = IX2_SESSION_INITIALIZED;
9463var IX2_SESSION_STARTED = 'IX2_SESSION_STARTED';
9464exports.IX2_SESSION_STARTED = IX2_SESSION_STARTED;
9465var IX2_SESSION_STOPPED = 'IX2_SESSION_STOPPED';
9466exports.IX2_SESSION_STOPPED = IX2_SESSION_STOPPED;
9467var IX2_PREVIEW_REQUESTED = 'IX2_PREVIEW_REQUESTED';
9468exports.IX2_PREVIEW_REQUESTED = IX2_PREVIEW_REQUESTED;
9469var IX2_PLAYBACK_REQUESTED = 'IX2_PLAYBACK_REQUESTED';
9470exports.IX2_PLAYBACK_REQUESTED = IX2_PLAYBACK_REQUESTED;
9471var IX2_STOP_REQUESTED = 'IX2_STOP_REQUESTED';
9472exports.IX2_STOP_REQUESTED = IX2_STOP_REQUESTED;
9473var IX2_CLEAR_REQUESTED = 'IX2_CLEAR_REQUESTED';
9474exports.IX2_CLEAR_REQUESTED = IX2_CLEAR_REQUESTED;
9475var IX2_EVENT_LISTENER_ADDED = 'IX2_EVENT_LISTENER_ADDED';
9476exports.IX2_EVENT_LISTENER_ADDED = IX2_EVENT_LISTENER_ADDED;
9477var IX2_EVENT_STATE_CHANGED = 'IX2_EVENT_STATE_CHANGED';
9478exports.IX2_EVENT_STATE_CHANGED = IX2_EVENT_STATE_CHANGED;
9479var IX2_ANIMATION_FRAME_CHANGED = 'IX2_ANIMATION_FRAME_CHANGED';
9480exports.IX2_ANIMATION_FRAME_CHANGED = IX2_ANIMATION_FRAME_CHANGED;
9481var IX2_PARAMETER_CHANGED = 'IX2_PARAMETER_CHANGED';
9482exports.IX2_PARAMETER_CHANGED = IX2_PARAMETER_CHANGED;
9483var IX2_INSTANCE_ADDED = 'IX2_INSTANCE_ADDED';
9484exports.IX2_INSTANCE_ADDED = IX2_INSTANCE_ADDED;
9485var IX2_INSTANCE_STARTED = 'IX2_INSTANCE_STARTED';
9486exports.IX2_INSTANCE_STARTED = IX2_INSTANCE_STARTED;
9487var IX2_INSTANCE_REMOVED = 'IX2_INSTANCE_REMOVED';
9488exports.IX2_INSTANCE_REMOVED = IX2_INSTANCE_REMOVED;
9489var IX2_ELEMENT_STATE_CHANGED = 'IX2_ELEMENT_STATE_CHANGED';
9490exports.IX2_ELEMENT_STATE_CHANGED = IX2_ELEMENT_STATE_CHANGED;
9491var IX2_ACTION_LIST_PLAYBACK_CHANGED = 'IX2_ACTION_LIST_PLAYBACK_CHANGED';
9492exports.IX2_ACTION_LIST_PLAYBACK_CHANGED = IX2_ACTION_LIST_PLAYBACK_CHANGED;
9493var IX2_VIEWPORT_WIDTH_CHANGED = 'IX2_VIEWPORT_WIDTH_CHANGED';
9494exports.IX2_VIEWPORT_WIDTH_CHANGED = IX2_VIEWPORT_WIDTH_CHANGED;
9495var IX2_MEDIA_QUERIES_DEFINED = 'IX2_MEDIA_QUERIES_DEFINED';
9496exports.IX2_MEDIA_QUERIES_DEFINED = IX2_MEDIA_QUERIES_DEFINED;
9497var IX2_TEST_FRAME_RENDERED = 'IX2_TEST_FRAME_RENDERED';
9498exports.IX2_TEST_FRAME_RENDERED = IX2_TEST_FRAME_RENDERED;
9499
9500/***/ }),
9501/* 173 */
9502/***/ (function(module, exports, __webpack_require__) {
9503
9504"use strict";
9505
9506
9507Object.defineProperty(exports, "__esModule", {
9508  value: true
9509});
9510exports.RENDER_PLUGIN = exports.RENDER_STYLE = exports.RENDER_GENERAL = exports.RENDER_TRANSFORM = exp
9510orts.ABSTRACT_NODE = exports.PLAIN_OBJECT = exports.HTML_ELEMENT = exports.PRESERVE_3D = exports.PARENT = exports.SIBLINGS = exports.IMMEDIATE_CHILDREN = exports.CHILDREN = exports.BAR_DELIMITER = exports.COLON_DELIMITER = exports.COMMA_DELIMITER = exports.AUTO = exports.WILL_CHANGE = exports.FLEX = exports.DISPLAY = exports.COLOR = exports.BORDER_COLOR = exports.BACKGROUND = exports.BACKGROUND_COLOR = exports.HEIGHT = exports.WIDTH = exports.FILTER = exports.OPACITY = exports.SKEW_Y = exports.SKEW_X = exports.SKEW = exports.ROTATE_Z = exports.ROTATE_Y = exports.ROTATE_X = exports.SCALE_3D = exports.SCALE_Z = exports.SCALE_Y = exports.SCALE_X = exports.TRANSLATE_3D = exports.TRANSLATE_Z = exports.TRANSLATE_Y = exports.TRANSLATE_X = exports.TRANSFORM = exports.CONFIG_UNIT = exports.CONFIG_Z_UNIT = exports.CONFIG_Y_UNIT = exports.CONFIG_X_UNIT = exports.CONFIG_VALUE = exports.CONFIG_Z_VALUE = exports.CONFIG_Y_VALUE = exports.CONFIG_X_VALUE = exports.BOUNDARY_SELECTOR = exports.W_MOD_IX = exports.W_MOD_JS = exports.WF_PAGE = exports.IX2_ID_DELIMITER = void 0;
9511var IX2_ID_DELIMITER = '|';
9512exports.IX2_ID_DELIMITER = IX2_ID_DELIMITER;
9513var WF_PAGE = 'data-wf-page';
9514exports.WF_PAGE = WF_PAGE;
9515var W_MOD_JS = 'w-mod-js';
9516exports.W_MOD_JS = W_MOD_JS;
9517var W_MOD_IX = 'w-mod-ix';
9518exports.W_MOD_IX = W_MOD_IX;
9519var BOUNDARY_SELECTOR = '.w-dyn-item';
9520exports.BOUNDARY_SELECTOR = BOUNDARY_SELECTOR;
9521var CONFIG_X_VALUE = 'xValue';
9522exports.CONFIG_X_VALUE = CONFIG_X_VALUE;
9523var CONFIG_Y_VALUE = 'yValue';
9524exports.CONFIG_Y_VALUE = CONFIG_Y_VALUE;
9525var CONFIG_Z_VALUE = 'zValue';
9526exports.CONFIG_Z_VALUE = CONFIG_Z_VALUE;
9527var CONFIG_VALUE = 'value';
9528exports.CONFIG_VALUE = CONFIG_VALUE;
9529var CONFIG_X_UNIT = 'xUnit';
9530exports.CONFIG_X_UNIT = CONFIG_X_UNIT;
9531var CONFIG_Y_UNIT = 'yUnit';
9532exports.CONFIG_Y_UNIT = CONFIG_Y_UNIT;
9533var CONFIG_Z_UNIT = 'zUnit';
9534exports.CONFIG_Z_UNIT = CONFIG_Z_UNIT;
9535var CONFIG_UNIT = 'unit';
9536exports.CONFIG_UNIT = CONFIG_UNIT;
9537var TRANSFORM = 'transform';
9538exports.TRANSFORM = TRANSFORM;
9539var TRANSLATE_X = 'translateX';
9540exports.TRANSLATE_X = TRANSLATE_X;
9541var TRANSLATE_Y = 'translateY';
9542exports.TRANSLATE_Y = TRANSLATE_Y;
9543var TRANSLATE_Z = 'translateZ';
9544exports.TRANSLATE_Z = TRANSLATE_Z;
9545var TRANSLATE_3D = 'translate3d';
9546exports.TRANSLATE_3D = TRANSLATE_3D;
9547var SCALE_X = 'scaleX';
9548exports.SCALE_X = SCALE_X;
9549var SCALE_Y = 'scaleY';
9550exports.SCALE_Y = SCALE_Y;
9551var SCALE_Z = 'scaleZ';
9552exports.SCALE_Z = SCALE_Z;
9553var SCALE_3D = 'scale3d';
9554exports.SCALE_3D = SCALE_3D;
9555var ROTATE_X = 'rotateX';
9556exports.ROTATE_X = ROTATE_X;
9557var ROTATE_Y = 'rotateY';
9558exports.ROTATE_Y = ROTATE_Y;
9559var ROTATE_Z = 'rotateZ';
9560exports.ROTATE_Z = ROTATE_Z;
9561var SKEW = 'skew';
9562exports.SKEW = SKEW;
9563var SKEW_X = 'skewX';
9564exports.SKEW_X = SKEW_X;
9565var SKEW_Y = 'skewY';
9566exports.SKEW_Y = SKEW_Y;
9567var OPACITY = 'opacity';
9568exports.OPACITY = OPACITY;
9569var FILTER = 'filter';
9570exports.FILTER = FILTER;
9571var WIDTH = 'width';
9572exports.WIDTH = WIDTH;
9573var HEIGHT = 'height';
9574exports.HEIGHT = HEIGHT;
9575var BACKGROUND_COLOR = 'backgroundColor';
9576exports.BACKGROUND_COLOR = BACKGROUND_COLOR;
9577var BACKGROUND = 'background';
9578exports.BACKGROUND = BACKGROUND;
9579var BORDER_COLOR = 'borderColor';
9580exports.BORDER_COLOR = BORDER_COLOR;
9581var COLOR = 'color';
9582exports.COLOR = COLOR;
9583var DISPLAY = 'display';
9584exports.DISPLAY = DISPLAY;
9585var FLEX = 'flex';
9586exports.FLEX = FLEX;
9587var WILL_CHANGE = 'willChange';
9588exports.WILL_CHANGE = WILL_CHANGE;
9589var AUTO = 'AUTO';
9590exports.AUTO = AUTO;
9591var COMMA_DELIMITER = ',';
9592exports.COMMA_DELIMITER = COMMA_DELIMITER;
9593var COLON_DELIMITER = ':';
9594exports.COLON_DELIMITER = COLON_DELIMITER;
9595var BAR_DELIMITER = '|';
9596exports.BAR_DELIMITER = BAR_DELIMITER;
9597var CHILDREN = 'CHILDREN';
9598exports.CHILDREN = CHILDREN;
9599var IMMEDIATE_CHILDREN = 'IMMEDIATE_CHILDREN';
9600exports.IMMEDIATE_CHILDREN = IMMEDIATE_CHILDREN;
9601var SIBLINGS = 'SIBLINGS';
9602exports.SIBLINGS = SIBLINGS;
9603var PARENT = 'PARENT';
9604exports.PARENT = PARENT;
9605var PRESERVE_3D = 'preserve-3d';
9606exports.PRESERVE_3D = PRESERVE_3D;
9607var HTML_ELEMENT = 'HTML_ELEMENT';
9608exports.HTML_ELEMENT = HTML_ELEMENT;
9609var PLAIN_OBJECT = 'PLAIN_OBJECT';
9610exports.PLAIN_OBJECT = PLAIN_OBJECT;
9611var ABSTRACT_NODE = 'ABSTRACT_NODE';
9612exports.ABSTRACT_NODE = ABSTRACT_NODE;
9613var RENDER_TRANSFORM = 'RENDER_TRANSFORM';
9614exports.RENDER_TRANSFORM = RENDER_TRANSFORM;
9615var RENDER_GENERAL = 'RENDER_GENERAL';
9616exports.RENDER_GENERAL = RENDER_GENERAL;
9617var RENDER_STYLE = 'RENDER_STYLE';
9618exports.RENDER_STYLE = RENDER_STYLE;
9619var RENDER_PLUGIN = 'RENDER_PLUGIN';
9620exports.RENDER_PLUGIN = RENDER_PLUGIN;
9621
9622/***/ }),
9623/* 174 */
9624/***/ (function(module, exports, __webpack_require__) {
9625
9626"use strict";
9627
9628
9629var _interopRequireDefault2 = __webpack_require__(0);
9630
9631var _defineProperty2 = _interopRequireDefault2(__webpack_require__(27));
9632
9633var _Object$create;
9634
9635var _interopRequireDefault = __webpack_require__(0);
9636
9637Object.defineProperty(exports, "__esModule", {
9638  value: true
9639});
9640exports.ixRequest = void 0;
9641
9642var _extends2 = _interopRequireDefault(__webpack_require__(28));
9643
9644var _constants = __webpack_require__(2);
9645
9646var _timm = __webpack_require__(18);
9647
9648var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
9649    IX2_PREVIEW_REQUESTED = _constants$IX2EngineA.IX2_PREVIEW_REQUESTED,
9650    IX2_PLAYBACK_REQUESTED = _constants$IX2EngineA.IX2_PLAYBACK_REQUESTED,
9651    IX2_STOP_REQUESTED = _constants$IX2EngineA.IX2_STOP_REQUESTED,
9652    IX2_CLEAR_REQUESTED = _constants$IX2EngineA.IX2_CLEAR_REQUESTED;
9653var initialState = {
9654  preview: {},
9655  playback: {},
9656  stop: {},
9657  clear: {}
9658};
9659var stateKeys = Object.create(null, (_Object$create = {}, (0, _defineProperty2["default"])(_Object$create, IX2_PREVIEW_REQUESTED, {
9660  value: 'preview'
9661}), (0, _defineProperty2["default"])(_Object$create, IX2_PLAYBACK_REQUESTED, {
9662  value: 'playback'
9663}), (0, _defineProperty2["default"])(_Object$create, IX2_STOP_REQUESTED, {
9664  value: 'stop'
9665}), (0, _defineProperty2["default"])(_Object$create, IX2_CLEAR_REQUESTED, {
9666  value: 'clear'
9667}), _Object$create));
9668
9669var ixRequest = function ixRequest() {
9670  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
9671  var action = arguments.length > 1 ? arguments[1] : undefined;
9672
9673  if (action.type in stateKeys) {
9674    var key = [stateKeys[action.type]];
9675    return (0, _timm.setIn)(state, [key], (0, _extends2["default"])({}, action.payload));
9676  }
9677
9678  return state;
9679};
9680
9681exports.ixRequest = ixRequest;
9682
9683/***/ }),
9684/* 175 */
9685/***/ (function(module, exports, __webpack_require__) {
9686
9687"use strict";
9688
9689
9690Object.defineProperty(exports, "__esModule", {
9691  value: true
9692});
9693exports.ixSession = void 0;
9694
9695var _constants = __webpack_require__(2);
9696
9697var _timm = __webpack_require__(18);
9698
9699var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
9700    IX2_SESSION_INITIALIZED = _constants$IX2EngineA.IX2_SESSION_INITIALIZED,
9701    IX2_SESSION_STARTED = _constants$IX2EngineA.IX2_SESSION_STARTED,
9702    IX2_TEST_FRAME_RENDERED = _constants$IX2EngineA.IX2_TEST_FRAME_RENDERED,
9703    IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED,
9704    IX2_EVENT_LISTENER_ADDED = _constants$IX2EngineA.IX2_EVENT_LISTENER_ADDED,
9705    IX2_EVENT_STATE_CHANGED = _constants$IX2EngineA.IX2_EVENT_STATE_CHANGED,
9706    IX2_ANIMATION_FRAME_CHANGED = _constants$IX2EngineA.IX2_ANIMATION_FRAME_CHANGED,
9707    IX2_ACTION_LIST_PLAYBACK_CHANGED = _constants$IX2EngineA.IX2_ACTION_LIST_PLAYBACK_CHANGED,
9708    IX2_VIEWPORT_WIDTH_CHANGED = _constants$IX2EngineA.IX2_VIEWPORT_WIDTH_CHANGED,
9709    IX2_MEDIA_QUERIES_DEFINED = _constants$IX2EngineA.IX2_MEDIA_QUERIES_DEFINED;
9710var initialState = {
9711  active: false,
9712  tick: 0,
9713  eventListeners: [],
9714  eventState: {},
9715  playbackState: {},
9716  viewportWidth: 0,
9717  mediaQueryKey: null,
9718  hasBoundaryNodes: false,
9719  hasDefinedMediaQueries: false
9720};
9721var TEST_FRAME_STEPS_SIZE = 20; // $FlowFixMe
9722
9723var ixSession = function ixSession() {
9724  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
9725  var action = arguments.length > 1 ? arguments[1] : undefined;
9726
9727  switch (action.type) {
9728    case IX2_SESSION_INITIALIZED:
9729      {
9730        var hasBoundaryNodes = action.payload.hasBoundaryNodes;
9731        return (0, _timm.set)(state, 'hasBoundaryNodes', hasBoundaryNodes);
9732      }
9733
9734    case IX2_SESSION_STARTED:
9735      {
9736        return (0, _timm.set)(state, 'active', true);
9737      }
9738
9739    case IX2_TEST_FRAME_RENDERED:
9740      {
9741        var _action$payload$step = action.payload.step,
9742            step = _action$payload$step === void 0 ? TEST_FRAME_STEPS_SIZE : _action$payload$step;
9743        return (0, _timm.set)(state, 'tick', state.tick + step);
9744      }
9745
9746    case IX2_SESSION_STOPPED:
9747      {
9748        return initialState;
9749      }
9750
9751    case IX2_ANIMATION_FRAME_CHANGED:
9752      {
9753        var now = action.payload.now;
9754        return (0, _timm.set)(state, 'tick', now);
9755      }
9756
9757    case IX2_EVENT_LISTENER_ADDED:
9758      {
9759        var eventListeners = (0, _timm.addLast)(state.eventListeners, action.payload);
9760        return (0, _timm.set)(state, 'eventListeners', eventListeners);
9761      }
9762
9763    case IX2_EVENT_STATE_CHANGED:
9764      {
9765        var _action$payload = action.payload,
9766            stateKey = _action$payload.stateKey,
9767            newState = _action$payload.newState;
9768        return (0, _timm.setIn)(state, ['eventState', stateKey], newState);
9769      }
9770
9771    case IX2_ACTION_LIST_PLAYBACK_CHANGED:
9772      {
9773        var _action$payload2 = action.payload,
9774            actionListId = _action$payload2.actionListId,
9775            isPlaying = _action$payload2.isPlaying;
9776        return (0, _timm.setIn)(state, ['playbackState', actionListId], isPlaying);
9777      }
9778
9779    case IX2_VIEWPORT_WIDTH_CHANGED:
9780      {
9781        var _action$payload3 = action.payload,
9782            width = _action$payload3.width,
9783            mediaQueries = _action$payload3.mediaQueries;
9784        var mediaQueryCount = mediaQueries.length;
9785        var mediaQueryKey = null;
9786
9787        for (var i = 0; i < mediaQueryCount; i++) {
9788          var _mediaQueries$i = mediaQueries[i],
9789              key = _mediaQueries$i.key,
9790              min = _mediaQueries$i.min,
9791              max = _mediaQueries$i.max;
9792
9793          if (width >= min && width <= max) {
9794            mediaQueryKey = key;
9795            break;
9796          }
9797        }
9798
9799        return (0, _timm.merge)(state, {
9800          viewportWidth: width,
9801          mediaQueryKey: mediaQueryKey
9802        });
9803      }
9804
9805    case IX2_MEDIA_QUERIES_DEFINED:
9806      {
9807        return (0, _timm.set)(state, 'hasDefinedMediaQueries', true);
9808      }
9809
9810    default:
9811      {
9812        return state;
9813      }
9814  }
9815};
9816
9817exports.ixSession = ixSession;
9818
9819/***/ }),
9820/* 176 */
9821/***/ (function(module, exports, __webpack_require__) {
9822
9823var baseIsMatch = __webpack_require__(177),
9824    getMatchData = __webpack_require__(229),
9825    matchesStrictComparable = __webpack_require__(101);
9826
9827/**
9828 * The base implementation of `_.matches` which doesn't clone `source`.
9829 *
9830 * @private
9831 * @param {Object} source The object of property values to match.
9832 * @returns {Function} Returns the new spec function.
9833 */
9834function baseMatches(source) {
9835  var matchData = getMatchData(source);
9836  if (matchData.length == 1 && matchData[0][2]) {
9837    return matchesStrictComparable(matchData[0][0], matchData[0][1]);
9838  }
9839  return function(object) {
9840    return object === source || baseIsMatch(object, source, matchData);
9841  };
9842}
9843
9844module.exports = baseMatches;
9845
9846
9847/***/ }),
9848/* 177 */
9849/***/ (function(module, exports, __webpack_require__) {
9850
9851var Stack = __webpack_require__(87),
9852    baseIsEqual = __webpack_require__(91);
9853
9854/** Used to compose bitmasks for value comparisons. */
9855var COMPARE_PARTIAL_FLAG = 1,
9856    COMPARE_UNORDERED_FLAG = 2;
9857
9858/**
9859 * The base implementation of `_.isMatch` without support for iteratee shorthands.
9860 *
9861 * @private
9862 * @param {Object} object The object to inspect.
9863 * @param {Object} source The object of property values to match.
9864 * @param {Array} matchData The property names, values, and compare flags to match.
9865 * @param {Function} [customizer] The function to customize comparisons.
9866 * @returns {boolean} Returns `true` if `object` is a match, else `false`.
9867 */
9868function baseIsMatch(object, source, matchData, customizer) {
9869  var index = matchData.length,
9870      length = index,
9871      noCustomizer = !customizer;
9872
9873  if (object == null) {
9874    return !length;
9875  }
9876  object = Object(object);
9877  while (index--) {
9878    var data = matchData[index];
9879    if ((noCustomizer && data[2])
9880          ? data[1] !== object[data[0]]
9881          : !(data[0] in object)
9882        ) {
9883      return false;
9884    }
9885  }
9886  while (++index < length) {
9887    data = matchData[index];
9888    var key = data[0],
9889        objValue = object[key],
9890        srcValue = data[1];
9891
9892    if (noCustomizer && data[2]) {
9893      if (objValue === undefined && !(key in object)) {
9894        return false;
9895      }
9896    } else {
9897      var stack = new Stack;
9898      if (customizer) {
9899        var result = customizer(objValue, srcValue, key, object, source, stack);
9900      }
9901      if (!(result === undefined
9902            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
9903            : result
9904          )) {
9905        return false;
9906      }
9907    }
9908  }
9909  return true;
9910}
9911
9912module.exports = baseIsMatch;
9913
9914
9915/***/ }),
9916/* 178 */
9917/***/ (function(module, exports) {
9918
9919/**
9920 * Removes all key-value entries from the list cache.
9921 *
9922 * @private
9923 * @name clear
9924 * @memberOf ListCache
9925 */
9926function listCacheClear() {
9927  this.__data__ = [];
9928  this.size = 0;
9929}
9930
9931module.exports = listCacheClear;
9932
9933
9934/***/ }),
9935/* 179 */
9936/***/ (function(module, exports, __webpack_require__) {
9937
9938var assocIndexOf = __webpack_require__(30);
9939
9940/** Used for built-in method references. */
9941var arrayProto = Array.prototype;
9942
9943/** Built-in value references. */
9944var splice = arrayProto.splice;
9945
9946/**
9947 * Removes `key` and its value from the list cache.
9948 *
9949 * @private
9950 * @name delete
9951 * @memberOf ListCache
9952 * @param {string} key The key of the value to remove.
9953 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
9954 */
9955function listCacheDelete(key) {
9956  var data = this.__data__,
9957      index = assocIndexOf(data, key);
9958
9959  if (index < 0) {
9960    return false;
9961  }
9962  var lastIndex = data.length - 1;
9963  if (index == lastIndex) {
9964    data.pop();
9965  } else {
9966    splice.call(data, index, 1);
9967  }
9968  --this.size;
9969  return true;
9970}
9971
9972module.exports = listCacheDelete;
9973
9974
9975/***/ }),
9976/* 180 */
9977/***/ (function(module, exports, __webpack_require__) {
9978
9979var assocIndexOf = __webpack_require__(30);
9980
9981/**
9982 * Gets the list cache value for `key`.
9983 *
9984 * @private
9985 * @name get
9986 * @memberOf ListCache
9987 * @param {string} key The key of the value to get.
9988 * @returns {*} Returns the entry value.
9989 */
9990function listCacheGet(key) {
9991  var data = this.__data__,
9992      index = assocIndexOf(data, key);
9993
9994  return index < 0 ? undefined : data[index][1];
9995}
9996
9997module.exports = listCacheGet;
9998
9999
10000/***/ }),
10001/* 181 */
10002/***/ (function(module, exports, __webpack_require__) {
10003
10004var assocIndexOf = __webpack_require__(30);
10005
10006/**
10007 * Checks if a list cache value for `key` exists.
10008 *
10009 * @private
10010 * @name has
10011 * @memberOf ListCache
10012 * @param {string} key The key of the entry to check.
10013 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
10014 */
10015function listCacheHas(key) {
10016  return assocIndexOf(this.__data__, key) > -1;
10017}
10018
10019module.exports = listCacheHas;
10020
10021
10022/***/ }),
10023/* 182 */
10024/***/ (function(module, exports, __webpack_require__) {
10025
10026var assocIndexOf = __webpack_require__(30);
10027
10028/**
10029 * Sets the list cache `key` to `value`.
10030 *
10031 * @private
10032 * @name set
10033 * @memberOf ListCache
10034 * @param {string} key The key of the value to set.
10035 * @param {*} value The value to set.
10036 * @returns {Object} Returns the list cache instance.
10037 */
10038function listCacheSet(key, value) {
10039  var data = this.__data__,
10040      index = assocIndexOf(data, key);
10041
10042  if (index < 0) {
10043    ++this.size;
10044    data.push([key, value]);
10045  } else {
10046    data[index][1] = value;
10047  }
10048  return this;
10049}
10050
10051module.exports = listCacheSet;
10052
10053
10054/***/ }),
10055/* 183 */
10056/***/ (function(module, exports, __webpack_require__) {
10057
10058var ListCache = __webpack_require__(29);
10059
10060/**
10061 * Removes all key-value entries from the stack.
10062 *
10063 * @private
10064 * @name clear
10065 * @memberOf Stack
10066 */
10067function stackClear() {
10068  this.__data__ = new ListCache;
10069  this.size = 0;
10070}
10071
10072module.exports = stackClear;
10073
10074
10075/***/ }),
10076/* 184 */
10077/***/ (function(module, exports) {
10078
10079/**
10080 * Removes `key` and its value from the stack.
10081 *
10082 * @private
10083 * @name delete
10084 * @memberOf Stack
10085 * @param {string} key The key of the value to remove.
10086 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
10087 */
10088function stackDelete(key) {
10089  var data = this.__data__,
10090      result = data['delete'](key);
10091
10092  this.size = data.size;
10093  return result;
10094}
10095
10096module.exports = stackDelete;
10097
10098
10099/***/ }),
10100/* 185 */
vendor: 11,191 bytes, lines 10101-10597
10101/***/ (function(module, exports) {
10102
10103/**
10104 * Gets the stack value for `key`.
10105 *
10106 * @private
10107 * @name get
10108 * @memberOf Stack
10109 * @param {string} key The key of the value to get.
10110 * @returns {*} Returns the entry value.
10111 */
10112function stackGet(key) {
10113  return this.__data__.get(key);
10114}
10115
10116module.exports = stackGet;
10117
10118
10119/***/ }),
10120/* 186 */
10121/***/ (function(module, exports) {
10122
10123/**
10124 * Checks if a stack value for `key` exists.
10125 *
10126 * @private
10127 * @name has
10128 * @memberOf Stack
10129 * @param {string} key The key of the entry to check.
10130 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
10131 */
10132function stackHas(key) {
10133  return this.__data__.has(key);
10134}
10135
10136module.exports = stackHas;
10137
10138
10139/***/ }),
10140/* 187 */
10141/***/ (function(module, exports, __webpack_require__) {
10142
10143var ListCache = __webpack_require__(29),
10144    Map = __webpack_require__(47),
10145    MapCache = __webpack_require__(48);
10146
10147/** Used as the size to enable large array optimizations. */
10148var LARGE_ARRAY_SIZE = 200;
10149
10150/**
10151 * Sets the stack `key` to `value`.
10152 *
10153 * @private
10154 * @name set
10155 * @memberOf Stack
10156 * @param {string} key The key of the value to set.
10157 * @param {*} value The value to set.
10158 * @returns {Object} Returns the stack cache instance.
10159 */
10160function stackSet(key, value) {
10161  var data = this.__data__;
10162  if (data instanceof ListCache) {
10163    var pairs = data.__data__;
10164    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
10165      pairs.push([key, value]);
10166      this.size = ++data.size;
10167      return this;
10168    }
10169    data = this.__data__ = new MapCache(pairs);
10170  }
10171  data.set(key, value);
10172  this.size = data.size;
10173  return this;
10174}
10175
10176module.exports = stackSet;
10177
10178
10179/***/ }),
10180/* 188 */
10181/***/ (function(module, exports, __webpack_require__) {
10182
10183var isFunction = __webpack_require__(88),
10184    isMasked = __webpack_require__(191),
10185    isObject = __webpack_require__(6),
10186    toSource = __webpack_require__(90);
10187
10188/**
10189 * Used to match `RegExp`
10190 * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
10191 */
10192var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
10193
10194/** Used to detect host constructors (Safari). */
10195var reIsHostCtor = /^\[object .+?Constructor\]$/;
10196
10197/** Used for built-in method references. */
10198var funcProto = Function.prototype,
10199    objectProto = Object.prototype;
10200
10201/** Used to resolve the decompiled source of functions. */
10202var funcToString = funcProto.toString;
10203
10204/** Used to check objects for own properties. */
10205var hasOwnProperty = objectProto.hasOwnProperty;
10206
10207/** Used to detect if a method is native. */
10208var reIsNative = RegExp('^' +
10209  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
10210  .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
10211);
10212
10213/**
10214 * The base implementation of `_.isNative` without bad shim checks.
10215 *
10216 * @private
10217 * @param {*} value The value to check.
10218 * @returns {boolean} Returns `true` if `value` is a native function,
10219 *  else `false`.
10220 */
10221function baseIsNative(value) {
10222  if (!isObject(value) || isMasked(value)) {
10223    return false;
10224  }
10225  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
10226  return pattern.test(toSource(value));
10227}
10228
10229module.exports = baseIsNative;
10230
10231
10232/***/ }),
10233/* 189 */
10234/***/ (function(module, exports, __webpack_require__) {
10235
10236var Symbol = __webpack_require__(19);
10237
10238/** Used for built-in method references. */
10239var objectProto = Object.prototype;
10240
10241/** Used to check objects for own properties. */
10242var hasOwnProperty = objectProto.hasOwnProperty;
10243
10244/**
10245 * Used to resolve the
10246 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
10247 * of values.
10248 */
10249var nativeObjectToString = objectProto.toString;
10250
10251/** Built-in value references. */
10252var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
10253
10254/**
10255 * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
10256 *
10257 * @private
10258 * @param {*} value The value to query.
10259 * @returns {string} Returns the raw `toStringTag`.
10260 */
10261function getRawTag(value) {
10262  var isOwn = hasOwnProperty.call(value, symToStringTag),
10263      tag = value[symToStringTag];
10264
10265  try {
10266    value[symToStringTag] = undefined;
10267    var unmasked = true;
10268  } catch (e) {}
10269
10270  var result = nativeObjectToString.call(value);
10271  if (unmasked) {
10272    if (isOwn) {
10273      value[symToStringTag] = tag;
10274    } else {
10275      delete value[symToStringTag];
10276    }
10277  }
10278  return result;
10279}
10280
10281module.exports = getRawTag;
10282
10283
10284/***/ }),
10285/* 190 */
10286/***/ (function(module, exports) {
10287
10288/** Used for built-in method references. */
10289var objectProto = Object.prototype;
10290
10291/**
10292 * Used to resolve the
10293 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
10294 * of values.
10295 */
10296var nativeObjectToString = objectProto.toString;
10297
10298/**
10299 * Converts `value` to a string using `Object.prototype.toString`.
10300 *
10301 * @private
10302 * @param {*} value The value to convert.
10303 * @returns {string} Returns the converted string.
10304 */
10305function objectToString(value) {
10306  return nativeObjectToString.call(value);
10307}
10308
10309module.exports = objectToString;
10310
10311
10312/***/ }),
10313/* 191 */
10314/***/ (function(module, exports, __webpack_require__) {
10315
10316var coreJsData = __webpack_require__(192);
10317
10318/** Used to detect methods masquerading as native. */
10319var maskSrcKey = (function() {
10320  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
10321  return uid ? ('Symbol(src)_1.' + uid) : '';
10322}());
10323
10324/**
10325 * Checks if `func` has its source masked.
10326 *
10327 * @private
10328 * @param {Function} func The function to check.
10329 * @returns {boolean} Returns `true` if `func` is masked, else `false`.
10330 */
10331function isMasked(func) {
10332  return !!maskSrcKey && (maskSrcKey in func);
10333}
10334
10335module.exports = isMasked;
10336
10337
10338/***/ }),
10339/* 192 */
10340/***/ (function(module, exports, __webpack_require__) {
10341
10342var root = __webpack_require__(5);
10343
10344/** Used to detect overreaching core-js shims. */
10345var coreJsData = root['__core-js_shared__'];
10346
10347module.exports = coreJsData;
10348
10349
10350/***/ }),
10351/* 193 */
10352/***/ (function(module, exports) {
10353
10354/**
10355 * Gets the value at `key` of `object`.
10356 *
10357 * @private
10358 * @param {Object} [object] The object to query.
10359 * @param {string} key The key of the property to get.
10360 * @returns {*} Returns the property value.
10361 */
10362function getValue(object, key) {
10363  return object == null ? undefined : object[key];
10364}
10365
10366module.exports = getValue;
10367
10368
10369/***/ }),
10370/* 194 */
10371/***/ (function(module, exports, __webpack_require__) {
10372
10373var Hash = __webpack_require__(195),
10374    ListCache = __webpack_require__(29),
10375    Map = __webpack_require__(47);
10376
10377/**
10378 * Removes all key-value entries from the map.
10379 *
10380 * @private
10381 * @name clear
10382 * @memberOf MapCache
10383 */
10384function mapCacheClear() {
10385  this.size = 0;
10386  this.__data__ = {
10387    'hash': new Hash,
10388    'map': new (Map || ListCache),
10389    'string': new Hash
10390  };
10391}
10392
10393module.exports = mapCacheClear;
10394
10395
10396/***/ }),
10397/* 195 */
10398/***/ (function(module, exports, __webpack_require__) {
10399
10400var hashClear = __webpack_require__(196),
10401    hashDelete = __webpack_require__(197),
10402    hashGet = __webpack_require__(198),
10403    hashHas = __webpack_require__(199),
10404    hashSet = __webpack_require__(200);
10405
10406/**
10407 * Creates a hash object.
10408 *
10409 * @private
10410 * @constructor
10411 * @param {Array} [entries] The key-value pairs to cache.
10412 */
10413function Hash(entries) {
10414  var index = -1,
10415      length = entries == null ? 0 : entries.length;
10416
10417  this.clear();
10418  while (++index < length) {
10419    var entry = entries[index];
10420    this.set(entry[0], entry[1]);
10421  }
10422}
10423
10424// Add methods to `Hash`.
10425Hash.prototype.clear = hashClear;
10426Hash.prototype['delete'] = hashDelete;
10427Hash.prototype.get = hashGet;
10428Hash.prototype.has = hashHas;
10429Hash.prototype.set = hashSet;
10430
10431module.exports = Hash;
10432
10433
10434/***/ }),
10435/* 196 */
10436/***/ (function(module, exports, __webpack_require__) {
10437
10438var nativeCreate = __webpack_require__(31);
10439
10440/**
10441 * Removes all key-value entries from the hash.
10442 *
10443 * @private
10444 * @name clear
10445 * @memberOf Hash
10446 */
10447function hashClear() {
10448  this.__data__ = nativeCreate ? nativeCreate(null) : {};
10449  this.size = 0;
10450}
10451
10452module.exports = hashClear;
10453
10454
10455/***/ }),
10456/* 197 */
10457/***/ (function(module, exports) {
10458
10459/**
10460 * Removes `key` and its value from the hash.
10461 *
10462 * @private
10463 * @name delete
10464 * @memberOf Hash
10465 * @param {Object} hash The hash to modify.
10466 * @param {string} key The key of the value to remove.
10467 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
10468 */
10469function hashDelete(key) {
10470  var result = this.has(key) && delete this.__data__[key];
10471  this.size -= result ? 1 : 0;
10472  return result;
10473}
10474
10475module.exports = hashDelete;
10476
10477
10478/***/ }),
10479/* 198 */
10480/***/ (function(module, exports, __webpack_require__) {
10481
10482var nativeCreate = __webpack_require__(31);
10483
10484/** Used to stand-in for `undefined` hash values. */
10485var HASH_UNDEFINED = '__lodash_hash_undefined__';
10486
10487/** Used for built-in method references. */
10488var objectProto = Object.prototype;
10489
10490/** Used to check objects for own properties. */
10491var hasOwnProperty = objectProto.hasOwnProperty;
10492
10493/**
10494 * Gets the hash value for `key`.
10495 *
10496 * @private
10497 * @name get
10498 * @memberOf Hash
10499 * @param {string} key The key of the value to get.
10500 * @returns {*} Returns the entry value.
10501 */
10502function hashGet(key) {
10503  var data = this.__data__;
10504  if (nativeCreate) {
10505    var result = data[key];
10506    return result === HASH_UNDEFINED ? undefined : result;
10507  }
10508  return hasOwnProperty.call(data, key) ? data[key] : undefined;
10509}
10510
10511module.exports = hashGet;
10512
10513
10514/***/ }),
10515/* 199 */
10516/***/ (function(module, exports, __webpack_require__) {
10517
10518var nativeCreate = __webpack_require__(31);
10519
10520/** Used for built-in method references. */
10521var objectProto = Object.prototype;
10522
10523/** Used to check objects for own properties. */
10524var hasOwnProperty = objectProto.hasOwnProperty;
10525
10526/**
10527 * Checks if a hash value for `key` exists.
10528 *
10529 * @private
10530 * @name has
10531 * @memberOf Hash
10532 * @param {string} key The key of the entry to check.
10533 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
10534 */
10535function hashHas(key) {
10536  var data = this.__data__;
10537  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
10538}
10539
10540module.exports = hashHas;
10541
10542
10543/***/ }),
10544/* 200 */
10545/***/ (function(module, exports, __webpack_require__) {
10546
10547var nativeCreate = __webpack_require__(31);
10548
10549/** Used to stand-in for `undefined` hash values. */
10550var HASH_UNDEFINED = '__lodash_hash_undefined__';
10551
10552/**
10553 * Sets the hash `key` to `value`.
10554 *
10555 * @private
10556 * @name set
10557 * @memberOf Hash
10558 * @param {string} key The key of the value to set.
10559 * @param {*} value The value to set.
10560 * @returns {Object} Returns the hash instance.
10561 */
10562function hashSet(key, value) {
10563  var data = this.__data__;
10564  this.size += this.has(key) ? 0 : 1;
10565  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
10566  return this;
10567}
10568
10569module.exports = hashSet;
10570
10571
10572/***/ }),
10573/* 201 */
10574/***/ (function(module, exports, __webpack_require__) {
10575
10576var getMapData = __webpack_require__(32);
10577
10578/**
10579 * Removes `key` and its value from the map.
10580 *
10581 * @private
10582 * @name delete
10583 * @memberOf MapCache
10584 * @param {string} key The key of the value to remove.
10585 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
10586 */
10587function mapCacheDelete(key) {
10588  var result = getMapData(this, key)['delete'](key);
10589  this.size -= result ? 1 : 0;
10590  return result;
10591}
10592
10593module.exports = mapCacheDelete;
10594
10595
10596/***/ }),
10597/* 202 */
vendor: 4,845 bytes, lines 10598-10769
10598/***/ (function(module, exports) {
10599
10600/**
10601 * Checks if `value` is suitable for use as unique object key.
10602 *
10603 * @private
10604 * @param {*} value The value to check.
10605 * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
10606 */
10607function isKeyable(value) {
10608  var type = typeof value;
10609  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
10610    ? (value !== '__proto__')
10611    : (value === null);
10612}
10613
10614module.exports = isKeyable;
10615
10616
10617/***/ }),
10618/* 203 */
10619/***/ (function(module, exports, __webpack_require__) {
10620
10621var getMapData = __webpack_require__(32);
10622
10623/**
10624 * Gets the map value for `key`.
10625 *
10626 * @private
10627 * @name get
10628 * @memberOf MapCache
10629 * @param {string} key The key of the value to get.
10630 * @returns {*} Returns the entry value.
10631 */
10632function mapCacheGet(key) {
10633  return getMapData(this, key).get(key);
10634}
10635
10636module.exports = mapCacheGet;
10637
10638
10639/***/ }),
10640/* 204 */
10641/***/ (function(module, exports, __webpack_require__) {
10642
10643var getMapData = __webpack_require__(32);
10644
10645/**
10646 * Checks if a map value for `key` exists.
10647 *
10648 * @private
10649 * @name has
10650 * @memberOf MapCache
10651 * @param {string} key The key of the entry to check.
10652 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
10653 */
10654function mapCacheHas(key) {
10655  return getMapData(this, key).has(key);
10656}
10657
10658module.exports = mapCacheHas;
10659
10660
10661/***/ }),
10662/* 205 */
10663/***/ (function(module, exports, __webpack_require__) {
10664
10665var getMapData = __webpack_require__(32);
10666
10667/**
10668 * Sets the map `key` to `value`.
10669 *
10670 * @private
10671 * @name set
10672 * @memberOf MapCache
10673 * @param {string} key The key of the value to set.
10674 * @param {*} value The value to set.
10675 * @returns {Object} Returns the map cache instance.
10676 */
10677function mapCacheSet(key, value) {
10678  var data = getMapData(this, key),
10679      size = data.size;
10680
10681  data.set(key, value);
10682  this.size += data.size == size ? 0 : 1;
10683  return this;
10684}
10685
10686module.exports = mapCacheSet;
10687
10688
10689/***/ }),
10690/* 206 */
10691/***/ (function(module, exports, __webpack_require__) {
10692
10693var Stack = __webpack_require__(87),
10694    equalArrays = __webpack_require__(92),
10695    equalByTag = __webpack_require__(212),
10696    equalObjects = __webpack_require__(216),
10697    getTag = __webpack_require__(56),
10698    isArray = __webpack_require__(1),
10699    isBuffer = __webpack_require__(50),
10700    isTypedArray = __webpack_require__(52);
10701
10702/** Used to compose bitmasks for value comparisons. */
10703var COMPARE_PARTIAL_FLAG = 1;
10704
10705/** `Object#toString` result references. */
10706var argsTag = '[object Arguments]',
10707    arrayTag = '[object Array]',
10708    objectTag = '[object Object]';
10709
10710/** Used for built-in method references. */
10711var objectProto = Object.prototype;
10712
10713/** Used to check objects for own properties. */
10714var hasOwnProperty = objectProto.hasOwnProperty;
10715
10716/**
10717 * A specialized version of `baseIsEqual` for arrays and objects which performs
10718 * deep comparisons and tracks traversed objects enabling objects with circular
10719 * references to be compared.
10720 *
10721 * @private
10722 * @param {Object} object The object to compare.
10723 * @param {Object} other The other object to compare.
10724 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
10725 * @param {Function} customizer The function to customize comparisons.
10726 * @param {Function} equalFunc The function to determine equivalents of values.
10727 * @param {Object} [stack] Tracks traversed `object` and `other` objects.
10728 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
10729 */
10730function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
10731  var objIsArr = isArray(object),
10732      othIsArr = isArray(other),
10733      objTag = objIsArr ? arrayTag : getTag(object),
10734      othTag = othIsArr ? arrayTag : getTag(other);
10735
10736  objTag = objTag == argsTag ? objectTag : objTag;
10737  othTag = othTag == argsTag ? objectTag : othTag;
10738
10739  var objIsObj = objTag == objectTag,
10740      othIsObj = othTag == objectTag,
10741      isSameTag = objTag == othTag;
10742
10743  if (isSameTag && isBuffer(object)) {
10744    if (!isBuffer(other)) {
10745      return false;
10746    }
10747    objIsArr = true;
10748    objIsObj = false;
10749  }
10750  if (isSameTag && !objIsObj) {
10751    stack || (stack = new Stack);
10752    return (objIsArr || isTypedArray(object))
10753      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
10754      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
10755  }
10756  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
10757    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
10758        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
10759
10760    if (objIsWrapped || othIsWrapped) {
10761      var objUnwrapped = objIsWrapped ? object.value() : object,
10762          othUnwrapped = othIsWrapped ? other.value() : other;
10763
10764      stack || (stack = new Stack);
10765      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
10766    }
10767  }
10768  if (!isSameTag) {
10769    return false;
10770  }
10771  stack || (stack = new Stack);
10772  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
10773}
10774
10775module.exports = baseIsEqualDeep;
10776
10777
10778/***/ }),
10779/* 207 */
10780/***/ (function(module, exports, __webpack_require__) {
10781
10782var MapCache = __webpack_require__(48),
10783    setCacheAdd = __webpack_require__(208),
10784    setCacheHas = __webpack_require__(209);
10785
10786/**
10787 *
10788 * Creates an array cache object to store unique values.
10789 *
10790 * @private
10791 * @constructor
10792 * @param {Array} [values] The values to cache.
10793 */
10794function SetCache(values) {
10795  var index = -1,
10796      length = values == null ? 0 : values.length;
10797
10798  this.__data__ = new MapCache;
10799  while (++index < length) {
10800    this.add(values[index]);
10801  }
10802}
10803
10804// Add methods to `SetCache`.
10805SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
10806SetCache.prototype.has = setCacheHas;
10807
10808module.exports = SetCache;
10809
10810
10811/***/ }),
10812/* 208 */
10813/***/ (function(module, exports) {
10814
10815/** Used to stand-in for `undefined` hash values. */
10816var HASH_UNDEFINED = '__lodash_hash_undefined__';
10817
10818/**
10819 * Adds `value` to the array cache.
10820 *
10821 * @private
10822 * @name add
10823 * @memberOf SetCache
10824 * @alias push
10825 * @param {*} value The value to cache.
10826 * @returns {Object} Returns the cache instance.
10827 */
10828function setCacheAdd(value) {
10829  this.__data__.set(value, HASH_UNDEFINED);
10830  return this;
10831}
10832
10833module.exports = setCacheAdd;
10834
10835
10836/***/ }),
10837/* 209 */
10838/***/ (function(module, exports) {
10839
10840/**
10841 * Checks if `value` is in the array cache.
10842 *
10843 * @private
10844 * @name has
10845 * @memberOf SetCache
10846 * @param {*} value The value to search for.
10847 * @returns {number} Returns `true` if `value` is found, else `false`.
10848 */
10849function setCacheHas(value) {
10850  return this.__data__.has(value);
10851}
10852
10853module.exports = setCacheHas;
10854
10855
10856/***/ }),
10857/* 210 */
10858/***/ (function(module, exports) {
10859
10860/**
10861 * A specialized version of `_.some` for arrays without support for iteratee
10862 * shorthands.
10863 *
10864 * @private
10865 * @param {Array} [array] The array to iterate over.
10866 * @param {Function} predicate The function invoked per iteration.
10867 * @returns {boolean} Returns `true` if any element passes the predicate check,
10868 *  else `false`.
10869 */
10870function arraySome(array, predicate) {
10871  var index = -1,
10872      length = array == null ? 0 : array.length;
10873
10874  while (++index < length) {
10875    if (predicate(array[index], index, array)) {
10876      return true;
10877    }
10878  }
10879  return false;
10880}
10881
10882module.exports = arraySome;
10883
10884
10885/***/ }),
10886/* 211 */
10887/***/ (function(module, exports) {
10888
10889/**
10890 * Checks if a `cache` value for `key` exists.
10891 *
10892 * @private
10893 * @param {Object} cache The cache to query.
10894 * @param {string} key The key of the entry to check.
10895 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
10896 */
10897function cacheHas(cache, key) {
10898  return cache.has(key);
10899}
10900
10901module.exports = cacheHas;
10902
10903
10904/***/ }),
10905/* 212 */
10906/***/ (function(module, exports, __webpack_require__) {
10907
10908var Symbol = __webpack_require__(19),
10909    Uint8Array = __webpack_require__(213),
10910    eq = __webpack_require__(46),
10911    equalArrays = __webpack_require__(92),
10912    mapToArray = __webpack_require__(214),
10913    setToArray = __webpack_require__(215);
10914
10915/** Used to compose bitmasks for value comparisons. */
10916var COMPARE_PARTIAL_FLAG = 1,
10917    COMPARE_UNORDERED_FLAG = 2;
10918
10919/** `Object#toString` result references. */
10920var boolTag = '[object Boolean]',
10921    dateTag = '[object Date]',
10922    errorTag = '[object Error]',
10923    mapTag = '[object Map]',
10924    numberTag = '[object Number]',
10925    regexpTag = '[object RegExp]',
10926    setTag = '[object Set]',
10927    stringTag = '[object String]',
10928    symbolTag = '[object Symbol]';
10929
10930var arrayBufferTag = '[object ArrayBuffer]',
10931    dataViewTag = '[object DataView]';
10932
10933/** Used to convert symbols to primitives and strings. */
10934var symbolProto = Symbol ? Symbol.prototype : undefined,
10935    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
10936
10937/**
10938 * A specialized version of `baseIsEqualDeep` for comparing objects of
10939 * the same `toStringTag`.
10940 *
10941 * **Note:** This function only supports comparing values with tags of
10942 * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
10943 *
10944 * @private
10945 * @param {Object} object The object to compare.
10946 * @param {Object} other The other object to compare.
10947 * @param {string} tag The `toStringTag` of the objects to compare.
10948 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
10949 * @param {Function} customizer The function to customize comparisons.
10950 * @param {Function} equalFunc The function to determine equivalents of values.
10951 * @param {Object} stack Tracks traversed `object` and `other` objects.
10952 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
10953 */
10954function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
10955  switch (tag) {
10956    case dataViewTag:
10957      if ((object.byteLength != other.byteLength) ||
10958          (object.byteOffset != other.byteOffset)) {
10959        return false;
vendor: 4,097 bytes, lines 10960-11118
10960      }
10961      object = object.buffer;
10962      other = other.buffer;
10963
10964    case arrayBufferTag:
10965      if ((object.byteLength != other.byteLength) ||
10966          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
10967        return false;
10968      }
10969      return true;
10970
10971    case boolTag:
10972    case dateTag:
10973    case numberTag:
10974      // Coerce booleans to `1` or `0` and dates to milliseconds.
10975      // Invalid dates are coerced to `NaN`.
10976      return eq(+object, +other);
10977
10978    case errorTag:
10979      return object.name == other.name && object.message == other.message;
10980
10981    case regexpTag:
10982    case stringTag:
10983      // Coerce regexes to strings and treat strings, primitives and objects,
10984      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
10985      // for more details.
10986      return object == (other + '');
10987
10988    case mapTag:
10989      var convert = mapToArray;
10990
10991    case setTag:
10992      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
10993      convert || (convert = setToArray);
10994
10995      if (object.size != other.size && !isPartial) {
10996        return false;
10997      }
10998      // Assume cyclic values are equal.
10999      var stacked = stack.get(object);
11000      if (stacked) {
11001        return stacked == other;
11002      }
11003      bitmask |= COMPARE_UNORDERED_FLAG;
11004
11005      // Recursively compare objects (susceptible to call stack limits).
11006      stack.set(object, other);
11007      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
11008      stack['delete'](object);
11009      return result;
11010
11011    case symbolTag:
11012      if (symbolValueOf) {
11013        return symbolValueOf.call(object) == symbolValueOf.call(other);
11014      }
11015  }
11016  return false;
11017}
11018
11019module.exports = equalByTag;
11020
11021
11022/***/ }),
11023/* 213 */
11024/***/ (function(module, exports, __webpack_require__) {
11025
11026var root = __webpack_require__(5);
11027
11028/** Built-in value references. */
11029var Uint8Array = root.Uint8Array;
11030
11031module.exports = Uint8Array;
11032
11033
11034/***/ }),
11035/* 214 */
11036/***/ (function(module, exports) {
11037
11038/**
11039 * Converts `map` to its key-value pairs.
11040 *
11041 * @private
11042 * @param {Object} map The map to convert.
11043 * @returns {Array} Returns the key-value pairs.
11044 */
11045function mapToArray(map) {
11046  var index = -1,
11047      result = Array(map.size);
11048
11049  map.forEach(function(value, key) {
11050    result[++index] = [key, value];
11051  });
11052  return result;
11053}
11054
11055module.exports = mapToArray;
11056
11057
11058/***/ }),
11059/* 215 */
11060/***/ (function(module, exports) {
11061
11062/**
11063 * Converts `set` to an array of its values.
11064 *
11065 * @private
11066 * @param {Object} set The set to convert.
11067 * @returns {Array} Returns the values.
11068 */
11069function setToArray(set) {
11070  var index = -1,
11071      result = Array(set.size);
11072
11073  set.forEach(function(value) {
11074    result[++index] = value;
11075  });
11076  return result;
11077}
11078
11079module.exports = setToArray;
11080
11081
11082/***/ }),
11083/* 216 */
11084/***/ (function(module, exports, __webpack_require__) {
11085
11086var getAllKeys = __webpack_require__(217);
11087
11088/** Used to compose bitmasks for value comparisons. */
11089var COMPARE_PARTIAL_FLAG = 1;
11090
11091/** Used for built-in method references. */
11092var objectProto = Object.prototype;
11093
11094/** Used to check objects for own properties. */
11095var hasOwnProperty = objectProto.hasOwnProperty;
11096
11097/**
11098 * A specialized version of `baseIsEqualDeep` for objects with support for
11099 * partial deep comparisons.
11100 *
11101 * @private
11102 * @param {Object} object The object to compare.
11103 * @param {Object} other The other object to compare.
11104 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
11105 * @param {Function} customizer The function to customize comparisons.
11106 * @param {Function} equalFunc The function to determine equivalents of values.
11107 * @param {Object} stack Tracks traversed `object` and `other` objects.
11108 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
11109 */
11110function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
11111  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
11112      objProps = getAllKeys(object),
11113      objLength = objProps.length,
11114      othProps = getAllKeys(other),
11115      othLength = othProps.length;
11116
11117  if (objLength != othLength && !isPartial) {
11118    return false;
vendor: 1,526 bytes, lines 11119-11166
11119  }
11120  var index = objLength;
11121  while (index--) {
11122    var key = objProps[index];
11123    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
11124      return false;
11125    }
11126  }
11127  // Assume cyclic values are equal.
11128  var stacked = stack.get(object);
11129  if (stacked && stack.get(other)) {
11130    return stacked == other;
11131  }
11132  var result = true;
11133  stack.set(object, other);
11134  stack.set(other, object);
11135
11136  var skipCtor = isPartial;
11137  while (++index < objLength) {
11138    key = objProps[index];
11139    var objValue = object[key],
11140        othValue = other[key];
11141
11142    if (customizer) {
11143      var compared = isPartial
11144        ? customizer(othValue, objValue, key, other, object, stack)
11145        : customizer(objValue, othValue, key, object, other, stack);
11146    }
11147    // Recursively compare objects (susceptible to call stack limits).
11148    if (!(compared === undefined
11149          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
11150          : compared
11151        )) {
11152      result = false;
11153      break;
11154    }
11155    skipCtor || (skipCtor = key == 'constructor');
11156  }
11157  if (result && !skipCtor) {
11158    var objCtor = object.constructor,
11159        othCtor = other.constructor;
11160
11161    // Non `Object` object instances with different constructors are not equal.
11162    if (objCtor != othCtor &&
11163        ('constructor' in object && 'constructor' in other) &&
11164        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
11165          typeof othCtor == 'function' && othCtor instanceof othCtor)) {
11166      result = false;
vendor: 10,099 bytes, lines 11167-11560
11167    }
11168  }
11169  stack['delete'](object);
11170  stack['delete'](other);
11171  return result;
11172}
11173
11174module.exports = equalObjects;
11175
11176
11177/***/ }),
11178/* 217 */
11179/***/ (function(module, exports, __webpack_require__) {
11180
11181var baseGetAllKeys = __webpack_require__(93),
11182    getSymbols = __webpack_require__(94),
11183    keys = __webpack_require__(33);
11184
11185/**
11186 * Creates an array of own enumerable property names and symbols of `object`.
11187 *
11188 * @private
11189 * @param {Object} object The object to query.
11190 * @returns {Array} Returns the array of property names and symbols.
11191 */
11192function getAllKeys(object) {
11193  return baseGetAllKeys(object, keys, getSymbols);
11194}
11195
11196module.exports = getAllKeys;
11197
11198
11199/***/ }),
11200/* 218 */
11201/***/ (function(module, exports) {
11202
11203/**
11204 * A specialized version of `_.filter` for arrays without support for
11205 * iteratee shorthands.
11206 *
11207 * @private
11208 * @param {Array} [array] The array to iterate over.
11209 * @param {Function} predicate The function invoked per iteration.
11210 * @returns {Array} Returns the new filtered array.
11211 */
11212function arrayFilter(array, predicate) {
11213  var index = -1,
11214      length = array == null ? 0 : array.length,
11215      resIndex = 0,
11216      result = [];
11217
11218  while (++index < length) {
11219    var value = array[index];
11220    if (predicate(value, index, array)) {
11221      result[resIndex++] = value;
11222    }
11223  }
11224  return result;
11225}
11226
11227module.exports = arrayFilter;
11228
11229
11230/***/ }),
11231/* 219 */
11232/***/ (function(module, exports) {
11233
11234/**
11235 * The base implementation of `_.times` without support for iteratee shorthands
11236 * or max array length checks.
11237 *
11238 * @private
11239 * @param {number} n The number of times to invoke `iteratee`.
11240 * @param {Function} iteratee The function invoked per iteration.
11241 * @returns {Array} Returns the array of results.
11242 */
11243function baseTimes(n, iteratee) {
11244  var index = -1,
11245      result = Array(n);
11246
11247  while (++index < n) {
11248    result[index] = iteratee(index);
11249  }
11250  return result;
11251}
11252
11253module.exports = baseTimes;
11254
11255
11256/***/ }),
11257/* 220 */
11258/***/ (function(module, exports, __webpack_require__) {
11259
11260var baseGetTag = __webpack_require__(11),
11261    isObjectLike = __webpack_require__(9);
11262
11263/** `Object#toString` result references. */
11264var argsTag = '[object Arguments]';
11265
11266/**
11267 * The base implementation of `_.isArguments`.
11268 *
11269 * @private
11270 * @param {*} value The value to check.
11271 * @returns {boolean} Returns `true` if `value` is an `arguments` object,
11272 */
11273function baseIsArguments(value) {
11274  return isObjectLike(value) && baseGetTag(value) == argsTag;
11275}
11276
11277module.exports = baseIsArguments;
11278
11279
11280/***/ }),
11281/* 221 */
11282/***/ (function(module, exports) {
11283
11284/**
11285 * This method returns `false`.
11286 *
11287 * @static
11288 * @memberOf _
11289 * @since 4.13.0
11290 * @category Util
11291 * @returns {boolean} Returns `false`.
11292 * @example
11293 *
11294 * _.times(2, _.stubFalse);
11295 * // => [false, false]
11296 */
11297function stubFalse() {
11298  return false;
11299}
11300
11301module.exports = stubFalse;
11302
11303
11304/***/ }),
11305/* 222 */
11306/***/ (function(module, exports, __webpack_require__) {
11307
11308var baseGetTag = __webpack_require__(11),
11309    isLength = __webpack_require__(53),
11310    isObjectLike = __webpack_require__(9);
11311
11312/** `Object#toString` result references. */
11313var argsTag = '[object Arguments]',
11314    arrayTag = '[object Array]',
11315    boolTag = '[object Boolean]',
11316    dateTag = '[object Date]',
11317    errorTag = '[object Error]',
11318    funcTag = '[object Function]',
11319    mapTag = '[object Map]',
11320    numberTag = '[object Number]',
11321    objectTag = '[object Object]',
11322    regexpTag = '[object RegExp]',
11323    setTag = '[object Set]',
11324    stringTag = '[object String]',
11325    weakMapTag = '[object WeakMap]';
11326
11327var arrayBufferTag = '[object ArrayBuffer]',
11328    dataViewTag = '[object DataView]',
11329    float32Tag = '[object Float32Array]',
11330    float64Tag = '[object Float64Array]',
11331    int8Tag = '[object Int8Array]',
11332    int16Tag = '[object Int16Array]',
11333    int32Tag = '[object Int32Array]',
11334    uint8Tag = '[object Uint8Array]',
11335    uint8ClampedTag = '[object Uint8ClampedArray]',
11336    uint16Tag = '[object Uint16Array]',
11337    uint32Tag = '[object Uint32Array]';
11338
11339/** Used to identify `toStringTag` values of typed arrays. */
11340var typedArrayTags = {};
11341typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
11342typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
11343typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
11344typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
11345typedArrayTags[uint32Tag] = true;
11346typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
11347typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
11348typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
11349typedArrayTags[errorTag] = typedArrayTags[funcTag] =
11350typedArrayTags[mapTag] = typedArrayTags[numberTag] =
11351typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
11352typedArrayTags[setTag] = typedArrayTags[stringTag] =
11353typedArrayTags[weakMapTag] = false;
11354
11355/**
11356 * The base implementation of `_.isTypedArray` without Node.js optimizations.
11357 *
11358 * @private
11359 * @param {*} value The value to check.
11360 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
11361 */
11362function baseIsTypedArray(value) {
11363  return isObjectLike(value) &&
11364    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
11365}
11366
11367module.exports = baseIsTypedArray;
11368
11369
11370/***/ }),
11371/* 223 */
11372/***/ (function(module, exports) {
11373
11374/**
11375 * The base implementation of `_.unary` without support for storing metadata.
11376 *
11377 * @private
11378 * @param {Function} func The function to cap arguments for.
11379 * @returns {Function} Returns the new capped function.
11380 */
11381function baseUnary(func) {
11382  return function(value) {
11383    return func(value);
11384  };
11385}
11386
11387module.exports = baseUnary;
11388
11389
11390/***/ }),
11391/* 224 */
11392/***/ (function(module, exports, __webpack_require__) {
11393
11394/* WEBPACK VAR INJECTION */(function(module) {var freeGlobal = __webpack_require__(89);
11395
11396/** Detect free variable `exports`. */
11397var freeExports =  true && exports && !exports.nodeType && exports;
11398
11399/** Detect free variable `module`. */
11400var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
11401
11402/** Detect the popular CommonJS extension `module.exports`. */
11403var moduleExports = freeModule && freeModule.exports === freeExports;
11404
11405/** Detect free variable `process` from Node.js. */
11406var freeProcess = moduleExports && freeGlobal.process;
11407
11408/** Used to access faster Node.js helpers. */
11409var nodeUtil = (function() {
11410  try {
11411    // Use `util.types` for Node.js 10+.
11412    var types = freeModule && freeModule.require && freeModule.require('util').types;
11413
11414    if (types) {
11415      return types;
11416    }
11417
11418    // Legacy `process.binding('util')` for Node.js < 10.
11419    return freeProcess && freeProcess.binding && freeProcess.binding('util');
11420  } catch (e) {}
11421}());
11422
11423module.exports = nodeUtil;
11424
11425/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(97)(module)))
11426
11427/***/ }),
11428/* 225 */
11429/***/ (function(module, exports, __webpack_require__) {
11430
11431var overArg = __webpack_require__(98);
11432
11433/* Built-in method references for those with the same name as other `lodash` methods. */
11434var nativeKeys = overArg(Object.keys, Object);
11435
11436module.exports = nativeKeys;
11437
11438
11439/***/ }),
11440/* 226 */
11441/***/ (function(module, exports, __webpack_require__) {
11442
11443var getNative = __webpack_require__(8),
11444    root = __webpack_require__(5);
11445
11446/* Built-in method references that are verified to be native. */
11447var DataView = getNative(root, 'DataView');
11448
11449module.exports = DataView;
11450
11451
11452/***/ }),
11453/* 227 */
11454/***/ (function(module, exports, __webpack_require__) {
11455
11456var getNative = __webpack_require__(8),
11457    root = __webpack_require__(5);
11458
11459/* Built-in method references that are verified to be native. */
11460var Promise = getNative(root, 'Promise');
11461
11462module.exports = Promise;
11463
11464
11465/***/ }),
11466/* 228 */
11467/***/ (function(module, exports, __webpack_require__) {
11468
11469var getNative = __webpack_require__(8),
11470    root = __webpack_require__(5);
11471
11472/* Built-in method references that are verified to be native. */
11473var Set = getNative(root, 'Set');
11474
11475module.exports = Set;
11476
11477
11478/***/ }),
11479/* 229 */
11480/***/ (function(module, exports, __webpack_require__) {
11481
11482var isStrictComparable = __webpack_require__(100),
11483    keys = __webpack_require__(33);
11484
11485/**
11486 * Gets the property names, values, and compare flags of `object`.
11487 *
11488 * @private
11489 * @param {Object} object The object to query.
11490 * @returns {Array} Returns the match data of `object`.
11491 */
11492function getMatchData(object) {
11493  var result = keys(object),
11494      length = result.length;
11495
11496  while (length--) {
11497    var key = result[length],
11498        value = object[key];
11499
11500    result[length] = [key, value, isStrictComparable(value)];
11501  }
11502  return result;
11503}
11504
11505module.exports = getMatchData;
11506
11507
11508/***/ }),
11509/* 230 */
11510/***/ (function(module, exports, __webpack_require__) {
11511
11512var baseIsEqual = __webpack_require__(91),
11513    get = __webpack_require__(35),
11514    hasIn = __webpack_require__(236),
11515    isKey = __webpack_require__(58),
11516    isStrictComparable = __webpack_require__(100),
11517    matchesStrictComparable = __webpack_require__(101),
11518    toKey = __webpack_require__(20);
11519
11520/** Used to compose bitmasks for value comparisons. */
11521var COMPARE_PARTIAL_FLAG = 1,
11522    COMPARE_UNORDERED_FLAG = 2;
11523
11524/**
11525 * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
11526 *
11527 * @private
11528 * @param {string} path The path of the property to get.
11529 * @param {*} srcValue The value to match.
11530 * @returns {Function} Returns the new spec function.
11531 */
11532function baseMatchesProperty(path, srcValue) {
11533  if (isKey(path) && isStrictComparable(srcValue)) {
11534    return matchesStrictComparable(toKey(path), srcValue);
11535  }
11536  return function(object) {
11537    var objValue = get(object, path);
11538    return (objValue === undefined && objValue === srcValue)
11539      ? hasIn(object, path)
11540      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
11541  };
11542}
11543
11544module.exports = baseMatchesProperty;
11545
11546
11547/***/ }),
11548/* 231 */
11549/***/ (function(module, exports, __webpack_require__) {
11550
11551var memoizeCapped = __webpack_require__(232);
11552
11553/** Used to match property names within property paths. */
11554var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
11555
11556/** Used to match backslashes in property paths. */
11557var reEscapeChar = /\\(\\)?/g;
11558
11559/**
11560 * Converts `string` to a property path array.
vendor: 5,053 bytes, lines 11561-11754
11561 *
11562 * @private
11563 * @param {string} string The string to convert.
11564 * @returns {Array} Returns the property path array.
11565 */
11566var stringToPath = memoizeCapped(function(string) {
11567  var result = [];
11568  if (string.charCodeAt(0) === 46 /* . */) {
11569    result.push('');
11570  }
11571  string.replace(rePropName, function(match, number, quote, subString) {
11572    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));
11573  });
11574  return result;
11575});
11576
11577module.exports = stringToPath;
11578
11579
11580/***/ }),
11581/* 232 */
11582/***/ (function(module, exports, __webpack_require__) {
11583
11584var memoize = __webpack_require__(233);
11585
11586/** Used as the maximum memoize cache size. */
11587var MAX_MEMOIZE_SIZE = 500;
11588
11589/**
11590 * A specialized version of `_.memoize` which clears the memoized function's
11591 * cache when it exceeds `MAX_MEMOIZE_SIZE`.
11592 *
11593 * @private
11594 * @param {Function} func The function to have its output memoized.
11595 * @returns {Function} Returns the new memoized function.
11596 */
11597function memoizeCapped(func) {
11598  var result = memoize(func, function(key) {
11599    if (cache.size === MAX_MEMOIZE_SIZE) {
11600      cache.clear();
11601    }
11602    return key;
11603  });
11604
11605  var cache = result.cache;
11606  return result;
11607}
11608
11609module.exports = memoizeCapped;
11610
11611
11612/***/ }),
11613/* 233 */
11614/***/ (function(module, exports, __webpack_require__) {
11615
11616var MapCache = __webpack_require__(48);
11617
11618/** Error message constants. */
11619var FUNC_ERROR_TEXT = 'Expected a function';
11620
11621/**
11622 * Creates a function that memoizes the result of `func`. If `resolver` is
11623 * provided, it determines the cache key for storing the result based on the
11624 * arguments provided to the memoized function. By default, the first argument
11625 * provided to the memoized function is used as the map cache key. The `func`
11626 * is invoked with the `this` binding of the memoized function.
11627 *
11628 * **Note:** The cache is exposed as the `cache` property on the memoized
11629 * function. Its creation may be customized by replacing the `_.memoize.Cache`
11630 * constructor with one whose instances implement the
11631 * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
11632 * method interface of `clear`, `delete`, `get`, `has`, and `set`.
11633 *
11634 * @static
11635 * @memberOf _
11636 * @since 0.1.0
11637 * @category Function
11638 * @param {Function} func The function to have its output memoized.
11639 * @param {Function} [resolver] The function to resolve the cache key.
11640 * @returns {Function} Returns the new memoized function.
11641 * @example
11642 *
11643 * var object = { 'a': 1, 'b': 2 };
11644 * var other = { 'c': 3, 'd': 4 };
11645 *
11646 * var values = _.memoize(_.values);
11647 * values(object);
11648 * // => [1, 2]
11649 *
11650 * values(other);
11651 * // => [3, 4]
11652 *
11653 * object.a = 2;
11654 * values(object);
11655 * // => [1, 2]
11656 *
11657 * // Modify the result cache.
11658 * values.cache.set(object, ['a', 'b']);
11659 * values(object);
11660 * // => ['a', 'b']
11661 *
11662 * // Replace `_.memoize.Cache`.
11663 * _.memoize.Cache = WeakMap;
11664 */
11665function memoize(func, resolver) {
11666  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
11667    throw new TypeError(FUNC_ERROR_TEXT);
11668  }
11669  var memoized = function() {
11670    var args = arguments,
11671        key = resolver ? resolver.apply(this, args) : args[0],
11672        cache = memoized.cache;
11673
11674    if (cache.has(key)) {
11675      return cache.get(key);
11676    }
11677    var result = func.apply(this, args);
11678    memoized.cache = cache.set(key, result) || cache;
11679    return result;
11680  };
11681  memoized.cache = new (memoize.Cache || MapCache);
11682  return memoized;
11683}
11684
11685// Expose `MapCache`.
11686memoize.Cache = MapCache;
11687
11688module.exports = memoize;
11689
11690
11691/***/ }),
11692/* 234 */
11693/***/ (function(module, exports, __webpack_require__) {
11694
11695var baseToString = __webpack_require__(235);
11696
11697/**
11698 * Converts `value` to a string. An empty string is returned for `null`
11699 * and `undefined` values. The sign of `-0` is preserved.
11700 *
11701 * @static
11702 * @memberOf _
11703 * @since 4.0.0
11704 * @category Lang
11705 * @param {*} value The value to convert.
11706 * @returns {string} Returns the converted string.
11707 * @example
11708 *
11709 * _.toString(null);
11710 * // => ''
11711 *
11712 * _.toString(-0);
11713 * // => '-0'
11714 *
11715 * _.toString([1, 2, 3]);
11716 * // => '1,2,3'
11717 */
11718function toString(value) {
11719  return value == null ? '' : baseToString(value);
11720}
11721
11722module.exports = toString;
11723
11724
11725/***/ }),
11726/* 235 */
11727/***/ (function(module, exports, __webpack_require__) {
11728
11729var Symbol = __webpack_require__(19),
11730    arrayMap = __webpack_require__(102),
11731    isArray = __webpack_require__(1),
11732    isSymbol = __webpack_require__(37);
11733
11734/** Used as references for various `Number` constants. */
11735var INFINITY = 1 / 0;
11736
11737/** Used to convert symbols to primitives and strings. */
11738var symbolProto = Symbol ? Symbol.prototype : undefined,
11739    symbolToString = symbolProto ? symbolProto.toString : undefined;
11740
11741/**
11742 * The base implementation of `_.toString` which doesn't convert nullish
11743 * values to empty strings.
11744 *
11745 * @private
11746 * @param {*} value The value to process.
11747 * @returns {string} Returns the string.
11748 */
11749function baseToString(value) {
11750  // Exit early for strings to avoid a performance hit in some environments.
11751  if (typeof value == 'string') {
11752    return value;
11753  }
11754  if (isArray(value)) {
vendor: 2,364 bytes, lines 11755-11852
11755    // Recursively convert values (susceptible to call stack limits).
11756    return arrayMap(value, baseToString) + '';
11757  }
11758  if (isSymbol(value)) {
11759    return symbolToString ? symbolToString.call(value) : '';
11760  }
11761  var result = (value + '');
11762  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
11763}
11764
11765module.exports = baseToString;
11766
11767
11768/***/ }),
11769/* 236 */
11770/***/ (function(module, exports, __webpack_require__) {
11771
11772var baseHasIn = __webpack_require__(237),
11773    hasPath = __webpack_require__(238);
11774
11775/**
11776 * Checks if `path` is a direct or inherited property of `object`.
11777 *
11778 * @static
11779 * @memberOf _
11780 * @since 4.0.0
11781 * @category Object
11782 * @param {Object} object The object to query.
11783 * @param {Array|string} path The path to check.
11784 * @returns {boolean} Returns `true` if `path` exists, else `false`.
11785 * @example
11786 *
11787 * var object = _.create({ 'a': _.create({ 'b': 2 }) });
11788 *
11789 * _.hasIn(object, 'a');
11790 * // => true
11791 *
11792 * _.hasIn(object, 'a.b');
11793 * // => true
11794 *
11795 * _.hasIn(object, ['a', 'b']);
11796 * // => true
11797 *
11798 * _.hasIn(object, 'b');
11799 * // => false
11800 */
11801function hasIn(object, path) {
11802  return object != null && hasPath(object, path, baseHasIn);
11803}
11804
11805module.exports = hasIn;
11806
11807
11808/***/ }),
11809/* 237 */
11810/***/ (function(module, exports) {
11811
11812/**
11813 * The base implementation of `_.hasIn` without support for deep paths.
11814 *
11815 * @private
11816 * @param {Object} [object] The object to query.
11817 * @param {Array|string} key The key to check.
11818 * @returns {boolean} Returns `true` if `key` exists, else `false`.
11819 */
11820function baseHasIn(object, key) {
11821  return object != null && key in Object(object);
11822}
11823
11824module.exports = baseHasIn;
11825
11826
11827/***/ }),
11828/* 238 */
11829/***/ (function(module, exports, __webpack_require__) {
11830
11831var castPath = __webpack_require__(36),
11832    isArguments = __webpack_require__(34),
11833    isArray = __webpack_require__(1),
11834    isIndex = __webpack_require__(51),
11835    isLength = __webpack_require__(53),
11836    toKey = __webpack_require__(20);
11837
11838/**
11839 * Checks if `path` exists on `object`.
11840 *
11841 * @private
11842 * @param {Object} object The object to query.
11843 * @param {Array|string} path The path to check.
11844 * @param {Function} hasFunc The function to check properties.
11845 * @returns {boolean} Returns `true` if `path` exists, else `false`.
11846 */
11847function hasPath(object, path, hasFunc) {
11848  path = castPath(path, object);
11849
11850  var index = -1,
11851      length = path.length,
11852      result = false;
11853
11854  while (++index < length) {
11855    var key = toKey(path[index]);
11856    if (!(result = object != null && hasFunc(object, key))) {
11857      break;
11858    }
11859    object = object[key];
11860  }
11861  if (result || ++index != length) {
11862    return result;
11863  }
11864  length = object == null ? 0 : object.length;
11865  return !!length && isLength(length) && isIndex(key, length) &&
11866    (isArray(object) || isArguments(object));
11867}
11868
11869module.exports = hasPath;
11870
11871
11872/***/ }),
11873/* 239 */
11874/***/ (function(module, exports, __webpack_require__) {
11875
11876var baseProperty = __webpack_require__(103),
11877    basePropertyDeep = __webpack_require__(240),
11878    isKey = __webpack_require__(58),
11879    toKey = __webpack_require__(20);
11880
11881/**
11882 * Creates a function that returns the value at `path` of a given object.
11883 *
11884 * @static
11885 * @memberOf _
11886 * @since 2.4.0
11887 * @category Util
11888 * @param {Array|string} path The path of the property to get.
11889 * @returns {Function} Returns the new accessor function.
11890 * @example
11891 *
11892 * var objects = [
11893 *   { 'a': { 'b': 2 } },
11894 *   { 'a': { 'b': 1 } }
11895 * ];
11896 *
11897 * _.map(objects, _.property('a.b'));
11898 * // => [2, 1]
11899 *
11900 * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
11901 * // => [1, 2]
11902 */
11903function property(path) {
11904  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
11905}
11906
11907module.exports = property;
11908
11909
11910/***/ }),
11911/* 240 */
11912/***/ (function(module, exports, __webpack_require__) {
11913
11914var baseGet = __webpack_require__(57);
11915
11916/**
11917 * A specialized version of `baseProperty` which supports deep paths.
11918 *
11919 * @private
11920 * @param {Array|string} path The path of the property to get.
11921 * @returns {Function} Returns the new accessor function.
11922 */
11923function basePropertyDeep(path) {
11924  return function(object) {
11925    return baseGet(object, path);
11926  };
11927}
11928
11929module.exports = basePropertyDeep;
11930
11931
11932/***/ }),
11933/* 241 */
11934/***/ (function(module, exports, __webpack_require__) {
11935
11936var baseFindIndex = __webpack_require__(104),
11937    baseIteratee = __webpack_require__(7),
11938    toInteger = __webpack_require__(105);
11939
11940/* Built-in method references for those with the same name as other `lodash` methods. */
11941var nativeMax = Math.max;
11942
11943/**
11944 * This method is like `_.find` except that it returns the index of the first
11945 * element `predicate` returns truthy for instead of the element itself.
11946 *
11947 * @static
11948 * @memberOf _
11949 * @since 1.1.0
11950 * @category Array
11951 * @param {Array} array The array to inspect.
11952 * @param {Function} [predicate=_.identity] The function invoked per iteration.
11953 * @param {number} [fromIndex=0] The index to search from.
11954 * @returns {number} Returns the index of the found element, else `-1`.
11955 * @example
11956 *
11957 * var users = [
11958 *   { 'user': 'barney',  'active': false },
11959 *   { 'user': 'fred',    'active': false },
11960 *   { 'user': 'pebbles', 'active': true }
11961 * ];
11962 *
11963 * _.findIndex(users, function(o) { return o.user == 'barney'; });
11964 * // => 0
11965 *
11966 * // The `_.matches` iteratee shorthand.
11967 * _.findIndex(users, { 'user': 'fred', 'active': false });
11968 * // => 1
11969 *
11970 * // The `_.matchesProperty` iteratee shorthand.
11971 * _.findIndex(users, ['active', false]);
11972 * // => 0
11973 *
11974 * // The `_.property` iteratee shorthand.
11975 * _.findIndex(users, 'active');
11976 * // => 2
11977 */
11978function findIndex(array, predicate, fromIndex) {
11979  var length = array == null ? 0 : array.length;
11980  if (!length) {
11981    return -1;
11982  }
11983  var index = fromIndex == null ? 0 : toInteger(fromIndex);
11984  if (index < 0) {
11985    index = nativeMax(length + index, 0);
11986  }
11987  return baseFindIndex(array, baseIteratee(predicate, 3), index);
11988}
11989
11990module.exports = findIndex;
11991
11992
11993/***/ }),
11994/* 242 */
11995/***/ (function(module, exports, __webpack_require__) {
11996
11997var toNumber = __webpack_require__(60);
11998
11999/** Used as references for various `Number` constants. */
12000var INFINITY = 1 / 0,
12001    MAX_INTEGER = 1.7976931348623157e+308;
12002
12003/**
12004 * Converts `value` to a finite number.
12005 *
12006 * @static
12007 * @memberOf _
12008 * @since 4.12.0
12009 * @category Lang
12010 * @param {*} value The value to convert.
12011 * @returns {number} Returns the converted number.
12012 * @example
12013 *
12014 * _.toFinite(3.2);
12015 * // => 3.2
12016 *
12017 * _.toFinite(Number.MIN_VALUE);
12018 * // => 5e-324
12019 *
12020 * _.toFinite(Infinity);
12021 * // => 1.7976931348623157e+308
12022 *
12023 * _.toFinite('3.2');
12024 * // => 3.2
12025 */
12026function toFinite(value) {
12027  if (!value) {
12028    return value === 0 ? value : 0;
12029  }
12030  value = toNumber(value);
12031  if (value === INFINITY || value === -INFINITY) {
12032    var sign = (value < 0 ? -1 : 1);
12033    return sign * MAX_INTEGER;
12034  }
12035  return value === value ? value : 0;
12036}
12037
12038module.exports = toFinite;
12039
12040
12041/***/ }),
12042/* 243 */
12043/***/ (function(module, exports) {
12044
12045function _arrayWithoutHoles(arr) {
12046  if (Array.isArray(arr)) {
12047    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {
12048      arr2[i] = arr[i];
12049    }
12050
12051    return arr2;
12052  }
12053}
12054
12055module.exports = _arrayWithoutHoles;
12056
12057/***/ }),
12058/* 244 */
12059/***/ (function(module, exports) {
12060
12061function _iterableToArray(iter) {
12062  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
12063}
12064
12065module.exports = _iterableToArray;
12066
12067/***/ }),
12068/* 245 */
12069/***/ (function(module, exports) {
12070
12071function _nonIterableSpread() {
12072  throw new TypeError("Invalid attempt to spread non-iterable instance");
12073}
12074
12075module.exports = _nonIterableSpread;
12076
12077/***/ }),
12078/* 246 */
12079/***/ (function(module, exports, __webpack_require__) {
12080
12081"use strict";
12082
12083
12084Object.defineProperty(exports, "__esModule", {
12085  value: true
12086});
12087exports.createElementState = createElementState;
12088exports.mergeActionState = mergeActionState;
12089exports.ixElements = void 0;
12090
12091var _timm = __webpack_require__(18);
12092
12093var _constants = __webpack_require__(2);
12094
12095var _constants$IX2EngineC = _constants.IX2EngineConstants,
12096    HTML_ELEMENT = _constants$IX2EngineC.HTML_ELEMENT,
12097    PLAIN_OBJECT = _constants$IX2EngineC.PLAIN_OBJECT,
12098    ABSTRACT_NODE = _constants$IX2EngineC.ABSTRACT_NODE,
12099    CONFIG_X_VALUE = _constants$IX2EngineC.CONFIG_X_VALUE,
12100    CONFIG_Y_VALUE = _constants$IX2EngineC.CONFIG_Y_VALUE,
12101    CONFIG_Z_VALUE = _constants$IX2EngineC.CONFIG_Z_VALUE,
12102    CONFIG_VALUE = _constants$IX2EngineC.CONFIG_VALUE,
12103    CONFIG_X_UNIT = _constants$IX2EngineC.CONFIG_X_UNIT,
12104    CONFIG_Y_UNIT = _constants$IX2EngineC.CONFIG_Y_UNIT,
12105    CONFIG_Z_UNIT = _constants$IX2EngineC.CONFIG_Z_UNIT,
12106    CONFIG_UNIT = _constants$IX2EngineC.CONFIG_UNIT;
12107var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
12108    IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED,
12109    IX2_INSTANCE_ADDED = _constants$IX2EngineA.IX2_INSTANCE_ADDED,
12110    IX2_ELEMENT_STATE_CHANGED = _constants$IX2EngineA.IX2_ELEMENT_STATE_CHANGED;
12111var initialState = {};
12112var refState = 'refState';
12113
12114var ixElements = function ixElements() {
12115  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
12116  var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
12117
12118  switch (action.type) {
12119    case IX2_SESSION_STOPPED:
12120      {
12121        return initialState;
12122      }
12123
12124    case IX2_INSTANCE_ADDED:
12125      {
12126        var _action$payload = action.payload,
12127            elementId = _action$payload.elementId,
12128            ref = _action$payload.element,
12129            origin = _action$payload.origin,
12130            actionItem = _action$payload.actionItem,
12131            refType = _action$payload.refType;
12132        var actionTypeId = actionItem.actionTypeId;
12133        var newState = state; // Create new ref entry if it doesn't exist
12134
12135        if ((0, _timm.getIn)(newState, [elementId, ref]) !== ref) {
12136          newState = createElementState(newState, ref, refType, elementId, actionItem);
12137        } // Merge origin values into ref state
12138
12139
12140        return mergeActionState(newState, elementId, actionTypeId, origin, actionItem);
12141      }
12142
12143    case IX2_ELEMENT_STATE_CHANGED:
12144      {
12145        var _action$payload2 = action.payload,
12146            _elementId = _action$payload2.elementId,
12147            _actionTypeId = _action$payload2.actionTypeId,
12148            current = _action$payload2.current,
12149            _actionItem = _action$payload2.actionItem;
12150        return mergeActionState(state, _elementId, _actionTypeId, current, _actionItem);
12151      }
12152
12153    default:
12154      {
12155        return state;
12156      }
12157  }
12158};
12159
12160exports.ixElements = ixElements;
12161
12162function createElementState(state, ref, refType, elementId, actionItem) {
12163  var refId = refType === PLAIN_OBJECT ? (0, _timm.getIn)(actionItem, ['config', 'target', 'objectId']) : null;
12164  return (0, _timm.mergeIn)(state, [elementId], {
12165    id: elementId,
12166    ref: ref,
12167    refId: refId,
12168    refType: refType
12169  });
12170}
12171
12172function mergeActionState(state, elementId, actionTypeId, actionState, // FIXME: weak type is used
12173actionItem) {
12174  var units = pickUnits(actionItem);
12175  var mergePath = [elementId, refState, actionTypeId];
12176  return (0, _timm.mergeIn)(state, mergePath, actionState, units);
12177}
12178
12179var valueUnitPairs = [[CONFIG_X_VALUE, CONFIG_X_UNIT], [CONFIG_Y_VALUE, CONFIG_Y_UNIT], [CONFIG_Z_VALUE, CONFIG_Z_UNIT], [CONFIG_VALUE, CONFIG_UNIT]]; // FIXME: weak type is used
12180// eslint-disable-next-line flowtype/no-weak-types
12181
12182function pickUnits(actionItem) {
12183  var config = actionItem.config;
12184  return valueUnitPairs.reduce(function (result, pair) {
12185    var valueKey = pair[0];
12186    var unitKey = pair[1];
12187    var configValue = config[valueKey];
12188    var configUnit = config[unitKey];
12189
12190    if (configValue != null && configUnit != null) {
12191      result[unitKey] = configUnit;
12192    }
12193
12194    return result;
12195  }, {});
12196}
12197
12198/***/ }),
12199/* 247 */
12200/***/ (function(module, exports, __webpack_require__) {
12201
12202"use strict";
12203
12204
12205Object.defineProperty(exports, "__esModule", {
12206  value: true
12207});
12208exports.clearPlugin = exports.renderPlugin = exports.createPluginInstance = exports.getPluginDestination = exports.getPluginOrigin = exports.getPluginDuration = exports.getPluginConfig = void 0;
12209/* eslint-env browser */
12210// $FlowFixMe
12211
12212var getPluginConfig = function getPluginConfig(actionItemConfig) {
12213  return actionItemConfig.value;
12214}; // $FlowFixMe
12215
12216
12217exports.getPluginConfig = getPluginConfig;
12218
12219var getPluginDuration = function getPluginDuration(element, actionItem) {
12220  if (actionItem.config.duration !== 'auto') {
12221    return null;
12222  }
12223
12224  var duration = parseFloat(element.getAttribute('data-duration'));
12225
12226  if (duration > 0) {
12227    return duration * 1000;
12228  }
12229
12230  return parseFloat(element.getAttribute('data-default-duration')) * 1000;
12231}; // $FlowFixMe
12232
12233
12234exports.getPluginDuration = getPluginDuration;
12235
12236var getPluginOrigin = function getPluginOrigin(refState) {
12237  return refState || {
12238    value: 0
12239  };
12240}; // $FlowFixMe
12241
12242
12243exports.getPluginOrigin = getPluginOrigin;
12244
12245var getPluginDestination = function getPluginDestination(actionItemConfig) {
12246  return {
12247    value: actionItemConfig.value
12248  };
12249}; // $FlowFixMe
12250
12251
12252exports.getPluginDestination = getPluginDestination;
12253
12254var createPluginInstance = function createPluginInstance(element) {
12255  var instance = window.Webflow.require('lottie').createInstance(element);
12256
12257  instance.stop();
12258  instance.setSubframe(true);
12259  return instance;
12260}; // $FlowFixMe
12261
12262
12263exports.createPluginInstance = createPluginInstance;
12264
12265var renderPlugin = function renderPlugin(pluginInstance, refState, actionItem) {
12266  if (!pluginInstance) {
12267    return;
12268  }
12269
12270  var percent = refState[actionItem.actionTypeId].value / 100;
12271  pluginInstance.goToFrame(pluginInstance.frames * percent);
12272}; // $FlowFixMe
12273
12274
12275exports.renderPlugin = renderPlugin;
12276
12277var clearPlugin = function clearPlugin(element) {
12278  var instance = window.Webflow.require('lottie').createInstance(element);
12279
12280  instance.stop();
12281};
12282
12283exports.clearPlugin = clearPlugin;
12284
12285/***/ }),
12286/* 248 */
12287/***/ (function(module, exports, __webpack_require__) {
12288
12289"use strict";
12290
12291
12292var _interopRequireDefault2 = __webpack_require__(0);
12293
12294var _typeof2 = _interopRequireDefault2(__webpack_require__(21));
12295
12296var _defineProperty2 = _interopRequireDefault2(__webpack_require__(27));
12297
12298var _Object$freeze, _Object$freeze2, _transformDefaults;
12299
12300var _interopRequireDefault = __webpack_require__(0);
12301
12302Object.defineProperty(exports, "__esModule", {
12303  value: true
12304});
12305exports.getInstanceId = getInstanceId;
12306exports.getElementId = getElementId;
12307exports.reifyState = reifyState;
12308exports.observeStore = observeStore;
12309exports.getAffectedElements = getAffectedElements;
12310exports.getComputedStyle = getComputedStyle;
12311exports.getInstanceOrigin = getInstanceOrigin;
12312exports.getDestinationValues = getDestinationValues;
12313exports.getRenderType = getRenderType;
12314exports.getStyleProp = getStyleProp;
12315exports.renderHTMLElement = renderHTMLElement;
12316exports.clearAllStyles = clearAllStyles;
12317exports.cleanupHTMLElement = cleanupHTMLElement;
12318exports.getMaxDurationItemIndex = getMaxDurationItemIndex;
12319exports.getActionListProgress = getActionListProgress;
12320exports.reduceListToGroup = reduceListToGroup;
12321exports.shouldNamespaceEventParameter = shouldNamespaceEventParameter;
12322exports.getNamespacedParameterId = getNamespacedParameterId;
12323exports.shouldAllowMediaQuery = shouldAllowMediaQuery;
12324exports.mediaQueriesEqual = mediaQueriesEqual;
12325exports.stringifyTarget = stringifyTarget;
12326exports.getItemConfigByKey = void 0;
12327
12328var _defaultTo = _interopRequireDefault(__webpack_require__(249));
12329
12330var _reduce = _interopRequireDefault(__webpack_require__(250));
12331
12332var _findLast = _interopRequireDefault(__webpack_require__(256));
12333
12334var _get = _interopRequireDefault(__webpack_require__(35));
12335
12336var _timm = __webpack_require__(18);
12337
12338var _shallowEqual = _interopRequireDefault(__webpack_require__(113));
12339
12340var _constants = __webpack_require__(2);
12341
12342var _IX2EasingUtils = __webpack_require__(108);
12343
12344var _IX2VanillaPlugins = __webpack_require__(110);
12345
12346var _IX2BrowserSupport = __webpack_require__(45);
12347/* eslint-env browser */
12348
12349
12350var _constants$IX2EngineC = _constants.IX2EngineConstants,
12351    BACKGROUND = _constants$IX2EngineC.BACKGROUND,
12352    TRANSFORM = _constants$IX2EngineC.TRANSFORM,
12353    TRANSLATE_3D = _constants$IX2EngineC.TRANSLATE_3D,
12354    SCALE_3D = _constants$IX2EngineC.SCALE_3D,
12355    ROTATE_X = _constants$IX2EngineC.ROTATE_X,
12356    ROTATE_Y = _constants$IX2EngineC.ROTATE_Y,
12357    ROTATE_Z = _constants$IX2EngineC.ROTATE_Z,
12358    SKEW = _constants$IX2EngineC.SKEW,
12359    PRESERVE_3D = _constants$IX2EngineC.PRESERVE_3D,
12360    FLEX = _constants$IX2EngineC.FLEX,
12361    OPACITY = _constants$IX2EngineC.OPACITY,
12362    FILTER = _constants$IX2EngineC.FILTER,
12363    WIDTH = _constants$IX2EngineC.WIDTH,
12364    HEIGHT = _constants$IX2EngineC.HEIGHT,
12365    BACKGROUND_COLOR = _constants$IX2EngineC.BACKGROUND_COLOR,
12366    BORDER_COLOR = _constants$IX2EngineC.BORDER_COLOR,
12367    COLOR = _constants$IX2EngineC.COLOR,
12368    CHILDREN = _constants$IX2EngineC.CHILDREN,
12369    IMMEDIATE_CHILDREN = _constants$IX2EngineC.IMMEDIATE_CHILDREN,
12370    SIBLINGS = _constants$IX2EngineC.SIBLINGS,
12371    PARENT = _constants$IX2EngineC.PARENT,
12372    DISPLAY = _constants$IX2EngineC.DISPLAY,
12373    WILL_CHANGE = _constants$IX2EngineC.WILL_CHANGE,
12374    AUTO = _constants$IX2EngineC.AUTO,
12375    COMMA_DELIMITER = _constants$IX2EngineC.COMMA_DELIMITER,
12376    COLON_DELIMITER = _constants$IX2EngineC.COLON_DELIMITER,
12377    BAR_DELIMITER = _constants$IX2EngineC.BAR_DELIMITER,
12378    RENDER_TRANSFORM = _constants$IX2EngineC.RENDER_TRANSFORM,
12379    RENDER_GENERAL = _constants$IX2EngineC.RENDER_GENERAL,
12380    RENDER_STYLE = _constants$IX2EngineC.RENDER_STYLE,
12381    RENDER_PLUGIN = _constants$IX2EngineC.RENDER_PLUGIN;
12382var _constants$ActionType = _constants.ActionTypeConsts,
12383    TRANSFORM_MOVE = _constants$ActionType.TRANSFORM_MOVE,
12384    TRANSFORM_SCALE = _constants$ActionType.TRANSFORM_SCALE,
12385    TRANSFORM_ROTATE = _constants$ActionType.TRANSFORM_ROTATE,
12386    TRANSFORM_SKEW = _constants$ActionType.TRANSFORM_SKEW,
12387    STYLE_OPACITY = _constants$ActionType.STYLE_OPACITY,
12388    STYLE_FILTER = _constants$ActionType.STYLE_FILTER,
12389    STYLE_SIZE = _constants$ActionType.STYLE_SIZE,
12390    STYLE_BACKGROUND_COLOR = _constants$ActionType.STYLE_BACKGROUND_COLOR,
12391    STYLE_BORDER = _constants$ActionType.STYLE_BORDER,
12392    STYLE_TEXT_COLOR = _constants$ActionType.STYLE_TEXT_COLOR,
12393    GENERAL_DISPLAY = _constants$ActionType.GENERAL_DISPLAY;
12394var OBJECT_VALUE = 'OBJECT_VALUE';
12395
12396var trim = function trim(v) {
12397  return v.trim();
12398};
12399
12400var colorStyleProps = Object.freeze((_Object$freeze = {}, (0, _defineProperty2["default"])(_Object$freeze, STYLE_BACKGROUND_COLOR, BACKGROUND_COLOR), (0, _defineProperty2["default"])(_Object$freeze, STYLE_BORDER, BORDER_COLOR), (0, _defineProperty2["default"])(_Object$freeze, STYLE_TEXT_COLOR, COLOR), _Object$freeze));
12401var willChangeProps = Object.freeze((_Object$freeze2 = {}, (0, _defineProperty2["default"])(_Object$freeze2, _IX2BrowserSupport.TRANSFORM_PREFIXED, TRANSFORM), (0, _defineProperty2["default"])(_Object$freeze2, BACKGROUND_COLOR, BACKGROUND), (0, _defineProperty2["default"])(_Object$freeze2, OPACITY, OPACITY), (0, _defineProperty2["default"])(_Object$freeze2, FILTER, FILTER), (0, _defineProperty2["default"])(_Object$freeze2, WIDTH, WIDTH), (0, _defineProperty2["default"])(_Object$freeze2, HEIGHT, HEIGHT), _Object$freeze2));
12402var objectCache = {};
12403var instanceCount = 1;
12404
12405function getInstanceId() {
12406  return 'i' + instanceCount++;
12407}
12408
12409var elementCount = 1; // $FlowFixMe
12410
12411function getElementId(ixElements, ref) {
12412  // TODO: optimize element lookup
12413  for (var key in ixElements) {
12414    var ixEl = ixElements[key];
12415
12416    if (ixEl && ixEl.ref === ref) {
12417      return ixEl.id;
12418    }
12419  }
12420
12421  return 'e' + elementCount++;
12422} // $FlowFixMe
12423
12424
12425function reifyState() {
12426  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
12427      events = _ref.events,
12428      actionLists = _ref.actionLists,
12429      site = _ref.site;
12430
12431  var eventTypeMap = (0, _reduce["default"])(events, function (result, event) {
12432    var eventTypeId = event.eventTypeId;
12433
12434    if (!result[eventTypeId]) {
12435      result[eventTypeId] = {};
12436    }
12437
12438    result[eventTypeId][event.id] = event;
12439    return result;
12440  }, {});
12441  var mediaQueries = site && site.mediaQueries;
12442  var mediaQueryKeys = [];
12443
12444  if (mediaQueries) {
12445    mediaQueryKeys = mediaQueries.map(function (mq) {
12446      return mq.key;
12447    });
12448  } else {
12449    mediaQueries = [];
12450    console.warn("IX2 missing mediaQueries in site data");
12451  }
12452
12453  return {
12454    ixData: {
12455      events: events,
12456      actionLists: actionLists,
12457      eventTypeMap: eventTypeMap,
12458      mediaQueries: mediaQueries,
12459      mediaQueryKeys: mediaQueryKeys
12460    }
12461  };
12462}
12463
12464var strictEqual = function strictEqual(a, b) {
12465  return a === b;
12466}; // $FlowFixMe
12467
12468
12469function observeStore(_ref2) {
12470  var store = _ref2.store,
12471      select = _ref2.select,
12472      onChange = _ref2.onChange,
12473      _ref2$comparator = _ref2.comparator,
12474      comparator = _ref2$comparator === void 0 ? strictEqual : _ref2$comparator;
12475  var getState = store.getState,
12476      subscribe = store.subscribe;
12477  var unsubscribe = subscribe(handleChange);
12478  var currentState = select(getState());
12479
12480  function handleChange() {
12481    var nextState = select(getState());
12482
12483    if (nextState == null) {
12484      unsubscribe();
12485      return;
12486    }
12487
12488    if (!comparator(nextState, currentState)) {
12489      currentState = nextState;
12490      onChange(currentState, store);
12491    }
12492  }
12493
12494  return unsubscribe;
12495}
12496
12497function normalizeTarget(target) {
12498  var type = (0, _typeof2["default"])(target);
12499
12500  if (type === 'string') {
12501    return {
12502      id: target
12503    };
12504  } else if (target != null && type === 'object') {
12505    var id = target.id,
12506        objectId = target.objectId,
12507        selector = target.selector,
12508        selectorGuids = target.selectorGuids,
12509        appliesTo = target.appliesTo,
12510        useEventTarget = target.useEventTarget;
12511    return {
12512      id: id,
12513      objectId: objectId,
12514      selector: selector,
12515      selectorGuids: selectorGuids,
12516      appliesTo: appliesTo,
12517      useEventTarget: useEventTarget
12518    };
12519  }
12520
12521  return {};
12522} // $FlowFixMe
12523
12524
12525function getAffectedElements(_ref3) {
12526  var config = _ref3.config,
12527      event = _ref3.event,
12528      eventTarget = _ref3.eventTarget,
12529      elementRoot = _ref3.elementRoot,
12530      elementApi = _ref3.elementApi;
12531
12532  if (!elementApi) {
12533    throw new Error('IX2 missing elementApi');
12534  }
12535
12536  var getValidDocument = elementApi.getValidDocument,
12537      getQuerySelector = elementApi.getQuerySelector,
12538      queryDocument = elementApi.queryDocument,
12539      getChildElements = elementApi.getChildElements,
12540      getSiblingElements = elementApi.getSiblingElements,
12541      matchSelector = elementApi.matchSelector,
12542      elementContains = elementApi.elementContains,
12543      isSiblingNode = elementApi.isSiblingNode;
12544  var target = config.target;
12545
12546  if (!target) {
12547    return [];
12548  }
12549
12550  var _normalizeTarget = normalizeTarget(target),
12551      id = _normalizeTarget.id,
12552      objectId = _normalizeTarget.objectId,
12553      selector = _normalizeTarget.selector,
12554      selectorGuids = _normalizeTarget.selectorGuids,
12555      appliesTo = _normalizeTarget.appliesTo,
12556      useEventTarget = _normalizeTarget.useEventTarget;
12557
12558  if (objectId) {
12559    var ref = objectCache[objectId] || (objectCache[objectId] = {});
12560    return [ref];
12561  }
12562
12563  if (appliesTo === _constants.EventAppliesTo.PAGE) {
12564    var doc = getValidDocument(id);
12565    return doc ? [doc] : [];
12566  }
12567
12568  var overrides = (0, _get["default"])(event, 'action.config.affectedElements', {});
12569  var override = overrides[id || selector] || {};
12570  var validOverride = Boolean(override.id || override.selector);
12571  var limitAffectedElements;
12572  var baseSelector;
12573  var finalSelector;
12574  var eventTargetSelector = event && getQuerySelector(normalizeTarget(event.target));
12575
12576  if (validOverride) {
12577    limitAffectedElements = override.limitAffectedElements;
12578    baseSelector = eventTargetSelector;
12579    finalSelector = getQuerySelector(override);
12580  } else {
12581    // pass in selectorGuids as well for server-side rendering.
12582    baseSelector = finalSelector = getQuerySelector({
12583      id: id,
12584      selector: selector,
12585      selectorGuids: selectorGuids
12586    });
12587  }
12588
12589  if (event && useEventTarget) {
12590    // eventTarget is not defined when this function is called in a clear request, so find
12591    // all target elements associated with the event data, and return affected elements.
12592    var eventTargets = eventTarget && (finalSelector || useEventTarget === true) ? [eventTarget] : queryDocument(eventTargetSelector);
12593
12594    if (finalSelector) {
12595      if (useEventTarget === PARENT) {
12596        return queryDocument(finalSelector).filter(function (parentElement) {
12597          return eventTargets.some(function (targetElement) {
12598            return elementContains(parentElement, targetElement);
12599          });
12600        });
12601      }
12602
12603      if (useEventTarget === CHILDREN) {
12604        return queryDocument(finalSelector).filter(function (childElement) {
12605          return eventTargets.some(function (targetElement) {
12606            return elementContains(targetElement, childElement);
12607          });
12608        });
12609      }
12610
12611      if (useEventTarget === SIBLINGS) {
12612        return queryDocument(finalSelector).filter(function (siblingElement) {
12613          return eventTargets.some(function (targetElement) {
12614            return isSiblingNode(targetElement, siblingElement);
12615          });
12616        });
12617      }
12618    }
12619
12620    return eventTargets;
12621  }
12622
12623  if (baseSelector == null || finalSelector == null) {
12624    return [];
12625  }
12626
12627  if (_IX2BrowserSupport.IS_BROWSER_ENV && elementRoot) {
12628    return queryDocument(finalSelector).filter(function (element) {
12629      return elementRoot.contains(element);
12630    });
12631  }
12632
12633  if (limitAffectedElements === CHILDREN) {
12634    return queryDocument(baseSelector, finalSelector);
12635  } else if (limitAffectedElements === IMMEDIATE_CHILDREN) {
12636    return getChildElements(queryDocument(baseSelector)).filter(matchSelector(finalSelector));
12637  } else if (limitAffectedElements === SIBLINGS) {
12638    return getSiblingElements(queryDocument(baseSelector)).filter(matchSelector(finalSelector));
12639  } else {
12640    return queryDocument(finalSelector);
12641  }
12642} // $FlowFixMe
12643
12644
12645function getComputedStyle(_ref4) {
12646  var element = _ref4.element,
12647      actionItem = _ref4.actionItem;
12648
12649  if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
12650    return {};
12651  }
12652
12653  var actionTypeId = actionItem.actionTypeId;
12654
12655  switch (actionTypeId) {
12656    case STYLE_SIZE:
12657    case STYLE_BACKGROUND_COLOR:
12658    case STYLE_BORDER:
12659    case STYLE_TEXT_COLOR:
12660    case GENERAL_DISPLAY:
12661      return window.getComputedStyle(element);
12662
12663    default:
12664      return {};
12665  }
12666}
12667
12668var pxValueRegex = /px/;
12669
12670var getFilterDefaults = function getFilterDefaults(actionState, filters) {
12671  return filters.reduce(function (result, filter) {
12672    if (result[filter.type] == null) {
12673      result[filter.type] = filterDefaults[filter.type];
12674    }
12675
12676    return result;
12677  }, actionState || {});
12678};
12679
12680function getInstanceOrigin( // $FlowFixMe
12681element) {
12682  var refState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
12683  var computedStyle = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
12684  var // $FlowFixMe
12685  actionItem = arguments.length > 3 ? arguments[3] : undefined;
12686  var // $FlowFixMe
12687  elementApi = arguments.length > 4 ? arguments[4] : undefined;
12688  var getStyle = elementApi.getStyle;
12689  var actionTypeId = actionItem.actionTypeId,
12690      config = actionItem.config;
12691
12692  if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
12693    // $FlowFixMe
12694    return (0, _IX2VanillaPlugins.getPluginOrigin)(actionTypeId)(refState[actionTypeId]);
12695  }
12696
12697  switch (actionTypeId) {
12698    case TRANSFORM_MOVE:
12699    case TRANSFORM_SCALE:
12700    case TRANSFORM_ROTATE:
12701    case TRANSFORM_SKEW:
12702      return refState[actionTypeId] || transformDefaults[actionTypeId];
12703
12704    case STYLE_FILTER:
12705      return getFilterDefaults(refState[actionTypeId], actionItem.config.filters);
12706
12707    case STYLE_OPACITY:
12708      return {
12709        value: (0, _defaultTo["default"])(parseFloat(getStyle(element, OPACITY)), 1.0)
12710      };
12711
12712    case STYLE_SIZE:
12713      {
12714        var inlineWidth = getStyle(element, WIDTH);
12715        var inlineHeight = getStyle(element, HEIGHT);
12716        var widthValue;
12717        var heightValue; // When destination unit is 'AUTO', ensure origin values are in px
12718
12719        if (config.widthUnit === AUTO) {
12720          widthValue = pxValueRegex.test(inlineWidth) ? parseFloat(inlineWidth) : parseFloat(computedStyle.width);
12721        } else {
12722          widthValue = (0, _defaultTo["default"])(parseFloat(inlineWidth), parseFloat(computedStyle.width));
12723        }
12724
12725        if (config.heightUnit === AUTO) {
12726          heightValue = pxValueRegex.test(inlineHeight) ? parseFloat(inlineHeight) : parseFloat(computedStyle.height);
12727        } else {
12728          heightValue = (0, _defaultTo["default"])(parseFloat(inlineHeight), parseFloat(computedStyle.height));
12729        }
12730
12731        return {
12732          widthValue: widthValue,
12733          heightValue: heightValue
12734        };
12735      }
12736
12737    case STYLE_BACKGROUND_COLOR:
12738    case STYLE_BORDER:
12739    case STYLE_TEXT_COLOR:
12740      return parseColor({
12741        element: element,
12742        actionTypeId: actionTypeId,
12743        computedStyle: computedStyle,
12744        getStyle: getStyle
12745      });
12746
12747    case GENERAL_DISPLAY:
12748      return {
12749        value: (0, _defaultTo["default"])(getStyle(element, DISPLAY), computedStyle.display)
12750      };
12751
12752    case OBJECT_VALUE:
12753      return refState[actionTypeId] || {
12754        value: 0
12755      };
12756
12757    default:
12758      return;
12759  }
12760}
12761
12762var reduceFilters = function reduceFilters(result, filter) {
12763  if (filter) {
12764    result[filter.type] = filter.value || 0;
12765  }
12766
12767  return result;
12768}; // $FlowFixMe
12769
12770
12771var getItemConfigByKey = function getItemConfigByKey(actionTypeId, key, config) {
12772  if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
12773    // $FlowFixMe
12774    return (0, _IX2VanillaPlugins.getPluginConfig)(actionTypeId)(config, key);
12775  }
12776
12777  switch (actionTypeId) {
12778    case STYLE_FILTER:
12779      {
12780        var filter = (0, _findLast["default"])(config.filters, function (_ref5) {
12781          var type = _ref5.type;
12782          return type === key;
12783        });
12784        return filter ? filter.value : 0;
12785      }
12786
12787    default:
12788      return config[key];
12789  }
12790}; // $FlowFixMe
12791
12792
12793exports.getItemConfigByKey = getItemConfigByKey;
12794
12795function getDestinationValues(_ref6) {
12796  var element = _ref6.element,
12797      actionItem = _ref6.actionItem,
12798      elementApi = _ref6.elementApi;
12799  var actionTypeId = actionItem.actionTypeId;
12800
12801  if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
12802    // $FlowFixMe
12803    return (0, _IX2VanillaPlugins.getPluginDestination)(actionTypeId)(actionItem.config);
12804  }
12805
12806  switch (actionTypeId) {
12807    case TRANSFORM_MOVE:
12808    case TRANSFORM_SCALE:
12809    case TRANSFORM_ROTATE:
12810    case TRANSFORM_SKEW:
12811      {
12812        var _actionItem$config = actionItem.config,
12813            xValue = _actionItem$config.xValue,
12814            yValue = _actionItem$config.yValue,
12815            zValue = _actionItem$config.zValue;
12816        return {
12817          xValue: xValue,
12818          yValue: yValue,
12819          zValue: zValue
12820        };
12821      }
12822
12823    case STYLE_SIZE:
12824      {
12825        var getStyle = elementApi.getStyle,
12826            setStyle = elementApi.setStyle,
12827            getProperty = elementApi.getProperty;
12828        var _actionItem$config2 = actionItem.config,
12829            widthUnit = _actionItem$config2.widthUnit,
12830            heightUnit = _actionItem$config2.heightUnit;
12831        var _actionItem$config3 = actionItem.config,
12832            widthValue = _actionItem$config3.widthValue,
12833            heightValue = _actionItem$config3.heightValue;
12834
12835        if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
12836          return {
12837            widthValue: widthValue,
12838            heightValue: heightValue
12839          };
12840        }
12841
12842        if (widthUnit === AUTO) {
12843          var temp = getStyle(element, WIDTH);
12844          setStyle(element, WIDTH, '');
12845          widthValue = getProperty(element, 'offsetWidth');
12846          setStyle(element, WIDTH, temp);
12847        }
12848
12849        if (heightUnit === AUTO) {
12850          var _temp = getStyle(element, HEIGHT);
12851
12852          setStyle(element, HEIGHT, '');
12853          heightValue = getProperty(element, 'offsetHeight');
12854          setStyle(element, HEIGHT, _temp);
12855        }
12856
12857        return {
12858          widthValue: widthValue,
12859          heightValue: heightValue
12860        };
12861      }
12862
12863    case STYLE_BACKGROUND_COLOR:
12864    case STYLE_BORDER:
12865    case STYLE_TEXT_COLOR:
12866      {
12867        var _actionItem$config4 = actionItem.config,
12868            rValue = _actionItem$config4.rValue,
12869            gValue = _actionItem$config4.gValue,
12870            bValue = _actionItem$config4.bValue,
12871            aValue = _actionItem$config4.aValue;
12872        return {
12873          rValue: rValue,
12874          gValue: gValue,
12875          bValue: bValue,
12876          aValue: aValue
12877        };
12878      }
12879
12880    case STYLE_FILTER:
12881      {
12882        return actionItem.config.filters.reduce(reduceFilters, {});
12883      }
12884
12885    default:
12886      {
12887        var value = actionItem.config.value;
12888        return {
12889          value: value
12890        };
12891      }
12892  }
12893} // $FlowFixMe
12894
12895
12896function getRenderType(actionTypeId) {
12897  if (/^TRANSFORM_/.test(actionTypeId)) {
12898    return RENDER_TRANSFORM;
12899  }
12900
12901  if (/^STYLE_/.test(actionTypeId)) {
12902    return RENDER_STYLE;
12903  }
12904
12905  if (/^GENERAL_/.test(actionTypeId)) {
12906    return RENDER_GENERAL;
12907  }
12908
12909  if (/^PLUGIN_/.test(actionTypeId)) {
12910    return RENDER_PLUGIN;
12911  }
12912} // $FlowFixMe
12913
12914
12915function getStyleProp(renderType, actionTypeId) {
12916  return renderType === RENDER_STYLE ? actionTypeId.replace('STYLE_', '').toLowerCase() : null;
12917}
12918
12919function renderHTMLElement( // $FlowFixMe
12920element, // $FlowFixMe
12921refState, // $FlowFixMe
12922actionState, // $FlowFixMe
12923eventId, // $FlowFixMe
12924actionItem, // $FlowFixMe
12925styleProp, // $FlowFixMe
12926elementApi, // $FlowFixMe
12927renderType, // $FlowFixMe
12928pluginInstance) {
12929  switch (renderType) {
12930    case RENDER_TRANSFORM:
12931      {
12932        return renderTransform(element, refState, actionState, actionItem, elementApi);
12933      }
12934
12935    case RENDER_STYLE:
12936      {
12937        return renderStyle(element, refState, actionState, actionItem, styleProp, elementApi);
12938      }
12939
12940    case RENDER_GENERAL:
12941      {
12942        return renderGeneral(element, actionItem, elementApi);
12943      }
12944
12945    case RENDER_PLUGIN:
12946      {
12947        var actionTypeId = actionItem.actionTypeId;
12948
12949        if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
12950          // $FlowFixMe
12951          return (0, _IX2VanillaPlugins.renderPlugin)(actionTypeId)(pluginInstance, refState, actionItem);
12952        }
12953      }
12954  }
12955}
12956
12957var transformDefaults = (_transformDefaults = {}, (0, _defineProperty2["default"])(_transformDefaults, TRANSFORM_MOVE, Object.freeze({
12958  xValue: 0,
12959  yValue: 0,
12960  zValue: 0
12961})), (0, _defineProperty2["default"])(_transformDefaults, TRANSFORM_SCALE, Object.freeze({
12962  xValue: 1,
12963  yValue: 1,
12964  zValue: 1
12965})), (0, _defineProperty2["default"])(_transformDefaults, TRANSFORM_ROTATE, Object.freeze({
12966  xValue: 0,
12967  yValue: 0,
12968  zValue: 0
12969})), (0, _defineProperty2["default"])(_transformDefaults, TRANSFORM_SKEW, Object.freeze({
12970  xValue: 0,
12971  yValue: 0
12972})), _transformDefaults);
12973var filterDefaults = Object.freeze({
12974  blur: 0,
12975  'hue-rotate': 0,
12976  invert: 0,
12977  grayscale: 0,
12978  saturate: 100,
12979  sepia: 0,
12980  contrast: 100,
12981  brightness: 100
12982});
12983
12984var getFilterUnit = function getFilterUnit(filterType, actionItemConfig) {
12985  var filter = (0, _findLast["default"])(actionItemConfig.filters, function (_ref7) {
12986    var type = _ref7.type;
12987    return type === filterType;
12988  });
12989
12990  if (filter && filter.unit) {
12991    return filter.unit;
12992  }
12993
12994  switch (filterType) {
12995    case 'blur':
12996      return 'px';
12997
12998    case 'hue-rotate':
12999      return 'deg';
13000
13001    default:
13002      return '%';
13003  }
13004};
13005
13006var transformKeys = Object.keys(transformDefaults);
13007
13008function renderTransform(element, refState, actionState, actionItem, elementApi) {
13009  var newTransform = transformKeys.map(function (actionTypeId) {
13010    var defaults = transformDefaults[actionTypeId];
13011
13012    var _ref8 = refState[actionTypeId] || {},
13013        _ref8$xValue = _ref8.xValue,
13014        xValue = _ref8$xValue === void 0 ? defaults.xValue : _ref8$xValue,
13015        _ref8$yValue = _ref8.yValue,
13016        yValue = _ref8$yValue === void 0 ? defaults.yValue : _ref8$yValue,
13017        _ref8$zValue = _ref8.zValue,
13018        zValue = _ref8$zValue === void 0 ? defaults.zValue : _ref8$zValue,
13019        _ref8$xUnit = _ref8.xUnit,
13020        xUnit = _ref8$xUnit === void 0 ? '' : _ref8$xUnit,
13021        _ref8$yUnit = _ref8.yUnit,
13022        yUnit = _ref8$yUnit === void 0 ? '' : _ref8$yUnit,
13023        _ref8$zUnit = _ref8.zUnit,
13024        zUnit = _ref8$zUnit === void 0 ? '' : _ref8$zUnit;
13025
13026    switch (actionTypeId) {
13027      case TRANSFORM_MOVE:
13028        return "".concat(TRANSLATE_3D, "(").concat(xValue).concat(xUnit, ", ").concat(yValue).concat(yUnit, ", ").concat(zValue).concat(zUnit, ")");
13029
13030      case TRANSFORM_SCALE:
13031        return "".concat(SCALE_3D, "(").concat(xValue).concat(xUnit, ", ").concat(yValue).concat(yUnit, ", ").concat(zValue).concat(zUnit, ")");
13032
13033      case TRANSFORM_ROTATE:
13034        return "".concat(ROTATE_X, "(").concat(xValue).concat(xUnit, ") ").concat(ROTATE_Y, "(").concat(yValue).concat(yUnit, ") ").concat(ROTATE_Z, "(").concat(zValue).concat(zUnit, ")");
13035
13036      case TRANSFORM_SKEW:
13037        return "".concat(SKEW, "(").concat(xValue).concat(xUnit, ", ").concat(yValue).concat(yUnit, ")");
13038
13039      default:
13040        return '';
13041    }
13042  }).join(' ');
13043  var setStyle = elementApi.setStyle;
13044  addWillChange(element, _IX2BrowserSupport.TRANSFORM_PREFIXED, elementApi);
13045  setStyle(element, _IX2BrowserSupport.TRANSFORM_PREFIXED, newTransform); // Set transform-style: preserve-3d
13046
13047  if (hasDefined3dTransform(actionItem, actionState)) {
13048    setStyle(element, _IX2BrowserSupport.TRANSFORM_STYLE_PREFIXED, PRESERVE_3D);
13049  }
13050}
13051
13052function renderFilter(element, actionState, actionItemConfig, elementApi) {
13053  var filterValue = (0, _reduce["default"])(actionState, function (result, value, type) {
13054    return "".concat(result, " ").concat(type, "(").concat(value).concat(getFilterUnit(type, actionItemConfig), ")");
13055  }, '');
13056  var setStyle = elementApi.setStyle;
13057  addWillChange(element, FILTER, elementApi);
13058  setStyle(element, FILTER, filterValue);
13059}
13060
13061function hasDefined3dTransform(_ref9, _ref10) {
13062  var actionTypeId = _ref9.actionTypeId;
13063  var xValue = _ref10.xValue,
13064      yValue = _ref10.yValue,
13065      zValue = _ref10.zValue;
13066  // TRANSLATE_Z
13067  return actionTypeId === TRANSFORM_MOVE && zValue !== undefined || // SCALE_Z
13068  actionTypeId === TRANSFORM_SCALE && zValue !== undefined || // ROTATE_X or ROTATE_Y
13069  actionTypeId === TRANSFORM_ROTATE && (xValue !== undefined || yValue !== undefined);
13070}
13071
13072var paramCapture = '\\(([^)]+)\\)';
13073var rgbValidRegex = /^rgb/;
13074var rgbMatchRegex = RegExp("rgba?".concat(paramCapture));
13075
13076function getFirstMatch(regex, value) {
13077  var match = regex.exec(value);
13078  return match ? match[1] : '';
13079}
13080
13081function parseColor(_ref11) {
13082  var element = _ref11.element,
13083      actionTypeId = _ref11.actionTypeId,
13084      computedStyle = _ref11.computedStyle,
13085      getStyle = _ref11.getStyle;
13086  var prop = colorStyleProps[actionTypeId];
13087  var inlineValue = getStyle(element, prop);
13088  var value = rgbValidRegex.test(inlineValue) ? inlineValue : computedStyle[prop];
13089  var matches = getFirstMatch(rgbMatchRegex, value).split(COMMA_DELIMITER);
13090  return {
13091    rValue: (0, _defaultTo["default"])(parseInt(matches[0], 10), 255),
13092    gValue: (0, _defaultTo["default"])(parseInt(matches[1], 10), 255),
13093    bValue: (0, _defaultTo["default"])(parseInt(matches[2], 10), 255),
13094    aValue: (0, _defaultTo["default"])(parseFloat(matches[3]), 1)
13095  };
13096}
13097
13098function renderStyle(element, refState, actionState, actionItem, styleProp, elementApi) {
13099  var setStyle = elementApi.setStyle;
13100  var actionTypeId = actionItem.actionTypeId,
13101      config = actionItem.config;
13102
13103  switch (actionTypeId) {
13104    case STYLE_SIZE:
13105      {
13106        var _actionItem$config5 = actionItem.config,
13107            _actionItem$config5$w = _actionItem$config5.widthUnit,
13108            widthUnit = _actionItem$config5$w === void 0 ? '' : _actionItem$config5$w,
13109            _actionItem$config5$h = _actionItem$config5.heightUnit,
13110            heightUnit = _actionItem$config5$h === void 0 ? '' : _actionItem$config5$h;
13111        var widthValue = actionState.widthValue,
13112            heightValue = actionState.heightValue;
13113
13114        if (widthValue !== undefined) {
13115          if (widthUnit === AUTO) {
13116            widthUnit = 'px';
13117          }
13118
13119          addWillChange(element, WIDTH, elementApi);
13120          setStyle(element, WIDTH, widthValue + widthUnit);
13121        }
13122
13123        if (heightValue !== undefined) {
13124          if (heightUnit === AUTO) {
13125            heightUnit = 'px';
13126          }
13127
13128          addWillChange(element, HEIGHT, elementApi);
13129          setStyle(element, HEIGHT, heightValue + heightUnit);
13130        }
13131
13132        break;
13133      }
13134
13135    case STYLE_FILTER:
13136      {
13137        renderFilter(element, actionState, config, elementApi);
13138        break;
13139      }
13140
13141    case STYLE_BACKGROUND_COLOR:
13142    case STYLE_BORDER:
13143    case STYLE_TEXT_COLOR:
13144      {
13145        var prop = colorStyleProps[actionTypeId];
13146        var rValue = Math.round(actionState.rValue);
13147        var gValue = Math.round(actionState.gValue);
13148        var bValue = Math.round(actionState.bValue);
13149        var aValue = actionState.aValue;
13150        addWillChange(element, prop, elementApi);
13151        setStyle(element, prop, aValue >= 1 ? "rgb(".concat(rValue, ",").concat(gValue, ",").concat(bValue, ")") : "rgba(".concat(rValue, ",").concat(gValue, ",").concat(bValue, ",").concat(aValue, ")"));
13152        break;
13153      }
13154
13155    default:
13156      {
13157        var _config$unit = config.unit,
13158            unit = _config$unit === void 0 ? '' : _config$unit;
13159        addWillChange(element, styleProp, elementApi);
13160        setStyle(element, styleProp, actionState.value + unit);
13161        break;
13162      }
13163  }
13164}
13165
13166function renderGeneral(element, actionItem, elementApi) {
13167  var setStyle = elementApi.setStyle;
13168
13169  switch (actionItem.actionTypeId) {
13170    case GENERAL_DISPLAY:
13171      {
13172        var value = actionItem.config.value;
13173
13174        if (value === FLEX && _IX2BrowserSupport.IS_BROWSER_ENV) {
13175          setStyle(element, DISPLAY, _IX2BrowserSupport.FLEX_PREFIXED);
13176        } else {
13177          setStyle(element, DISPLAY, value);
13178        }
13179
13180        return;
13181      }
13182  }
13183}
13184
13185function addWillChange(element, prop, elementApi) {
13186  if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
13187    return;
13188  } // $FlowFixMe
13189
13190
13191  var validProp = willChangeProps[prop];
13192
13193  if (!validProp) {
13194    return;
13195  }
13196
13197  var getStyle = elementApi.getStyle,
13198      setStyle = elementApi.setStyle;
13199  var value = getStyle(element, WILL_CHANGE);
13200
13201  if (!value) {
13202    setStyle(element, WILL_CHANGE, validProp);
13203    return;
13204  }
13205
13206  var values = value.split(COMMA_DELIMITER).map(trim);
13207
13208  if (values.indexOf(validProp) === -1) {
13209    setStyle(element, WILL_CHANGE, values.concat(validProp).join(COMMA_DELIMITER));
13210  }
13211}
13212
13213function removeWillChange(element, prop, elementApi) {
13214  if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
13215    return;
13216  } // $FlowFixMe
13217
13218
13219  var validProp = willChangeProps[prop];
13220
13221  if (!validProp) {
13222    return;
13223  }
13224
13225  var getStyle = elementApi.getStyle,
13226      setStyle = elementApi.setStyle;
13227  var value = getStyle(element, WILL_CHANGE);
13228
13229  if (!value || value.indexOf(validProp) === -1) {
13230    return;
13231  }
13232
13233  setStyle(element, WILL_CHANGE, value.split(COMMA_DELIMITER).map(trim).filter(function (v) {
13234    return v !== validProp;
13235  }).join(COMMA_DELIMITER));
13236} // $FlowFixMe
13237
13238
13239function clearAllStyles(_ref12) {
13240  var store = _ref12.store,
13241      elementApi = _ref12.elementApi;
13242
13243  var _store$getState = store.getState(),
13244      ixData = _store$getState.ixData;
13245
13246  var _ixData$events = ixData.events,
13247      events = _ixData$events === void 0 ? {} : _ixData$events,
13248      _ixData$actionLists = ixData.actionLists,
13249      actionLists = _ixData$actionLists === void 0 ? {} : _ixData$actionLists;
13250  Object.keys(events).forEach(function (eventId) {
13251    var event = events[eventId];
13252    var config = event.action.config;
13253    var actionListId = config.actionListId;
13254    var actionList = actionLists[actionListId];
13255
13256    if (actionList) {
13257      clearActionListStyles({
13258        actionList: actionList,
13259        event: event,
13260        elementApi: elementApi
13261      });
13262    }
13263  });
13264  Object.keys(actionLists).forEach(function (actionListId) {
13265    clearActionListStyles({
13266      actionList: actionLists[actionListId],
13267      elementApi: elementApi
13268    });
13269  });
13270} // $FlowFixMe
13271
13272
13273function clearActionListStyles(_ref13) {
13274  var _ref13$actionList = _ref13.actionList,
13275      actionList = _ref13$actionList === void 0 ? {} : _ref13$actionList,
13276      event = _ref13.event,
13277      elementApi = _ref13.elementApi;
13278  var actionItemGroups = actionList.actionItemGroups,
13279      continuousParameterGroups = actionList.continuousParameterGroups;
13280  actionItemGroups && actionItemGroups.forEach(function (actionGroup) {
13281    clearActionGroupStyles({
13282      actionGroup: actionGroup,
13283      event: event,
13284      elementApi: elementApi
13285    });
13286  });
13287  continuousParameterGroups && continuousParameterGroups.forEach(function (paramGroup) {
13288    var continuousActionGroups = paramGroup.continuousActionGroups;
13289    continuousActionGroups.forEach(function (actionGroup) {
13290      clearActionGroupStyles({
13291        actionGroup: actionGroup,
13292        event: event,
13293        elementApi: elementApi
13294      });
13295    });
13296  });
13297}
13298
13299function clearActionGroupStyles(_ref14) {
13300  var actionGroup = _ref14.actionGroup,
13301      event = _ref14.event,
13302      elementApi = _ref14.elementApi;
13303  var actionItems = actionGroup.actionItems;
13304  actionItems.forEach(function (_ref15) {
13305    var actionTypeId = _ref15.actionTypeId,
13306        config = _ref15.config;
13307    var clearElement;
13308
13309    if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
13310      clearElement = (0, _IX2VanillaPlugins.clearPlugin)(actionTypeId);
13311    } else {
13312      clearElement = processElementByType({
13313        effect: clearStyleProp,
13314        actionTypeId: actionTypeId,
13315        elementApi: elementApi
13316      });
13317    }
13318
13319    getAffectedElements({
13320      config: config,
13321      event: event,
13322      elementApi: elementApi
13323    }
13323).forEach(clearElement);
13324  });
13325} // $FlowFixMe
13326
13327
13328function cleanupHTMLElement(element, actionItem, elementApi) {
13329  var setStyle = elementApi.setStyle,
13330      getStyle = elementApi.getStyle;
13331  var actionTypeId = actionItem.actionTypeId;
13332
13333  if (actionTypeId === STYLE_SIZE) {
13334    var config = actionItem.config;
13335
13336    if (config.widthUnit === AUTO) {
13337      setStyle(element, WIDTH, '');
13338    }
13339
13340    if (config.heightUnit === AUTO) {
13341      setStyle(element, HEIGHT, '');
13342    }
13343  }
13344
13345  if (getStyle(element, WILL_CHANGE)) {
13346    processElementByType({
13347      effect: removeWillChange,
13348      actionTypeId: actionTypeId,
13349      elementApi: elementApi
13350    })(element);
13351  }
13352}
13353
13354var processElementByType = function processElementByType(_ref16) {
13355  var effect = _ref16.effect,
13356      actionTypeId = _ref16.actionTypeId,
13357      elementApi = _ref16.elementApi;
13358  return function (element) {
13359    switch (actionTypeId) {
13360      case TRANSFORM_MOVE:
13361      case TRANSFORM_SCALE:
13362      case TRANSFORM_ROTATE:
13363      case TRANSFORM_SKEW:
13364        effect(element, _IX2BrowserSupport.TRANSFORM_PREFIXED, elementApi);
13365        break;
13366
13367      case STYLE_FILTER:
13368        effect(element, FILTER, elementApi);
13369        break;
13370
13371      case STYLE_OPACITY:
13372        effect(element, OPACITY, elementApi);
13373        break;
13374
13375      case STYLE_SIZE:
13376        effect(element, WIDTH, elementApi);
13377        effect(element, HEIGHT, elementApi);
13378        break;
13379
13380      case STYLE_BACKGROUND_COLOR:
13381      case STYLE_BORDER:
13382      case STYLE_TEXT_COLOR:
13383        effect(element, colorStyleProps[actionTypeId], elementApi);
13384        break;
13385
13386      case GENERAL_DISPLAY:
13387        effect(element, DISPLAY, elementApi);
13388        break;
13389    }
13390  };
13391};
13392
13393function clearStyleProp(element, prop, elementApi) {
13394  var setStyle = elementApi.setStyle;
13395  removeWillChange(element, prop, elementApi);
13396  setStyle(element, prop, ''); // Clear transform-style: preserve-3d
13397
13398  if (prop === _IX2BrowserSupport.TRANSFORM_PREFIXED) {
13399    setStyle(element, _IX2BrowserSupport.TRANSFORM_STYLE_PREFIXED, '');
13400  }
13401} // $FlowFixMe
13402
13403
13404function getMaxDurationItemIndex(actionItems) {
13405  var maxDuration = 0;
13406  var resultIndex = 0;
13407  actionItems.forEach(function (actionItem, index) {
13408    var config = actionItem.config;
13409    var total = config.delay + config.duration;
13410
13411    if (total >= maxDuration) {
13412      maxDuration = total;
13413      resultIndex = index;
13414    }
13415  });
13416  return resultIndex;
13417} // $FlowFixMe
13418
13419
13420function getActionListProgress(actionList, instance) {
13421  var actionItemGroups = actionList.actionItemGroups,
13422      useFirstGroupAsInitialState = actionList.useFirstGroupAsInitialState;
13423  var instanceItem = instance.actionItem,
13424      _instance$verboseTime = instance.verboseTimeElapsed,
13425      verboseTimeElapsed = _instance$verboseTime === void 0 ? 0 : _instance$verboseTime;
13426  var totalDuration = 0;
13427  var elapsedDuration = 0;
13428  actionItemGroups.forEach(function (group, index) {
13429    if (useFirstGroupAsInitialState && index === 0) {
13430      return;
13431    }
13432
13433    var actionItems = group.actionItems;
13434    var carrierItem = actionItems[getMaxDurationItemIndex(actionItems)];
13435    var config = carrierItem.config,
13436        actionTypeId = carrierItem.actionTypeId;
13437
13438    if (instanceItem.id === carrierItem.id) {
13439      elapsedDuration = totalDuration + verboseTimeElapsed;
13440    }
13441
13442    var duration = getRenderType(actionTypeId) === RENDER_GENERAL ? 0 : config.duration;
13443    totalDuration += config.delay + duration;
13444  });
13445  return totalDuration > 0 ? (0, _IX2EasingUtils.optimizeFloat)(elapsedDuration / totalDuration) : 0;
13446} // $FlowFixMe
13447
13448
13449function reduceListToGroup(_ref17) {
13450  var actionList = _ref17.actionList,
13451      actionItemId = _ref17.actionItemId,
13452      rawData = _ref17.rawData;
13453  var actionItemGroups = actionList.actionItemGroups,
13454      continuousParameterGroups = actionList.continuousParameterGroups;
13455  var newActionItems = [];
13456
13457  var takeItemUntilMatch = function takeItemUntilMatch(actionItem) {
13458    newActionItems.push((0, _timm.mergeIn)(actionItem, ['config'], {
13459      delay: 0,
13460      duration: 0
13461    }));
13462    return actionItem.id === actionItemId;
13463  };
13464
13465  actionItemGroups && actionItemGroups.some(function (_ref18) {
13466    var actionItems = _ref18.actionItems;
13467    return actionItems.some(takeItemUntilMatch);
13468  });
13469  continuousParameterGroups && continuousParameterGroups.some(function (paramGroup) {
13470    var continuousActionGroups = paramGroup.continuousActionGroups;
13471    return continuousActionGroups.some(function (_ref19) {
13472      var actionItems = _ref19.actionItems;
13473      return actionItems.some(takeItemUntilMatch);
13474    });
13475  });
13476  return (0, _timm.setIn)(rawData, ['actionLists'], (0, _defineProperty2["default"])({}, actionList.id, {
13477    id: actionList.id,
13478    actionItemGroups: [{
13479      actionItems: newActionItems
13480    }]
13481  }));
13482} // $FlowFixMe
13483
13484
13485function shouldNamespaceEventParameter(eventTypeId, _ref21) {
13486  var basedOn = _ref21.basedOn;
13487  return eventTypeId === _constants.EventTypeConsts.SCROLLING_IN_VIEW && (basedOn === _constants.EventBasedOn.ELEMENT || basedOn == null) || eventTypeId === _constants.EventTypeConsts.MOUSE_MOVE && basedOn === _constants.EventBasedOn.ELEMENT;
13488}
13489
13490function getNamespacedParameterId(eventStateKey, continuousParameterGroupId) {
13491  var namespacedParameterId = eventStateKey + COLON_DELIMITER + continuousParameterGroupId;
13492  return namespacedParameterId;
13493} // $FlowFixMe
13494
13495
13496function shouldAllowMediaQuery(mediaQueries, mediaQueryKey) {
13497  // During design mode, current media query key does not exist
13498  if (mediaQueryKey == null) {
13499    return true;
13500  }
13501
13502  return mediaQueries.indexOf(mediaQueryKey) !== -1;
13503} // $FlowFixMe
13504
13505
13506function mediaQueriesEqual(listA, listB) {
13507  return (0, _shallowEqual["default"])(listA && listA.sort(), listB && listB.sort());
13508} // $FlowFixMe
13509
13510
13511function stringifyTarget(target) {
13512  if (typeof target === 'string') {
13513    return target;
13514  }
13515
13516  var _target$id = target.id,
13517      id = _target$id === void 0 ? '' : _target$id,
13518      _target$selector = target.selector,
13519      selector = _target$selector === void 0 ? '' : _target$selector,
13520      _target$useEventTarge = target.useEventTarget,
13521      useEventTarget = _target$useEventTarge === void 0 ? '' : _target$useEventTarge;
13522  return id + BAR_DELIMITER + selector + BAR_DELIMITER + useEventTarget;
13523}
13524
13525/***/ }),
13526/* 249 */
13527/***/ (function(module, exports) {
13528
13529/**
13530 * Checks `value` to determine whether a default value should be returned in
13531 * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,
13532 * or `undefined`.
13533 *
13534 * @static
13535 * @memberOf _
13536 * @since 4.14.0
13537 * @category Util
13538 * @param {*} value The value to check.
13539 * @param {*} defaultValue The default value.
13540 * @returns {*} Returns the resolved value.
13541 * @example
13542 *
13543 * _.defaultTo(1, 10);
13544 * // => 1
13545 *
13546 * _.defaultTo(undefined, 10);
13547 * // => 10
13548 */
13549function defaultTo(value, defaultValue) {
13550  return (value == null || value !== value) ? defaultValue : value;
13551}
13552
13553module.exports = defaultTo;
13554
13555
13556/***/ }),
13557/* 250 */
13558/***/ (function(module, exports, __webpack_require__) {
13559
13560var arrayReduce = __webpack_require__(251),
13561    baseEach = __webpack_require__(111),
13562    baseIteratee = __webpack_require__(7),
13563    baseReduce = __webpack_require__(255),
13564    isArray = __webpack_require__(1);
13565
13566/**
13567 * Reduces `collection` to a value which is the accumulated result of running
13568 * each element in `collection` thru `iteratee`, where each successive
13569 * invocation is supplied the return value of the previous. If `accumulator`
13570 * is not given, the first element of `collection` is used as the initial
13571 * value. The iteratee is invoked with four arguments:
13572 * (accumulator, value, index|key, collection).
13573 *
13574 * Many lodash methods are guarded to work as iteratees for methods like
13575 * `_.reduce`, `_.reduceRight`, and `_.transform`.
13576 *
13577 * The guarded methods are:
13578 * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,
13579 * and `sortBy`
13580 *
13581 * @static
13582 * @memberOf _
13583 * @since 0.1.0
13584 * @category Collection
13585 * @param {Array|Object} collection The collection to iterate over.
13586 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
13587 * @param {*} [accumulator] The initial value.
13588 * @returns {*} Returns the accumulated value.
13589 * @see _.reduceRight
13590 * @example
13591 *
13592 * _.reduce([1, 2], function(sum, n) {
13593 *   return sum + n;
13594 * }, 0);
13595 * // => 3
13596 *
13597 * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
13598 *   (result[value] || (result[value] = [])).push(key);
13599 *   return result;
13600 * }, {});
13601 * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)
13602 */
13603function reduce(collection, iteratee, accumulator) {
13604  var func = isArray(collection) ? arrayReduce : baseReduce,
13605      initAccum = arguments.length < 3;
13606
13607  return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);
13608}
13609
13610module.exports = reduce;
13611
13612
13613/***/ }),
13614/* 251 */
13615/***/ (function(module, exports) {
13616
13617/**
13618 * A specialized version of `_.reduce` for arrays without support for
13619 * iteratee shorthands.
13620 *
13621 * @private
13622 * @param {Array} [array] The array to iterate over.
13623 * @param {Function} iteratee The function invoked per iteration.
13624 * @param {*} [accumulator] The initial value.
13625 * @param {boolean} [initAccum] Specify using the first element of `array` as
13626 *  the initial value.
13627 * @returns {*} Returns the accumulated value.
13628 */
13629function arrayReduce(array, iteratee, accumulator, initAccum) {
13630  var index = -1,
13631      length = array == null ? 0 : array.length;
13632
13633  if (initAccum && length) {
13634    accumulator = array[++index];
13635  }
13636  while (++index < length) {
13637    accumulator = iteratee(accumulator, array[index], index, array);
13638  }
13639  return accumulator;
13640}
13641
13642module.exports = arrayReduce;
13643
13644
13645/***/ }),
13646/* 252 */
13647/***/ (function(module, exports, __webpack_require__) {
13648
13649var createBaseFor = __webpack_require__(253);
13650
13651/**
13652 * The base implementation of `baseForOwn` which iterates over `object`
13653 * properties returned by `keysFunc` and invokes `iteratee` for each property.
13654 * Iteratee functions may exit iteration early by explicitly returning `false`.
13655 *
13656 * @private
13657 * @param {Object} object The object to iterate over.
13658 * @param {Function} iteratee The function invoked per iteration.
13659 * @param {Function} keysFunc The function to get the keys of `object`.
13660 * @returns {Object} Returns `object`.
13661 */
13662var baseFor = createBaseFor();
13663
13664module.exports = baseFor;
13665
13666
13667/***/ }),
13668/* 253 */
13669/***/ (function(module, exports) {
13670
13671/**
13672 * Creates a base function for methods like `_.forIn` and `_.forOwn`.
13673 *
13674 * @private
13675 * @param {boolean} [fromRight] Specify iterating from right to left.
13676 * @returns {Function} Returns the new base function.
13677 */
13678function createBaseFor(fromRight) {
13679  return function(object, iteratee, keysFunc) {
13680    var index = -1,
13681        iterable = Object(object),
13682        props = keysFunc(object),
13683        length = props.length;
13684
13685    while (length--) {
13686      var key = props[fromRight ? length : ++index];
13687      if (iteratee(iterable[key], key, iterable) === false) {
13688        break;
13689      }
13690    }
13691    return object;
13692  };
13693}
13694
13695module.exports = createBaseFor;
13696
13697
13698/***/ }),
13699/* 254 */
13700/***/ (function(module, exports, __webpack_require__) {
13701
13702var isArrayLike = __webpack_require__(12);
13703
13704/**
13705 * Creates a `baseEach` or `baseEachRight` function.
13706 *
13707 * @private
13708 * @param {Function} eachFunc The function to iterate over a collection.
13709 * @param {boolean} [fromRight] Specify iterating from right to left.
13710 * @returns {Function} Returns the new base function.
13711 */
13712function createBaseEach(eachFunc, fromRight) {
13713  return function(collection, iteratee) {
13714    if (collection == null) {
13715      return collection;
13716    }
13717    if (!isArrayLike(collection)) {
13718      return eachFunc(collection, iteratee);
13719    }
13720    var length = collection.length,
13721        index = fromRight ? length : -1,
13722        iterable = Object(collection);
13723
13724    while ((fromRight ? index-- : ++index < length)) {
13725      if (iteratee(iterable[index], index, iterable) === false) {
13726        break;
13727      }
13728    }
13729    return collection;
13730  };
13731}
13732
13733module.exports = createBaseEach;
13734
13735
13736/***/ }),
13737/* 255 */
13738/***/ (function(module, exports) {
13739
13740/**
13741 * The base implementation of `_.reduce` and `_.reduceRight`, without support
13742 * for iteratee shorthands, which iterates over `collection` using `eachFunc`.
13743 *
13744 * @private
13745 * @param {Array|Object} collection The collection to iterate over.
13746 * @param {Function} iteratee The function invoked per iteration.
13747 * @param {*} accumulator The initial value.
13748 * @param {boolean} initAccum Specify using the first or last element of
13749 *  `collection` as the initial value.
13750 * @param {Function} eachFunc The function to iterate over `collection`.
13751 * @returns {*} Returns the accumulated value.
13752 */
13753function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
13754  eachFunc(collection, function(value, index, collection) {
13755    accumulator = initAccum
13756      ? (initAccum = false, value)
13757      : iteratee(accumulator, value, index, collection);
13758  });
13759  return accumulator;
13760}
13761
13762module.exports = baseReduce;
13763
13764
13765/***/ }),
13766/* 256 */
13767/***/ (function(module, exports, __webpack_require__) {
13768
13769var createFind = __webpack_require__(86),
13770    findLastIndex = __webpack_require__(257);
13771
13772/**
13773 * This method is like `_.find` except that it iterates over elements of
13774 * `collection` from right to left.
13775 *
13776 * @static
13777 * @memberOf _
13778 * @since 2.0.0
13779 * @category Collection
13780 * @param {Array|Object} collection The collection to inspect.
13781 * @param {Function} [predicate=_.identity] The function invoked per iteration.
13782 * @param {number} [fromIndex=collection.length-1] The index to search from.
13783 * @returns {*} Returns the matched element, else `undefined`.
13784 * @example
13785 *
13786 * _.findLast([1, 2, 3, 4], function(n) {
13787 *   return n % 2 == 1;
13788 * });
13789 * // => 3
13790 */
13791var findLast = createFind(findLastIndex);
13792
13793module.exports = findLast;
13794
13795
13796/***/ }),
13797/* 257 */
13798/***/ (function(module, exports, __webpack_require__) {
13799
13800var baseFindIndex = __webpack_require__(104),
13801    baseIteratee = __webpack_require__(7),
13802    toInteger = __webpack_require__(105);
13803
13804/* Built-in method references for those with the same name as other `lodash` methods. */
13805var nativeMax = Math.max,
13806    nativeMin = Math.min;
13807
13808/**
13809 * This method is like `_.findIndex` except that it iterates over elements
13810 * of `collection` from right to left.
13811 *
13812 * @static
13813 * @memberOf _
13814 * @since 2.0.0
13815 * @category Array
13816 * @param {Array} array The array to inspect.
13817 * @param {Function} [predicate=_.identity] The function invoked per iteration.
13818 * @param {number} [fromIndex=array.length-1] The index to search from.
13819 * @returns {number} Returns the index of the found element, else `-1`.
13820 * @example
13821 *
13822 * var users = [
13823 *   { 'user': 'barney',  'active': true },
13824 *   { 'user': 'fred',    'active': false },
13825 *   { 'user': 'pebbles', 'active': false }
13826 * ];
13827 *
13828 * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });
13829 * // => 2
13830 *
13831 * // The `_.matches` iteratee shorthand.
13832 * _.findLastIndex(users, { 'user': 'barney', 'active': true });
13833 * // => 0
13834 *
13835 * // The `_.matchesProperty` iteratee shorthand.
13836 * _.findLastIndex(users, ['active', false]);
13837 * // => 2
13838 *
13839 * // The `_.property` iteratee shorthand.
13840 * _.findLastIndex(users, 'active');
13841 * // => 0
13842 */
13843function findLastIndex(array, predicate, fromIndex) {
13844  var length = array == null ? 0 : array.length;
13845  if (!length) {
13846    return -1;
13847  }
13848  var index = length - 1;
13849  if (fromIndex !== undefined) {
13850    index = toInteger(fromIndex);
13851    index = fromIndex < 0
13852      ? nativeMax(length + index, 0)
13853      : nativeMin(index, length - 1);
13854  }
13855  return baseFindIndex(array, baseIteratee(predicate, 3), index, true);
13856}
13857
13858module.exports = findLastIndex;
13859
13860
13861/***/ }),
13862/* 258 */
13863/***/ (function(module, exports) {
13864
13865function _interopRequireDefault(obj) {
13866  return obj && obj.__esModule ? obj : {
13867    default: obj
13868  };
13869}
13870
13871module.exports = _interopRequireDefault;
13872
13873/***/ }),
13874/* 259 */
13875/***/ (function(module, exports, __webpack_require__) {
13876
13877"use strict";
13878/**
13879 * Copyright (c) 2013-present, Facebook, Inc.
13880 *
13881 * This source code is licensed under the MIT license found in the
13882 * LICENSE file in the root directory of this source tree.
13883 *
13884 * @typechecks
13885 * 
13886 */
13887
13888/*eslint-disable no-self-compare */
13889
13890
13891
13892var hasOwnProperty = Object.prototype.hasOwnProperty;
13893
13894/**
13895 * inlined Object.is polyfill to avoid requiring consumers ship their own
13896 * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
13897 */
13898function is(x, y) {
13899  // SameValue algorithm
13900  if (x === y) {
13901    // Steps 1-5, 7-10
13902    // Steps 6.b-6.e: +0 != -0
13903    // Added the nonzero y check to make Flow happy, but it is redundant
13904    return x !== 0 || y !== 0 || 1 / x === 1 / y;
13905  } else {
13906    // Step 6.a: NaN == NaN
13907    return x !== x && y !== y;
13908  }
13909}
13910
13911/**
13912 * Performs equality by iterating through keys on an object and returning false
13913 * when any key has values which are not strictly equal between the arguments.
13914 * Returns true when the values of all keys are strictly equal.
13915 */
13916function shallowEqual(objA, objB) {
13917  if (is(objA, objB)) {
13918    return true;
13919  }
13920
13921  if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {
13922    return false;
13923  }
13924
13925  var keysA = Object.keys(objA);
13926  var keysB = Object.keys(objB);
13927
13928  if (keysA.length !== keysB.length) {
13929    return false;
13930  }
13931
13932  // Test for A's keys different from B.
13933  for (var i = 0; i < keysA.length; i++) {
13934    if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {
13935      return false;
13936    }
13937  }
13938
13939  return true;
13940}
13941
13942module.exports = shallowEqual;
13943
13944/***/ }),
13945/* 260 */
13946/***/ (function(module, exports, __webpack_require__) {
13947
13948"use strict";
13949
13950
13951Object.defineProperty(exports, "__esModule", {
13952  value: true
13953});
13954exports.ixInstances = void 0;
13955
13956var _constants = __webpack_require__(2);
13957
13958var _shared = __webpack_require__(10);
13959
13960var _timm = __webpack_require__(18);
13961/* eslint-env browser */
13962
13963
13964var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
13965    IX2_RAW_DATA_IMPORTED = _constants$IX2EngineA.IX2_RAW_DATA_IMPORTED,
13966    IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED,
13967    IX2_INSTANCE_ADDED = _constants$IX2EngineA.IX2_INSTANCE_ADDED,
13968    IX2_INSTANCE_STARTED = _constants$IX2EngineA.IX2_INSTANCE_STARTED,
13969    IX2_INSTANCE_REMOVED = _constants$IX2EngineA.IX2_INSTANCE_REMOVED,
13970    IX2_ANIMATION_FRAME_CHANGED = _constants$IX2EngineA.IX2_ANIMATION_FRAME_CHANGED;
13971var _shared$IX2EasingUtil = _shared.IX2EasingUtils,
13972    optimizeFloat = _shared$IX2EasingUtil.optimizeFloat,
13973    applyEasing = _shared$IX2EasingUtil.applyEasing,
13974    createBezierEasing = _shared$IX2EasingUtil.createBezierEasing;
13975var RENDER_GENERAL = _constants.IX2EngineConstants.RENDER_GENERAL;
13976var _shared$IX2VanillaUti = _shared.IX2VanillaUtils,
13977    getItemConfigByKey = _shared$IX2VanillaUti.getItemConfigByKey,
13978    getRenderType = _shared$IX2VanillaUti.getRenderType,
13979    getStyleProp = _shared$IX2VanillaUti.getStyleProp;
13980
13981var continuousInstance = function continuousInstance(state, action) {
13982  var lastPosition = state.position,
13983      parameterId = state.parameterId,
13984      actionGroups = state.actionGroups,
13985      destinationKeys = state.destinationKeys,
13986      smoothing = state.smoothing,
13987      restingValue = state.restingValue,
13988      actionTypeId = state.actionTypeId,
13989      customEasingFn = state.customEasingFn;
13990  var parameters = action.payload.parameters;
13991  var velocity = Math.max(1 - smoothing, 0.01);
13992  var paramValue = parameters[parameterId];
13993
13994  if (paramValue == null) {
13995    velocity = 1;
13996    paramValue = restingValue;
13997  }
13998
13999  var nextPosition = Math.max(paramValue, 0) || 0;
14000  var positionDiff = optimizeFloat(nextPosition - lastPosition);
14001  var position = optimizeFloat(lastPosition + positionDiff * velocity);
14002  var keyframePosition = position * 100;
14003
14004  if (position === lastPosition && state.current) {
14005    return state;
14006  }
14007
14008  var fromActionItem;
14009  var toActionItem;
14010  var positionOffset;
14011  var positionRange;
14012
14013  for (var i = 0, length = actionGroups.length; i < length; i++) {
14014    var _actionGroups$i = actionGroups[i],
14015        keyframe = _actionGroups$i.keyframe,
14016        actionItems = _actionGroups$i.actionItems;
14017
14018    if (i === 0) {
14019      fromActionItem = actionItems[0];
14020    }
14021
14022    if (keyframePosition >= keyframe) {
14023      fromActionItem = actionItems[0];
14024      var nextGroup = actionGroups[i + 1];
14025      var hasNextItem = nextGroup && keyframePosition !== keyframe;
14026      toActionItem = hasNextItem ? nextGroup.actionItems[0] : null;
14027
14028      if (hasNextItem) {
14029        positionOffset = keyframe / 100;
14030        positionRange = (nextGroup.keyframe - keyframe) / 100;
14031      }
14032    }
14033  }
14034
14035  var current = {};
14036
14037  if (fromActionItem && !toActionItem) {
14038    for (var _i = 0, _length = destinationKeys.length; _i < _length; _i++) {
14039      var key = destinationKeys[_i];
14040      current[key] = getItemConfigByKey(actionTypeId, key, fromActionItem.config);
14041    }
14042  } else if (fromActionItem && toActionItem && positionOffset !== undefined && positionRange !== undefined) {
14043    var localPosition = (position - positionOffset) / positionRange;
14044    var easing = fromActionItem.config.easing;
14045    var eased = applyEasing(easing, localPosition, customEasingFn);
14046
14047    for (var _i2 = 0, _length2 = destinationKeys.length; _i2 < _length2; _i2++) {
14048      var _key = destinationKeys[_i2];
14049      var fromVal = getItemConfigByKey(actionTypeId, _key, fromActionItem.config);
14050      var toVal = getItemConfigByKey(actionTypeId, _key, toActionItem.config); // $FlowFixMe — toVal and fromVal could potentially be null, need to update type higher to determine number
14051
14052      var diff = toVal - fromVal; // $FlowFixMe
14053
14054      var value = diff * eased + fromVal;
14055      current[_key] = value;
14056    }
14057  }
14058
14059  return (0, _timm.merge)(state, {
14060    position: position,
14061    current: current
14062  });
14063};
14064
14065var timedInstance = function timedInstance(state, action) {
14066  var _state = state,
14067      active = _state.active,
14068      origin = _state.origin,
14069      start = _state.start,
14070      immediate = _state.immediate,
14071      renderType = _state.renderType,
14072      verbose = _state.verbose,
14073      actionItem = _state.actionItem,
14074      destination = _state.destination,
14075      destinationKeys = _state.destinationKeys,
14076      pluginDuration = _state.pluginDuration,
14077      instanceDelay = _state.instanceDelay,
14078      customEasingFn = _state.customEasingFn;
14079  var easing = actionItem.config.easing;
14080  var _actionItem$config = actionItem.config,
14081      duration = _actionItem$config.duration,
14082      delay = _actionItem$config.delay;
14083
14084  if (pluginDuration != null) {
14085    duration = pluginDuration;
14086  }
14087
14088  delay = instanceDelay != null ? instanceDelay : delay;
14089
14090  if (renderType === RENDER_GENERAL) {
14091    duration = 0;
14092  } else if (immediate) {
14093    duration = delay = 0;
14094  }
14095
14096  var now = action.payload.now;
14097
14098  if (active && origin) {
14099    var delta = now - (start + delay);
14100
14101    if (verbose) {
14102      var verboseDelta = now - start;
14103      var verboseDuration = duration + delay;
14104      var verbosePosition = optimizeFloat(Math.min(Math.max(0, verboseDelta / verboseDuration), 1));
14105      state = (0, _timm.set)(state, 'verboseTimeElapsed', verboseDuration * verbosePosition);
14106    }
14107
14108    if (delta < 0) {
14109      return state;
14110    }
14111
14112    var position = optimizeFloat(Math.min(Math.max(0, delta / duration), 1));
14113    var eased = applyEasing(easing, position, customEasingFn);
14114    var newProps = {};
14115    var current = null;
14116
14117    if (destinationKeys.length) {
14118      current = destinationKeys.reduce(function (result, key) {
14119        var destValue = destination[key];
14120        var originVal = parseFloat(origin[key]) || 0;
14121        var diff = parseFloat(destValue) - originVal;
14122        var value = diff * eased + originVal;
14123        result[key] = value;
14124        return result;
14125      }, {});
14126    }
14127
14128    newProps.current = current;
14129    newProps.position = position;
14130
14131    if (position === 1) {
14132      newProps.active = false;
14133      newProps.complete = true;
14134    }
14135
14136    return (0, _timm.merge)(state, newProps);
14137  }
14138
14139  return state;
14140};
14141
14142var ixInstances = function ixInstances() {
14143  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Object.freeze({});
14144  var action = arguments.length > 1 ? arguments[1] : undefined;
14145
14146  switch (action.type) {
14147    case IX2_RAW_DATA_IMPORTED:
14148      {
14149        return action.payload.ixInstances || Object.freeze({});
14150      }
14151
14152    case IX2_SESSION_STOPPED:
14153      {
14154        return Object.freeze({});
14155      }
14156
14157    case IX2_INSTANCE_ADDED:
14158      {
14159        var _action$payload = action.payload,
14160            instanceId = _action$payload.instanceId,
14161            elementId = _action$payload.elementId,
14162            actionItem = _action$payload.actionItem,
14163            eventId = _action$payload.eventId,
14164            eventTarget = _action$payload.eventTarget,
14165            eventStateKey = _action$payload.eventStateKey,
14166            actionListId = _action$payload.actionListId,
14167            groupIndex = _action$payload.groupIndex,
14168            isCarrier = _action$payload.isCarrier,
14169            origin = _action$payload.origin,
14170            destination = _action$payload.destination,
14171            immediate = _action$payload.immediate,
14172            verbose = _action$payload.verbose,
14173            continuous = _action$payload.continuous,
14174            parameterId = _action$payload.parameterId,
14175            actionGroups = _action$payload.actionGroups,
14176            smoothing = _action$payload.smoothing,
14177            restingValue = _action$payload.restingValue,
14178            pluginInstance = _action$payload.pluginInstance,
14179            pluginDuration = _action$payload.pluginDuration,
14180            instanceDelay = _action$payload.instanceDelay;
14181        var actionTypeId = actionItem.actionTypeId;
14182        var renderType = getRenderType(actionTypeId);
14183        var styleProp = getStyleProp(renderType, actionTypeId);
14184        var destinationKeys = Object.keys(destination).filter(function (key) {
14185          return destination[key] != null;
14186        });
14187        var easing = actionItem.config.easing;
14188        return (0, _timm.set)(state, instanceId, {
14189          id: instanceId,
14190          elementId: elementId,
14191          active: false,
14192          position: 0,
14193          start: 0,
14194          origin: origin,
14195          destination: destination,
14196          destinationKeys: destinationKeys,
14197          immediate: immediate,
14198          verbose: verbose,
14199          current: null,
14200          actionItem: actionItem,
14201          actionTypeId: actionTypeId,
14202          eventId: eventId,
14203          eventTarget: eventTarget,
14204          eventStateKey: eventStateKey,
14205          actionListId: actionListId,
14206          groupIndex: groupIndex,
14207          renderType: renderType,
14208          isCarrier: isCarrier,
14209          styleProp: styleProp,
14210          continuous: continuous,
14211          parameterId: parameterId,
14212          actionGroups: actionGroups,
14213          smoothing: smoothing,
14214          restingValue: restingValue,
14215          pluginInstance: pluginInstance,
14216          pluginDuration: pluginDuration,
14217          instanceDelay: instanceDelay,
14218          customEasingFn: Array.isArray(easing) && easing.length === 4 ? createBezierEasing(easing) : undefined
14219        });
14220      }
14221
14222    case IX2_INSTANCE_STARTED:
14223      {
14224        var _action$payload2 = action.payload,
14225            _instanceId = _action$payload2.instanceId,
14226            time = _action$payload2.time;
14227        return (0, _timm.mergeIn)(state, [_instanceId], {
14228          active: true,
14229          complete: false,
14230          start: time
14231        });
14232      }
14233
14234    case IX2_INSTANCE_REMOVED:
14235      {
14236        var _instanceId2 = action.payload.instanceId;
14237
14238        if (!state[_instanceId2]) {
14239          return state;
14240        }
14241
14242        var newState = {};
14243        var keys = Object.keys(state);
14244        var length = keys.length;
14245
14246        for (var i = 0; i < length; i++) {
14247          var key = keys[i];
14248
14249          if (key !== _instanceId2) {
14250            newState[key] = state[key];
14251          }
14252        }
14253
14254        return newState;
14255      }
14256
14257    case IX2_ANIMATION_FRAME_CHANGED:
14258      {
14259        var _newState = state;
14260
14261        var _keys = Object.keys(state);
14262
14263        var _length3 = _keys.length;
14264
14265        for (var _i3 = 0; _i3 < _length3; _i3++) {
14266          var _key2 = _keys[_i3];
14267          var instance = state[_key2];
14268          var reducer = instance.continuous ? continuousInstance : timedInstance;
14269          _newState = (0, _timm.set)(_newState, _key2, reducer(instance, action));
14270        }
14271
14272        return _newState;
14273      }
14274
14275    default:
14276      {
14277        return state;
14278      }
14279  }
14280};
14281
14282exports.ixInstances = ixInstances;
14283
14284/***/ }),
14285/* 261 */
14286/***/ (function(module, exports, __webpack_require__) {
14287
14288"use strict";
14289
14290
14291Object.defineProperty(exports, "__esModule", {
14292  value: true
14293});
14294exports.ixParameters = void 0;
14295
14296var _constants = __webpack_require__(2);
14297
14298var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
14299    IX2_RAW_DATA_IMPORTED = _constants$IX2EngineA.IX2_RAW_DATA_IMPORTED,
14300    IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED,
14301    IX2_PARAMETER_CHANGED = _constants$IX2EngineA.IX2_PARAMETER_CHANGED; // prettier-ignore
14302
14303var ixParameters = function ixParameters() {
14304  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
14305    /*mutable flat state*/
14306  };
14307  var action = arguments.length > 1 ? arguments[1] : undefined;
14308
14309  switch (action.type) {
14310    case IX2_RAW_DATA_IMPORTED:
14311      {
14312        return action.payload.ixParameters || {
14313          /*mutable flat state*/
14314        };
14315      }
14316
14317    case IX2_SESSION_STOPPED:
14318      {
14319        return {
14320          /*mutable flat state*/
14321        };
14322      }
14323
14324    case IX2_PARAMETER_CHANGED:
14325      {
14326        var _action$payload = action.payload,
14327            key = _action$payload.key,
14328            value = _action$payload.value;
14329        state[key] = value;
14330        return state;
14331      }
14332
14333    default:
14334      {
14335        return state;
14336      }
14337  }
14338};
14339
14340exports.ixParameters = ixParameters;
14341
14342/***/ }),
14343/* 262 */
14344/***/ (function(module, exports) {
14345
14346function _objectWithoutPropertiesLoose(source, excluded) {
14347  if (source == null) return {};
14348  var target = {};
14349  var sourceKeys = Object.keys(source);
14350  var key, i;
14351
14352  for (i = 0; i < sourceKeys.length; i++) {
14353    key = sourceKeys[i];
14354    if (excluded.indexOf(key) >= 0) continue;
14355    target[key] = source[key];
14356  }
14357
14358  return target;
14359}
14360
14361module.exports = _objectWithoutPropertiesLoose;
14362
14363/***/ }),
14364/* 263 */
14365/***/ (function(module, exports, __webpack_require__) {
14366
14367var baseKeys = __webpack_require__(54),
14368    getTag = __webpack_require__(56),
14369    isArrayLike = __webpack_require__(12),
14370    isString = __webpack_require__(264),
14371    stringSize = __webpack_require__(265);
14372
14373/** `Object#toString` result references. */
14374var mapTag = '[object Map]',
14375    setTag = '[object Set]';
14376
14377/**
14378 * Gets the size of `collection` by returning its length for array-like
14379 * values or the number of own enumerable string keyed properties for objects.
14380 *
14381 * @static
14382 * @memberOf _
14383 * @since 0.1.0
14384 * @category Collection
14385 * @param {Array|Object|string} collection The collection to inspect.
14386 * @returns {number} Returns the collection size.
14387 * @example
14388 *
14389 * _.size([1, 2, 3]);
14390 * // => 3
14391 *
14392 * _.size({ 'a': 1, 'b': 2 });
14393 * // => 2
14394 *
14395 * _.size('pebbles');
14396 * // => 7
14397 */
14398function size(collection) {
14399  if (collection == null) {
14400    return 0;
14401  }
14402  if (isArrayLike(collection)) {
14403    return isString(collection) ? stringSize(collection) : collection.length;
14404  }
14405  var tag = getTag(collection);
14406  if (tag == mapTag || tag == setTag) {
14407    return collection.size;
14408  }
14409  return baseKeys(collection).length;
14410}
14411
14412module.exports = size;
14413
14414
14415/***/ }),
14416/* 264 */
14417/***/ (function(module, exports, __webpack_require__) {
14418
14419var baseGetTag = __webpack_require__(11),
14420    isArray = __webpack_require__(1),
14421    isObjectLike = __webpack_require__(9);
14422
14423/** `Object#toString` result references. */
14424var stringTag = '[object String]';
14425
14426/**
14427 * Checks if `value` is classified as a `String` primitive or object.
14428 *
14429 * @static
14430 * @since 0.1.0
14431 * @memberOf _
14432 * @category Lang
14433 * @param {*} value The value to check.
14434 * @returns {boolean} Returns `true` if `value` is a string, else `false`.
14435 * @example
14436 *
14437 * _.isString('abc');
14438 * // => true
14439 *
14440 * _.isString(1);
14441 * // => false
14442 */
14443function isString(value) {
14444  return typeof value == 'string' ||
14445    (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
14446}
14447
14448module.exports = isString;
14449
14450
14451/***/ }),
14452/* 265 */
14453/***/ (function(module, exports, __webpack_require__) {
14454
14455var asciiSize = __webpack_require__(266),
14456    hasUnicode = __webpack_require__(267),
14457    unicodeSize = __webpack_require__(268);
14458
14459/**
14460 * Gets the number of symbols in `string`.
14461 *
14462 * @private
14463 * @param {string} string The string to inspect.
14464 * @returns {number} Returns the string size.
14465 */
14466function stringSize(string) {
14467  return hasUnicode(string)
14468    ? unicodeSize(string)
14469    : asciiSize(string);
14470}
14471
14472module.exports = stringSize;
14473
14474
14475/***/ }),
14476/* 266 */
14477/***/ (function(module, exports, __webpack_require__) {
14478
14479var baseProperty = __webpack_require__(103);
14480
14481/**
14482 * Gets the size of an ASCII `string`.
14483 *
14484 * @private
14485 * @param {string} string The string inspect.
14486 * @returns {number} Returns the string size.
14487 */
14488var asciiSize = baseProperty('length');
14489
14490module.exports = asciiSize;
14491
14492
14493/***/ }),
14494/* 267 */
vendor: 2,920 bytes, lines 14495-14584
14495/***/ (function(module, exports) {
14496
14497/** Used to compose unicode character classes. */
14498var rsAstralRange = '\\ud800-\\udfff',
14499    rsComboMarksRange = '\\u0300-\\u036f',
14500    reComboHalfMarksRange = '\\ufe20-\\ufe2f',
14501    rsComboSymbolsRange = '\\u20d0-\\u20ff',
14502    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
14503    rsVarRange = '\\ufe0e\\ufe0f';
14504
14505/** Used to compose unicode capture groups. */
14506var rsZWJ = '\\u200d';
14507
14508/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */
14509var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');
14510
14511/**
14512 * Checks if `string` contains Unicode symbols.
14513 *
14514 * @private
14515 * @param {string} string The string to inspect.
14516 * @returns {boolean} Returns `true` if a symbol is found, else `false`.
14517 */
14518function hasUnicode(string) {
14519  return reHasUnicode.test(string);
14520}
14521
14522module.exports = hasUnicode;
14523
14524
14525/***/ }),
14526/* 268 */
14527/***/ (function(module, exports) {
14528
14529/** Used to compose unicode character classes. */
14530var rsAstralRange = '\\ud800-\\udfff',
14531    rsComboMarksRange = '\\u0300-\\u036f',
14532    reComboHalfMarksRange = '\\ufe20-\\ufe2f',
14533    rsComboSymbolsRange = '\\u20d0-\\u20ff',
14534    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
14535    rsVarRange = '\\ufe0e\\ufe0f';
14536
14537/** Used to compose unicode capture groups. */
14538var rsAstral = '[' + rsAstralRange + ']',
14539    rsCombo = '[' + rsComboRange + ']',
14540    rsFitz = '\\ud83c[\\udffb-\\udfff]',
14541    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
14542    rsNonAstral = '[^' + rsAstralRange + ']',
14543    rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
14544    rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
14545    rsZWJ = '\\u200d';
14546
14547/** Used to compose unicode regexes. */
14548var reOptMod = rsModifier + '?',
14549    rsOptVar = '[' + rsVarRange + ']?',
14550    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
14551    rsSeq = rsOptVar + reOptMod + rsOptJoin,
14552    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
14553
14554/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
14555var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
14556
14557/**
14558 * Gets the size of a Unicode `string`.
14559 *
14560 * @private
14561 * @param {string} string The string inspect.
14562 * @returns {number} Returns the string size.
14563 */
14564function unicodeSize(string) {
14565  var result = reUnicode.lastIndex = 0;
14566  while (reUnicode.test(string)) {
14567    ++result;
14568  }
14569  return result;
14570}
14571
14572module.exports = unicodeSize;
14573
14574
14575/***/ }),
14576/* 269 */
14577/***/ (function(module, exports, __webpack_require__) {
14578
14579var baseIteratee = __webpack_require__(7),
14580    negate = __webpack_require__(270),
14581    pickBy = __webpack_require__(271);
14582
14583/**
14584 * The opposite of `_.pickBy`;
14584 this method creates an object composed of
14585 * the own and inherited enumerable string keyed properties of `object` that
14586 * `predicate` doesn't return truthy for. The predicate is invoked with two
14587 * arguments: (value, key).
14588 *
14589 * @static
14590 * @memberOf _
14591 * @since 4.0.0
14592 * @category Object
14593 * @param {Object} object The source object.
14594 * @param {Function} [predicate=_.identity] The function invoked per property.
14595 * @returns {Object} Returns the new object.
14596 * @example
14597 *
14598 * var object = { 'a': 1, 'b': '2', 'c': 3 };
14599 *
14600 * _.omitBy(object, _.isNumber);
14601 * // => { 'b': '2' }
14602 */
14603function omitBy(object, predicate) {
14604  return pickBy(object, negate(baseIteratee(predicate)));
14605}
14606
14607module.exports = omitBy;
14608
14609
14610/***/ }),
14611/* 270 */
14612/***/ (function(module, exports) {
14613
14614/** Error message constants. */
14615var FUNC_ERROR_TEXT = 'Expected a function';
14616
14617/**
14618 * Creates a function that negates the result of the predicate `func`. The
14619 * `func` predicate is invoked with the `this` binding and arguments of the
14620 * created function.
14621 *
14622 * @static
14623 * @memberOf _
14624 * @since 3.0.0
14625 * @category Function
14626 * @param {Function} predicate The predicate to negate.
14627 * @returns {Function} Returns the new negated function.
14628 * @example
14629 *
14630 * function isEven(n) {
14631 *   return n % 2 == 0;
14632 * }
14633 *
14634 * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));
14635 * // => [1, 3, 5]
14636 */
14637function negate(predicate) {
14638  if (typeof predicate != 'function') {
14639    throw new TypeError(FUNC_ERROR_TEXT);
14640  }
14641  return function() {
14642    var args = arguments;
14643    switch (args.length) {
14644      case 0: return !predicate.call(this);
14645      case 1: return !predicate.call(this, args[0]);
14646      case 2: return !predicate.call(this, args[0], args[1]);
14647      case 3: return !predicate.call(this, args[0], args[1], args[2]);
14648    }
14649    return !predicate.apply(this, args);
14650  };
14651}
14652
14653module.exports = negate;
14654
14655
14656/***/ }),
14657/* 271 */
14658/***/ (function(module, exports, __webpack_require__) {
14659
14660var arrayMap = __webpack_require__(102),
14661    baseIteratee = __webpack_require__(7),
14662    basePickBy = __webpack_require__(272),
14663    getAllKeysIn = __webpack_require__(275);
14664
14665/**
14666 * Creates an object composed of the `object` properties `predicate` returns
14667 * truthy for. The predicate is invoked with two arguments: (value, key).
14668 *
14669 * @static
14670 * @memberOf _
14671 * @since 4.0.0
14672 * @category Object
14673 * @param {Object} object The source object.
14674 * @param {Function} [predicate=_.identity] The function invoked per property.
14675 * @returns {Object} Returns the new object.
14676 * @example
14677 *
14678 * var object = { 'a': 1, 'b': '2', 'c': 3 };
14679 *
14680 * _.pickBy(object, _.isNumber);
14681 * // => { 'a': 1, 'c': 3 }
14682 */
14683function pickBy(object, predicate) {
14684  if (object == null) {
14685    return {};
14686  }
14687  var props = arrayMap(getAllKeysIn(object), function(prop) {
14688    return [prop];
14689  });
14690  predicate = baseIteratee(predicate);
14691  return basePickBy(object, props, function(value, path) {
14692    return predicate(value, path[0]);
14693  });
14694}
14695
14696module.exports = pickBy;
14697
14698
14699/***/ }),
14700/* 272 */
14701/***/ (function(module, exports, __webpack_require__) {
14702
14703var baseGet = __webpack_require__(57),
14704    baseSet = __webpack_require__(273),
14705    castPath = __webpack_require__(36);
14706
14707/**
14708 * The base implementation of  `_.pickBy` without support for iteratee shorthands.
14709 *
14710 * @private
14711 * @param {Object} object The source object.
14712 * @param {string[]} paths The property paths to pick.
14713 * @param {Function} predicate The function invoked per property.
14714 * @returns {Object} Returns the new object.
14715 */
14716function basePickBy(object, paths, predicate) {
14717  var index = -1,
14718      length = paths.length,
14719      result = {};
14720
14721  while (++index < length) {
14722    var path = paths[index],
14723        value = baseGet(object, path);
14724
14725    if (predicate(value, path)) {
14726      baseSet(result, castPath(path, object), value);
14727    }
14728  }
14729  return result;
14730}
14731
14732module.exports = basePickBy;
14733
14734
14735/***/ }),
14736/* 273 */
14737/***/ (function(module, exports, __webpack_require__) {
14738
14739var assignValue = __webpack_require__(274),
14740    castPath = __webpack_require__(36),
14741    isIndex = __webpack_require__(51),
14742    isObject = __webpack_require__(6),
14743    toKey = __webpack_require__(20);
14744
14745/**
14746 * The base implementation of `_.set`.
14747 *
14748 * @private
14749 * @param {Object} object The object to modify.
14750 * @param {Array|string} path The path of the property to set.
14751 * @param {*} value The value to set.
14752 * @param {Function} [customizer] The function to customize path creation.
14753 * @returns {Object} Returns `object`.
14754 */
14755function baseSet(object, path, value, customizer) {
14756  if (!isObject(object)) {
14757    return object;
14758  }
14759  path = castPath(path, object);
14760
14761  var index = -1,
14762      length = path.length,
14763      lastIndex = length - 1,
14764      nested = object;
14765
14766  while (nested != null && ++index < length) {
14767    var key = toKey(path[index]),
14768        newValue = value;
14769
14770    if (index != lastIndex) {
14771      var objValue = nested[key];
14772      newValue = customizer ? customizer(objValue, key, nested) : undefined;
14773      if (newValue === undefined) {
14774        newValue = isObject(objValue)
14775          ? objValue
14776          : (isIndex(path[index + 1]) ? [] : {});
14777      }
14778    }
14779    assignValue(nested, key, newValue);
14780    nested = nested[key];
14781  }
14782  return object;
14783}
14784
14785module.exports = baseSet;
14786
14787
14788/***/ }),
14789/* 274 */
14790/***/ (function(module, exports, __webpack_require__) {
14791
14792var baseAssignValue = __webpack_require__(115),
14793    eq = __webpack_require__(46);
14794
14795/** Used for built-in method references. */
14796var objectProto = Object.prototype;
14797
14798/** Used to check objects for own properties. */
14799var hasOwnProperty = objectProto.hasOwnProperty;
14800
14801/**
14802 * Assigns `value` to `key` of `object` if the existing value is not equivalent
14803 * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
14804 * for equality comparisons.
14805 *
14806 * @private
14807 * @param {Object} object The object to modify.
14808 * @param {string} key The key of the property to assign.
14809 * @param {*} value The value to assign.
14810 */
14811function assignValue(object, key, value) {
14812  var objValue = object[key];
14813  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
14814      (value === undefined && !(key in object))) {
14815    baseAssignValue(object, key, value);
14816  }
14817}
14818
14819module.exports = assignValue;
14820
14821
14822/***/ }),
14823/* 275 */
14824/***/ (function(module, exports, __webpack_require__) {
14825
14826var baseGetAllKeys = __webpack_require__(93),
14827    getSymbolsIn = __webpack_require__(276),
14828    keysIn = __webpack_require__(278);
14829
14830/**
14831 * Creates an array of own and inherited enumerable property names and
14832 * symbols of `object`.
14833 *
14834 * @private
14835 * @param {Object} object The object to query.
14836 * @returns {Array} Returns the array of property names and symbols.
14837 */
14838function getAllKeysIn(object) {
14839  return baseGetAllKeys(object, keysIn, getSymbolsIn);
14840}
14841
14842module.exports = getAllKeysIn;
14843
14844
14845/***/ }),
14846/* 276 */
14847/***/ (function(module, exports, __webpack_require__) {
14848
14849var arrayPush = __webpack_require__(49),
14850    getPrototype = __webpack_require__(277),
14851    getSymbols = __webpack_require__(94),
14852    stubArray = __webpack_require__(95);
14853
14854/* Built-in method references for those with the same name as other `lodash` methods. */
14855var nativeGetSymbols = Object.getOwnPropertySymbols;
14856
14857/**
14858 * Creates an array of the own and inherited enumerable symbols of `object`.
14859 *
14860 * @private
14861 * @param {Object} object The object to query.
14862 * @returns {Array} Returns the array of symbols.
14863 */
14864var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
14865  var result = [];
14866  while (object) {
14867    arrayPush(result, getSymbols(object));
14868    object = getPrototype(object);
14869  }
14870  return result;
14871};
14872
14873module.exports = getSymbolsIn;
14874
14875
14876/***/ }),
14877/* 277 */
14878/***/ (function(module, exports, __webpack_require__) {
14879
14880var overArg = __webpack_require__(98);
14881
14882/** Built-in value references. */
14883var getPrototype = overArg(Object.getPrototypeOf, Object);
14884
14885module.exports = getPrototype;
14886
14887
14888/***/ }),
14889/* 278 */
14890/***/ (function(module, exports, __webpack_require__) {
14891
14892var arrayLikeKeys = __webpack_require__(96),
14893    baseKeysIn = __webpack_require__(279),
14894    isArrayLike = __webpack_require__(12);
14895
14896/**
14897 * Creates an array of the own and inherited enumerable property names of `object`.
14898 *
14899 * **Note:** Non-object values are coerced to objects.
14900 *
14901 * @static
14902 * @memberOf _
14903 * @since 3.0.0
14904 * @category Object
14905 * @param {Object} object The object to query.
14906 * @returns {Array} Returns the array of property names.
14907 * @example
14908 *
14909 * function Foo() {
14910 *   this.a = 1;
14911 *   this.b = 2;
14912 * }
14913 *
14914 * Foo.prototype.c = 3;
14915 *
14916 * _.keysIn(new Foo);
14917 * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
14918 */
14919function keysIn(object) {
14920  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
14921}
14922
14923module.exports = keysIn;
14924
14925
14926/***/ }),
14927/* 279 */
14928/***/ (function(module, exports, __webpack_require__) {
14929
14930var isObject = __webpack_require__(6),
14931    isPrototype = __webpack_require__(55),
14932    nativeKeysIn = __webpack_require__(280);
14933
14934/** Used for built-in method references. */
14935var objectProto = Object.prototype;
14936
14937/** Used to check objects for own properties. */
14938var hasOwnProperty = objectProto.hasOwnProperty;
14939
14940/**
14941 * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
14942 *
14943 * @private
14944 * @param {Object} object The object to query.
14945 * @returns {Array} Returns the array of property names.
14946 */
14947function baseKeysIn(object) {
14948  if (!isObject(object)) {
14949    return nativeKeysIn(object);
14950  }
14951  var isProto = isPrototype(object),
14952      result = [];
14953
14954  for (var key in object) {
14955    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
14956      result.push(key);
14957    }
14958  }
14959  return result;
14960}
14961
14962module.exports = baseKeysIn;
14963
14964
14965/***/ }),
14966/* 280 */
14967/***/ (function(module, exports) {
14968
14969/**
14970 * This function is like
14971 * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
14972 * except that it includes inherited enumerable properties.
14973 *
14974 * @private
14975 * @param {Object} object The object to query.
14976 * @returns {Array} Returns the array of property names.
14977 */
14978function nativeKeysIn(object) {
14979  var result = [];
14980  if (object != null) {
14981    for (var key in Object(object)) {
14982      result.push(key);
14983    }
14984  }
14985  return result;
14986}
14987
14988module.exports = nativeKeysIn;
14989
14990
14991/***/ }),
14992/* 281 */
14993/***/ (function(module, exports, __webpack_require__) {
14994
14995var baseKeys = __webpack_require__(54),
14996    getTag = __webpack_require__(56),
14997    isArguments = __webpack_require__(34),
14998    isArray = __webpack_require__(1),
14999    isArrayLike = __webpack_require__(12),
15000    isBuffer = __webpack_require__(50),
15001    isPrototype = __webpack_require__(55),
15002    isTypedArray = __webpack_require__(52);
15003
15004/** `Object#toString` result references. */
15005var mapTag = '[object Map]',
15006    setTag = '[object Set]';
15007
15008/** Used for built-in method references. */
15009var objectProto = Object.prototype;
15010
15011/** Used to check objects for own properties. */
15012var hasOwnProperty = objectProto.hasOwnProperty;
15013
15014/**
15015 * Checks if `value` is an empty object, collection, map, or set.
15016 *
15017 * Objects are considered empty if they have no own enumerable string keyed
15018 * properties.
15019 *
15020 * Array-like values such as `arguments` objects, arrays, buffers, strings, or
15021 * jQuery-like collections are considered empty if they have a `length` of `0`.
15022 * Similarly, maps and sets are considered empty if they have a `size` of `0`.
15023 *
15024 * @static
15025 * @memberOf _
15026 * @since 0.1.0
15027 * @category Lang
15028 * @param {*} value The value to check.
15029 * @returns {boolean} Returns `true` if `value` is empty, else `false`.
15030 * @example
15031 *
15032 * _.isEmpty(null);
15033 * // => true
15034 *
15035 * _.isEmpty(true);
15036 * // => true
15037 *
15038 * _.isEmpty(1);
15039 * // => true
15040 *
15041 * _.isEmpty([1, 2, 3]);
15042 * // => false
15043 *
15044 * _.isEmpty({ 'a': 1 });
15045 * // => false
15046 */
15047function isEmpty(value) {
15048  if (value == null) {
15049    return true;
15050  }
15051  if (isArrayLike(value) &&
15052      (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||
15053        isBuffer(value) || isTypedArray(value) || isArguments(value))) {
15054    return !value.length;
15055  }
15056  var tag = getTag(value);
15057  if (tag == mapTag || tag == setTag) {
15058    return !value.size;
15059  }
15060  if (isPrototype(value)) {
15061    return !baseKeys(value).length;
15062  }
15063  for (var key in value) {
15064    if (hasOwnProperty.call(value, key)) {
15065      return false;
15066    }
15067  }
15068  return true;
15069}
15070
15071module.exports = isEmpty;
15072
15073
15074/***/ }),
15075/* 282 */
15076/***/ (function(module, exports, __webpack_require__) {
15077
15078var baseAssignValue = __webpack_require__(115),
15079    baseForOwn = __webpack_require__(112),
15080    baseIteratee = __webpack_require__(7);
15081
15082/**
15083 * Creates an object with the same keys as `object` and values generated
15084 * by running each own enumerable string keyed property of `object` thru
15085 * `iteratee`. The iteratee is invoked with three arguments:
15086 * (value, key, object).
15087 *
15088 * @static
15089 * @memberOf _
15090 * @since 2.4.0
15091 * @category Object
15092 * @param {Object} object The object to iterate over.
15093 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
15094 * @returns {Object} Returns the new mapped object.
15095 * @see _.mapKeys
15096 * @example
15097 *
15098 * var users = {
15099 *   'fred':    { 'user': 'fred',    'age': 40 },
15100 *   'pebbles': { 'user': 'pebbles', 'age': 1 }
15101 * };
15102 *
15103 * _.mapValues(users, function(o) { return o.age; });
15104 * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
15105 *
15106 * // The `_.property` iteratee shorthand.
15107 * _.mapValues(users, 'age');
15108 * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
15109 */
15110function mapValues(object, iteratee) {
15111  var result = {};
15112  iteratee = baseIteratee(iteratee, 3);
15113
15114  baseForOwn(object, function(value, key, object) {
15115    baseAssignValue(result, key, iteratee(value, key, object));
15116  });
15117  return result;
15118}
15119
15120module.exports = mapValues;
15121
15122
15123/***/ }),
15124/* 283 */
15125/***/ (function(module, exports, __webpack_require__) {
15126
15127var arrayEach = __webpack_require__(284),
15128    baseEach = __webpack_require__(111),
15129    castFunction = __webpack_require__(285),
15130    isArray = __webpack_require__(1);
15131
15132/**
15133 * Iterates over elements of `collection` and invokes `iteratee` for each element.
15134 * The iteratee is invoked with three arguments: (value, index|key, collection).
15135 * Iteratee functions may exit iteration early by explicitly returning `false`.
15136 *
15137 * **Note:** As with other "Collections" methods, objects with a "length"
15138 * property are iterated like arrays. To avoid this behavior use `_.forIn`
15139 * or `_.forOwn` for object iteration.
15140 *
15141 * @static
15142 * @memberOf _
15143 * @since 0.1.0
15144 * @alias each
15145 * @category Collection
15146 * @param {Array|Object} collection The collection to iterate over.
15147 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
15148 * @returns {Array|Object} Returns `collection`.
15149 * @see _.forEachRight
15150 * @example
15151 *
15152 * _.forEach([1, 2], function(value) {
15153 *   console.log(value);
15154 * });
15155 * // => Logs `1` then `2`.
15156 *
15157 * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
15158 *   console.log(key);
15159 * });
15160 * // => Logs 'a' then 'b' (iteration order is not guaranteed).
15161 */
15162function forEach(collection, iteratee) {
15163  var func = isArray(collection) ? arrayEach : baseEach;
15164  return func(collection, castFunction(iteratee));
15165}
15166
15167module.exports = forEach;
15168
15169
15170/***/ }),
15171/* 284 */
15172/***/ (function(module, exports) {
15173
15174/**
15175 * A specialized version of `_.forEach` for arrays without support for
15176 * iteratee shorthands.
15177 *
15178 * @private
15179 * @param {Array} [array] The array to iterate over.
15180 * @param {Function} iteratee The function invoked per iteration.
15181 * @returns {Array} Returns `array`.
15182 */
15183function arrayEach(array, iteratee) {
15184  var index = -1,
15185      length = array == null ? 0 : array.length;
15186
15187  while (++index < length) {
15188    if (iteratee(array[index], index, array) === false) {
15189      break;
15190    }
15191  }
15192  return array;
15193}
15194
15195module.exports = arrayEach;
15196
15197
15198/***/ }),
15199/* 285 */
15200/***/ (function(module, exports, __webpack_require__) {
15201
15202var identity = __webpack_require__(59);
15203
15204/**
15205 * Casts `value` to `identity` if it's not a function.
15206 *
15207 * @private
15208 * @param {*} value The value to inspect.
15209 * @returns {Function} Returns cast function.
15210 */
15211function castFunction(value) {
15212  return typeof value == 'function' ? value : identity;
15213}
15214
15215module.exports = castFunction;
15216
15217
15218/***/ }),
15219/* 286 */
15220/***/ (function(module, exports, __webpack_require__) {
15221
15222var debounce = __webpack_require__(287),
15223    isObject = __webpack_require__(6);
15224
15225/** Error message constants. */
15226var FUNC_ERROR_TEXT = 'Expected a function';
15227
15228/**
15229 * Creates a throttled function that only invokes `func` at most once per
15230 * every `wait` milliseconds. The throttled function comes with a `cancel`
15231 * method to cancel delayed `func` invocations and a `flush` method to
15232 * immediately invoke them. Provide `options` to indicate whether `func`
15233 * should be invoked on the leading and/or trailing edge of the `wait`
15234 * timeout. The `func` is invoked with the last arguments provided to the
15235 * throttled function. Subsequent calls to the throttled function return the
15236 * result of the last `func` invocation.
15237 *
15238 * **Note:** If `leading` and `trailing` options are `true`, `func` is
15239 * invoked on the trailing edge of the timeout only if the throttled function
15240 * is invoked more than once during the `wait` timeout.
15241 *
15242 * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
15243 * until to the next tick, similar to `setTimeout` with a timeout of `0`.
15244 *
15245 * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
15246 * for details over the differences between `_.throttle` and `_.debounce`.
15247 *
15248 * @static
15249 * @memberOf _
15250 * @since 0.1.0
15251 * @category Function
15252 * @param {Function} func The function to throttle.
15253 * @param {number} [wait=0] The number of milliseconds to throttle invocations to.
15254 * @param {Object} [options={}] The options object.
15255 * @param {boolean} [options.leading=true]
15256 *  Specify invoking on the leading edge of the timeout.
15257 * @param {boolean} [options.trailing=true]
15258 *  Specify invoking on the trailing edge of the timeout.
15259 * @returns {Function} Returns the new throttled function.
15260 * @example
15261 *
15262 * // Avoid excessively updating the position while scrolling.
15263 * jQuery(window).on('scroll', _.throttle(updatePosition, 100));
15264 *
15265 * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.
15266 * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });
15267 * jQuery(element).on('click', throttled);
15268 *
15269 * // Cancel the trailing throttled invocation.
15270 * jQuery(window).on('popstate', throttled.cancel);
15271 */
15272function throttle(func, wait, options) {
15273  var leading = true,
15274      trailing = true;
15275
15276  if (typeof func != 'function') {
15277    throw new TypeError(FUNC_ERROR_TEXT);
15278  }
15279  if (isObject(options)) {
15280    leading = 'leading' in options ? !!options.leading : leading;
15281    trailing = 'trailing' in options ? !!options.trailing : trailing;
15282  }
15283  return debounce(func, wait, {
15284    'leading': leading,
15285    'maxWait': wait,
15286    'trailing': trailing
15287  });
15288}
15289
15290module.exports = throttle;
15291
15292
15293/***/ }),
15294/* 287 */
15295/***/ (function(module, exports, __webpack_require__) {
15296
15297var isObject = __webpack_require__(6),
15298    now = __webpack_require__(288),
15299    toNumber = __webpack_require__(60);
15300
15301/** Error message constants. */
15302var FUNC_ERROR_TEXT = 'Expected a function';
15303
15304/* Built-in method references for those with the same name as other `lodash` methods. */
15305var nativeMax = Math.max,
15306    nativeMin = Math.min;
15307
15308/**
15309 * Creates a debounced function that delays invoking `func` until after `wait`
15310 * milliseconds have elapsed since the last time the debounced function was
15311 * invoked. The debounced function comes with a `cancel` method to cancel
15312 * delayed `func` invocations and a `flush` method to immediately invoke them.
15313 * Provide `options` to indicate whether `func` should be invoked on the
15314 * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
15315 * with the last arguments provided to the debounced function. Subsequent
15316 * calls to the debounced function return the result of the last `func`
15317 * invocation.
15318 *
15319 * **Note:** If `leading` and `trailing` options are `true`, `func` is
15320 * invoked on the trailing edge of the timeout only if the debounced function
15321 * is invoked more than once during the `wait` timeout.
15322 *
15323 * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
15324 * until to the next tick, similar to `setTimeout` with a timeout of `0`.
15325 *
15326 * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
15327 * for details over the differences between `_.debounce` and `_.throttle`.
15328 *
15329 * @static
15330 * @memberOf _
15331 * @since 0.1.0
15332 * @category Function
15333 * @param {Function} func The function to debounce.
15334 * @param {number} [wait=0] The number of milliseconds to delay.
15335 * @param {Object} [options={}] The options object.
15336 * @param {boolean} [options.leading=false]
15337 *  Specify invoking on the leading edge of the timeout.
15338 * @param {number} [options.maxWait]
15339 *  The maximum time `func` is allowed to be delayed before it's invoked.
15340 * @param {boolean} [options.trailing=true]
15341 *  Specify invoking on the trailing edge of the timeout.
15342 * @returns {Function} Returns the new debounced function.
15343 * @example
15344 *
15345 * // Avoid costly calculations while the window size is in flux.
vendor: 4,687 bytes, lines 15346-15529
15346 * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
15347 *
15348 * // Invoke `sendMail` when clicked, debouncing subsequent calls.
15349 * jQuery(element).on('click', _.debounce(sendMail, 300, {
15350 *   'leading': true,
15351 *   'trailing': false
15352 * }));
15353 *
15354 * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
15355 * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
15356 * var source = new EventSource('/stream');
15357 * jQuery(source).on('message', debounced);
15358 *
15359 * // Cancel the trailing debounced invocation.
15360 * jQuery(window).on('popstate', debounced.cancel);
15361 */
15362function debounce(func, wait, options) {
15363  var lastArgs,
15364      lastThis,
15365      maxWait,
15366      result,
15367      timerId,
15368      lastCallTime,
15369      lastInvokeTime = 0,
15370      leading = false,
15371      maxing = false,
15372      trailing = true;
15373
15374  if (typeof func != 'function') {
15375    throw new TypeError(FUNC_ERROR_TEXT);
15376  }
15377  wait = toNumber(wait) || 0;
15378  if (isObject(options)) {
15379    leading = !!options.leading;
15380    maxing = 'maxWait' in options;
15381    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
15382    trailing = 'trailing' in options ? !!options.trailing : trailing;
15383  }
15384
15385  function invokeFunc(time) {
15386    var args = lastArgs,
15387        thisArg = lastThis;
15388
15389    lastArgs = lastThis = undefined;
15390    lastInvokeTime = time;
15391    result = func.apply(thisArg, args);
15392    return result;
15393  }
15394
15395  function leadingEdge(time) {
15396    // Reset any `maxWait` timer.
15397    lastInvokeTime = time;
15398    // Start the timer for the trailing edge.
15399    timerId = setTimeout(timerExpired, wait);
15400    // Invoke the leading edge.
15401    return leading ? invokeFunc(time) : result;
15402  }
15403
15404  function remainingWait(time) {
15405    var timeSinceLastCall = time - lastCallTime,
15406        timeSinceLastInvoke = time - lastInvokeTime,
15407        timeWaiting = wait - timeSinceLastCall;
15408
15409    return maxing
15410      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)
15411      : timeWaiting;
15412  }
15413
15414  function shouldInvoke(time) {
15415    var timeSinceLastCall = time - lastCallTime,
15416        timeSinceLastInvoke = time - lastInvokeTime;
15417
15418    // Either this is the first call, activity has stopped and we're at the
15419    // trailing edge, the system time has gone backwards and we're treating
15420    // it as the trailing edge, or we've hit the `maxWait` limit.
15421    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
15422      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
15423  }
15424
15425  function timerExpired() {
15426    var time = now();
15427    if (shouldInvoke(time)) {
15428      return trailingEdge(time);
15429    }
15430    // Restart the timer.
15431    timerId = setTimeout(timerExpired, remainingWait(time));
15432  }
15433
15434  function trailingEdge(time) {
15435    timerId = undefined;
15436
15437    // Only invoke if we have `lastArgs` which means `func` has been
15438    // debounced at least once.
15439    if (trailing && lastArgs) {
15440      return invokeFunc(time);
15441    }
15442    lastArgs = lastThis = undefined;
15443    return result;
15444  }
15445
15446  function cancel() {
15447    if (timerId !== undefined) {
15448      clearTimeout(timerId);
15449    }
15450    lastInvokeTime = 0;
15451    lastArgs = lastCallTime = lastThis = timerId = undefined;
15452  }
15453
15454  function flush() {
15455    return timerId === undefined ? result : trailingEdge(now());
15456  }
15457
15458  function debounced() {
15459    var time = now(),
15460        isInvoking = shouldInvoke(time);
15461
15462    lastArgs = arguments;
15463    lastThis = this;
15464    lastCallTime = time;
15465
15466    if (isInvoking) {
15467      if (timerId === undefined) {
15468        return leadingEdge(lastCallTime);
15469      }
15470      if (maxing) {
15471        // Handle invocations in a tight loop.
15472        clearTimeout(timerId);
15473        timerId = setTimeout(timerExpired, wait);
15474        return invokeFunc(lastCallTime);
15475      }
15476    }
15477    if (timerId === undefined) {
15478      timerId = setTimeout(timerExpired, wait);
15479    }
15480    return result;
15481  }
15482  debounced.cancel = cancel;
15483  debounced.flush = flush;
15484  return debounced;
15485}
15486
15487module.exports = debounce;
15488
15489
15490/***/ }),
15491/* 288 */
15492/***/ (function(module, exports, __webpack_require__) {
15493
15494var root = __webpack_require__(5);
15495
15496/**
15497 * Gets the timestamp of the number of milliseconds that have elapsed since
15498 * the Unix epoch (1 January 1970 00:00:00 UTC).
15499 *
15500 * @static
15501 * @memberOf _
15502 * @since 2.4.0
15503 * @category Date
15504 * @returns {number} Returns the timestamp.
15505 * @example
15506 *
15507 * _.defer(function(stamp) {
15508 *   console.log(_.now() - stamp);
15509 * }, _.now());
15510 * // => Logs the number of milliseconds it took for the deferred invocation.
15511 */
15512var now = function() {
15513  return root.Date.now();
15514};
15515
15516module.exports = now;
15517
15518
15519/***/ }),
15520/* 289 */
15521/***/ (function(module, exports, __webpack_require__) {
15522
15523"use strict";
15524
15525
15526Object.defineProperty(exports, "__esModule", {
15527  value: true
15528});
15529
15530var _quickEffects = __webpack_require__(290);
15531
15532Object.keys(_quickEffects).forEach(function (key) {
15533  if (key === "default" || key === "__esModule") return;
15534  Object.defineProperty(exports, key, {
15535    enumerable: true,
15536    get: function get() {
15537      return _quickEffects[key];
15538    }
15539  });
15540});
15541
15542/***/ }),
15543/* 290 */
15544/***/ (function(module, exports, __webpack_require__) {
15545
15546"use strict";
15547
15548
15549Object.defineProperty(exports, "__esModule", {
15550  value: true
15551});
15552exports.isQuickEffect = void 0;
15553
15554var _constants = __webpack_require__(2);
15555
15556var QuickEffectsIdList = Object.keys(_constants.QuickEffectIds);
15557
15558var isQuickEffect = function isQuickEffect(actionTypeId) {
15559  return QuickEffectsIdList.includes(actionTypeId);
15560};
15561
15562exports.isQuickEffect = isQuickEffect;
15563
15564/***/ }),
15565/* 291 */
15566/***/ (function(module, exports, __webpack_require__) {
15567
15568"use strict";
15569
15570
15571var _interopRequireDefault = __webpack_require__(0);
15572
15573var _typeof2 = _interopRequireDefault(__webpack_require__(21));
15574
15575Object.defineProperty(exports, "__esModule", {
15576  value: true
15577});
15578exports.setStyle = setStyle;
15579exports.getStyle = getStyle;
15580exports.getProperty = getProperty;
15581exports.matchSelector = matchSelector;
15582exports.getQuerySelector = getQuerySelector;
15583exports.getValidDocument = getValidDocument;
15584exports.queryDocument = queryDocument;
15585exports.elementContains = elementContains;
15586exports.isSiblingNode = isSiblingNode;
15587exports.getChildElements = getChildElements;
15588exports.getSiblingElements = getSiblingElements;
15589exports.getRefType = getRefType;
15590exports.getClosestElement = void 0;
15591
15592var _shared = __webpack_require__(10);
15593
15594var _constants = __webpack_require__(2);
15595/* eslint-env browser */
15596
15597
15598var ELEMENT_MATCHES = _shared.IX2BrowserSupport.ELEMENT_MATCHES;
15599var _constants$IX2EngineC = _constants.IX2EngineConstants,
15600    IX2_ID_DELIMITER = _constants$IX2EngineC.IX2_ID_DELIMITER,
15601    HTML_ELEMENT = _constants$IX2EngineC.HTML_ELEMENT,
15602    PLAIN_OBJECT = _constants$IX2EngineC.PLAIN_OBJECT,
15603    WF_PAGE = _constants$IX2EngineC.WF_PAGE;
15604
15605function setStyle(element, prop, value) {
15606  // $FlowIgnore — flow complains that prop should be a number. Will need to update upstream
15607  element.style[prop] = value;
15608}
15609
15610function getStyle(element, prop) {
15611  // $FlowIgnore — flow complains that prop should be a number. Will need to update upstream
15612  return element.style[prop];
15613}
15614
15615function getProperty(element, prop) {
15616  // $FlowIgnore — flow complains that prop should be a number. Will need to update upstream
15617  return element[prop];
15618}
15619
15620function matchSelector(selector) {
15621  // $FlowIgnore — ELEMENT_MATCHES is the name of the method on the element's prototype depending on browser
15622  return function (element) {
15623    return element[ELEMENT_MATCHES](selector);
15624  };
15625}
15626
15627function getQuerySelector(_ref) {
15628  var id = _ref.id,
15629      selector = _ref.selector;
15630
15631  if (id) {
15632    var nodeId = id;
15633
15634    if (id.indexOf(IX2_ID_DELIMITER) !== -1) {
15635      var pair = id.split(IX2_ID_DELIMITER);
15636      var pageId = pair[0];
15637      nodeId = pair[1]; // Short circuit query if we're on the wrong page
15638      // $FlowIgnore — if documentElement is null crash
15639
15640      if (pageId !== document.documentElement.getAttribute(WF_PAGE)) {
15641        return null;
15642      }
15643    }
15644
15645    return "[data-w-id^=\"".concat(nodeId, "\"]");
15646  }
15647
15648  return selector;
15649}
15650
15651function getValidDocument(pageId) {
15652  if (pageId == null || // $FlowIgnore — if documentElement is null crash
15653  pageId === document.documentElement.getAttribute(WF_PAGE)) {
15654    return document;
15655  }
15656
15657  return null;
15658}
15659
15660function queryDocument(baseSelector, descendantSelector) {
15661  return Array.prototype.slice.call(document.querySelectorAll(descendantSelector ? baseSelector + ' ' + descendantSelector : baseSelector));
15662}
15663
15664function elementContains(parent, child) {
15665  return parent.contains(child);
15666}
15667
15668function isSiblingNode(a, b) {
15669  return a !== b && a.parentNode === b.parentNode;
15670}
15671
15672function getChildElements(sourceElements) {
15673  var childElements = [];
15674
15675  for (var i = 0, _ref2 = sourceElements || [], length = _ref2.length; i < length; i++) {
15676    var children = sourceElements[i].children;
15677    var childCount = children.length;
15678
15679    if (!childCount) {
15680      continue;
15681    }
15682
15683    for (var j = 0; j < childCount; j++) {
15684      childElements.push(children[j]);
15685    }
15686  }
15687
15688  return childElements;
15689} // $FlowFixMe
15690
15691
15692function getSiblingElements() {
15693  var sourceElements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
15694  var elements = [];
15695  var parentCache = [];
15696
15697  for (var i = 0, length = sourceElements.length; i < length; i++) {
15698    var parentNode = sourceElements[i].parentNode;
15699
15700    if (!parentNode || !parentNode.children || !parentNode.children.length) {
15701      continue;
15702    }
15703
15704    if (parentCache.indexOf(parentNode) !== -1) {
15705      continue;
15706    }
15707
15708    parentCache.push(parentNode);
15709    var el = parentNode.firstElementChild;
15710
15711    while (el != null) {
15712      if (sourceElements.indexOf(el) === -1) {
15713        elements.push(el);
15714      }
15715
15716      el = el.nextElementSibling;
15717    }
15718  }
15719
15720  return elements;
15721}
15722
15723var getClosestElement = Element.prototype.closest ? function (element, selector) {
15724  // $FlowIgnore — ELEMENT_MATCHES is the name of the method on the element's prototype depending on browser
15725  if (!document.documentElement.contains(element)) {
15726    return null;
15727  }
15728
15729  return element.closest(selector);
15730} : function (element, selector) {
15731  // $FlowIgnore — if documentElement is null crash
15732  if (!document.documentElement.contains(element)) {
15733    return null;
15734  }
15735
15736  var el = element;
15737
15738  do {
15739    // $FlowIgnore — if documentElement is null crash
15740    if (el[ELEMENT_MATCHES] && el[ELEMENT_MATCHES](selector)) {
15741      return el;
15742    }
15743
15744    el = el.parentNode;
15745  } while (el != null);
15746
15747  return null;
15748};
15749exports.getClosestElement = getClosestElement;
15750
15751function getRefType(ref) {
15752  if (ref != null && (0, _typeof2["default"])(ref) == 'object') {
15753    return ref instanceof Element ? HTML_ELEMENT : PLAIN_OBJECT;
15754  }
15755
15756  return null;
15757}
15758
15759/***/ }),
15760/* 292 */
15761/***/ (function(module, exports, __webpack_require__) {
15762
15763"use strict";
15764
15765
15766var _interopRequireDefault2 = __webpack_require__(0);
15767
15768var _defineProperty2 = _interopRequireDefault2(__webpack_require__(27));
15769
15770var _typeof2 = _interopRequireDefault2(__webpack_require__(21));
15771
15772var _default2;
15773
15774var _interopRequireDefault = __webpack_require__(0);
15775
15776Object.defineProperty(exports, "__esModule", {
15777  value: true
15778});
15779exports["default"] = void 0;
15780
15781var _extends2 = _interopRequireDefault(__webpack_require__(28));
15782
15783var _flow = _interopRequireDefault(__webpack_require__(293));
15784
15785var _get = _interopRequireDefault(__webpack_require__(35));
15786
15787var _clamp = _interopRequireDefault(__webpack_require__(312));
15788
15789var _constants = __webpack_require__(2);
15790
15791var _IX2VanillaEngine = __webpack_require__(114);
15792
15793var _IX2EngineActions = __webpack_require__(61);
15794
15795var _shared = __webpack_require__(10);
15796/* eslint-env browser */
15797
15798
15799var _constants$EventTypeC = _constants.EventTypeConsts,
15800    MOUSE_CLICK = _constants$EventTypeC.MOUSE_CLICK,
15801    MOUSE_SECOND_CLICK = _constants$EventTypeC.MOUSE_SECOND_CLICK,
15802    MOUSE_DOWN = _constants$EventTypeC.MOUSE_DOWN,
15803    MOUSE_UP = _constants$EventTypeC.MOUSE_UP,
15804    MOUSE_OVER = _constants$EventTypeC.MOUSE_OVER,
15805    MOUSE_OUT = _constants$EventTypeC.MOUSE_OUT,
15806    DROPDOWN_CLOSE = _constants$EventTypeC.DROPDOWN_CLOSE,
15807    DROPDOWN_OPEN = _constants$EventTypeC.DROPDOWN_OPEN,
15808    SLIDER_ACTIVE = _constants$EventTypeC.SLIDER_ACTIVE,
15809    SLIDER_INACTIVE = _constants$EventTypeC.SLIDER_INACTIVE,
15810    TAB_ACTIVE = _constants$EventTypeC.TAB_ACTIVE,
15811    TAB_INACTIVE = _constants$EventTypeC.TAB_INACTIVE,
15812    NAVBAR_CLOSE = _constants$EventTypeC.NAVBAR_CLOSE,
15813    NAVBAR_OPEN = _constants$EventTypeC.NAVBAR_OPEN,
15814    MOUSE_MOVE = _constants$EventTypeC.MOUSE_MOVE,
15815    PAGE_SCROLL_DOWN = _constants$EventTypeC.PAGE_SCROLL_DOWN,
15816    SCROLL_INTO_VIEW = _constants$EventTypeC.SCROLL_INTO_VIEW,
15817    SCROLL_OUT_OF_VIEW = _constants$EventTypeC.SCROLL_OUT_OF_VIEW,
15818    PAGE_SCROLL_UP = _constants$EventTypeC.PAGE_SCROLL_UP,
15819    SCROLLING_IN_VIEW = _constants$EventTypeC.SCROLLING_IN_VIEW,
15820    PAGE_FINISH = _constants$EventTypeC.PAGE_FINISH,
15821    ECOMMERCE_CART_CLOSE = _constants$EventTypeC.ECOMMERCE_CART_CLOSE,
15822    ECOMMERCE_CART_OPEN = _constants$EventTypeC.ECOMMERCE_CART_OPEN,
15823    PAGE_START = _constants$EventTypeC.PAGE_START,
15824    PAGE_SCROLL = _constants$EventTypeC.PAGE_SCROLL;
15825var COMPONENT_ACTIVE = 'COMPONENT_ACTIVE';
15826var COMPONENT_INACTIVE = 'COMPONENT_INACTIVE';
15827var COLON_DELIMITER = _constants.IX2EngineConstants.COLON_DELIMITER;
15828var getNamespacedParameterId = _shared.IX2VanillaUtils.getNamespacedParameterId;
15829
15830var composableFilter = function composableFilter(predicate) {
15831  return function (options) {
15832    if ((0, _typeof2["default"])(options) === 'object' && predicate(options)) {
15833      return true;
15834    }
15835
15836    return options;
15837  };
15838};
15839
15840var isElement = composableFilter(function (_ref) {
15841  var element = _ref.element,
15842      nativeEvent = _ref.nativeEvent;
15843  return element === nativeEvent.target;
15844});
15845var containsElement = composableFilter(function (_ref2) {
15846  var element = _ref2.element,
15847      nativeEvent = _ref2.nativeEvent;
15848  return element.contains(nativeEvent.target);
15849});
15850var isOrContainsElement = (0, _flow["default"])([isElement, containsElement]);
15851
15852var getAutoStopEvent = function getAutoStopEvent(store, autoStopEventId) {
15853  if (autoStopEventId) {
15854    var _store$getState = store.getState(),
15855        ixData = _store$getState.ixData;
15856
15857    var events = ixData.events;
15858    var eventToStop = events[autoStopEventId];
15859
15860    if (eventToStop && !AUTO_STOP_DISABLED_EVENTS[eventToStop.eventTypeId]) {
15861      return eventToStop;
15862    }
15863  }
15864
15865  return null;
15866};
15867
15868var hasAutoStopEvent = function hasAutoStopEvent(_ref3) {
15869  var store = _ref3.store,
15870      event = _ref3.event;
15871  var eventAction = event.action;
15872  var autoStopEventId = eventAction.config.autoStopEventId;
15873  return Boolean(getAutoStopEvent(store, autoStopEventId));
15874};
15875
15876var actionGroupCreator = function actionGroupCreator(_ref4, state) {
15877  var store = _ref4.store,
15878      event = _ref4.event,
15879      element = _ref4.element,
15880      eventStateKey = _ref4.eventStateKey;
15881  var eventAction = event.action,
15882      eventId = event.id;
15883  var _eventAction$config = eventAction.config,
15884      actionListId = _eventAction$config.actionListId,
15885      autoStopEventId = _eventAction$config.autoStopEventId;
15886  var eventToStop = getAutoStopEvent(store, autoStopEventId);
15887
15888  if (eventToStop) {
15889    (0, _IX2VanillaEngine.stopActionGroup)({
15890      store: store,
15891      eventId: autoStopEventId,
15892      eventTarget: element,
15893      eventStateKey: autoStopEventId + COLON_DELIMITER + eventStateKey.split(COLON_DELIMITER)[1],
15894      actionListId: (0, _get["default"])(eventToStop, 'action.config.actionListId')
15895    });
15896  }
15897
15898  (0, _IX2VanillaEngine.stopActionGroup)({
15899    store: store,
15900    eventId: eventId,
15901    eventTarget: element,
15902    eventStateKey: eventStateKey,
15903    actionListId: actionListId
15904  });
15905  (0, _IX2VanillaEngine.startActionGroup)({
15906    store: store,
15907    eventId: eventId,
15908    eventTarget: element,
15909    eventStateKey: eventStateKey,
15910    actionListId: actionListId
15911  });
15912  return state;
15913}; // $FlowFixMe
15914
15915
15916var withFilter = function withFilter(filter, handler) {
15917  return function (options, state) {
15918    return (// $FlowFixMe
15919      filter(options, state) === true ? handler(options, state) : state
15920    );
15921  };
15922};
15923
15924var baseActionGroupOptions = {
15925  handler: withFilter(isOrContainsElement, actionGroupCreator)
15926};
15927var baseActivityActionGroupOptions = (0, _extends2["default"])({}, baseActionGroupOptions, {
15928  types: [COMPONENT_ACTIVE, COMPONENT_INACTIVE].join(' ')
15929});
15930var SCROLL_EVENT_TYPES = [{
15931  target: window,
15932  types: 'resize orientationchange',
15933  throttle: true
15934}, {
15935  target: document,
15936  types: 'scroll wheel readystatechange IX2_PAGE_UPDATE',
15937  throttle: true
15938}];
15939var MOUSE_OVER_OUT_TYPES = 'mouseover mouseout';
15940var baseScrollActionGroupOptions = {
15941  types: SCROLL_EVENT_TYPES
15942};
15943var AUTO_STOP_DISABLED_EVENTS = {
15944  PAGE_START: PAGE_START,
15945  PAGE_FINISH: PAGE_FINISH
15946};
15947
15948var getDocumentState = function () {
15949  var supportOffset = window.pageXOffset !== undefined;
15950  var isCSS1Compat = document.compatMode === 'CSS1Compat';
15951  var rootElement = isCSS1Compat ? document.documentElement : document.body;
15952  return function () {
15953    return {
15954      // $FlowFixMe
15955      scrollLeft: supportOffset ? window.pageXOffset : rootElement.scrollLeft,
15956      // $FlowFixMe
15957      scrollTop: supportOffset ? window.pageYOffset : rootElement.scrollTop,
15958      // required to remove elasticity in Safari scrolling.
15959      stiffScrollTop: (0, _clamp["default"])( // $FlowFixMe
15960      supportOffset ? window.pageYOffset : rootElement.scrollTop, 0, // $FlowFixMe
15961      rootElement.scrollHeight - window.innerHeight),
15962      // $FlowFixMe
15963      scrollWidth: rootElement.scrollWidth,
15964      // $FlowFixMe
15965      scrollHeight: rootElement.scrollHeight,
15966      // $FlowFixMe
15967      clientWidth: rootElement.clientWidth,
15968      // $FlowFixMe
15969      clientHeight: rootElement.clientHeight,
15970      innerWidth: window.innerWidth,
15971      innerHeight: window.innerHeight
15972    };
15973  };
15974}();
15975
15976var areBoxesIntersecting = function areBoxesIntersecting(a, b) {
15977  return !(a.left > b.right || a.right < b.left || a.top > b.bottom || a.bottom < b.top);
15978};
15979
15980var isElementHovered = function isElementHovered(_ref5) {
15981  var element = _ref5.element,
15982      nativeEvent = _ref5.nativeEvent;
15983  var type = nativeEvent.type,
15984      target = nativeEvent.target,
15985      relatedTarget = nativeEvent.relatedTarget;
15986  var containsTarget = element.contains(target);
15987
15988  if (type === 'mouseover' && containsTarget) {
15989    return true;
15990  }
15991
15992  var containsRelated = element.contains(relatedTarget);
15993
15994  if (type === 'mouseout' && containsTarget && containsRelated) {
15995    return true;
15996  }
15997
15998  return false;
15999};
16000
16001var isElementVisible = function isElementVisible(options) {
16002  var element = options.element,
16003      config = options.event.config;
16004
16005  var _getDocumentState = getDocumentState(),
16006      clientWidth = _getDocumentState.clientWidth,
16007      clientHeight = _getDocumentState.clientHeight;
16008
16009  var scrollOffsetValue = config.scrollOffsetValue;
16010  var scrollOffsetUnit = config.scrollOffsetUnit;
16011  var isPX = scrollOffsetUnit === 'PX';
16012  var offsetPadding = isPX ? scrollOffsetValue : clientHeight * (scrollOffsetValue || 0) / 100;
16013  return areBoxesIntersecting(element.getBoundingClientRect(), {
16014    left: 0,
16015    top: offsetPadding,
16016    right: clientWidth,
16017    bottom: clientHeight - offsetPadding
16018  });
16019};
16020
16021var whenComponentActiveChange = function whenComponentActiveChange(handler) {
16022  return function (options, oldState) {
16023    var type = options.nativeEvent.type; // prettier-ignore
16024
16025    var isActive = [COMPONENT_ACTIVE, COMPONENT_INACTIVE].indexOf(type) !== -1 ? type === COMPONENT_ACTIVE : oldState.isActive;
16026    var newState = (0, _extends2["default"])({}, oldState, {
16027      isActive: isActive
16028    });
16029
16030    if (!oldState || newState.isActive !== oldState.isActive) {
16031      return handler(options, newState) || newState;
16032    }
16033
16034    return newState;
16035  };
16036};
16037
16038var whenElementHoverChange = function whenElementHoverChange(handler) {
16039  return function (options, oldState) {
16040    var newState = {
16041      elementHovered: isElementHovered(options)
16042    };
16043
16044    if (oldState ? newState.elementHovered !== oldState.elementHovered : newState.elementHovered) {
16045      return handler(options, newState) || newState;
16046    }
16047
16048    return newState;
16049  };
16050}; // $FlowFixMe
16051
16052
16053var whenElementVisibiltyChange = function whenElementVisibiltyChange(handler) {
16054  return function (options, oldState) {
16055    var newState = (0, _extends2["default"])({}, oldState, {
16056      elementVisible: isElementVisible(options)
16057    });
16058
16059    if (oldState ? newState.elementVisible !== oldState.elementVisible : newState.elementVisible) {
16060      return handler(options, newState) || newState;
16061    }
16062
16063    return newState;
16064  };
16065}; // $FlowFixMe
16066
16067
16068var whenScrollDirectionChange = function whenScrollDirectionChange(handler) {
16069  return function (options) {
16070    var oldState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
16071
16072    var _getDocumentState2 = getDocumentState(),
16073        scrollTop = _getDocumentState2.stiffScrollTop,
16074        scrollHeight = _getDocumentState2.scrollHeight,
16075        innerHeight = _getDocumentState2.innerHeight;
16076
16077    var _options$event = options.event,
16078        config = _options$event.config,
16079        eventTypeId = _options$event.eventTypeId;
16080    var scrollOffsetValue = config.scrollOffsetValue,
16081        scrollOffsetUnit = config.scrollOffsetUnit;
16082    var isPX = scrollOffsetUnit === 'PX';
16083    var scrollHeightBounds = scrollHeight - innerHeight; // percent top since innerHeight may change for mobile devices which also changes the scrollTop value.
16084
16085    var percentTop = Number((scrollTop / scrollHeightBounds).toFixed(2)); // no state change
16086
16087    if (oldState && oldState.percentTop === percentTop) {
16088      return oldState;
16089    }
16090
16091    var scrollTopPadding = (isPX ? scrollOffsetValue : innerHeight * (scrollOffsetValue || 0) / 100) / scrollHeightBounds;
16092    var scrollingDown;
16093    var scrollDirectionChanged;
16094    var anchorTop = 0;
16095
16096    if (oldState) {
16097      scrollingDown = percentTop > oldState.percentTop;
16098      scrollDirectionChanged = oldState.scrollingDown !== scrollingDown;
16099      anchorTop = scrollDirectionChanged ? percentTop : oldState.anchorTop;
16100    }
16101
16102    var inBounds = eventTypeId === PAGE_SCROLL_DOWN ? percentTop >= anchorTop + scrollTopPadding : percentTop <= anchorTop - scrollTopPadding;
16103    var newState = (0, _extends2["default"])({}, oldState, {
16104      percentTop: percentTop,
16105      inBounds: inBounds,
16106      anchorTop: anchorTop,
16107      scrollingDown: scrollingDown
16108    });
16109
16110    if (oldState && inBounds && (scrollDirectionChanged || newState.inBounds !== oldState.inBounds)) {
16111      return handler(options, newState) || newState;
16112    }
16113
16114    return newState;
16115  };
16116};
16117
16118var pointIntersects = function pointIntersects(point, rect) {
16119  return point.left > rect.left && point.left < rect.right && point.top > rect.top && point.top < rect.bottom;
16120};
16121
16122var whenPageLoadFinish = function whenPageLoadFinish(handler) {
16123  return function (options, oldState) {
16124    var newState = {
16125      finished: document.readyState === 'complete'
16126    };
16127
16128    if (newState.finished && !(oldState && oldState.finshed)) {
16129      handler(options);
16130    }
16131
16132    return newState;
16133  };
16134};
16135
16136var whenPageLoadStart = function whenPageLoadStart(handler) {
16137  return function (options, oldState) {
16138    var newState = {
16139      started: true
16140    };
16141
16142    if (!oldState) {
16143      handler(options);
16144    }
16145
16146    return newState;
16147  };
16148};
16149
16150var whenClickCountChange = function whenClickCountChange(handler) {
16151  return function (options) {
16152    var oldState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
16153      clickCount: 0
16154    };
16155    var newState = {
16156      clickCount: oldState.clickCount % 2 + 1
16157    };
16158
16159    if (newState.clickCount !== oldState.clickCount) {
16160      return handler(options, newState) || newState;
16161    }
16162
16163    return newState;
16164  };
16165};
16166
16167var getComponentActiveOptions = function getComponentActiveOptions() {
16168  var allowNestedChildrenEvents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
16169  return (0, _extends2["default"])({}, baseActivityActionGroupOptions, {
16170    handler: withFilter(allowNestedChildrenEvents ? isOrContainsElement : isElement, whenComponentActiveChange(function (options, state) {
16171      return state.isActive ? baseActionGroupOptions.handler(options, state) : state;
16172    }))
16173  });
16174};
16175
16176var getComponentInactiveOptions = function getComponentInactiveOptions() {
16177  var allowNestedChildrenEvents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
16178  return (0, _extends2["default"])({}, baseActivityActionGroupOptions, {
16179    handler: withFilter(allowNestedChildrenEvents ? isOrContainsElement : isElement, whenComponentActiveChange(function (options, state) {
16180      return !state.isActive ? baseActionGroupOptions.handler(options, state) : state;
16181    }))
16182  });
16183};
16184
16185var scrollIntoOutOfViewOptions = (0, _extends2["default"])({}, baseScrollActionGroupOptions, {
16186  handler: whenElementVisibiltyChange(function (options, state) {
16187    var elementVisible = state.elementVisible;
16188    var event = options.event,
16189        store = options.store;
16190
16191    var _store$getState2 = store.getState(),
16192        ixData = _store$getState2.ixData;
16193
16194    var events = ixData.events; // trigger the handler only once if only one of SCROLL_INTO or SCROLL_OUT_OF event types
16195    // are registered.
16196
16197    if (!events[event.action.config.autoStopEventId] && state.triggered) {
16198      return state;
16199    }
16200
16201    if (event.eventTypeId === SCROLL_INTO_VIEW === elementVisible) {
16202      actionGroupCreator(options);
16203      return (0, _extends2["default"])({}, state, {
16204        triggered: true
16205      });
16206    } else {
16207      return state;
16208    }
16209  })
16210});
16211var MOUSE_OUT_ROUND_THRESHOLD = 0.05;
16212
16213var _default = (_default2 = {}, (0, _defineProperty2["default"])(_default2, SLIDER_ACTIVE, getComponentActiveOptions()), (0, _defineProperty2["default"])(_default2, SLIDER_INACTIVE, getComponentInactiveOptions()), (0, _defineProperty2["default"])(_default2, DROPDOWN_OPEN, getComponentActiveOptions()), (0, _defineProperty2["default"])(_default2, DROPDOWN_CLOSE, getComponentInactiveOptions()), (0, _defineProperty2["default"])(_default2, NAVBAR_OPEN, getComponentActiveOptions(false)), (0, _defineProperty2["default"])(_default2, NAVBAR_CLOSE, getComponentInactiveOptions(false)), (0, _defineProperty2["default"])(_default2, TAB_ACTIVE, getComponentActiveOptions()), (0, _defineProperty2["default"])(_default2, TAB_INACTIVE, getComponentInactiveOptions()), (0, _defineProperty2["default"])(_default2, ECOMMERCE_CART_OPEN, {
16214  types: 'ecommerce-cart-open',
16215  handler: withFilter(isOrContainsElement, actionGroupCreator)
16216}), (0, _defineProperty2["default"])(_default2, ECOMMERCE_CART_CLOSE, {
16217  types: 'ecommerce-cart-close',
16218  handler: withFilter(isOrContainsElement, actionGroupCreator)
16219}), (0, _defineProperty2["default"])(_default2, MOUSE_CLICK, {
16220  types: 'click',
16221  handler: withFilter(isOrContainsElement, whenClickCountChange(function (options, _ref6) {
16222    var clickCount = _ref6.clickCount;
16223
16224    if (hasAutoStopEvent(options)) {
16225      clickCount === 1 && actionGroupCreator(options);
16226    } else {
16227      actionGroupCreator(options);
16228    }
16229  }))
16230}), (0, _defineProperty2["default"])(_default2, MOUSE_SECOND_CLICK, {
16231  types: 'click',
16232  handler: withFilter(isOrContainsElement, whenClickCountChange(function (options, _ref7) {
16233    var clickCount = _ref7.clickCount;
16234
16235    if (clickCount === 2) {
16236      actionGroupCreator(options);
16237    }
16238  }))
16239}), (0, _defineProperty2["default"])(_default2, MOUSE_DOWN, (0, _extends2["default"])({}, baseActionGroupOptions, {
16240  types: 'mousedown'
16241})), (0, _defineProperty2["default"])(_default2, MOUSE_UP, (0, _extends2["default"])({}, baseActionGroupOptions, {
16242  types: 'mouseup'
16243})), (0, _defineProperty2["default"])(_default2, MOUSE_OVER, {
16244  types: MOUSE_OVER_OUT_TYPES,
16245  handler: withFilter(isOrContainsElement, whenElementHoverChange(function (options, state) {
16246    if (state.elementHovered) {
16247      actionGroupCreator(options);
16248    }
16249  }))
16250}), (0, _defineProperty2["default"])(_default2, MOUSE_OUT, {
16251  types: MOUSE_OVER_OUT_TYPES,
16252  handler: withFilter(isOrContainsElement, whenElementHoverChange(function (options, state) {
16253    if (!state.elementHovered) {
16254      actionGroupCreator(options);
16255    }
16256  }))
16257}), (0, _defineProperty2["default"])(_default2, MOUSE_MOVE, {
16258  types: 'mousemove mouseout scroll',
16259  handler: function handler( // $FlowFixMe
16260  _ref8) {
16261    var store = _ref8.store,
16262        element = _ref8.element,
16263        eventConfig = _ref8.eventConfig,
16264        nativeEvent = _ref8.nativeEvent,
16265        eventStateKey = _ref8.eventStateKey;
16266    var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
16267      clientX: 0,
16268      clientY: 0,
16269      pageX: 0,
16270      pageY: 0
16271    };
16272    var basedOn = eventConfig.basedOn,
16273        selectedAxis = eventConfig.selectedAxis,
16274        continuousParameterGroupId = eventConfig.continuousParameterGroupId,
16275        reverse = eventConfig.reverse,
16276        _eventConfig$restingS = eventConfig.restingState,
16277        restingState = _eventConfig$restingS === void 0 ? 0 : _eventConfig$restingS;
16278    var _nativeEvent$clientX = nativeEvent.clientX,
16279        clientX = _nativeEvent$clientX === void 0 ? state.clientX : _nativeEvent$clientX,
16280        _nativeEvent$clientY = nativeEvent.clientY,
16281        clientY = _nativeEvent$clientY === void 0 ? state.clientY : _nativeEvent$clientY,
16282        _nativeEvent$pageX = nativeEvent.pageX,
16283        pageX = _nativeEvent$pageX === void 0 ? state.pageX : _nativeEvent$pageX,
16284        _nativeEvent$pageY = nativeEvent.pageY,
16285        pageY = _nativeEvent$pageY === void 0 ? state.pageY : _nativeEvent$pageY;
16286    var isXAxis = selectedAxis === 'X_AXIS';
16287    var isMouseOut = nativeEvent.type === 'mouseout';
16288    var value = restingState / 100;
16289    var namespacedParameterId = continuousParameterGroupId;
16290    var elementHovered = false;
16291
16292    switch (basedOn) {
16293      case _constants.EventBasedOn.VIEWPORT:
16294        {
16295          value = isXAxis ? Math.min(clientX, window.innerWidth) / window.innerWidth : Math.min(clientY, window.innerHeight) / window.innerHeight;
16296          break;
16297        }
16298
16299      case _constants.EventBasedOn.PAGE:
16300        {
16301          var _getDocumentState3 = getDocumentState(),
16302              scrollLeft = _getDocumentState3.scrollLeft,
16303              scrollTop = _getDocumentState3.scrollTop,
16304              scrollWidth = _getDocumentState3.scrollWidth,
16305              scrollHeight = _getDocumentState3.scrollHeight;
16306
16307          value = isXAxis ? Math.min(scrollLeft + pageX, scrollWidth) / scrollWidth : Math.min(scrollTop + pageY, scrollHeight) / scrollHeight;
16308          break;
16309        }
16310
16311      case _constants.EventBasedOn.ELEMENT:
16312      default:
16313        {
16314          namespacedParameterId = getNamespacedParameterId(eventStateKey, continuousParameterGroupId);
16315          var isMouseEvent = nativeEvent.type.indexOf('mouse') === 0; // Use isOrContainsElement for mouse events since they are fired from the target
16316
16317          if (isMouseEvent && isOrContainsElement({
16318            element: element,
16319            nativeEvent: nativeEvent
16320          }) !== true) {
16321            break;
16322          }
16323
16324          var rect = element.getBoundingClientRect();
16325          var left = rect.left,
16326              top = rect.top,
16327              width = rect.width,
16328              height = rect.height; // Otherwise we'll need to calculate the mouse position from the previous handler state
16329          // against the target element's rect
16330
16331          if (!isMouseEvent && !pointIntersects({
16332            left: clientX,
16333            top: clientY
16334          }, rect)) {
16335            break;
16336          }
16337
16338          elementHovered = true;
16339          value = isXAxis ? (clientX - left) / width : (clientY - top) / height;
16340          break;
16341        }
16342    } // cover case where the event is a mouse out, but the value is not quite at 100%
16343
16344
16345    if (isMouseOut && (value > 1 - MOUSE_OUT_ROUND_THRESHOLD || value < MOUSE_OUT_ROUND_THRESHOLD)) {
16346      value = Math.round(value);
16347    } // Only update based on element if the mouse is moving over or has just left the element
16348
16349
16350    if (basedOn !== _constants.EventBasedOn.ELEMENT || elementHovered || // $FlowFixMe
16351    elementHovered !== state.elementHovered) {
16352      value = reverse ? 1 - value : value;
16353      store.dispatch((0, _IX2EngineActions.parameterChanged)(namespacedParameterId, value));
16354    }
16355
16356    return {
16357      elementHovered: elementHovered,
16358      clientX: clientX,
16359      clientY: clientY,
16360      pageX: pageX,
16361      pageY: pageY
16362    };
16363  }
16364}), (0, _defineProperty2["default"])(_default2, PAGE_SCROLL, {
16365  types: SCROLL_EVENT_TYPES,
16366  // $FlowFixMe
16367  handler: function handler(_ref9) {
16368    var store = _ref9.store,
16369        eventConfig = _ref9.eventConfig;
16370    var continuousParameterGroupId = eventConfig.continuousParameterGroupId,
16371        reverse = eventConfig.reverse;
16372
16373    var _getDocumentState4 = getDocumentState(),
16374        scrollTop = _getDocumentState4.scrollTop,
16375        scrollHeight = _getDocumentState4.scrollHeight,
16376        clientHeight = _getDocumentState4.clientHeight;
16377
16378    var value = scrollTop / (scrollHeight - clientHeight);
16379    value = reverse ? 1 - value : value;
16380    store.dispatch((0, _IX2EngineActions.parameterChanged)(continuousParameterGroupId, value));
16381  }
16382}), (0, _defineProperty2["default"])(_default2, SCROLLING_IN_VIEW, {
16383  types: SCROLL_EVENT_TYPES,
16384  handler: function handler( // $FlowFixMe
16385  _ref10) {
16386    var element = _ref10.element,
16387        store = _ref10.store,
16388        eventConfig = _ref10.eventConfig,
16389        eventStateKey = _ref10.eventStateKey;
16390    var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
16391      scrollPercent: 0
16392    };
16393
16394    var _getDocumentState5 = getDocumentState(),
16395        scrollLeft = _getDocumentState5.scrollLeft,
16396        scrollTop = _getDocumentState5.scrollTop,
16397        scrollWidth = _getDocumentState5.scrollWidth,
16398        scrollHeight = _getDocumentState5.scrollHeight,
16399        visibleHeight = _getDocumentState5.clientHeight;
16400
16401    var basedOn = eventConfig.basedOn,
16402        selectedAxis = eventConfig.selectedAxis,
16403        continuousParameterGroupId = eventConfig.continuousParameterGroupId,
16404        startsEntering = eventConfig.startsEntering,
16405        startsExiting = eventConfig.startsExiting,
16406        addEndOffset = eventConfig.addEndOffset,
16407        addStartOffset = eventConfig.addStartOffset,
16408        _eventConfig$addOffse = eventConfig.addOffsetValue,
16409        addOffsetValue = _eventConfig$addOffse === void 0 ? 0 : _eventConfig$addOffse,
16410        _eventConfig$endOffse = eventConfig.endOffsetValue,
16411        endOffsetValue = _eventConfig$endOffse === void 0 ? 0 : _eventConfig$endOffse;
16412    var isXAxis = selectedAxis === 'X_AXIS';
16413
16414    if (basedOn === _constants.EventBasedOn.VIEWPORT) {
16415      var value = isXAxis ? scrollLeft / scrollWidth : scrollTop / scrollHeight;
16416
16417      if (value !== state.scrollPercent) {
16418        store.dispatch((0, _IX2EngineActions.parameterChanged)(continuousParameterGroupId, value));
16419      }
16420
16421      return {
16422        scrollPercent: value
16423      };
16424    } else {
16425      var namespacedParameterId = getNamespacedParameterId(eventStateKey, continuousParameterGroupId);
16426      var elementRect = element.getBoundingClientRect();
16427      var offsetStartPerc = (addStartOffset ? addOffsetValue : 0) / 100;
16428      var offsetEndPerc = (addEndOffset ? endOffsetValue : 0) / 100; // flip the offset percentages depending on start / exit type
16429
16430      offsetStartPerc = startsEntering ? offsetStartPerc : 1 - offsetStartPerc;
16431      offsetEndPerc = startsExiting ? offsetEndPerc : 1 - offsetEndPerc;
16432      var offsetElementTop = elementRect.top + Math.min(elementRect.height * offsetStartPerc, visibleHeight);
16433      var offsetElementBottom = elementRect.top + elementRect.height * offsetEndPerc;
16434      var offsetHeight = offsetElementBottom - offsetElementTop;
16435      var fixedScrollHeight = Math.min(visibleHeight + offsetHeight, scrollHeight);
16436      var fixedScrollTop = Math.min(Math.max(0, visibleHeight - offsetElementTop), fixedScrollHeight);
16437      var fixedScrollPerc = fixedScrollTop / fixedScrollHeight;
16438
16439      if (fixedScrollPerc !== state.scrollPercent) {
16440        store.dispatch((0, _IX2EngineActions.parameterChanged)(namespacedParameterId, fixedScrollPerc));
16441      }
16442
16443      return {
16444        scrollPercent: fixedScrollPerc
16445      };
16446    }
16447  }
16448}), (0, _defineProperty2["default"])(_default2, SCROLL_INTO_VIEW, scrollIntoOutOfViewOptions), (0, _defineProperty2["default"])(_default2, SCROLL_OUT_OF_V
16448IEW, scrollIntoOutOfViewOptions), (0, _defineProperty2["default"])(_default2, PAGE_SCROLL_DOWN, (0, _extends2["default"])({}, baseScrollActionGroupOptions, {
16449  handler: whenScrollDirectionChange(function (options, state) {
16450    if (state.scrollingDown) {
16451      actionGroupCreator(options);
16452    }
16453  })
16454})), (0, _defineProperty2["default"])(_default2, PAGE_SCROLL_UP, (0, _extends2["default"])({}, baseScrollActionGroupOptions, {
16455  handler: whenScrollDirectionChange(function (options, state) {
16456    if (!state.scrollingDown) {
16457      actionGroupCreator(options);
16458    }
16459  })
16460})), (0, _defineProperty2["default"])(_default2, PAGE_FINISH, {
16461  types: 'readystatechange IX2_PAGE_UPDATE',
16462  handler: withFilter(isElement, whenPageLoadFinish(actionGroupCreator))
16463}), (0, _defineProperty2["default"])(_default2, PAGE_START, {
16464  types: 'readystatechange IX2_PAGE_UPDATE',
16465  handler: withFilter(isElement, whenPageLoadStart(actionGroupCreator))
16466}), _default2);
16467
16468exports["default"] = _default;
16469
16470/***/ }),
16471/* 293 */
16472/***/ (function(module, exports, __webpack_require__) {
16473
vendor: 4,744 bytes, lines 16474-16653
16474var createFlow = __webpack_require__(294);
16475
16476/**
16477 * Creates a function that returns the result of invoking the given functions
16478 * with the `this` binding of the created function, where each successive
16479 * invocation is supplied the return value of the previous.
16480 *
16481 * @static
16482 * @memberOf _
16483 * @since 3.0.0
16484 * @category Util
16485 * @param {...(Function|Function[])} [funcs] The functions to invoke.
16486 * @returns {Function} Returns the new composite function.
16487 * @see _.flowRight
16488 * @example
16489 *
16490 * function square(n) {
16491 *   return n * n;
16492 * }
16493 *
16494 * var addSquare = _.flow([_.add, square]);
16495 * addSquare(1, 2);
16496 * // => 9
16497 */
16498var flow = createFlow();
16499
16500module.exports = flow;
16501
16502
16503/***/ }),
16504/* 294 */
16505/***/ (function(module, exports, __webpack_require__) {
16506
16507var LodashWrapper = __webpack_require__(62),
16508    flatRest = __webpack_require__(295),
16509    getData = __webpack_require__(118),
16510    getFuncName = __webpack_require__(119),
16511    isArray = __webpack_require__(1),
16512    isLaziable = __webpack_require__(308);
16513
16514/** Error message constants. */
16515var FUNC_ERROR_TEXT = 'Expected a function';
16516
16517/** Used to compose bitmasks for function metadata. */
16518var WRAP_CURRY_FLAG = 8,
16519    WRAP_PARTIAL_FLAG = 32,
16520    WRAP_ARY_FLAG = 128,
16521    WRAP_REARG_FLAG = 256;
16522
16523/**
16524 * Creates a `_.flow` or `_.flowRight` function.
16525 *
16526 * @private
16527 * @param {boolean} [fromRight] Specify iterating from right to left.
16528 * @returns {Function} Returns the new flow function.
16529 */
16530function createFlow(fromRight) {
16531  return flatRest(function(funcs) {
16532    var length = funcs.length,
16533        index = length,
16534        prereq = LodashWrapper.prototype.thru;
16535
16536    if (fromRight) {
16537      funcs.reverse();
16538    }
16539    while (index--) {
16540      var func = funcs[index];
16541      if (typeof func != 'function') {
16542        throw new TypeError(FUNC_ERROR_TEXT);
16543      }
16544      if (prereq && !wrapper && getFuncName(func) == 'wrapper') {
16545        var wrapper = new LodashWrapper([], true);
16546      }
16547    }
16548    index = wrapper ? index : length;
16549    while (++index < length) {
16550      func = funcs[index];
16551
16552      var funcName = getFuncName(func),
16553          data = funcName == 'wrapper' ? getData(func) : undefined;
16554
16555      if (data && isLaziable(data[0]) &&
16556            data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&
16557            !data[4].length && data[9] == 1
16558          ) {
16559        wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
16560      } else {
16561        wrapper = (func.length == 1 && isLaziable(func))
16562          ? wrapper[funcName]()
16563          : wrapper.thru(func);
16564      }
16565    }
16566    return function() {
16567      var args = arguments,
16568          value = args[0];
16569
16570      if (wrapper && args.length == 1 && isArray(value)) {
16571        return wrapper.plant(value).value();
16572      }
16573      var index = 0,
16574          result = length ? funcs[index].apply(this, args) : value;
16575
16576      while (++index < length) {
16577        result = funcs[index].call(this, result);
16578      }
16579      return result;
16580    };
16581  });
16582}
16583
16584module.exports = createFlow;
16585
16586
16587/***/ }),
16588/* 295 */
16589/***/ (function(module, exports, __webpack_require__) {
16590
16591var flatten = __webpack_require__(296),
16592    overRest = __webpack_require__(299),
16593    setToString = __webpack_require__(301);
16594
16595/**
16596 * A specialized version of `baseRest` which flattens the rest array.
16597 *
16598 * @private
16599 * @param {Function} func The function to apply a rest parameter to.
16600 * @returns {Function} Returns the new function.
16601 */
16602function flatRest(func) {
16603  return setToString(overRest(func, undefined, flatten), func + '');
16604}
16605
16606module.exports = flatRest;
16607
16608
16609/***/ }),
16610/* 296 */
16611/***/ (function(module, exports, __webpack_require__) {
16612
16613var baseFlatten = __webpack_require__(297);
16614
16615/**
16616 * Flattens `array` a single level deep.
16617 *
16618 * @static
16619 * @memberOf _
16620 * @since 0.1.0
16621 * @category Array
16622 * @param {Array} array The array to flatten.
16623 * @returns {Array} Returns the new flattened array.
16624 * @example
16625 *
16626 * _.flatten([1, [2, [3, [4]], 5]]);
16627 * // => [1, 2, [3, [4]], 5]
16628 */
16629function flatten(array) {
16630  var length = array == null ? 0 : array.length;
16631  return length ? baseFlatten(array, 1) : [];
16632}
16633
16634module.exports = flatten;
16635
16636
16637/***/ }),
16638/* 297 */
16639/***/ (function(module, exports, __webpack_require__) {
16640
16641var arrayPush = __webpack_require__(49),
16642    isFlattenable = __webpack_require__(298);
16643
16644/**
16645 * The base implementation of `_.flatten` with support for restricting flattening.
16646 *
16647 * @private
16648 * @param {Array} array The array to flatten.
16649 * @param {number} depth The maximum recursion depth.
16650 * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
16651 * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
16652 * @param {Array} [result=[]] The initial result value.
16653 * @returns {Array} Returns the new flattened array.
vendor: 4,491 bytes, lines 16654-16825
16654 */
16655function baseFlatten(array, depth, predicate, isStrict, result) {
16656  var index = -1,
16657      length = array.length;
16658
16659  predicate || (predicate = isFlattenable);
16660  result || (result = []);
16661
16662  while (++index < length) {
16663    var value = array[index];
16664    if (depth > 0 && predicate(value)) {
16665      if (depth > 1) {
16666        // Recursively flatten arrays (susceptible to call stack limits).
16667        baseFlatten(value, depth - 1, predicate, isStrict, result);
16668      } else {
16669        arrayPush(result, value);
16670      }
16671    } else if (!isStrict) {
16672      result[result.length] = value;
16673    }
16674  }
16675  return result;
16676}
16677
16678module.exports = baseFlatten;
16679
16680
16681/***/ }),
16682/* 298 */
16683/***/ (function(module, exports, __webpack_require__) {
16684
16685var Symbol = __webpack_require__(19),
16686    isArguments = __webpack_require__(34),
16687    isArray = __webpack_require__(1);
16688
16689/** Built-in value references. */
16690var spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;
16691
16692/**
16693 * Checks if `value` is a flattenable `arguments` object or array.
16694 *
16695 * @private
16696 * @param {*} value The value to check.
16697 * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
16698 */
16699function isFlattenable(value) {
16700  return isArray(value) || isArguments(value) ||
16701    !!(spreadableSymbol && value && value[spreadableSymbol]);
16702}
16703
16704module.exports = isFlattenable;
16705
16706
16707/***/ }),
16708/* 299 */
16709/***/ (function(module, exports, __webpack_require__) {
16710
16711var apply = __webpack_require__(300);
16712
16713/* Built-in method references for those with the same name as other `lodash` methods. */
16714var nativeMax = Math.max;
16715
16716/**
16717 * A specialized version of `baseRest` which transforms the rest array.
16718 *
16719 * @private
16720 * @param {Function} func The function to apply a rest parameter to.
16721 * @param {number} [start=func.length-1] The start position of the rest parameter.
16722 * @param {Function} transform The rest array transform.
16723 * @returns {Function} Returns the new function.
16724 */
16725function overRest(func, start, transform) {
16726  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
16727  return function() {
16728    var args = arguments,
16729        index = -1,
16730        length = nativeMax(args.length - start, 0),
16731        array = Array(length);
16732
16733    while (++index < length) {
16734      array[index] = args[start + index];
16735    }
16736    index = -1;
16737    var otherArgs = Array(start + 1);
16738    while (++index < start) {
16739      otherArgs[index] = args[index];
16740    }
16741    otherArgs[start] = transform(array);
16742    return apply(func, this, otherArgs);
16743  };
16744}
16745
16746module.exports = overRest;
16747
16748
16749/***/ }),
16750/* 300 */
16751/***/ (function(module, exports) {
16752
16753/**
16754 * A faster alternative to `Function#apply`, this function invokes `func`
16755 * with the `this` binding of `thisArg` and the arguments of `args`.
16756 *
16757 * @private
16758 * @param {Function} func The function to invoke.
16759 * @param {*} thisArg The `this` binding of `func`.
16760 * @param {Array} args The arguments to invoke `func` with.
16761 * @returns {*} Returns the result of `func`.
16762 */
16763function apply(func, thisArg, args) {
16764  switch (args.length) {
16765    case 0: return func.call(thisArg);
16766    case 1: return func.call(thisArg, args[0]);
16767    case 2: return func.call(thisArg, args[0], args[1]);
16768    case 3: return func.call(thisArg, args[0], args[1], args[2]);
16769  }
16770  return func.apply(thisArg, args);
16771}
16772
16773module.exports = apply;
16774
16775
16776/***/ }),
16777/* 301 */
16778/***/ (function(module, exports, __webpack_require__) {
16779
16780var baseSetToString = __webpack_require__(302),
16781    shortOut = __webpack_require__(304);
16782
16783/**
16784 * Sets the `toString` method of `func` to return `string`.
16785 *
16786 * @private
16787 * @param {Function} func The function to modify.
16788 * @param {Function} string The `toString` result.
16789 * @returns {Function} Returns `func`.
16790 */
16791var setToString = shortOut(baseSetToString);
16792
16793module.exports = setToString;
16794
16795
16796/***/ }),
16797/* 302 */
16798/***/ (function(module, exports, __webpack_require__) {
16799
16800var constant = __webpack_require__(303),
16801    defineProperty = __webpack_require__(116),
16802    identity = __webpack_require__(59);
16803
16804/**
16805 * The base implementation of `setToString` without support for hot loop shorting.
16806 *
16807 * @private
16808 * @param {Function} func The function to modify.
16809 * @param {Function} string The `toString` result.
16810 * @returns {Function} Returns `func`.
16811 */
16812var baseSetToString = !defineProperty ? identity : function(func, string) {
16813  return defineProperty(func, 'toString', {
16814    'configurable': true,
16815    'enumerable': false,
16816    'value': constant(string),
16817    'writable': true
16818  });
16819};
16820
16821module.exports = baseSetToString;
16822
16823
16824/***/ }),
16825/* 303 */
16826/***/ (function(module, exports) {
16827
16828/**
16829 * Creates a function that returns `value`.
16830 *
16831 * @static
16832 * @memberOf _
16833 * @since 2.4.0
16834 * @category Util
16835 * @param {*} value The value to return from the new function.
16836 * @returns {Function} Returns the new constant function.
16837 * @example
16838 *
16839 * var objects = _.times(2, _.constant({ 'a': 1 }));
16840 *
16841 * console.log(objects);
16842 * // => [{ 'a': 1 }, { 'a': 1 }]
16843 *
16844 * console.log(objects[0] === objects[1]);
16845 * // => true
16846 */
16847function constant(value) {
16848  return function() {
16849    return value;
16850  };
16851}
16852
16853module.exports = constant;
16854
16855
16856/***/ }),
16857/* 304 */
16858/***/ (function(module, exports) {
16859
16860/** Used to detect hot functions by number of calls within a span of milliseconds. */
16861var HOT_COUNT = 800,
16862    HOT_SPAN = 16;
16863
16864/* Built-in method references for those with the same name as other `lodash` methods. */
16865var nativeNow = Date.now;
16866
16867/**
16868 * Creates a function that'll short out and invoke `identity` instead
16869 * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
16870 * milliseconds.
16871 *
16872 * @private
16873 * @param {Function} func The function to restrict.
16874 * @returns {Function} Returns the new shortable function.
16875 */
16876function shortOut(func) {
16877  var count = 0,
16878      lastCalled = 0;
16879
16880  return function() {
16881    var stamp = nativeNow(),
16882        remaining = HOT_SPAN - (stamp - lastCalled);
16883
16884    lastCalled = stamp;
16885    if (remaining > 0) {
16886      if (++count >= HOT_COUNT) {
16887        return arguments[0];
16888      }
16889    } else {
16890      count = 0;
16891    }
16892    return func.apply(undefined, arguments);
16893  };
16894}
16895
16896module.exports = shortOut;
16897
16898
16899/***/ }),
16900/* 305 */
16901/***/ (function(module, exports, __webpack_require__) {
16902
16903var WeakMap = __webpack_require__(99);
16904
16905/** Used to store function metadata. */
16906var metaMap = WeakMap && new WeakMap;
16907
16908module.exports = metaMap;
16909
16910
16911/***/ }),
16912/* 306 */
16913/***/ (function(module, exports) {
16914
16915/**
16916 * This method returns `undefined`.
16917 *
16918 * @static
16919 * @memberOf _
16920 * @since 2.3.0
16921 * @category Util
16922 * @example
16923 *
16924 * _.times(2, _.noop);
16925 * // => [undefined, undefined]
16926 */
16927function noop() {
16928  // No operation performed.
16929}
16930
16931module.exports = noop;
16932
16933
16934/***/ }),
16935/* 307 */
16936/***/ (function(module, exports) {
16937
16938/** Used to lookup unminified function names. */
16939var realNames = {};
16940
16941module.exports = realNames;
16942
16943
16944/***/ }),
16945/* 308 */
16946/***/ (function(module, exports, __webpack_require__) {
16947
16948var LazyWrapper = __webpack_require__(64),
16949    getData = __webpack_require__(118),
16950    getFuncName = __webpack_require__(119),
16951    lodash = __webpack_require__(309);
16952
16953/**
16954 * Checks if `func` has a lazy counterpart.
16955 *
16956 * @private
16957 * @param {Function} func The function to check.
16958 * @returns {boolean} Returns `true` if `func` has a lazy counterpart,
16959 *  else `false`.
16960 */
16961function isLaziable(func) {
16962  var funcName = getFuncName(func),
16963      other = lodash[funcName];
16964
16965  if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {
16966    return false;
16967  }
16968  if (func === other) {
16969    return true;
16970  }
16971  var data = getData(other);
16972  return !!data && func === data[0];
16973}
16974
16975module.exports = isLaziable;
16976
16977
16978/***/ }),
16979/* 309 */
16980/***/ (function(module, exports, __webpack_require__) {
16981
16982var LazyWrapper = __webpack_require__(64),
16983    LodashWrapper = __webpack_require__(62),
16984    baseLodash = __webpack_require__(63),
16985    isArray = __webpack_require__(1),
16986    isObjectLike = __webpack_require__(9),
16987    wrapperClone = __webpack_require__(310);
16988
16989/** Used for built-in method references. */
16990var objectProto = Object.prototype;
16991
16992/** Used to check objects for own properties. */
16993var hasOwnProperty = objectProto.hasOwnProperty;
16994
16995/**
16996 * Creates a `lodash` object which wraps `value` to enable implicit method
16997 * chain sequences. Methods that operate on and return arrays, collections,
16998 * and functions can be chained together. Methods that retrieve a single value
16999 * or may return a primitive value will automatically end the chain sequence
17000 * and return the unwrapped value. Otherwise, the value must be unwrapped
17001 * with `_#value`.
17002 *
17003 * Explicit chain sequences, which must be unwrapped with `_#value`, may be
17004 * enabled using `_.chain`.
17005 *
17006 * The execution of chained methods is lazy, that is, it's deferred until
17007 * `_#value` is implicitly or explicitly called.
17008 *
17009 * Lazy evaluation allows several methods to support shortcut fusion.
17010 * Shortcut fusion is an optimization to merge iteratee calls; this avoids
17011 * the creation of intermediate arrays and can greatly reduce the number of
17012 * iteratee executions. Sections of a chain sequence qualify for shortcut
17013 * fusion if the section is applied to an array and iteratees accept only
17014 * one argument. The heuristic for whether a section qualifies for shortcut
17015 * fusion is subject to change.
17016 *
17017 * Chaining is supported in custom builds as long as the `_#value` method is
17018 * directly or indirectly included in the build.
17019 *
17020 * In addition to lodash methods, wrappers have `Array` and `String` methods.
17021 *
17022 * The wrapper `Array` methods are:
17023 * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`
17024 *
17025 * The wrapper `String` methods are:
17026 * `replace` and `split`
17027 *
17028 * The wrapper methods that support shortcut fusion are:
17029 * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,
17030 * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,
17031 * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`
17032 *
17033 * The chainable wrapper methods are:
17034 * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,
17035 * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,
17036 * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,
17037 * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
17038 * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,
17039 * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,
17040 * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,
17041 * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,
17042 * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,
17043 * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,
17044 * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
17045 * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,
17046 * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,
17047 * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,
17048 * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,
17049 * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,
17050 * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,
17051 * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,
17052 * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,
17053 * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,
17054 * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,
17055 * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,
17056 * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,
17057 * `zipObject`, `zipObjectDeep`, and `zipWith`
17058 *
17059 * The wrapper methods that are **not** chainable by default are:
17060 * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
17061 * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,
17062 * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,
17063 * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,
17064 * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,
17065 * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,
17066 * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,
17067 * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,
17068 * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,
17069 * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,
17070 * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
17071 * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,
17072 * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,
17073 * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,
17074 * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,
17075 * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,
17076 * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
17077 * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
17078 * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
17079 * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,
17080 * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,
17081 * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,
17082 * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,
17083 * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,
17084 * `upperFirst`, `value`, and `words`
17085 *
17086 * @name _
17087 * @constructor
17088 * @category Seq
17089 * @param {*} value The value to wrap in a `lodash` instance.
17090 * @returns {Object} Returns the new `lodash` wrapper instance.
17091 * @example
17092 *
17093 * function square(n) {
17094 *   return n * n;
17095 * }
17096 *
17097 * var wrapped = _([1, 2, 3]);
17098 *
17099 * // Returns an unwrapped value.
17100 * wrapped.reduce(_.add);
17101 * // => 6
17102 *
17103 * // Returns a wrapped value.
17104 * var squares = wrapped.map(square);
17105 *
17106 * _.isArray(squares);
17107 * // => false
17108 *
17109 * _.isArray(squares.value());
17110 * // => true
17111 */
17112function lodash(value) {
17113  if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
17114    if (value instanceof LodashWrapper) {
17115      return value;
17116    }
17117    if (hasOwnProperty.call(value, '__wrapped__')) {
17118      return wrapperClone(value);
17119    }
17120  }
17121  return new LodashWrapper(value);
17122}
17123
17124// Ensure wrappers are instances of `baseLodash`.
17125lodash.prototype = baseLodash.prototype;
17126lodash.prototype.constructor = lodash;
17127
17128module.exports = lodash;
17129
17130
17131/***/ }),
17132/* 310 */
17133/***/ (function(module, exports, __webpack_require__) {
17134
17135var LazyWrapper = __webpack_require__(64),
17136    LodashWrapper = __webpack_require__(62),
17137    copyArray = __webpack_require__(311);
17138
17139/**
17140 * Creates a clone of `wrapper`.
17141 *
17142 * @private
17143 * @param {Object} wrapper The wrapper to clone.
17144 * @returns {Object} Returns the cloned wrapper.
17145 */
17146function wrapperClone(wrapper) {
17147  if (wrapper instanceof LazyWrapper) {
17148    return wrapper.clone();
17149  }
17150  var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
17151  result.__actions__ = copyArray(wrapper.__actions__);
17152  result.__index__  = wrapper.__index__;
17153  result.__values__ = wrapper.__values__;
17154  return result;
17155}
17156
17157module.exports = wrapperClone;
17158
17159
17160/***/ }),
17161/* 311 */
17162/***/ (function(module, exports) {
17163
17164/**
17165 * Copies the values of `source` to `array`.
17166 *
17167 * @private
17168 * @param {Array} source The array to copy values from.
17169 * @param {Array} [array=[]] The array to copy values to.
17170 * @returns {Array} Returns `array`.
17171 */
17172function copyArray(source, array) {
17173  var index = -1,
17174      length = source.length;
17175
17176  array || (array = Array(length));
17177  while (++index < length) {
17178    array[index] = source[index];
17179  }
17180  return array;
17181}
17182
17183module.exports = copyArray;
17184
17185
17186/***/ }),
17187/* 312 */
17188/***/ (function(module, exports, __webpack_require__) {
17189
17190var baseClamp = __webpack_require__(313),
17191    toNumber = __webpack_require__(60);
17192
17193/**
17194 * Clamps `number` within the inclusive `lower` and `upper` bounds.
17195 *
17196 * @static
17197 * @memberOf _
17198 * @since 4.0.0
17199 * @category Number
17200 * @param {number} number The number to clamp.
17201 * @param {number} [lower] The lower bound.
17202 * @param {number} upper The upper bound.
17203 * @returns {number} Returns the clamped number.
17204 * @example
17205 *
17206 * _.clamp(-10, -5, 5);
17207 * // => -5
17208 *
17209 * _.clamp(10, -5, 5);
17210 * // => 5
17211 */
17212function clamp(number, lower, upper) {
17213  if (upper === undefined) {
17214    upper = lower;
17215    lower = undefined;
17216  }
17217  if (upper !== undefined) {
17218    upper = toNumber(upper);
17219    upper = upper === upper ? upper : 0;
17220  }
17221  if (lower !== undefined) {
17222    lower = toNumber(lower);
17223    lower = lower === lower ? lower : 0;
17224  }
17225  return baseClamp(toNumber(number), lower, upper);
17226}
17227
17228module.exports = clamp;
17229
17230
17231/***/ }),
17232/* 313 */
17233/***/ (function(module, exports) {
17234
17235/**
17236 * The base implementation of `_.clamp` which doesn't coerce arguments.
17237 *
17238 * @private
17239 * @param {number} number The number to clamp.
17240 * @param {number} [lower] The lower bound.
17241 * @param {number} upper The upper bound.
17242 * @returns {number} Returns the clamped number.
17243 */
17244function baseClamp(number, lower, upper) {
17245  if (number === number) {
17246    if (upper !== undefined) {
17247      number = number <= upper ? number : upper;
17248    }
17249    if (lower !== undefined) {
17250      number = number >= lower ? number : lower;
17251    }
17252  }
17253  return number;
17254}
17255
17256module.exports = baseClamp;
17257
17258
17259/***/ }),
17260/* 314 */
17261/***/ (function(module, exports, __webpack_require__) {
17262
17263"use strict";
17264 // @wf-will-never-add-flow-to-this-file
17265
17266/* globals window, document */
17267
17268/* eslint-disable no-var */
17269
17270/**
17271 * Webflow: Auto-select links to current page or section
17272 */
17273
17274var Webflow = __webpack_require__(3);
17275
17276Webflow.define('links', module.exports = function ($, _) {
17277  var api = {};
17278  var $win = $(window);
17279  var designer;
17280  var inApp = Webflow.env();
17281  var location = window.location;
17282  var tempLink = document.createElement('a');
17283  var linkCurrent = 'w--current';
17284  var indexPage = /index\.(html|php)$/;
17285  var dirList = /\/$/;
17286  var anchors;
17287  var slug; // -----------------------------------
17288  // Module methods
17289
17290  api.ready = api.design = api.preview = init; // -----------------------------------
17291  // Private methods
17292
17293  function init() {
17294    designer = inApp && Webflow.env('design');
17295    slug = Webflow.env('slug') || location.pathname || ''; // Reset scroll listener, init anchors
17296
17297    Webflow.scroll.off(scroll);
17298    anchors = []; // Test all links for a selectable href
17299
17300    var links = document.links;
17301
17302    for (var i = 0; i < links.length; ++i) {
17303      select(links[i]);
17304    } // Listen for scroll if any anchors exist
17305
17306
17307    if (anchors.length) {
17308      Webflow.scroll.on(scroll);
17309      scroll();
17310    }
17311  }
17312
17313  function select(link) {
17314    var href = designer && link.getAttribute('href-disabled') || link.getAttribute('href');
17315    tempLink.href = href; // Ignore any hrefs with a colon to safely avoid all uri schemes
17316
17317    if (href.indexOf(':') >= 0) {
17318      return;
17319    }
17320
17321    var $link = $(link); // Check for all links with hash (eg (this-host)(/this-path)#section) to this page
17322
17323    if (tempLink.hash.length > 1 && tempLink.host + tempLink.pathname === location.host + location.pathname) {
17324      // Ignore any hrefs with Google Translate type hash
17325      // Example: jQuery can't parse $('#googtrans(en|es)')
17326      // https://forum.webflow.com/t/dropdown-menus-not-working-on-site/87140
17327      if (!/^#[a-zA-Z0-9\-\_]+$/.test(tempLink.hash)) {
17328        return;
17329      }
17330
17331      var $section = $(tempLink.hash);
17332      $section.length && anchors.push({
17333        link: $link,
17334        sec: $section,
17335        active: false
17336      });
17337      return;
17338    } // Ignore empty # links
17339
17340
17341    if (href === '#' || href === '') {
17342      return;
17343    } // Determine whether the link should be selected
17344
17345
17346    var match = tempLink.href === location.href || href === slug || indexPage.test(href) && dirList.test(slug);
17347    setClass($link, linkCurrent, match);
17348  }
17349
17350  function scroll() {
17351    var viewTop = $win.scrollTop();
17352    var viewHeight = $win.height(); // Check each anchor for a section in view
17353
17354    _.each(anchors, function (anchor) {
17355      var $link = anchor.link;
17356      var $section = anchor.sec;
17357      var top = $section.offset().top;
17358      var height = $section.outerHeight();
17359      var offset = viewHeight * 0.5;
17360      var active = $section.is(':visible') && top + height - offset >= viewTop && top + offset <= viewTop + viewHeight;
17361
17362      if (anchor.active === active) {
17363        return;
17364      }
17365
17366      anchor.active = active;
17367      setClass($link, linkCurrent, active);
17368    });
17369  }
17370
17371  function setClass($elem, className, add) {
17372    var exists = $elem.hasClass(className);
17373
17374    if (add && exists) {
17375      return;
17376    }
17377
17378    if (!add && !exists) {
17379      return;
17380    }
17381
17382    add ? $elem.addClass(className) : $elem.removeClass(className);
17383  } // Export module
17384
17385
17386  return api;
17387});
17388
17389/***/ }),
17390/* 315 */
17391/***/ (function(module, exports, __webpack_require__) {
17392
17393"use strict";
17394 // @wf-will-never-add-flow-to-this-file
17395
17396/* globals window, document */
17397
17398/* eslint-disable no-var */
17399
17400/**
17401 * Webflow: Smooth scroll
17402 */
17403
17404var Webflow = __webpack_require__(3);
17405
17406Webflow.define('scroll', module.exports = function ($) {
17407  // Native browser events & namespaces used in this module
17408  var CLICK = 'click';
17409  var EMPTY_LINK_NS = '.wf-empty-link';
17410  var SCROLL_NS = '.wf-scroll';
17411  /**
17412   * A collection of namespaced events found in this module.
17413   * Namespaced events encapsulate our code, and make it safer and easier
17414   * for designers to apply custom code overrides.
17415   * @see https://api.jquery.com/on/#event-names
17416   * @typedef {Object.<string>} NamespacedEventsCollection
17417   */
17418
17419  var NS_EVENTS = {
17420    CLICK_EMPTY: CLICK + EMPTY_LINK_NS,
17421    CLICK_SCROLL: CLICK + SCROLL_NS
17422  };
17423  var $doc = $(document);
17424  var win = window;
17425  var loc = win.location;
17426  var history = inIframe() ? null : win.history;
17427  var validHash = /^[a-zA-Z0-9][\w:.-]*$/;
17428  var emptyHrefSelector = 'a[href="#"]';
17429  /**
17430   * Select only links whose href:
17431   * - contains a #
17432   * - is not one of our namespaced TabLink elements
17433   * - is not _only_ a #
17434   */
17435
17436  var localHrefSelector = 'a[href*="#"]:not(.w-tab-link):not(' + emptyHrefSelector + ')';
17437  /**
17438   * The current page url, minus the hash.
17439   * Will be set in the `ready` function
17440   */
17441
17442  var locHref;
17443
17444  function inIframe() {
17445    try {
17446      return Boolean(win.frameElement);
17447    } catch (e) {
17448      return true;
17449    }
17450  }
17451  /**
17452   * Determine if we should execute custom scroll
17453   */
17454
17455
17456  function validateScroll(e) {
17457    if (Webflow.env('design')) {
17458      return;
17459    } // Ignore links being used by jQuery mobile
17460
17461
17462    if (window.$.mobile && $(e.currentTarget).hasClass('ui-link')) {
17463      return;
17464    } // The href property always contains the full url so we can compare
17465    // with the document’s location to only target links on this page.
17466
17467
17468    var parts = this.href.split('#');
17469    var hash = parts[0] === locHref ? parts[1] : null;
17470
17471    if (hash) {
17472      findEl(hash, e);
17473    }
17474  }
17475
17476  function findEl(hash, e) {
17477    if (!validHash.test(hash)) {
17478      return;
17479    }
17480
17481    var el = $('#' + hash);
17482
17483    if (!el.length) {
17484      return;
17485    }
17486
17487    if (e) {
17488      e.preventDefault();
17489      e.stopPropagation();
17490    } // Push new history state
17491
17492
17493    if (loc.hash !== hash && history && history.pushState && // Navigation breaks Chrome when the protocol is `file:`.
17494    !(Webflow.env.chrome && loc.protocol === 'file:')) {
17495      var oldHash = history.state && history.state.hash;
17496
17497      if (oldHash !== hash) {
17498        history.pushState({
17499          hash: hash
17500        }, '', '#' + hash);
17501      }
17502    } // If a fixed header exists, offset for the height
17503
17504
17505    var rootTag = Webflow.env('editor') ? '.w-editor-body' : 'body';
17506    var header = $('header, ' + rootTag + ' > .header, ' + rootTag + ' > .w-nav:not([data-no-scroll])');
17507    var offset = header.css('position') === 'fixed' ? header.outerHeight() : 0;
17508    win.setTimeout(function () {
17509      scroll(el, offset);
17510    }, e ? 0 : 300);
17511  }
17512
17513  function scroll(el, offset) {
17514    var start = $(win).scrollTop();
17515    var end = el.offset().top - offset; // If specified, scroll so that the element ends up in the middle of the viewport
17516
17517    if (el.data('scroll') === 'mid') {
17518      var available = $(win).height() - offset;
17519      var elHeight = el.outerHeight();
17520
17521      if (elHeight < available) {
17522        end -= Math.round((available - elHeight) / 2);
17523      }
17524    }
17525
17526    var mult = 1; // Check for custom time multiplier on the body and the element
17527
17528    $('body').add(el).each(function () {
17529      var time = parseFloat($(this).attr('data-scroll-time'), 10);
17530
17531      if (!isNaN(time) && (time === 0 || time > 0)) {
17532        mult = time;
17533      }
17534    }); // Shim for IE8 and below
17535
17536    if (!Date.now) {
17537      Date.now = function () {
17538        return new Date().getTime();
17539      };
17540    }
17541
17542    var clock = Date.now();
17543
17544    var animate = win.requestAnimationFrame || win.mozRequestAnimationFrame || win.webkitRequestAnimationFrame || function (fn) {
17545      win.setTimeout(fn, 15);
17546    };
17547
17548    var duration = (472.143 * Math.log(Math.abs(start - end) + 125) - 2000) * mult;
17549
17550    var step = function step() {
17551      var elapsed = Date.now() - clock;
17552      win.scroll(0, getY(start, end, elapsed, duration));
17553
17554      if (elapsed <= duration) {
17555        animate(step);
17556      }
17557    };
17558
17559    step();
17560  }
17561
17562  function getY(start, end, elapsed, duration) {
17563    if (elapsed > duration) {
17564      return end;
17565    }
17566
17567    return start + (end - start) * ease(elapsed / duration);
17568  }
17569
17570  function ease(t) {
17571    return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;
17572  }
17573
17574  function ready() {
17575    var CLICK_EMPTY = NS_EVENTS.CLICK_EMPTY,
17576        CLICK_SCROLL = NS_EVENTS.CLICK_SCROLL;
17577    locHref = loc.href.split('#')[0];
17578    $doc.on(CLICK_SCROLL, localHrefSelector, validateScroll);
17579    /**
17580     * Prevent empty hash links from triggering scroll.
17581     * Legacy feature to preserve: use the default "#" link
17582     * to trigger an interaction, and do not want the page
17583     * to scroll to the top.
17584     */
17585
17586    $doc.on(CLICK_EMPTY, emptyHrefSelector, function (e) {
17587      e.preventDefault();
17588    });
17589  } // Export module
17590
17591
17592  return {
17593    ready: ready
17594  };
17595});
17596
17597/***/ }),
17598/* 316 */
17599/***/ (function(module, exports, __webpack_require__) {
17600
17601"use strict";
17602 // @wf-will-never-add-flow-to-this-file
17603
17604/* globals document, window */
17605
17606/* eslint-disable no-var */
17607
17608/**
17609 * Webflow: Touch events
17610 * Supports legacy 'tap' event
17611 * Adds a 'swipe' event to desktop and mobile
17612 */
17613
17614var Webflow = __webpack_require__(3);
17615
17616Webflow.define('touch', module.exports = function ($) {
17617  var api = {};
17618  var getSelection = window.getSelection; // Delegate all legacy 'tap' events to 'click'
17619
17620  $.event.special.tap = {
17621    bindType: 'click',
17622    delegateType: 'click'
17623  };
17624
17625  api.init = function (el) {
17626    el = typeof el === 'string' ? $(el).get(0) : el;
17627    return el ? new Touch(el) : null;
17628  };
17629
17630  function Touch(el) {
17631    var active = false;
17632    var useTouch = false;
17633    var thresholdX = Math.min(Math.round(window.innerWidth * 0.04), 40);
17634    var startX;
17635    var lastX;
17636    el.addEventListener('touchstart', start, false);
17637    el.addEventListener('touchmove', move, false);
17638    el.addEventListener('touchend', end, false);
17639    el.addEventListener('touchcancel', cancel, false);
17640    el.addEventListener('mousedown', start, false);
17641    el.addEventListener('mousemove', move, false);
17642    el.addEventListener('mouseup', end, false);
17643    el.addEventListener('mouseout', cancel, false);
17644
17645    function start(evt) {
17646      // We don’t handle multi-touch events yet.
17647      var touches = evt.touches;
17648
17649      if (touches && touches.length > 1) {
17650        return;
17651      }
17652
17653      active = true;
17654
17655      if (touches) {
17656        useTouch = true;
17657        startX = touches[0].clientX;
17658      } else {
17659        startX = evt.clientX;
17660      }
17661
17662      lastX = startX;
17663    }
17664
17665    function move(evt) {
17666      if (!active) {
17667        return;
17668      }
17669
17670      if (useTouch && evt.type === 'mousemove') {
17671        evt.preventDefault();
17672        evt.stopPropagation();
17673        return;
17674      }
17675
17676      var touches = evt.touches;
17677      var x = touches ? touches[0].clientX : evt.clientX;
17678      var velocityX = x - lastX;
17679      lastX = x; // Allow swipes while pointer is down, but prevent them during text selection
17680
17681      if (Math.abs(velocityX) > thresholdX && getSelection && String(getSelection()) === '') {
17682        triggerEvent('swipe', evt, {
17683          direction: velocityX > 0 ? 'right' : 'left'
17684        });
17685        cancel();
17686      }
17687    }
17688
17689    function end(evt) {
17690      if (!active) {
17691        return;
17692      }
17693
17694      active = false;
17695
17696      if (useTouch && evt.type === 'mouseup') {
17697        evt.preventDefault();
17698        evt.stopPropagation();
17699        useTouch = false;
17700        return;
17701      }
17702    }
17703
17704    function cancel() {
17705      active = false;
17706    }
17707
17708    function destroy() {
17709      el.removeEventListener('touchstart', start, false);
17710      el.removeEventListener('touchmove', move, false);
17711      el.removeEventListener('touchend', end, false);
17712      el.removeEventListener('touchcancel', cancel, false);
17713      el.removeEventListener('mousedown', start, false);
17714      el.removeEventListener('mousemove', move, false);
17715      el.removeEventListener('mouseup', end, false);
17716      el.removeEventListener('mouseout', cancel, false);
17717      el = null;
17718    } // Public instance methods
17719
17720
17721    this.destroy = destroy;
17722  } // Wrap native event to supoprt preventdefault + stopPropagation
17723
17724
17725  function triggerEvent(type, evt, data) {
17726    var newEvent = $.Event(type, {
17727      originalEvent: evt
17728    });
17729    $(evt.target).trigger(newEvent, data);
17730  } // Listen for touch events on all nodes by default.
17731
17732
17733  api.instance = api.init(document); // Export module
17734
17735  return api;
17736});
17737
17738/***/ }),
17739/* 317 */
17740/***/ (function(module, exports, __webpack_require__) {
17741
17742"use strict";
17743 // @wf-will-never-add-flow-to-this-file
17744
17745/* globals window, document */
17746
17747/* eslint-disable no-var */
17748
17749/**
17750 * Webflow: Dropdown component
17751 */
17752
17753var Webflow = __webpack_require__(3);
17754
17755var IXEvents = __webpack_require__(22);
17756
17757var KEY_CODES = {
17758  ARROW_LEFT: 37,
17759  ARROW_UP: 38,
17760  ARROW_RIGHT: 39,
17761  ARROW_DOWN: 40,
17762  ESCAPE: 27,
17763  SPACE: 32,
17764  ENTER: 13,
17765  HOME: 36,
17766  END: 35
17767};
17768var FORCE_CLOSE = true;
17769Webflow.define('dropdown', module.exports = function ($, _) {
17770  var debounce = _.debounce;
17771  var api = {};
17772  var inApp = Webflow.env();
17773  var inPreview = false;
17774  var inDesigner;
17775  var touch = Webflow.env.touch;
17776  var namespace = '.w-dropdown';
17777  var openStateClassName = 'w--open';
17778  var ix = IXEvents.triggers;
17779  var defaultZIndex = 900; // @dropdown-depth
17780
17781  var focusOutEvent = 'focusout' + namespace;
17782  var keydownEvent = 'keydown' + namespace;
17783  var mouseEnterEvent = 'mouseenter' + namespace;
17784  var mouseMoveEvent = 'mousemove' + namespace;
17785  var mouseLeaveEvent = 'mouseleave' + namespace;
17786  var mouseUpEvent = (touch ? 'click' : 'mouseup') + namespace;
17787  var closeEvent = 'w-close' + namespace;
17788  var settingEvent = 'setting' + namespace;
17789  var $doc = $(document);
17790  var $dropdowns; // -----------------------------------
17791  // Module methods
17792
17793  api.ready = init;
17794
17795  api.design = function () {
17796    // Close all when returning from preview
17797    if (inPreview) {
17798      closeAll();
17799    }
17800
17801    inPreview = false;
17802    init();
17803  };
17804
17805  api.preview = function () {
17806    inPreview = true;
17807    init();
17808  }; // -----------------------------------
17809  // Private methods
17810
17811
17812  function init() {
17813    inDesigner = inApp && Webflow.env('design'); // Find all instances on the page
17814
17815    $dropdowns = $doc.find(namespace);
17816    $dropdowns.each(build);
17817  }
17818
17819  function build(i, el) {
17820    var $el = $(el); // Store state in data
17821
17822    var data = $.data(el, namespace);
17823
17824    if (!data) {
17825      data = $.data(el, namespace, {
17826        open: false,
17827        el: $el,
17828        config: {},
17829        selectedIdx: -1
17830      });
17831    }
17832
17833    data.toggle = data.el.children('.w-dropdown-toggle');
17834    data.list = data.el.children('.w-dropdown-list');
17835    data.links = data.list.find('a:not(.w-dropdown .w-dropdown a)');
17836    data.complete = complete(data);
17837    data.mouseLeave = makeMouseLeaveHandler(data);
17838    data.mouseUpOutside = outside(data);
17839    data.mouseMoveOutside = moveOutside(data); // Set config from data attributes
17840
17841    configure(data); // Store the IDs of the toggle button & list
17842
17843    var toggleId = data.toggle.attr('id');
17844    var listId = data.list.attr('id'); // If user did not provide toggle ID, set it
17845
17846    if (!toggleId) {
17847      toggleId = 'w-dropdown-toggle-' + i;
17848    } // If user did not provide list ID, set it
17849
17850
17851    if (!listId) {
17852      listId = 'w-dropdown-list-' + i;
17853    } // Add attributes to toggle element
17854
17855
17856    data.toggle.attr('id', toggleId);
17857    data.toggle.attr('aria-controls', listId);
17858    data.toggle.attr('aria-haspopup', 'menu');
17859    data.toggle.attr('aria-expanded', 'false'); // If toggle element is not a button
17860
17861    if (data.toggle.prop('tagName') !== 'BUTTON') {
17862      // Give it an appropriate role
17863      data.toggle.attr('role', 'button'); // And give it a tabindex if user has not provided one
17864
17865      if (!data.toggle.attr('tabindex')) {
17866        data.toggle.attr('tabindex', '0');
17867      }
17868    } // Add attributes to list element
17869
17870
17871    data.list.attr('id', listId);
17872    data.list.attr('aria-labelledby', toggleId);
17873    /**
17874     * In macOS Safari, links don't take focus on click unless they have
17875     * a tabindex. Without this, the dropdown will break.
17876     * @see https://gist.github.com/cvrebert/68659d0333a578d75372
17877     */
17878
17879    data.links.each(function (idx, link) {
17880      if (!link.hasAttribute('tabindex')) link.setAttribute('tabindex', '0');
17881    }); // Remove old events
17882
17883    data.el.off(namespace);
17884    data.toggle.off(namespace);
17885
17886    if (data.nav) {
17887      data.nav.off(namespace);
17888    }
17889
17890    var initialToggler = makeToggler(data, FORCE_CLOSE);
17891
17892    if (inDesigner) {
17893      data.el.on(settingEvent, makeSettingEventHandler(data));
17894    }
17895
17896    if (!inDesigner) {
17897      // Close in preview mode and clean the data.hovering state
17898      if (inApp) {
17899        data.hovering = false;
17900        close(data);
17901      }
17902
17903      if (data.config.hover) {
17904        data.toggle.on(mouseEnterEvent, makeMouseEnterHandler(data));
17905      }
17906
17907      data.el.on(closeEvent, initialToggler);
17908      data.el.on(keydownEvent, makeDropdownKeydownHandler(data));
17909      data.el.on(focusOutEvent, makeDropdownFousoutHandler(data));
17910      data.toggle.on(mouseUpEvent, initialToggler);
17911      data.toggle.on(keydownEvent, makeToggleKeydownHandler(data));
17912      data.nav = data.el.closest('.w-nav');
17913      data.nav.on(closeEvent, initialToggler);
17914    }
17915  }
17916  /**
17917   * Mutate the data object with a new config property
17918   */
17919
17920
17921  function configure(data) {
17922    // Determine if z-index should be managed
17923    var zIndex = Number(data.el.css('z-index'));
17924    data.manageZ = zIndex === defaultZIndex || zIndex === defaultZIndex + 1;
17925    data.config = {
17926      hover: (data.el.attr('data-hover') === true || data.el.attr('data-hover') === '1') && !touch,
17927      delay: Number(data.el.attr('data-delay')) || 0
17928    };
17929  }
17930
17931  function makeSettingEventHandler(data) {
17932    return function (evt, options) {
17933      options = options || {};
17934      configure(data);
17935      options.open === true && open(data, true);
17936      options.open === false && close(data, {
17937        immediate: true
17938      });
17939    };
17940  }
17941
17942  function makeToggler(data, forceClose) {
17943    return debounce(function (evt) {
17944      if (data.open || evt && evt.type === 'w-close') {
17945        return close(data, {
17946          forceClose: forceClose
17947        });
17948      }
17949
17950      open(data);
17951    });
17952  }
17953
17954  function open(data) {
17955    if (data.open) {
17956      return;
17957    }
17958
17959    closeOthers(data);
17960    data.open = true;
17961    data.list.addClass(openStateClassName);
17962    data.toggle.addClass(openStateClassName);
17963    data.toggle.attr('aria-expanded', 'true'); // ARIA
17964
17965    ix.intro(0, data.el[0]);
17966    Webflow.redraw.up(); // Increase z-index to keep above other managed dropdowns
17967
17968    data.manageZ && data.el.css('z-index', defaultZIndex + 1); // Listen for click outside events
17969
17970    var isEditor = Webflow.env('editor');
17971
17972    if (!inDesigner) {
17973      $doc.on(mouseUpEvent, data.mouseUpOutside);
17974    }
17975
17976    if (data.hovering && !isEditor) {
17977      data.el.on(mouseLeaveEvent, data.mouseLeave);
17978    }
17979
17980    if (data.hovering && isEditor) {
17981      $doc.on(mouseMoveEvent, data.mouseMoveOutside);
17982    } // Clear previous delay
17983
17984
17985    window.clearTimeout(data.delayId);
17986  }
17987
17988  function close(data) {
17989    var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
17990        immediate = _ref.immediate,
17991        forceClose = _ref.forceClose;
17992
17993    if (!data.open) {
17994      return;
17995    } // Do not close hover-based menus if currently hovering
17996
17997
17998    if (data.config.hover && data.hovering && !forceClose) {
17999      return;
18000    }
18001
18002    data.toggle.attr('aria-expanded', 'false');
18003    data.open = false;
18004    var config = data.config;
18005    ix.outro(0, data.el[0]); // Stop listening for click outside events
18006
18007    $doc.off(mouseUpEvent, data.mouseUpOutside);
18008    $doc.off(mouseMoveEvent, data.mouseMoveOutside);
18009    data.el.off(mouseLeaveEvent, data.mouseLeave); // Clear previous delay
18010
18011    window.clearTimeout(data.delayId); // Skip delay during immediate
18012
18013    if (!config.delay || immediate) {
18014      return data.complete();
18015    } // Optionally wait for delay before close
18016
18017
18018    data.delayId = window.setTimeout(data.complete, config.delay);
18019  }
18020
18021  function closeAll() {
18022    $doc.find(namespace).each(function (i, el) {
18023      $(el).triggerHandler(closeEvent);
18024    });
18025  }
18026
18027  function closeOthers(data) {
18028    var self = data.el[0];
18029    $dropdowns.each(function (i, other) {
18030      var $other = $(other);
18031
18032      if ($other.is(self) || $other.has(self).length) {
18033        return;
18034      }
18035
18036      $other.triggerHandler(closeEvent);
18037    });
18038  }
18039
18040  function outside(data) {
18041    // Unbind previous click handler if it exists
18042    if (data.mouseUpOutside) {
18043      $doc.off(mouseUpEvent, data.mouseUpOutside);
18044    } // Close menu when clicked outside
18045
18046
18047    return debounce(function (evt) {
18048      if (!data.open) {
18049        return;
18050      }
18051
18052      var $target = $(evt.target);
18053
18054      if ($target.closest('.w-dropdown-toggle').length) {
18055        return;
18056      }
18057
18058      var isEventOutsideDropdowns = $.inArray(data.el[0], $target.parents(namespace)) === -1;
18059      var isEditor = Webflow.env('editor');
18060
18061      if (isEventOutsideDropdowns) {
18062        if (isEditor) {
18063          var isEventOnDetachedSvg = $target.parents().length === 1 && $target.parents('svg').length === 1;
18064          var isEventOnHoverControls = $target.parents('.w-editor-bem-EditorHoverControls').length;
18065
18066          if (isEventOnDetachedSvg || isEventOnHoverControls) {
18067            return;
18068          }
18069        }
18070
18071        close(data);
18072      }
18073    });
18074  }
18075
18076  function complete(data) {
18077    return function () {
18078      data.list.removeClass(openStateClassName);
18079      data.toggle.removeClass(openStateClassName); // Reset z-index for managed dropdowns
18080
18081      data.manageZ && data.el.css('z-index', '');
18082    };
18083  }
18084
18085  function makeMouseEnterHandler(data) {
18086    return function () {
18087      data.hovering = true;
18088      open(data);
18089    };
18090  }
18091
18092  function makeMouseLeaveHandler(data) {
18093    return function () {
18094      data.hovering = false; // We do not want the list to close upon mouseleave
18095      // if one of the links has focus
18096
18097      if (!data.links.is(':focus')) {
18098        close(data);
18099      }
18100    };
18101  }
18102
18103  function moveOutside(data) {
18104    return debounce(function (evt) {
18105      if (!data.open) {
18106        return;
18107      }
18108
18109      var $target = $(evt.target);
18110      var isEventOutsideDropdowns = $.inArray(data.el[0], $target.parents(namespace)) === -1;
18111
18112      if (isEventOutsideDropdowns) {
18113        var isEventOnHoverControls = $target.parents('.w-editor-bem-EditorHoverControls').length;
18114        var isEventOnHoverToolbar = $target.parents('.w-editor-bem-RTToolbar').length;
18115        var $editorOverlay = $('.w-editor-bem-EditorOverlay');
18116        var isDropdownInEdition = $editorOverlay.find('.w-editor-edit-outline').length || $editorOverlay.find('.w-editor-bem-RTToolbar').length;
18117
18118        if (isEventOnHoverControls || isEventOnHoverToolbar || isDropdownInEdition) {
18119          return;
18120        }
18121
18122        data.hovering = false;
18123        close(data);
18124      }
18125    });
18126  }
18127
18128  function makeDropdownKeydownHandler(data) {
18129    return function (evt) {
18130      // Do not respond to keyboard events in designer or preview mode,
18131      // or if the list is not open
18132      if (inDesigner || inPreview || !data.open) {
18133        return;
18134      } // Realign selectedIdx with the menu item that is currently in focus.
18135      // We need this because we do not track the `Tab` key activity!
18136
18137
18138      data.selectedIdx = data.links.index(document.activeElement); // Evaluate item-selection logic
18139
18140      switch (evt.keyCode) {
18141        case KEY_CODES.HOME:
18142          {
18143            if (!data.open) return;
18144            data.selectedIdx = 0;
18145            focusSelectedLink(data);
18146            return evt.preventDefault();
18147          }
18148
18149        case KEY_CODES.END:
18150          {
18151            if (!data.open) return;
18152            data.selectedIdx = data.links.length - 1;
18153            focusSelectedLink(data);
18154            return evt.preventDefault();
18155          }
18156
18157        case KEY_CODES.ESCAPE:
18158          {
18159            close(data);
18160            data.toggle.focus();
18161            return evt.stopPropagation();
18162          }
18163
18164        case KEY_CODES.ARROW_RIGHT:
18165        case KEY_CODES.ARROW_DOWN:
18166          {
18167            data.selectedIdx = Math.min(data.links.length - 1, data.selectedIdx + 1);
18168            focusSelectedLink(data);
18169            return evt.preventDefault();
18170          }
18171
18172        case KEY_CODES.ARROW_LEFT:
18173        case KEY_CODES.ARROW_UP:
18174          {
18175            data.selectedIdx = Math.max(-1, data.selectedIdx - 1);
18176            focusSelectedLink(data);
18177            return evt.preventDefault();
18178          }
18179      }
18180    };
18181  }
18182
18183  function focusSelectedLink(data) {
18184    if (data.links[data.selectedIdx]) {
18185      data.links[data.selectedIdx].focus();
18186    }
18187  }
18188
18189  function makeToggleKeydownHandler(data) {
18190    // We want to close immediately
18191    // if interacting via keyboard
18192    var toggler = makeToggler(data, FORCE_CLOSE);
18193    return function (evt) {
18194      // Do not respond to keyboard events in designer or preview
18195      if (inDesigner || inPreview) return; // If the menu is not open, we don't want
18196      // the up or Down arrows to do anything
18197
18198      if (!data.open) {
18199        switch (evt.keyCode) {
18200          case KEY_CODES.ARROW_UP:
18201          case KEY_CODES.ARROW_DOWN:
18202            {
18203              return evt.stopPropagation();
18204            }
18205        }
18206      }
18207
18208      switch (evt.keyCode) {
18209        case KEY_CODES.SPACE:
18210        case KEY_CODES.ENTER:
18211          {
18212            toggler();
18213            evt.stopPropagation();
18214            return evt.preventDefault();
18215          }
18216      }
18217    };
18218  }
18219
18220  function makeDropdownFousoutHandler(data) {
18221    return debounce(function (evt) {
18222      var relatedTarget = evt.relatedTarget,
18223          target = evt.target;
18224      var menuEl = data.el[0];
18225      /**
18226       * Close menu
18227       * With focusout events, the `relatedTarget` is the element that will next receive focus.
18228       * @see: https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent/relatedTarget
18229       */
18230
18231      var menuContainsFocus = menuEl.contains(relatedTarget) || menuEl.contains(target);
18232
18233      if (!menuContainsFocus) {
18234        close(data);
18235      }
18236
18237      return evt.stopPropagation();
18238    });
18239  } // Export module
18240
18241
18242  return api;
18243});
18244
18245/***/ }),
18246/* 318 */
18247/***/ (function(module, exports, __webpack_require__) {
18248
18249"use strict";
18250 // @wf-will-never-add-flow-to-this-file
18251
18252/* globals
18253  window,
18254  document,
18255  FormData,
18256  WEBFLOW_FORM_API_HOST,
18257  WEBFLOW_FORM_OLDIE_HOST
18258*/
18259
18260/* eslint-disable no-var */
18261
18262/**
18263 * Webflow: Forms
18264 */
18265
18266var _interopRequireDefault = __webpack_require__(0);
18267
18268var _slicedToArray2 = _interopRequireDefault(__webpack_require__(319));
18269
18270var Webflow = __webpack_require__(3);
18271
18272Webflow.define('forms', module.exports = function ($, _) {
18273  var api = {};
18274  var $doc = $(document);
18275  var $forms;
18276  var loc = window.location;
18277  var retro = window.XDomainRequest && !window.atob;
18278  var namespace = '.w-form';
18279  var siteId;
18280  var emailField = /e(-)?mail/i;
18281  var emailValue = /^\S+@\S+$/;
18282  var alert = window.alert;
18283  var inApp = Webflow.env();
18284  var listening;
18285  var formUrl;
18286  var signFileUrl; // MailChimp domains: list-manage.com + mirrors
18287
18288  var chimpRegex = /list-manage[1-9]?.com/i;
18289
18290  var disconnected = _.debounce(function () {
18291    alert('Oops! This page has improperly configured forms. Please contact your website administrator to fix this issue.');
18292  }, 100);
18293
18294  api.ready = api.design = api.preview = function () {
18295    // Init forms
18296    init(); // Wire document events on published site only once
18297
18298    if (!inApp && !listening) {
18299      addListeners();
18300    }
18301  };
18302
18303  function init() {
18304    siteId = $('html').attr('data-wf-site');
18305    formUrl = "https://webflow.com" + '/api/v1/form/' + siteId; // Work around same-protocol IE XDR limitation - without this IE9 and below forms won't submit
18306
18307    if (retro && formUrl.indexOf("https://webflow.com") >= 0) {
18308      formUrl = formUrl.replace("https://webflow.com", "http://formdata.webflow.com");
18309    }
18310
18311    signFileUrl = "".concat(formUrl, "/signFile");
18312    $forms = $(namespace + ' form');
18313
18314    if (!$forms.length) {
18315      return;
18316    }
18317
18318    $forms.each(build);
18319  }
18320
18321  function build(i, el) {
18322    // Store form state using namespace
18323    var $el = $(el);
18324    var data = $.data(el, namespace);
18325
18326    if (!data) {
18327      data = $.data(el, namespace, {
18328        form: $el
18329      });
18330    } // data.form
18331
18332
18333    reset(data);
18334    var wrap = $el.closest('div.w-form');
18335    data.done = wrap.find('> .w-form-done');
18336    data.fail = wrap.find('> .w-form-fail');
18337    data.fileUploads = wrap.find('.w-file-upload');
18338    data.fileUploads.each(function (j) {
18339      initFileUpload(j, data);
18340    });
18341    var action = data.action = $el.attr('action');
18342    data.handler = null;
18343    data.redirect = $el.attr('data-redirect'); // MailChimp form
18344
18345    if (chimpRegex.test(action)) {
18346      data.handler = submitMailChimp;
18347      return;
18348    } // Custom form action
18349
18350
18351    if (action) {
18352      return;
18353    } // Webflow forms for hosting accounts
18354
18355
18356    if (siteId) {
18357      data.handler = typeof hostedSubmitWebflow === 'function' ? hostedSubmitWebflow : exportedSubmitWebflow;
18358      return;
18359    } // Alert for disconnected Webflow forms
18360
18361
18362    disconnected();
18363  }
18364
18365  function addListeners() {
18366    listening = true; // Handle form submission for Webflow forms
18367
18368    $doc.on('submit', namespace + ' form', function (evt) {
18369      var data = $.data(this, namespace);
18370
18371      if (data.handler) {
18372        data.evt = evt;
18373        data.handler(data);
18374      }
18375    }); // handle checked ui for custom checkbox and radio button
18376
18377    var CHECKBOX_CLASS_NAME = '.w-checkbox-input';
18378    var RADIO_INPUT_CLASS_NAME = '.w-radio-input';
18379    var CHECKED_CLASS = 'w--redirected-checked';
18380    var FOCUSED_CLASS = 'w--redirected-focus';
18381    var CUSTOM_CONTROLS = [['checkbox', CHECKBOX_CLASS_NAME], ['radio', RADIO_INPUT_CLASS_NAME]];
18382    $doc.on('change', namespace + " form input[type=\"checkbox\"]:not(" + CHECKBOX_CLASS_NAME + ')', function (evt) {
18383      $(evt.target).siblings(CHECKBOX_CLASS_NAME).toggleClass(CHECKED_CLASS);
18384    });
18385    $doc.on('change', namespace + " form input[type=\"radio\"]", function (evt) {
18386      $("input[name=\"".concat(evt.target.name, "\"]:not(").concat(CHECKBOX_CLASS_NAME, ")")).map(function (i, el) {
18387        return $(el).siblings(RADIO_INPUT_CLASS_NAME).removeClass(CHECKED_CLASS);
18388      });
18389      var $target = $(evt.target);
18390
18391      if (!$target.hasClass('w-radio-input')) {
18392        $target.siblings(RADIO_INPUT_CLASS_NAME).addClass(CHECKED_CLASS);
18393      }
18394    });
18395    CUSTOM_CONTROLS.forEach(function (_ref) {
18396      var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
18397          controlType = _ref2[0],
18398          customControlClassName = _ref2[1];
18399
18400      $doc.on('focus', namespace + " form input[type=\"".concat(controlType, "\"]:not(") + customControlClassName + ')', function (evt) {
18401        $(evt.target).siblings(customControlClassName).addClass(FOCUSED_CLASS);
18402      });
18403      $doc.on('blur', namespace + " form input[type=\"".concat(controlType, "\"]:not(") + customControlClassName + ')', function (evt) {
18404        $(evt.target).siblings(customControlClassName).removeClass(FOCUSED_CLASS);
18405      });
18406    });
18407  } // Reset data common to all submit handlers
18408
18409
18410  function reset(data) {
18411    var btn = data.btn = data.form.find(':input[type="submit"]');
18412    data.wait = data.btn.attr('data-wait') || null;
18413    data.success = false;
18414    btn.prop('disabled', false);
18415    data.label && btn.val(data.label);
18416  } // Disable submit button
18417
18418
18419  function disableBtn(data) {
18420    var btn = data.btn;
18421    var wait = data.wait;
18422    btn.prop('disabled', true); // Show wait text and store previous label
18423
18424    if (wait) {
18425      data.label = btn.val();
18426      btn.val(wait);
18427    }
18428  } // Find form fields, validate, and set value pairs
18429
18430
18431  function findFields(form, result) {
18432    var status = null;
18433    result = result || {}; // The ":input" selector is a jQuery shortcut to select all inputs, selects, textareas
18434
18435    form.find(':input:not([type="submit"]):not([type="file"])').each(function (i, el) {
18436      var field = $(el);
18437      var type = field.attr('type');
18438      var name = field.attr('data-name') || field.attr('name') || 'Field ' + (i + 1);
18439      var value = field.val();
18440
18441      if (type === 'checkbox') {
18442        value = field.is(':checked');
18443      } else if (type === 'radio') {
18444        // Radio group value already processed
18445        if (result[name] === null || typeof result[name] === 'string') {
18446          return;
18447        }
18448
18449        value = form.find('input[name="' + field.attr('name') + '"]:checked').val() || null;
18450      }
18451
18452      if (typeof value === 'string') {
18453        value = $.trim(value);
18454      }
18455
18456      result[name] = value;
18457      status = status || getStatus(field, type, name, value);
18458    });
18459    return status;
18460  }
18461
18462  function findFileUploads(form) {
18463    var result = {};
18464    form.find(':input[type="file"]').each(function (i, el) {
18465      var field = $(el);
18466      var name = field.attr('data-name') || field.attr('name') || 'File ' + (i + 1);
18467      var value = field.attr('data-value');
18468
18469      if (typeof value === 'string') {
18470        value = $.trim(value);
18471      }
18472
18473      result[name] = value;
18474    });
18475    return result;
18476  }
18477
18478  function getStatus(field, type, name, value) {
18479    var status = null;
18480
18481    if (type === 'password') {
18482      status = 'Passwords cannot be submitted.';
18483    } else if (field.attr('required')) {
18484      if (!value) {
18485        status = 'Please fill out the required field: ' + name;
18486      } else if (emailField.test(field.attr('type'))) {
18487        if (!emailValue.test(value)) {
18488          status = 'Please enter a valid email address for: ' + name;
18489        }
18490      }
18491    } else if (name === 'g-recaptcha-response' && !value) {
18492      status = 'Please confirm you’re not a robot.';
18493    }
18494
18495    return status;
18496  }
18497
18498  function exportedSubmitWebflow(data) {
18499    preventDefault(data);
18500    afterSubmit(data);
18501  } // Submit form to MailChimp
18502
18503
18504  function submitMailChimp(data) {
18505    reset(data);
18506    var form = data.form;
18507    var payload = {}; // Skip Ajax submission if http/s mismatch, fallback to POST instead
18508
18509    if (/^https/.test(loc.href) && !/^https/.test(data.action)) {
18510      form.attr('method', 'post');
18511      return;
18512    }
18513
18514    preventDefault(data); // Find & populate all fields
18515
18516    var status = findFields(form, payload);
18517
18518    if (status) {
18519      return alert(status);
18520    } // Disable submit button
18521
18522
18523    disableBtn(data); // Use special format for MailChimp params
18524
18525    var fullName;
18526
18527    _.each(payload, function (value, key) {
18528      if (emailField.test(key)) {
18529        payload.EMAIL = value;
18530      }
18531
18532      if (/^((full[ _-]?)?name)$/i.test(key)) {
18533        fullName = value;
18534      }
18535
18536      if (/^(first[ _-]?name)$/i.test(key)) {
18537        payload.FNAME = value;
18538      }
18539
18540      if (/^(last[ _-]?name)$/i.test(key)) {
18541        payload.LNAME = value;
18542      }
18543    });
18544
18545    if (fullName && !payload.FNAME) {
18546      fullName = fullName.split(' ');
18547      payload.FNAME = fullName[0];
18548      payload.LNAME = payload.LNAME || fullName[1];
18549    } // Use the (undocumented) MailChimp jsonp api
18550
18551
18552    var url = data.action.replace('/post?', '/post-json?') + '&c=?'; // Add special param to prevent bot signups
18553
18554    var userId = url.indexOf('u=') + 2;
18555    userId = url.substring(userId, url.indexOf('&', userId));
18556    var listId = url.indexOf('id=') + 3;
18557    listId = url.substring(listId, url.indexOf('&', listId));
18558    payload['b_' + userId + '_' + listId] = '';
18559    $.ajax({
18560      url: url,
18561      data: payload,
18562      dataType: 'jsonp'
18563    }).done(function (resp) {
18564      data.success = resp.result === 'success' || /already/.test(resp.msg);
18565
18566      if (!data.success) {
18567        console.info('MailChimp error: ' + resp.msg);
18568      }
18569
18570      afterSubmit(data);
18571    }).fail(function () {
18572      afterSubmit(data);
18573    });
18574  } // Common callback which runs after all Ajax submissions
18575
18576
18577  function afterSubmit(data) {
18578    var form = data.form;
18579    var redirect = data.redirect;
18580    var success = data.success; // Redirect to a success url if defined
18581
18582    if (success && redirect) {
18583      Webflow.location(redirect);
18584      return;
18585    } // Show or hide status divs
18586
18587
18588    data.done.toggle(success);
18589    data.fail.toggle(!success); // Hide form on success
18590
18591    form.toggle(!success); // Reset data and enable submit button
18592
18593    reset(data);
18594  }
18595
18596  function preventDefault(data) {
18597    data.evt && data.evt.preventDefault();
18598    data.evt = null;
18599  }
18600
18601  function initFileUpload(i, form) {
18602    if (!form.fileUploads || !form.fileUploads[i]) {
18603      return;
18604    }
18605
18606    var file;
18607    var $el = $(form.fileUploads[i]);
18608    var $defaultWrap = $el.find('> .w-file-upload-default');
18609    var $uploadingWrap = $el.find('> .w-file-upload-uploading');
18610    var $successWrap = $el.find('> .w-file-upload-success');
18611    var $errorWrap = $el.find('> .w-file-upload-error');
18612    var $input = $defaultWrap.find('.w-file-upload-input');
18613    var $label = $defaultWrap.find('.w-file-upload-label');
18614    var $labelChildren = $label.children();
18615    var $errorMsgEl = $errorWrap.find('.w-file-upload-error-msg');
18616    var $fileEl = $successWrap.find('.w-file-upload-file');
18617    var $removeEl = $successWrap.find('.w-file-remove-link');
18618    var $fileNameEl = $fileEl.find('.w-file-upload-file-name');
18619    var sizeErrMsg = $errorMsgEl.attr('data-w-size-error');
18620    var typeErrMsg = $errorMsgEl.attr('data-w-type-error');
18621    var genericErrMsg = $errorMsgEl.attr('data-w-generic-error');
18622
18623    if (!inApp) {
18624      $removeEl.on('click', function () {
18625        $input.removeAttr('data-value');
18626        $input.val('');
18627        $fileNameEl.html('');
18628        $defaultWrap.toggle(true);
18629        $successWrap.toggle(false);
18630      });
18631      $input.on('change', function (e) {
18632        file = e.target && e.target.files && e.target.files[0];
18633
18634        if (!file) {
18635          return;
18636        } // Show uploading
18637
18638
18639        $defaultWrap.toggle(false);
18640        $errorWrap.toggle(false);
18641        $uploadingWrap.toggle(true); // Set filename
18642
18643        $fileNameEl.text(file.name); // Disable submit button
18644
18645        if (!isUploading()) {
18646          disableBtn(form);
18647        }
18648
18649        form.fileUploads[i].uploading = true;
18650        signFile(file, afterSign);
18651      }); // Setting input width 1px and height equal label
18652      // This is so the browser required error will show up
18653
18654      var height = $label.outerHeight();
18655      $input.height(height);
18656      $input.width(1);
18657    } else {
18658      $input.on('click', function (e) {
18659        e.preventDefault();
18660      });
18661      $label.on('click', function (e) {
18662        e.preventDefault();
18663      });
18664      $labelChildren.on('click', function (e) {
18665        e.preventDefault();
18666      });
18667    }
18668
18669    function parseError(err) {
18670      var errorMsg = err.responseJSON && err.responseJSON.msg;
18671      var userError = genericErrMsg;
18672
18673      if (typeof errorMsg === 'string' && errorMsg.indexOf('InvalidFileTypeError') === 0) {
18674        userError = typeErrMsg;
18675      } else if (typeof errorMsg === 'string' && errorMsg.indexOf('MaxFileSizeError') === 0) {
18676        userError = sizeErrMsg;
18677      }
18678
18679      $errorMsgEl.text(userError);
18680      $input.removeAttr('data-value');
18681      $input.val('');
18682      $uploadingWrap.toggle(false);
18683      $defaultWrap.toggle(true);
18684      $errorWrap.toggle(true);
18685      form.fileUploads[i].uploading = false;
18686
18687      if (!isUploading()) {
18688        reset(form);
18689      }
18690    }
18691
18692    function afterSign(err, data) {
18693      if (err) {
18694        return parseError(err);
18695      }
18696
18697      var fileName = data.fileName;
18698      var postData = data.postData;
18699      var fileId = data.fileId;
18700      var s3Url = data.s3Url;
18701      $input.attr('data-value', fileId);
18702      uploadS3(s3Url, postData, file, fileName, afterUpload);
18703    }
18704
18705    function afterUpload(err) {
18706      if (err) {
18707        return parseError(err);
18708      } // Show success
18709
18710
18711      $uploadingWrap.toggle(false);
18712      $successWrap.css('display', 'inline-block');
18713      form.fileUploads[i].uploading = false;
18714
18715      if (!isUploading()) {
18716        reset(form);
18717      }
18718    }
18719
18720    function isUploading() {
18721      var uploads = form.fileUploads && form.fileUploads.toArray() || [];
18722      return uploads.some(function (value) {
18723        return value.uploading;
18724      });
18725    }
18726  }
18727
18728  function signFile(file, cb) {
18729    var payload = {
18730      name: file.name,
18731      size: file.size
18732    };
18733    $.ajax({
18734      type: 'POST',
18735      url: signFileUrl,
18736      data: payload,
18737      dataType: 'json',
18738      crossDomain: true
18739    }).done(function (data) {
18740      cb(null, data);
18741    }).fail(function (err) {
18742      cb(err);
18743    });
18744  }
18745
18746  function uploadS3(url, data, file, fileName, cb) {
18747    var formData = new FormData();
18748
18749    for (var k in data) {
18750      formData.append(k, data[k]);
18751    }
18752
18753    formData.append('file', file, fileName);
18754    $.ajax({
18755      type: 'POST',
18756      url: url,
18757      data: formData,
18758      processData: false,
18759      contentType: false
18760    }).done(function () {
18761      cb(null);
18762    }).fail(function (err) {
18763      cb(err);
18764    });
18765  } // Export module
18766
18767
18768  return api;
18769});
18770
18771/***/ }),
18772/* 319 */
18773/***/ (function(module, exports, __webpack_require__) {
18774
18775var arrayWithHoles = __webpack_require__(320);
18776
18777var iterableToArrayLimit = __webpack_require__(321);
18778
18779var nonIterableRest = __webpack_require__(322);
18780
18781function _slicedToArray(arr, i) {
18782  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();
18783}
18784
18785module.exports = _slicedToArray;
18786
18787/***/ }),
18788/* 320 */
18789/***/ (function(module, exports) {
18790
18791function _arrayWithHoles(arr) {
18792  if (Array.isArray(arr)) return arr;
18793}
18794
18795module.exports = _arrayWithHoles;
18796
18797/***/ }),
18798/* 321 */
18799/***/ (function(module, exports) {
18800
18801function _iterableToArrayLimit(arr, i) {
18802  var _arr = [];
18803  var _n = true;
18804  var _d = false;
18805  var _e = undefined;
18806
18807  try {
18808    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
18809      _arr.push(_s.value);
18810
18811      if (i && _arr.length === i) break;
18812    }
18813  } catch (err) {
18814    _d = true;
18815    _e = err;
18816  } finally {
18817    try {
18818      if (!_n && _i["return"] != null) _i["return"]();
18819    } finally {
18820      if (_d) throw _e;
18821    }
18822  }
18823
18824  return _arr;
18825}
18826
18827module.exports = _iterableToArrayLimit;
18828
18829/***/ }),
18830/* 322 */
18831/***/ (function(module, exports) {
18832
18833function _nonIterableRest() {
18834  throw new TypeError("Invalid attempt to destructure non-iterable instance");
18835}
18836
18837module.exports = _nonIterableRest;
18838
18839/***/ }),
18840/* 323 */
18841/***/ (function(module, exports, __webpack_require__) {
18842
18843"use strict";
18844 // @wf-will-never-add-flow-to-this-file
18845
18846/* globals window, document, jQuery */
18847
18848/* eslint-disable no-var */
18849
18850/**
18851 * Webflow: Lightbox component
18852 */
18853
18854var Webflow = __webpack_require__(3);
18855
18856var CONDITION_INVISIBLE_CLASS = 'w-condition-invisible';
18857var CONDVIS_SELECTOR = '.' + CONDITION_INVISIBLE_CLASS;
18858
18859function withoutConditionallyHidden(items) {
18860  return items.filter(function (item) {
18861    return !isConditionallyHidden(item);
18862  });
18863}
18864
18865function isConditionallyHidden(item) {
18866  return Boolean(item.$el && item.$el.closest(CONDVIS_SELECTOR).length);
18867}
18868
18869function getPreviousVisibleIndex(start, items) {
18870  for (var i = start; i >= 0; i--) {
18871    if (!isConditionallyHidden(items[i])) {
18872      return i;
18873    }
18874  }
18875
18876  return -1;
18877}
18878
18879function getNextVisibleIndex(start, items) {
18880  for (var i = start; i <= items.length - 1; i++) {
18881    if (!isConditionallyHidden(items[i])) {
18882      return i;
18883    }
18884  }
18885
18886  return -1;
18887}
18888
18889function shouldSetArrowLeftInactive(currentIndex, items) {
18890  return getPreviousVisibleIndex(currentIndex - 1, items) === -1;
18891}
18892
18893function shouldSetArrowRightInactive(currentIndex, items) {
18894  return getNextVisibleIndex(currentIndex + 1, items) === -1;
18895}
18896
18897function createLightbox(window, document, $, container) {
18898  var tram = $.tram;
18899  var isArray = Array.isArray;
18900  var namespace = 'w-lightbox';
18901  var prefix = namespace + '-';
18902  var prefixRegex = /(^|\s+)/g; // Array of objects describing items to be displayed.
18903
18904  var items = []; // Index of the currently displayed item.
18905
18906  var currentIndex; // Object holding references to jQuery wrapped nodes.
18907
18908  var $refs; // Instance of Spinner
18909
18910  var spinner;
18911
18912  function lightbox(thing, index) {
18913    items = isArray(thing) ? thing : [thing];
18914
18915    if (!$refs) {
18916      lightbox.build();
18917    }
18918
18919    if (withoutConditionallyHidden(items).length > 1) {
18920      $refs.items = $refs.empty;
18921      items.forEach(function (item) {
18922        var $thumbnail = dom('thumbnail');
18923        var $item = dom('item').append($thumbnail);
18924
18925        if (isConditionallyHidden(item)) {
18926          $item.addClass(CONDITION_INVISIBLE_CLASS);
18927        }
18928
18929        $refs.items = $refs.items.add($item);
18930        loadImage(item.thumbnailUrl || item.url, function ($image) {
18931          if ($image.prop('width') > $image.prop('height')) {
18932            addClass($image, 'wide');
18933          } else {
18934            addClass($image, 'tall');
18935          }
18936
18937          $thumbnail.append(addClass($image, 'thumbnail-image'));
18938        });
18939      });
18940      $refs.strip.empty().append($refs.items);
18941      addClass($refs.content, 'group');
18942    }
18943
18944    tram( // Focus the lightbox to receive keyboard events.
18945    removeClass($refs.lightbox, 'hide').trigger('focus')).add('opacity .3s').start({
18946      opacity: 1
18947    }); // Prevent document from scrolling while lightbox is active.
18948
18949    addClass($refs.html, 'noscroll');
18950    return lightbox.show(index || 0);
18951  }
18952  /**
18953   * Creates the DOM structure required by the lightbox.
18954   */
18955
18956
18957  lightbox.build = function () {
18958    // In case `build` is called more than once.
18959    lightbox.destroy();
18960    $refs = {
18961      html: $(document.documentElement),
18962      // Empty jQuery object can be used to build new ones using `.add`.
18963      empty: $()
18964    };
18965    $refs.arrowLeft = dom('control left inactive');
18966    $refs.arrowRight = dom('control right inactive');
18967    $refs.close = dom('control close');
18968    $refs.spinner = dom('spinner');
18969    $refs.strip = dom('strip');
18970    spinner = new Spinner($refs.spinner, prefixed('hide'));
18971    $refs.content = dom('content').append($refs.spinner, $refs.arrowLeft, $refs.arrowRight, $refs.close);
18972    $refs.container = dom('container').append($refs.content, $refs.strip);
18973    $refs.lightbox = dom('backdrop hide').append($refs.container); // We are delegating events for performance reasons and also
18974    // to not have to reattach handlers when images change.
18975
18976    $refs.strip.on('click', selector('item'), itemTapHandler);
18977    $refs.content.on('swipe', swipeHandler).on('click', selector('left'), handlerPrev).on('click', selector('right'), handlerNext).on('click', selector('close'), handlerHide).on('click', selector('image, caption'), handlerNext);
18978    $refs.container.on('click', selector('view'), handlerHide) // Prevent images from being dragged around.
18979    .on('dragstart', selector('img'), preventDefault);
18980    $refs.lightbox.on('keydown', keyHandler) // IE loses focus to inner nodes without letting us know.
18981    .on('focusin', focusThis); // The `tabindex` attribute is needed to enable non-input elements
18982    // to receive keyboard events.
18983
18984    $(container).append($refs.lightbox.prop('tabIndex', 0));
18985    return lightbox;
18986  };
18987  /**
18988   * Dispose of DOM nodes created by the lightbox.
18989   */
18990
18991
18992  lightbox.destroy = function () {
18993    if (!$refs) {
18994      return;
18995    } // Event handlers are also removed.
18996
18997
18998    removeClass($refs.html, 'noscroll');
18999    $refs.lightbox.remove();
19000    $refs = undefined;
19001  };
19002  /**
19003   * Show a specific item.
19004   */
19005
19006
19007  lightbox.show = function (index) {
19008    // Bail if we are already showing this item.
19009    if (index === currentIndex) {
19010      return;
19011    }
19012
19013    var item = items[index];
19014
19015    if (!item) {
19016      return lightbox.hide();
19017    }
19018
19019    if (isConditionallyHidden(item)) {
19020      if (index < currentIndex) {
19021        var previousVisibleIndex = getPreviousVisibleIndex(index - 1, items);
19022        index = previousVisibleIndex > -1 ? previousVisibleIndex : index;
19023      } else {
19024        var nextVisibleIndex = getNextVisibleIndex(index + 1, items);
19025        index = nextVisibleIndex > -1 ? nextVisibleIndex : index;
19026      }
19027
19028      item = items[index];
19029    }
19030
19031    var previousIndex = currentIndex;
19032    currentIndex = index;
19033    spinner.show(); // For videos, load an empty SVG with the video dimensions to preserve
19034    // the video’s aspect ratio while being responsive.
19035
19036    var url = item.html && svgDataUri(item.width, item.height) || item.url;
19037    loadImage(url, function ($image) {
19038      // Make sure this is the last item requested to be shown since
19039      // images can finish loading in a different order than they were
19040      // requested in.
19041      if (index !== currentIndex) {
19042        return;
19043      }
19044
19045      var $figure = dom('figure', 'figure').append(addClass($image, 'image'));
19046      var $frame = dom('frame').append($figure);
19047      var $newView = dom('view').append($frame);
19048      var $html;
19049      var isIframe;
19050
19051      if (item.html) {
19052        $html = $(item.html);
19053        isIframe = $html.is('iframe');
19054
19055        if (isIframe) {
19056          $html.on('load', transitionToNewView);
19057        }
19058
19059        $figure.append(addClass($html, 'embed'));
19060      }
19061
19062      if (item.caption) {
19063        $figure.append(dom('caption', 'figcaption').text(item.caption));
19064      }
19065
19066      $refs.spinner.before($newView);
19067
19068      if (!isIframe) {
19069        transitionToNewView();
19070      }
19071
19072      function transitionToNewView() {
19073        spinner.hide();
19074
19075        if (index !== currentIndex) {
19076          $newView.remove();
19077          return;
19078        }
19079
19080        toggleClass($refs.arrowLeft, 'inactive', shouldSetArrowLeftInactive(index, items));
19081        toggleClass($refs.arrowRight, 'inactive', shouldSetArrowRightInactive(index, items));
19082
19083        if ($refs.view) {
19084          tram($refs.view).add('opacity .3s').start({
19085            opacity: 0
19086          }).then(remover($refs.view));
19087          tram($newView).add('opacity .3s').add('transform .3s').set({
19088            x: index > previousIndex ? '80px' : '-80px'
19089          }).start({
19090            opacity: 1,
19091            x: 0
19092          });
19093        } else {
19094          $newView.css('opacity', 1);
19095        }
19096
19097        $refs.view = $newView;
19098
19099        if ($refs.items) {
19100          removeClass($refs.items, 'active'); // Mark proper thumbnail as active
19101
19102          var $activeThumb = $refs.items.eq(index);
19103          addClass($activeThumb, 'active'); // Scroll into view
19104
19105          maybeScroll($activeThumb);
19106        }
19107      }
19108    });
19109    return lightbox;
19110  };
19111  /**
19112   * Hides the lightbox.
19113   */
19114
19115
19116  lightbox.hide = function () {
19117    tram($refs.lightbox).add('opacity .3s').start({
19118      opacity: 0
19119    }).then(hideLightbox);
19120    return lightbox;
19121  };
19122
19123  lightbox.prev = function () {
19124    var previousVisibleIndex = getPreviousVisibleIndex(currentIndex - 1, items);
19125
19126    if (previousVisibleIndex > -1) {
19127      lightbox.show(previousVisibleIndex);
19128    }
19129  };
19130
19131  lightbox.next = function () {
19132    var nextVisibleIndex = getNextVisibleIndex(currentIndex + 1, items);
19133
19134    if (nextVisibleIndex > -1) {
19135      lightbox.show(nextVisibleIndex);
19136    }
19137  };
19138
19139  function createHandler(action) {
19140    return function (event) {
19141      // We only care about events triggered directly on the bound selectors.
19142      if (this !== event.target) {
19143        return;
19144      }
19145
19146      event.stopPropagation();
19147      event.preventDefault();
19148      action();
19149    };
19150  }
19151
19152  var handlerPrev = createHandler(lightbox.prev);
19153  var handlerNext = createHandler(lightbox.next);
19154  var handlerHide = createHandler(lightbox.hide);
19155
19156  var itemTapHandler = function itemTapHandler(event) {
19157    var index = $(this).index();
19158    event.preventDefault();
19159    lightbox.show(index);
19160  };
19161
19162  var swipeHandler = function swipeHandler(event, data) {
19163    // Prevent scrolling.
19164    event.preventDefault();
19165
19166    if (data.direction === 'left') {
19167      lightbox.next();
19168    } else if (data.direction === 'right') {
19169      lightbox.prev();
19170    }
19171  };
19172
19173  var focusThis = function focusThis() {
19174    this.focus();
19175  };
19176
19177  function preventDefault(event) {
19178    event.preventDefault();
19179  }
19180
19181  function keyHandler(event) {
19182    var keyCode = event.keyCode; // [esc]
19183
19184    if (keyCode === 27) {
19185      lightbox.hide(); // [◀]
19186    } else if (keyCode === 37) {
19187      lightbox.prev(); // [▶]
19188    } else if (keyCode === 39) {
19189      lightbox.next();
19190    }
19191  }
19192
19193  function hideLightbox() {
19194    // If the lightbox hasn't been destroyed already
19195    if ($refs) {
19196      // Reset strip scroll, otherwise next lightbox opens scrolled to last position
19197      $refs.strip.scrollLeft(0).empty();
19198      removeClass($refs.html, 'noscroll');
19199      addClass($refs.lightbox, 'hide');
19200      $refs.view && $refs.view.remove(); // Reset some stuff
19201
19202      removeClass($refs.content, 'group');
19203      addClass($refs.arrowLeft, 'inactive');
19204      addClass($refs.arrowRight, 'inactive');
19205      currentIndex = $refs.view = undefined;
19206    }
19207  }
19208
19209  function loadImage(url, callback) {
19210    var $image = dom('img', 'img');
19211    $image.one('load', function () {
19212      callback($image);
19213    }); // Start loading image.
19214
19215    $image.attr('src', url);
19216    return $image;
19217  }
19218
19219  function remover($element) {
19220    return function () {
19221      $element.remove();
19222    };
19223  }
19224
19225  function maybeScroll($item) {
19226    var itemElement = $item.get(0);
19227    var stripElement = $refs.strip.get(0);
19228    var itemLeft = itemElement.offsetLeft;
19229    var itemWidth = itemElement.clientWidth;
19230    var stripScrollLeft = stripElement.scrollLeft;
19231    var stripWidth = stripElement.clientWidth;
19232    var stripScrollLeftMax = stripElement.scrollWidth - stripWidth;
19233    var newScrollLeft;
19234
19235    if (itemLeft < stripScrollLeft) {
19236      newScrollLeft = Math.max(0, itemLeft + itemWidth - stripWidth);
19237    } else if (itemLeft + itemWidth > stripWidth + stripScrollLeft) {
19238      newScrollLeft = Math.min(itemLeft, stripScrollLeftMax);
19239    }
19240
19241    if (newScrollLeft != null) {
19242      tram($refs.strip).add('scroll-left 500ms').start({
19243        'scroll-left': newScrollLeft
19244      });
19245    }
19246  }
19247  /**
19248   * Spinner
19249   */
19250
19251
19252  function Spinner($spinner, className, delay) {
19253    this.$element = $spinner;
19254    this.className = className;
19255    this.delay = delay || 200;
19256    this.hide();
19257  }
19258
19259  Spinner.prototype.show = function () {
19260    // eslint-disable-next-line no-shadow
19261    var spinner = this; // Bail if we are already showing the spinner.
19262
19263    if (spinner.timeoutId) {
19264      return;
19265    }
19266
19267    spinner.timeoutId = setTimeout(function () {
19268      spinner.$element.removeClass(spinner.className); // eslint-disable-next-line webflow/no-delete
19269
19270      delete spinner.timeoutId;
19271    }, spinner.delay);
19272  };
19273
19274  Spinner.prototype.hide = function () {
19275    // eslint-disable-next-line no-shadow
19276    var spinner = this;
19277
19278    if (spinner.timeoutId) {
19279      clearTimeout(spinner.timeoutId); // eslint-disable-next-line webflow/no-delete
19280
19281      delete spinner.timeoutId;
19282      return;
19283    }
19284
19285    spinner.$element.addClass(spinner.className);
19286  };
19287
19288  function prefixed(string, isSelector) {
19289    return string.replace(prefixRegex, (isSelector ? ' .' : ' ') + prefix);
19290  }
19291
19292  function selector(string) {
19293    return prefixed(string, true);
19294  }
19295  /**
19296   * jQuery.addClass with auto-prefixing
19297   * @param  {jQuery} Element to add class to
19298   * @param  {string}
19298 Class name that will be prefixed and added to element
19299   * @return {jQuery}
19300   */
19301
19302
19303  function addClass($element, className) {
19304    return $element.addClass(prefixed(className));
19305  }
19306  /**
19307   * jQuery.removeClass with auto-prefixing
19308   * @param  {jQuery} Element to remove class from
19309   * @param  {string} Class name that will be prefixed and removed from element
19310   * @return {jQuery}
19311   */
19312
19313
19314  function removeClass($element, className) {
19315    return $element.removeClass(prefixed(className));
19316  }
19317  /**
19318   * jQuery.toggleClass with auto-prefixing
19319   * @param  {jQuery}  Element where class will be toggled
19320   * @param  {string}  Class name that will be prefixed and toggled
19321   * @param  {boolean} Optional boolean that determines if class will be added or removed
19322   * @return {jQuery}
19323   */
19324
19325
19326  function toggleClass($element, className, shouldAdd) {
19327    return $element.toggleClass(prefixed(className), shouldAdd);
19328  }
19329  /**
19330   * Create a new DOM element wrapped in a jQuery object,
19331   * decorated with our custom methods.
19332   * @param  {string} className
19333   * @param  {string} [tag]
19334   * @return {jQuery}
19335   */
19336
19337
19338  function dom(className, tag) {
19339    return addClass($(document.createElement(tag || 'div')), className);
19340  }
19341
19342  function svgDataUri(width, height) {
19343    var svg = '<svg xmlns="http://www.w3.org/2000/svg" width="' + width + '" height="' + height + '"/>';
19344    return 'data:image/svg+xml;charset=utf-8,' + encodeURI(svg);
19345  } // Compute some dimensions manually for iOS < 8, because of buggy support for VH.
19346  // Also, Android built-in browser does not support viewport units.
19347
19348
19349  (function () {
19350    var ua = window.navigator.userAgent;
19351    var iOSRegex = /(iPhone|iPad|iPod);[^OS]*OS (\d)/;
19352    var iOSMatches = ua.match(iOSRegex);
19353    var android = ua.indexOf('Android ') > -1 && ua.indexOf('Chrome') === -1;
19354
19355    if (!android && (!iOSMatches || iOSMatches[2] > 7)) {
19356      return;
19357    }
19358
19359    var styleNode = document.createElement('style');
19360    document.head.appendChild(styleNode);
19361    window.addEventListener('resize', refresh, true);
19362
19363    function refresh() {
19364      var vh = window.innerHeight;
19365      var vw = window.innerWidth;
19366      var content = '.w-lightbox-content, .w-lightbox-view, .w-lightbox-view:before {' + 'height:' + vh + 'px' + '}' + '.w-lightbox-view {' + 'width:' + vw + 'px' + '}' + '.w-lightbox-group, .w-lightbox-group .w-lightbox-view, .w-lightbox-group .w-lightbox-view:before {' + 'height:' + 0.86 * vh + 'px' + '}' + '.w-lightbox-image {' + 'max-width:' + vw + 'px;' + 'max-height:' + vh + 'px' + '}' + '.w-lightbox-group .w-lightbox-image {' + 'max-height:' + 0.86 * vh + 'px' + '}' + '.w-lightbox-strip {' + 'padding: 0 ' + 0.01 * vh + 'px' + '}' + '.w-lightbox-item {' + 'width:' + 0.1 * vh + 'px;' + 'padding:' + 0.02 * vh + 'px ' + 0.01 * vh + 'px' + '}' + '.w-lightbox-thumbnail {' + 'height:' + 0.1 * vh + 'px' + '}' + '@media (min-width: 768px) {' + '.w-lightbox-content, .w-lightbox-view, .w-lightbox-view:before {' + 'height:' + 0.96 * vh + 'px' + '}' + '.w-lightbox-content {' + 'margin-top:' + 0.02 * vh + 'px' + '}' + '.w-lightbox-group, .w-lightbox-group .w-lightbox-view, .w-lightbox-group .w-lightbox-view:before {' + 'height:' + 0.84 * vh + 'px' + '}' + '.w-lightbox-image {' + 'max-width:' + 0.96 * vw + 'px;' + 'max-height:' + 0.96 * vh + 'px' + '}' + '.w-lightbox-group .w-lightbox-image {' + 'max-width:' + 0.823 * vw + 'px;' + 'max-height:' + 0.84 * vh + 'px' + '}' + '}';
19367      styleNode.textContent = content;
19368    }
19369
19370    refresh();
19371  })();
19372
19373  return lightbox;
19374}
19375
19376Webflow.define('lightbox', module.exports = function ($) {
19377  var api = {};
19378  var inApp = Webflow.env();
19379  var lightbox = createLightbox(window, document, $, inApp ? '#lightbox-mountpoint' : 'body');
19380  var $doc = $(document);
19381  var $lightboxes;
19382  var designer;
19383  var namespace = '.w-lightbox';
19384  var groups; // -----------------------------------
19385  // Module methods
19386
19387  api.ready = api.design = api.preview = init; // -----------------------------------
19388  // Private methods
19389
19390  function init() {
19391    designer = inApp && Webflow.env('design'); // Reset Lightbox
19392
19393    lightbox.destroy(); // Reset groups
19394
19395    groups = {}; // Find all instances on the page
19396
19397    $lightboxes = $doc.find(namespace); // Instantiate all lighboxes
19398
19399    $lightboxes.webflowLightBox();
19400  }
19401
19402  jQuery.fn.extend({
19403    webflowLightBox: function webflowLightBox() {
19404      var $el = this;
19405      $.each($el, function (i, el) {
19406        // Store state in data
19407        var data = $.data(el, namespace);
19408
19409        if (!data) {
19410          data = $.data(el, namespace, {
19411            el: $(el),
19412            mode: 'images',
19413            images: [],
19414            embed: ''
19415          });
19416        } // Remove old events
19417
19418
19419        data.el.off(namespace); // Set config from json script tag
19420
19421        configure(data); // Add events based on mode
19422
19423        if (designer) {
19424          data.el.on('setting' + namespace, configure.bind(null, data));
19425        } else {
19426          data.el.on('click' + namespace, clickHandler(data)) // Prevent page scrolling to top when clicking on lightbox triggers.
19427          .on('click' + namespace, function (e) {
19428            e.preventDefault();
19429          });
19430        }
19431      });
19432    }
19433  });
19434
19435  function configure(data) {
19436    var json = data.el.children('.w-json').html();
19437    var groupName;
19438    var groupItems;
19439
19440    if (!json) {
19441      data.items = [];
19442      return;
19443    }
19444
19445    try {
19446      json = JSON.parse(json);
19447    } catch (e) {
19448      console.error('Malformed lightbox JSON configuration.', e);
19449    }
19450
19451    supportOldLightboxJson(json);
19452    json.items.forEach(function (item) {
19453      item.$el = data.el;
19454    });
19455    groupName = json.group;
19456
19457    if (groupName) {
19458      groupItems = groups[groupName];
19459
19460      if (!groupItems) {
19461        groupItems = groups[groupName] = [];
19462      }
19463
19464      data.items = groupItems;
19465
19466      if (json.items.length) {
19467        data.index = groupItems.length;
19468        groupItems.push.apply(groupItems, json.items);
19469      }
19470    } else {
19471      data.items = json.items;
19472      data.index = 0;
19473    }
19474  }
19475
19476  function clickHandler(data) {
19477    return function () {
19478      data.items.length && lightbox(data.items, data.index || 0);
19479    };
19480  }
19481
19482  function supportOldLightboxJson(data) {
19483    if (data.images) {
19484      data.images.forEach(function (item) {
19485        item.type = 'image';
19486      });
19487      data.items = data.images;
19488    }
19489
19490    if (data.embed) {
19491      data.embed.type = 'video';
19492      data.items = [data.embed];
19493    }
19494
19495    if (data.groupId) {
19496      data.group = data.groupId;
19497    }
19498  } // Export module
19499
19500
19501  return api;
19502});
19503
19504/***/ }),
19505/* 324 */
19506/***/ (function(module, exports, __webpack_require__) {
19507
19508"use strict";
19509 // @wf-will-never-add-flow-to-this-file
19510
19511/* globals window, document */
19512
19513/* eslint-disable no-var */
19514
19515/**
19516 * Webflow: Navbar component
19517 */
19518
19519var Webflow = __webpack_require__(3);
19520
19521var IXEvents = __webpack_require__(22);
19522
19523var KEY_CODES = {
19524  ARROW_LEFT: 37,
19525  ARROW_UP: 38,
19526  ARROW_RIGHT: 39,
19527  ARROW_DOWN: 40,
19528  ESCAPE: 27,
19529  SPACE: 32,
19530  ENTER: 13,
19531  HOME: 36,
19532  END: 35
19533};
19534Webflow.define('navbar', module.exports = function ($, _) {
19535  var api = {};
19536  var tram = $.tram;
19537  var $win = $(window);
19538  var $doc = $(document);
19539  var debounce = _.debounce;
19540  var $body;
19541  var $navbars;
19542  var designer;
19543  var inEditor;
19544  var inApp = Webflow.env();
19545  var overlay = '<div class="w-nav-overlay" data-wf-ignore />';
19546  var namespace = '.w-nav';
19547  var navbarOpenedButton = 'w--open';
19548  var navbarOpenedDropdown = 'w--nav-dropdown-open';
19549  var navbarOpenedDropdownToggle = 'w--nav-dropdown-toggle-open';
19550  var navbarOpenedDropdownList = 'w--nav-dropdown-list-open';
19551  var navbarOpenedLink = 'w--nav-link-open';
19552  var ix = IXEvents.triggers;
19553  var menuSibling = $(); // -----------------------------------
19554  // Module methods
19555
19556  api.ready = api.design = api.preview = init;
19557
19558  api.destroy = function () {
19559    menuSibling = $();
19560    removeListeners();
19561
19562    if ($navbars && $navbars.length) {
19563      $navbars.each(teardown);
19564    }
19565  }; // -----------------------------------
19566  // Private methods
19567
19568
19569  function init() {
19570    designer = inApp && Webflow.env('design');
19571    inEditor = Webflow.env('editor');
19572    $body = $(document.body); // Find all instances on the page
19573
19574    $navbars = $doc.find(namespace);
19575
19576    if (!$navbars.length) {
19577      return;
19578    }
19579
19580    $navbars.each(build); // Wire events
19581
19582    removeListeners();
19583    addListeners();
19584  }
19585
19586  function removeListeners() {
19587    Webflow.resize.off(resizeAll);
19588  }
19589
19590  function addListeners() {
19591    Webflow.resize.on(resizeAll);
19592  }
19593
19594  function resizeAll() {
19595    $navbars.each(resize);
19596  }
19597
19598  function build(i, el) {
19599    var $el = $(el); // Store state in data
19600
19601    var data = $.data(el, namespace);
19602
19603    if (!data) {
19604      data = $.data(el, namespace, {
19605        open: false,
19606        el: $el,
19607        config: {},
19608        selectedIdx: -1
19609      });
19610    }
19611
19612    data.menu = $el.find('.w-nav-menu');
19613    data.links = data.menu.find('.w-nav-link');
19614    data.dropdowns = data.menu.find('.w-dropdown');
19615    data.dropdownToggle = data.menu.find('.w-dropdown-toggle');
19616    data.dropdownList = data.menu.find('.w-dropdown-list');
19617    data.button = $el.find('.w-nav-button');
19618    data.container = $el.find('.w-container');
19619    data.overlayContainerId = 'w-nav-overlay-' + i;
19620    data.outside = outside(data); //   If the brand links exists and is set to link to the homepage, the
19621    // default setting, then add an aria-label
19622
19623    var navBrandLink = $el.find('.w-nav-brand');
19624
19625    if (navBrandLink && navBrandLink.attr('href') === '/' && navBrandLink.attr('aria-label') == null) {
19626      navBrandLink.attr('aria-label', 'home');
19627    } //   VoiceOver bug, when items that disallow user selection are focused
19628    // VoiceOver gets confused and scrolls to the end of the page. ¯\_(ツ)_/¯
19629
19630
19631    data.button.attr('style', '-webkit-user-select: text;'); // Add attributes to toggle element
19632
19633    if (data.button.attr('aria-label') == null) {
19634      data.button.attr('aria-label', 'menu');
19635    }
19636
19637    data.button.attr('role', 'button');
19638    data.button.attr('tabindex', '0');
19639    data.button.attr('aria-controls', data.overlayContainerId);
19640    data.button.attr('aria-haspopup', 'menu');
19641    data.button.attr('aria-expanded', 'false'); // Remove old events
19642
19643    data.el.off(namespace);
19644    data.button.off(namespace);
19645    data.menu.off(namespace); // Set config from data attributes
19646
19647    configure(data); // Add events based on mode
19648
19649    if (designer) {
19650      removeOverlay(data);
19651      data.el.on('setting' + namespace, handler(data));
19652    } else {
19653      addOverlay(data);
19654      data.button.on('click' + namespace, toggle(data));
19655      data.menu.on('click' + namespace, 'a', navigate(data));
19656      data.button.on('keydown' + namespace, makeToggleButtonKeyboardHandler(data));
19657      data.el.on('keydown' + namespace, makeLinksKeyboardHandler(data));
19658    } // Trigger initial resize
19659
19660
19661    resize(i, el);
19662  }
19663
19664  function teardown(i, el) {
19665    var data = $.data(el, namespace);
19666
19667    if (data) {
19668      removeOverlay(data);
19669      $.removeData(el, namespace);
19670    }
19671  }
19672
19673  function removeOverlay(data) {
19674    if (!data.overlay) {
19675      return;
19676    }
19677
19678    close(data, true);
19679    data.overlay.remove();
19680    data.overlay = null;
19681  }
19682
19683  function addOverlay(data) {
19684    if (data.overlay) {
19685      return;
19686    }
19687
19688    data.overlay = $(overlay).appendTo(data.el);
19689    data.overlay.attr('id', data.overlayContainerId);
19690    data.parent = data.menu.parent();
19691    close(data, true);
19692  }
19693
19694  function configure(data) {
19695    var config = {};
19696    var old = data.config || {}; // Set config options from data attributes
19697
19698    var animation = config.animation = data.el.attr('data-animation') || 'default';
19699    config.animOver = /^over/.test(animation);
19700    config.animDirect = /left$/.test(animation) ? -1 : 1; // Re-open menu if the animation type changed
19701
19702    if (old.animation !== animation) {
19703      data.open && _.defer(reopen, data);
19704    }
19705
19706    config.easing = data.el.attr('data-easing') || 'ease';
19707    config.easing2 = data.el.attr('data-easing2') || 'ease';
19708    var duration = data.el.attr('data-duration');
19709    config.duration = duration != null ? Number(duration) : 400;
19710    config.docHeight = data.el.attr('data-doc-height'); // Store config in data
19711
19712    data.config = config;
19713  }
19714
19715  function handler(data) {
19716    return function (evt, options) {
19717      options = options || {};
19718      var winWidth = $win.width();
19719      configure(data);
19720      options.open === true && open(data, true);
19721      options.open === false && close(data, true); // Reopen if media query changed after setting
19722
19723      data.open && _.defer(function () {
19724        if (winWidth !== $win.width()) {
19725          reopen(data);
19726        }
19727      });
19728    };
19729  }
19730
19731  function makeToggleButtonKeyboardHandler(data) {
19732    return function (evt) {
19733      switch (evt.keyCode) {
19734        case KEY_CODES.SPACE:
19735        case KEY_CODES.ENTER:
19736          {
19737            // Toggle returns a function
19738            toggle(data)();
19739            evt.preventDefault();
19740            return evt.stopPropagation();
19741          }
19742
19743        case KEY_CODES.ESCAPE:
19744          {
19745            close(data);
19746            evt.preventDefault();
19747            return evt.stopPropagation();
19748          }
19749
19750        case KEY_CODES.ARROW_RIGHT:
19751        case KEY_CODES.ARROW_DOWN:
19752        case KEY_CODES.HOME:
19753        case KEY_CODES.END:
19754          {
19755            if (!data.open) {
19756              evt.preventDefault();
19757              return evt.stopPropagation();
19758            }
19759
19760            if (evt.keyCode === KEY_CODES.END) {
19761              data.selectedIdx = data.links.length - 1;
19762            } else {
19763              data.selectedIdx = 0;
19764            }
19765
19766            focusSelectedLink(data);
19767            evt.preventDefault();
19768            return evt.stopPropagation();
19769          }
19770      }
19771    };
19772  }
19773
19774  function makeLinksKeyboardHandler(data) {
19775    return function (evt) {
19776      if (!data.open) {
19777        return;
19778      } // Realign selectedIdx with the menu item that is currently in focus.
19779      // We need this because we do not track the `Tab` key activity!
19780
19781
19782      data.selectedIdx = data.links.index(document.activeElement);
19783
19784      switch (evt.keyCode) {
19785        case KEY_CODES.HOME:
19786        case KEY_CODES.END:
19787          {
19788            if (evt.keyCode === KEY_CODES.END) {
19789              data.selectedIdx = data.links.length - 1;
19790            } else {
19791              data.selectedIdx = 0;
19792            }
19793
19794            focusSelectedLink(data);
19795            evt.preventDefault();
19796            return evt.stopPropagation();
19797          }
19798
19799        case KEY_CODES.ESCAPE:
19800          {
19801            close(data); // Focus toggle button
19802
19803            data.button.focus();
19804            evt.preventDefault();
19805            return evt.stopPropagation();
19806          }
19807
19808        case KEY_CODES.ARROW_LEFT:
19809        case KEY_CODES.ARROW_UP:
19810          {
19811            data.selectedIdx = Math.max(-1, data.selectedIdx - 1);
19812            focusSelectedLink(data);
19813            evt.preventDefault();
19814            return evt.stopPropagation();
19815          }
19816
19817        case KEY_CODES.ARROW_RIGHT:
19818        case KEY_CODES.ARROW_DOWN:
19819          {
19820            data.selectedIdx = Math.min(data.links.length - 1, data.selectedIdx + 1);
19821            focusSelectedLink(data);
19822            evt.preventDefault();
19823            return evt.stopPropagation();
19824          }
19825      }
19826    };
19827  }
19828
19829  function focusSelectedLink(data) {
19830    if (data.links[data.selectedIdx]) {
19831      var selectedElement = data.links[data.selectedIdx];
19832      selectedElement.focus();
19833      navigate(selectedElement);
19834    }
19835  }
19836
19837  function reopen(data) {
19838    if (!data.open) {
19839      return;
19840    }
19841
19842    close(data, true);
19843    open(data, true);
19844  }
19845
19846  function toggle(data) {
19847    // Debounce toggle to wait for accurate open state
19848    return debounce(function () {
19849      data.open ? close(data) : open(data);
19850    });
19851  }
19852
19853  function navigate(data) {
19854    return function (evt) {
19855      var link = $(this);
19856      var href = link.attr('href'); // Avoid late clicks on touch devices
19857
19858      if (!Webflow.validClick(evt.currentTarget)) {
19859        evt.preventDefault();
19860        return;
19861      } // Close when navigating to an in-page anchor
19862
19863
19864      if (href && href.indexOf('#') === 0 && data.open) {
19865        close(data);
19866      }
19867    };
19868  }
19869
19870  function outside(data) {
19871    // Unbind previous click handler if it exists
19872    if (data.outside) {
19873      $doc.off('click' + namespace, data.outside);
19874    }
19875
19876    return function (evt) {
19877      var $target = $(evt.target); // Ignore clicks on Editor overlay UI
19878
19879      if (inEditor && $target.closest('.w-editor-bem-EditorOverlay').length) {
19880        return;
19881      } // Close menu when clicked outside, debounced to wait for state
19882
19883
19884      outsideDebounced(data, $target);
19885    };
19886  }
19887
19888  var outsideDebounced = debounce(function (data, $target) {
19889    if (!data.open) {
19890      return;
19891    }
19892
19893    var menu = $target.closest('.w-nav-menu');
19894
19895    if (!data.menu.is(menu)) {
19896      close(data);
19897    }
19898  });
19899
19900  function resize(i, el) {
19901    var data = $.data(el, namespace);
19901 // Check for collapsed state based on button display
19902
19903    var collapsed = data.collapsed = data.button.css('display') !== 'none'; // Close menu if button is no longer visible (and not in designer)
19904
19905    if (data.open && !collapsed && !designer) {
19906      close(data, true);
19907    } // Set max-width of links + dropdowns to match container
19908
19909
19910    if (data.container.length) {
19911      var updateEachMax = updateMax(data);
19912      data.links.each(updateEachMax);
19913      data.dropdowns.each(updateEachMax);
19914    } // If currently open, update height to match body
19915
19916
19917    if (data.open) {
19918      setOverlayHeight(data);
19919    }
19920  }
19921
19922  var maxWidth = 'max-width';
19923
19924  function updateMax(data) {
19925    // Set max-width of each element to match container
19926    var containMax = data.container.css(maxWidth);
19927
19928    if (containMax === 'none') {
19929      containMax = '';
19930    }
19931
19932    return function (i, link) {
19933      link = $(link);
19934      link.css(maxWidth, ''); // Don't set the max-width if an upstream value exists
19935
19936      if (link.css(maxWidth) === 'none') {
19937        link.css(maxWidth, containMax);
19938      }
19939    };
19940  }
19941
19942  function addMenuOpen(i, el) {
19943    el.setAttribute('data-nav-menu-open', '');
19944  }
19945
19946  function removeMenuOpen(i, el) {
19947    el.removeAttribute('data-nav-menu-open');
19948  }
19949
19950  function open(data, immediate) {
19951    if (data.open) {
19952      return;
19953    }
19954
19955    data.open = true;
19956    data.menu.each(addMenuOpen);
19957    data.links.addClass(navbarOpenedLink);
19958    data.dropdowns.addClass(navbarOpenedDropdown);
19959    data.dropdownToggle.addClass(navbarOpenedDropdownToggle);
19960    data.dropdownList.addClass(navbarOpenedDropdownList);
19961    data.button.addClass(navbarOpenedButton);
19962    var config = data.config;
19963    var animation = config.animation;
19964
19965    if (animation === 'none' || !tram.support.transform) {
19966      immediate = true;
19967    }
19968
19969    var bodyHeight = setOverlayHeight(data);
19970    var menuHeight = data.menu.outerHeight(true);
19971    var menuWidth = data.menu.outerWidth(true);
19972    var navHeight = data.el.height();
19973    var navbarEl = data.el[0];
19974    resize(0, navbarEl);
19975    ix.intro(0, navbarEl);
19976    Webflow.redraw.up(); // Listen for click outside events
19977
19978    if (!designer) {
19979      $doc.on('click' + namespace, data.outside);
19980    } // No transition for immediate
19981
19982
19983    if (immediate) {
19984      complete();
19985      return;
19986    }
19987
19988    var transConfig = 'transform ' + config.duration + 'ms ' + config.easing; // Add menu to overlay
19989
19990    if (data.overlay) {
19991      menuSibling = data.menu.prev();
19992      data.overlay.show().append(data.menu);
19993    } // Over left/right
19994
19995
19996    if (config.animOver) {
19997      tram(data.menu).add(transConfig).set({
19998        x: config.animDirect * menuWidth,
19999        height: bodyHeight
20000      }).start({
20001        x: 0
20002      }).then(complete);
20003      data.overlay && data.overlay.width(menuWidth);
20004      return;
20005    } // Drop Down
20006
20007
20008    var offsetY = navHeight + menuHeight;
20009    tram(data.menu).add(transConfig).set({
20010      y: -offsetY
20011    }).start({
20012      y: 0
20013    }).then(complete);
20014
20015    function complete() {
20016      data.button.attr('aria-expanded', 'true');
20017    }
20018  }
20019
20020  function setOverlayHeight(data) {
20021    var config = data.config;
20022    var bodyHeight = config.docHeight ? $doc.height() : $body.height();
20023
20024    if (config.animOver) {
20025      data.menu.height(bodyHeight);
20026    } else if (data.el.css('position') !== 'fixed') {
20027      bodyHeight -= data.el.outerHeight(true);
20028    }
20029
20030    data.overlay && data.overlay.height(bodyHeight);
20031    return bodyHeight;
20032  }
20033
20034  function close(data, immediate) {
20035    if (!data.open) {
20036      return;
20037    }
20038
20039    data.open = false;
20040    data.button.removeClass(navbarOpenedButton);
20041    var config = data.config;
20042
20043    if (config.animation === 'none' || !tram.support.transform || config.duration <= 0) {
20044      immediate = true;
20045    }
20046
20047    ix.outro(0, data.el[0]); // Stop listening for click outside events
20048
20049    $doc.off('click' + namespace, data.outside);
20050
20051    if (immediate) {
20052      tram(data.menu).stop();
20053      complete();
20054      return;
20055    }
20056
20057    var transConfig = 'transform ' + config.duration + 'ms ' + config.easing2;
20058    var menuHeight = data.menu.outerHeight(true);
20059    var menuWidth = data.menu.outerWidth(true);
20060    var navHeight = data.el.height(); // Over left/right
20061
20062    if (config.animOver) {
20063      tram(data.menu).add(transConfig).start({
20064        x: menuWidth * config.animDirect
20065      }).then(complete);
20066      return;
20067    } // Drop Down
20068
20069
20070    var offsetY = navHeight + menuHeight;
20071    tram(data.menu).add(transConfig).start({
20072      y: -offsetY
20073    }).then(complete);
20074
20075    function complete() {
20076      data.menu.height('');
20077      tram(data.menu).set({
20078        x: 0,
20079        y: 0
20080      });
20081      data.menu.each(removeMenuOpen);
20082      data.links.removeClass(navbarOpenedLink);
20083      data.dropdowns.removeClass(navbarOpenedDropdown);
20084      data.dropdownToggle.removeClass(navbarOpenedDropdownToggle);
20085      data.dropdownList.removeClass(navbarOpenedDropdownList);
20086
20087      if (data.overlay && data.overlay.children().length) {
20088        // Move menu back to parent at the original location
20089        menuSibling.length ? data.menu.insertAfter(menuSibling) : data.menu.prependTo(data.parent);
20090        data.overlay.attr('style', '').hide();
20091      } // Trigger event so other components can hook in (dropdown)
20092
20093
20094      data.el.triggerHandler('w-close');
20095      data.button.attr('aria-expanded', 'false');
20096    }
20097  } // Export module
20098
20099
20100  return api;
20101});
20102
20103/***/ }),
20104/* 325 */
20105/***/ (function(module, exports, __webpack_require__) {
20106
20107"use strict";
20108 // @wf-will-never-add-flow-to-this-file
20109
20110/* global window, document */
20111
20112/* eslint-disable no-var */
20113
20114/**
20115 * Webflow: Slider component
20116 */
20117
20118var Webflow = __webpack_require__(3);
20119
20120var IXEvents = __webpack_require__(22);
20121
20122var KEY_CODES = {
20123  ARROW_LEFT: 37,
20124  ARROW_UP: 38,
20125  ARROW_RIGHT: 39,
20126  ARROW_DOWN: 40,
20127  SPACE: 32,
20128  ENTER: 13,
20129  HOME: 36,
20130  END: 35
20131};
20132var FOCUSABLE_SELECTOR = 'a[href], area[href], [role="button"], input, select, textarea, button, iframe, object, embed, *[tabindex], *[contenteditable]';
20133Webflow.define('slider', module.exports = function ($, _) {
20134  var api = {};
20135  var tram = $.tram;
20136  var $doc = $(document);
20137  var $sliders;
20138  var designer;
20139  var inApp = Webflow.env();
20140  var namespace = '.w-slider';
20141  var dot = '<div class="w-slider-dot" data-wf-ignore />';
20142  var ariaLiveLabelHtml = '<div aria-live="off" aria-atomic="true" class="w-slider-aria-label" data-wf-ignore />';
20143  var ix = IXEvents.triggers;
20144  var fallback;
20145  var inRedraw; // -----------------------------------
20146  // Module methods
20147
20148  api.ready = function () {
20149    designer = Webflow.env('design');
20150    init();
20151  };
20152
20153  api.design = function () {
20154    designer = true;
20155    init();
20156  };
20157
20158  api.preview = function () {
20159    designer = false;
20160    init();
20161  };
20162
20163  api.redraw = function () {
20164    inRedraw = true;
20165    init();
20166  };
20167
20168  api.destroy = removeListeners; // -----------------------------------
20169  // Private methods
20170
20171  function init() {
20172    // Find all sliders on the page
20173    $sliders = $doc.find(namespace);
20174
20175    if (!$sliders.length) {
20176      return;
20177    }
20178
20179    $sliders.each(build);
20180    inRedraw = null;
20181
20182    if (fallback) {
20183      return;
20184    }
20185
20186    removeListeners();
20187    addListeners();
20188  }
20189
20190  function removeListeners() {
20191    Webflow.resize.off(renderAll);
20192    Webflow.redraw.off(api.redraw);
20193  }
20194
20195  function addListeners() {
20196    Webflow.resize.on(renderAll);
20197    Webflow.redraw.on(api.redraw);
20198  }
20199
20200  function renderAll() {
20201    $sliders.filter(':visible').each(render);
20202  }
20203
20204  function build(i, el) {
20205    var $el = $(el); // Store slider state in data
20206
20207    var data = $.data(el, namespace);
20208
20209    if (!data) {
20210      data = $.data(el, namespace, {
20211        index: 0,
20212        depth: 1,
20213        hasFocus: {
20214          keyboard: false,
20215          mouse: false
20216        },
20217        el: $el,
20218        config: {}
20219      });
20220    }
20221
20222    data.mask = $el.children('.w-slider-mask');
20223    data.left = $el.children('.w-slider-arrow-left');
20224    data.right = $el.children('.w-slider-arrow-right');
20225    data.nav = $el.children('.w-slider-nav');
20226    data.slides = data.mask.children('.w-slide');
20227    data.slides.each(ix.reset);
20228
20229    if (inRedraw) {
20230      data.maskWidth = 0;
20231    }
20232
20233    if ($el.attr('role') === undefined) {
20234      $el.attr('role', 'section');
20235    }
20236
20237    if ($el.attr('aria-label') === undefined) {
20238      $el.attr('aria-label', 'carousel');
20239    } // Store the ID of the slider slide view mask
20240
20241
20242    var slideViewId = data.mask.attr('id'); // If user did not provide an ID, set it
20243
20244    if (!slideViewId) {
20245      slideViewId = 'w-slider-mask-' + i;
20246      data.mask.attr('id', slideViewId);
20247    } // Create aria live label
20248
20249
20250    data.ariaLiveLabel = $(ariaLiveLabelHtml).appendTo(data.mask); // Add attributes to left/right buttons
20251
20252    data.left.attr('role', 'button');
20253    data.left.attr('tabindex', '0');
20254    data.left.attr('aria-controls', slideViewId);
20255
20256    if (data.left.attr('aria-label') === undefined) {
20257      data.left.attr('aria-label', 'previous slide');
20258    }
20259
20260    data.right.attr('role', 'button');
20261    data.right.attr('tabindex', '0');
20262    data.right.attr('aria-controls', slideViewId);
20263
20264    if (data.right.attr('aria-label') === undefined) {
20265      data.right.attr('aria-label', 'next slide');
20266    } // Disable in old browsers
20267
20268
20269    if (!tram.support.transform) {
20270      data.left.hide();
20271      data.right.hide();
20272      data.nav.hide();
20273      fallback = true;
20274      return;
20275    } // Remove old events
20276
20277
20278    data.el.off(namespace);
20279    data.left.off(namespace);
20280    data.right.off(namespace);
20281    data.nav.off(namespace); // Set config from data attributes
20282
20283    configure(data); // Add events based on mode
20284
20285    if (designer) {
20286      data.el.on('setting' + namespace, handler(data));
20287      stopTimer(data);
20288      data.hasTimer = false;
20289    } else {
20290      data.el.on('swipe' + namespace, handler(data));
20291      data.left.on('click' + namespace, previousFunction(data));
20292      data.right.on('click' + namespace, next(data));
20293      data.left.on('keydown' + namespace, keyboardSlideButtonsFunction(data, previousFunction));
20294      data.right.on('keydown' + namespace, keyboardSlideButtonsFunction(data, next)); // Listen to nav keyboard events
20295
20296      data.nav.on('keydown' + namespace, '> div', handler(data)); // Start timer if autoplay is true, only once
20297
20298      if (data.config.autoplay && !data.hasTimer) {
20299        data.hasTimer = true;
20300        data.timerCount = 1;
20301        startTimer(data);
20302      }
20303
20304      data.el.on('mouseenter' + namespace, hasFocus(data, true, 'mouse'));
20305      data.el.on('focusin' + namespace, hasFocus(data, true, 'keyboard'));
20306      data.el.on('mouseleave' + namespace, hasFocus(data, false, 'mouse'));
20307      data.el.on('focusout' + namespace, hasFocus(data, false, 'keyboard'));
20308    } // Listen to nav click events
20309
20310
20311    data.nav.on('click' + namespace, '> div', handler(data)); // Remove gaps from formatted html (for inline-blocks)
20312
20313    if (!inApp) {
20314      data.mask.contents().filter(function () {
20315        return this.nodeType === 3;
20316      }).remove();
20317    } // If slider or any parent is hidden, temporarily show for measurements (https://github.com/webflow/webflow/issues/24921)
20318
20319
20320    var $elHidden = $el.filter(':hidden');
20321    $elHidden.show();
20322    var $elHiddenParents = $el.parents(':hidden');
20323    $elHiddenParents.show(); // Run first render
20324
20325    render(i, el); // If slider or any parent is hidden, reset after temporarily showing for measurements
20326
20327    $elHidden.css('display', '');
20328    $elHiddenParents.css('display', '');
20329  }
20330
20331  function configure(data) {
20332    var config = {};
20333    config.crossOver = 0; // Set config options from data attributes
20334
20335    config.animation = data.el.attr('data-animation') || 'slide';
20336
20337    if (config.animation === 'outin') {
20338      config.animation = 'cross';
20339      config.crossOver = 0.5;
20340    }
20341
20342    config.easing = data.el.attr('data-easing') || 'ease';
20343    var duration = data.el.attr('data-duration');
20344    config.duration = duration != null ? parseInt(duration, 10) : 500;
20345
20346    if (isAttrTrue(data.el.attr('data-infinite'))) {
20347      config.infinite = true;
20348    }
20349
20350    if (isAttrTrue(data.el.attr('data-disable-swipe'))) {
20351      config.disableSwipe = true;
20352    }
20353
20354    if (isAttrTrue(data.el.attr('data-hide-arrows'))) {
20355      config.hideArrows = true;
20356    } else if (data.config.hideArrows) {
20357      data.left.show();
20358      data.right.show();
20359    }
20360
20361    if (isAttrTrue(data.el.attr('data-autoplay'))) {
20362      config.autoplay = true;
20363      config.delay = parseInt(data.el.attr('data-delay'), 10) || 2000;
20364      config.timerMax = parseInt(data.el.attr('data-autoplay-limit'), 10); // Disable timer on first touch or mouse down
20365
20366      var touchEvents = 'mousedown' + namespace + ' touchstart' + namespace;
20367
20368      if (!designer) {
20369        data.el.off(touchEvents).one(touchEvents, function () {
20370          stopTimer(data);
20371        });
20372      }
20373    } // Use edge buffer to help calculate page count
20374
20375
20376    var arrowWidth = data.right.width();
20377    config.edge = arrowWidth ? arrowWidth + 40 : 100; // Store config in data
20378
20379    data.config = config;
20380  }
20381
20382  function isAttrTrue(value) {
20383    return value === '1' || value === 'true';
20384  }
20385
20386  function hasFocus(data, focusIn, eventType) {
20387    return function (evt) {
20388      if (!focusIn) {
20389        // Prevent Focus Out if moving to another element in the slider
20390        if ($.contains(data.el.get(0), evt.relatedTarget)) {
20391          return;
20392        }
20393
20394        data.hasFocus[eventType] = focusIn; // Prevent Aria live change if focused by other input
20395
20396        if (data.hasFocus.mouse && eventType === 'keyboard' || data.hasFocus.keyboard && eventType === 'mouse') {
20397          return;
20398        }
20399      } else {
20400        data.hasFocus[eventType] = focusIn;
20401      }
20402
20403      if (focusIn) {
20404        data.ariaLiveLabel.attr('aria-live', 'polite');
20405
20406        if (data.hasTimer) {
20407          stopTimer(data);
20408        }
20409      } else {
20410        data.ariaLiveLabel.attr('aria-live', 'off');
20411
20412        if (data.hasTimer) {
20413          startTimer(data);
20414        }
20415      }
20416
20417      return;
20418    };
20419  }
20420
20421  function keyboardSlideButtonsFunction(data, directionFunction) {
20422    return function (evt) {
20423      switch (evt.keyCode) {
20424        case KEY_CODES.SPACE:
20425        case KEY_CODES.ENTER:
20426          {
20427            // DirectionFunction returns a function
20428            directionFunction(data)();
20429            evt.preventDefault();
20430            return evt.stopPropagation();
20431          }
20432      }
20433    };
20434  }
20435
20436  function previousFunction(data) {
20437    return function () {
20438      change(data, {
20439        index: data.index - 1,
20440        vector: -1
20441      });
20442    };
20443  }
20444
20445  function next(data) {
20446    return function () {
20447      change(data, {
20448        index: data.index + 1,
20449        vector: 1
20450      });
20451    };
20452  }
20453
20454  function select(data, value) {
20455    // Select page based on slide element index
20456    var found = null;
20457
20458    if (value === data.slides.length) {
20459      init();
20460      layout(data); // Rebuild and find new slides
20461    }
20462
20463    _.each(data.anchors, function (anchor, index) {
20464      $(anchor.els).each(function (i, el) {
20465        if ($(el).index() === value) {
20466          found = index;
20467        }
20468      });
20469    });
20470
20471    if (found != null) {
20472      change(data, {
20473        index: found,
20474        immediate: true
20475      });
20476    }
20477  }
20478
20479  function startTimer(data) {
20480    stopTimer(data);
20481    var config = data.config;
20482    var timerMax = config.timerMax;
20483
20484    if (timerMax && data.timerCount++ > timerMax) {
20485      return;
20486    }
20487
20488    data.timerId = window.setTimeout(function () {
20489      if (data.timerId == null || designer) {
20490        return;
20491      }
20492
20493      next(data)();
20494      startTimer(data);
20495    }, config.delay);
20496  }
20497
20498  function stopTimer(data) {
20499    window.clearTimeout(data.timerId);
20500    data.timerId = null;
20501  }
20502
20503  function handler(data) {
20504    return function (evt, options) {
20505      options = options || {};
20506      var config = data.config; // Designer settings
20507
20508      if (designer && evt.type === 'setting') {
20509        if (options.select === 'prev') {
20510          return previousFunction(data)();
20511        }
20512
20513        if (options.select === 'next') {
20514          return next(data)();
20515        }
20516
20517        configure(data);
20518        layout(data);
20519
20520        if (options.select == null) {
20521          return;
20522        }
20523
20524        select(data, options.select);
20525        return;
20526      } // Swipe event
20527
20528
20529      if (evt.type === 'swipe') {
20530        if (config.disableSwipe) {
20531          return;
20532        }
20533
20534        if (Webflow.env('editor')) {
20535          return;
20536        }
20537
20538        if (options.direction === 'left') {
20539          return next(data)();
20540        }
20541
20542        if (options.direction === 'right') {
20543          return previousFunction(data)();
20544        }
20545
20546        return;
20547      } // Page buttons
20548
20549
20550      if (data.nav.has(evt.target).length) {
20551        var index = $(evt.target).index();
20552
20553        if (evt.type === 'click') {
20554          change(data, {
20555            index: index
20556          });
20557        }
20558
20559        if (evt.type === 'keydown') {
20560          switch (evt.keyCode) {
20561            case KEY_CODES.ENTER:
20562            case KEY_CODES.SPACE:
20563              {
20564                change(data, {
20565                  index: index
20566                });
20567                evt.preventDefault();
20568                break;
20569              }
20570
20571            case KEY_CODES.ARROW_LEFT:
20572            case KEY_CODES.ARROW_UP:
20573              {
20574                focusDot(data.nav, Math.max(index - 1, 0));
20575                evt.preventDefault();
20576                break;
20577              }
20578
20579            case KEY_CODES.ARROW_RIGHT:
20580            case KEY_CODES.ARROW_DOWN:
20581              {
20582                focusDot(data.nav, Math.min(index + 1, data.pages));
20583                evt.preventDefault();
20584                break;
20585              }
20586
20587            case KEY_CODES.HOME:
20588              {
20589                focusDot(data.nav, 0);
20590                evt.preventDefault();
20591                break;
20592              }
20593
20594            case KEY_CODES.END:
20595              {
20596                focusDot(data.nav, data.pages);
20597                evt.preventDefault();
20598                break;
20599              }
20600
20601            default:
20602              {
20603                return;
20604              }
20605          }
20606        }
20607      }
20608    };
20609  }
20610
20611  function focusDot($nav, index) {
20612    // Focus nav dot; don't change class to active
20613    var $active = $nav.children().eq(index).focus();
20614    $nav.children().not($active);
20615  }
20616
20617  function change(data, options) {
20618    options = options || {};
20619    var config = data.config;
20620    var anchors = data.anchors; // Set new index
20621
20622    data.previous = data.index;
20623    var index = options.index;
20624    var shift = {};
20625
20626    if (index < 0) {
20627      index = anchors.length - 1;
20628
20629      if (config.infinite) {
20630        // Shift first slide to the end
20631        shift.x = -data.endX;
20632        shift.from = 0;
20633        shift.to = anchors[0].width;
20634      }
20635    } else if (index >= anchors.length) {
20636      index = 0;
20637
20638      if (config.infinite) {
20639        // Shift last slide to the start
20640        shift.x = anchors[anchors.length - 1].width;
20641        shift.from = -anchors[anchors.length - 1].x;
20642        shift.to = shift.from - shift.x;
20643      }
20644    }
20645
20646    data.index = index; // Select nav dot; set class active
20647
20648    var $active = data.nav.children().eq(index).addClass('w-active').attr('aria-selected', 'true').attr('tabindex', '0');
20649    data.nav.children().not($active).removeClass('w-active').attr('aria-selected', 'false').attr('tabindex', '-1'); // Hide arrows
20650
20651    if (config.hideArrows) {
20652      data.index === anchors.length - 1 ? data.right.hide() : data.right.show();
20653      data.index === 0 ? data.left.hide() : data.left.show();
20654    } // Get page offset from anchors
20655
20656
20657    var lastOffsetX = data.offsetX || 0;
20658    var offsetX = data.offsetX = -anchors[data.index].x;
20659    var resetConfig = {
20660      x: offsetX,
20661      opacity: 1,
20662      visibility: ''
20663    }; // Transition slides
20664
20665    var targets = $(anchors[data.index].els);
20666    var prevTargs = $(anchors[data.previous] && anchors[data.previous].els);
20667    var others = data.slides.not(targets);
20668    var animation = config.animation;
20669    var easing = config.easing;
20670    var duration = Math.round(config.duration);
20671    var vector = options.vector || (data.index > data.previous ? 1 : -1);
20672    var fadeRule = 'opacity ' + duration + 'ms ' + easing;
20673    var slideRule = 'transform ' + duration + 'ms ' + easing; // Make active slides' content focusable
20674
20675    targets.find(FOCUSABLE_SELECTOR).removeAttr('tabindex');
20676    targets.removeAttr('aria-hidden'); // Voiceover bug: Sometimes descendants are still visible, so hide everything...
20677
20678    targets.find('*').removeAttr('aria-hidden'); // Prevent focus on inactive slides' content
20679
20680    others.find(FOCUSABLE_SELECTOR).attr('tabindex', '-1');
20681    others.attr('aria-hidden', 'true'); // Voiceover bug: Sometimes descendants are still visible, so hide everything...
20682
20683    others.find('*').attr('aria-hidden', 'true'); // Trigger IX events
20684
20685    if (!designer) {
20686      targets.each(ix.intro);
20687      others.each(ix.outro);
20688    } // Set immediately after layout changes (but not during redraw)
20689
20690
20691    if (options.immediate && !inRedraw) {
20692      tram(targets).set(resetConfig);
20693      resetOthers();
20694      return;
20695    } // Exit early if index is unchanged
20696
20697
20698    if (data.index === data.previous) {
20699      return;
20700    } // Announce slide change to screen reader
20701
20702
20703    data.ariaLiveLabel.text("Slide ".concat(index + 1, " of ").concat(anchors.length, ".")); // Cross Fade / Out-In
20704
20705    if (animation === 'cross') {
20706      var reduced = Math.round(duration - duration * config.crossOver);
20707      var wait = Math.round(duration - reduced);
20708      fadeRule = 'opacity ' + reduced + 'ms ' + easing;
20709      tram(prevTargs).set({
20710        visibility: ''
20711      }).add(fadeRule).start({
20712        opacity: 0
20713      });
20714      tram(targets).set({
20715        visibility: '',
20716        x: offsetX,
20717        opacity: 0,
20718        zIndex: data.depth++
20719      }).add(fadeRule).wait(wait).then({
20720        opacity: 1
20721      }).then(resetOthers);
20722      return;
20723    } // Fade Over
20724
20725
20726    if (animation === 'fade') {
20727      tram(prevTargs).set({
20728        visibility: ''
20729      }).stop();
20730      tram(targets).set({
20731        visibility: '',
20732        x: offsetX,
20733        opacity: 0,
20734        zIndex: data.depth++
20735      }).add(fadeRule).start({
20736        opacity: 1
20737      }).then(resetOthers);
20738      return;
20739    } // Slide Over
20740
20741
20742    if (animation === 'over') {
20743      resetConfig = {
20744        x: data.endX
20745      };
20746      tram(prevTargs).set({
20747        visibility: ''
20748      }).stop();
20749      tram(targets).set({
20750        visibility: '',
20751        zIndex: data.depth++,
20752        x: offsetX + anchors[data.index].width * vector
20753      }).add(slideRule).start({
20754        x: offsetX
20755      }).then(resetOthers);
20756      return;
20757    } // Slide - infinite scroll
20758
20759
20760    if (config.infinite && shift.x) {
20761      tram(data.slides.not(prevTargs)).set({
20762        visibility: '',
20763        x: shift.x
20764      }).add(slideRule).start({
20765        x: offsetX
20766      });
20767      tram(prevTargs).set({
20768        visibility: '',
20769        x: shift.from
20770      }).add(slideRule).start({
20771        x: shift.to
20772      });
20773      data.shifted = prevTargs;
20774    } else {
20775      if (config.infinite && data.shifted) {
20776        tram(data.shifted).set({
20777          visibility: '',
20778          x: lastOffsetX
20779        });
20780        data.shifted = null;
20781      } // Slide - basic scroll
20782
20783
20784      tram(data.slides).set({
20785        visibility: ''
20786      }).add(slideRule).start({
20787        x: offsetX
20788      });
20789    } // Helper to move others out of view
20790
20791
20792    function resetOthers() {
20793      targets = $(anchors[data.index].els);
20794      others = data.slides.not(targets);
20795
20796      if (animation !== 'slide') {
20797        resetConfig.visibility = 'hidden';
20798      }
20799
20800      tram(others).set(resetConfig);
20801    }
20802  }
20803
20804  function render(i, el) {
20805    var data = $.data(el, namespace);
20806
20807    if (!data) {
20808      return;
20809    }
20810
20811    if (maskChanged(data)) {
20812      return layout(data);
20813    }
20814
20815    if (designer && slidesChanged(data)) {
20816      layout(data);
20817    }
20818  }
20819
20820  function layout(data) {
20821    // Determine page count from width of slides
20822    var pages = 1;
20823    var offset = 0;
20824    var anchor = 0;
20825    var width = 0;
20826    var maskWidth = data.maskWidth;
20827    var threshold = maskWidth - data.config.edge;
20828
20829    if (threshold < 0) {
20830      threshold = 0;
20831    }
20832
20833    data.anchors = [{
20834      els: [],
20835      x: 0,
20836      width: 0
20837    }];
20838    data.slides.each(function (i, el) {
20839      if (anchor - offset > threshold) {
20840        pages++;
20841        offset += maskWidth; // Store page anchor for transition
20842
20843        data.anchors[pages - 1] = {
20844          els: [],
20845          x: anchor,
20846          width: 0
20847        };
20848      } // Set next anchor using current width + margin
20849
20850
20851      width = $(el).outerWidth(true);
20852      anchor += width;
20853      data.anchors[pages - 1].width += width;
20854      data.anchors[pages - 1].els.push(el);
20855      var ariaLabel = i + 1 + ' of ' + data.slides.length;
20856      $(el).attr('aria-label', ariaLabel);
20857      $(el).attr('role', 'group');
20858    });
20859    data.endX = anchor; // Build dots if nav exists and needs updating
20860
20861    if (designer) {
20862      data.pages = null;
20863    }
20864
20865    if (data.nav.length && data.pages !== pages) {
20866      data.pages = pages;
20867      buildNav(data);
20868    } // Make sure index is still within range and call change handler
20869
20870
20871    var index = data.index;
20872
20873    if (index >= pages) {
20874      index = pages - 1;
20875    }
20876
20877    change(data, {
20878      immediate: true,
20879      index: index
20880    });
20881  }
20882
20883  function buildNav(data) {
20884    var dots = [];
20885    var $dot;
20886    var spacing = data.el.attr('data-nav-spacing');
20887
20888    if (spacing) {
20889      spacing = parseFloat(spacing) + 'px';
20890    }
20891
20892    for (var i = 0, len = data.pages; i < len; i++) {
20893      $dot = $(dot);
20894      $dot.attr('aria-label', 'Show slide ' + (i + 1) + ' of ' + len).attr('aria-selected', 'false').attr('role', 'button').attr('tabindex', '-1');
20895
20896      if (data.nav.hasClass('w-num')) {
20897        $dot.text(i + 1);
20898      }
20899
20900      if (spacing != null) {
20901        $dot.css({
20902          'margin-left': spacing,
20903          'margin-right': spacing
20904        });
20905      }
20906
20907      dots.push($dot);
20908    }
20909
20910    data.nav.empty().append(dots);
20911  }
20912
20913  function maskChanged(data) {
20914    var maskWidth = data.mask.width();
20915
20916    if (data.maskWidth !== maskWidth) {
20917      data.maskWidth = maskWidth;
20918      return true;
20919    }
20920
20921    return false;
20922  }
20923
20924  function slidesChanged(data) {
20925    var slidesWidth = 0;
20926    data.slides.each(function (i, el) {
20927      slidesWidth += $(el).outerWidth(true);
20928    });
20929
20930    if (data.slidesWidth !== slidesWidth) {
20931      data.slidesWidth = slidesWidth;
20932      return true;
20933    }
20934
20935    return false;
20936  } // Export module
20937
20938
20939  return api;
20940});
20941
20942/***/ }),
20943/* 326 */
20944/***/ (function(module, exports, __webpack_require__) {
20945
20946"use strict";
20947 // @wf-will-never-add-flow-to-this-file
20948
20949/* globals window, document */
20950
20951/* eslint-disable no-var */
20952
20953/**
20954 * Webflow: Maps widget
20955 */
20956
20957var Webflow = __webpack_require__(3);
20958
20959Webflow.define('maps', module.exports = function ($, _) {
20960  var api = {};
20961  var $doc = $(document);
20962  var google = null;
20963  var $maps;
20964  var namespace = '.w-widget-map'; // The API key is injected here from the Webflow Integrations tab on the site's dashboard
20965
20966  var googleMapsApiKey = ''; // -----------------------------------
20967  // Module methods
20968
20969  api.ready = function () {
20970    // Init Maps on the front-end
20971    if (!Webflow.env()) {
20972      initMaps();
20973    }
20974  };
20975
20976  api.destroy = removeListeners; // -----------------------------------
20977  // Private methods
20978
20979  function initMaps() {
20980    $maps = $doc.find(namespace);
20981
20982    if (!$maps.length) {
20983      return;
20984    }
20985
20986    if (google === null) {
20987      $.getScript('https://maps.googleapis.com/maps/api/js?v=3.31&sensor=false&callback=_wf_maps_loaded&key=' + googleMapsApiKey);
20988      window._wf_maps_loaded = mapsLoaded;
20989    } else {
20990      mapsLoaded();
20991    }
20992
20993    function mapsLoaded() {
20994      window._wf_maps_loaded = function () {};
20995
20996      google = window.google;
20997      $maps.each(renderMap);
20998      removeListeners();
20999      addListeners();
21000    }
21001  }
21002
21003  function removeListeners() {
21004    Webflow.resize.off(resizeMaps);
21005    Webflow.redraw.off(resizeMaps);
21006  }
21007
21008  function addListeners() {
21009    Webflow.resize.on(resizeMaps);
21010    Webflow.redraw.on(resizeMaps);
21011  } // Render map onto each element
21012
21013
21014  function renderMap(i, el) {
21015    var data = $(el).data();
21016    getState(el, data);
21017  }
21018
21019  function resizeMaps() {
21020    $maps.each(resizeMap);
21021  } // Resize map when window changes
21022
21023
21024  function resizeMap(i, el) {
21025    var state = getState(el);
21026    google.maps.event.trigger(state.map, 'resize');
21027    state.setMapPosition();
21028  } // Store state on element data
21029
21030
21031  var store = 'w-widget-map';
21032
21033  function getState(el, data) {
21034    var state = $.data(el, store);
21035
21036    if (state) {
21037      return state;
21038    }
21039
21040    var $el = $(el);
21041    state = $.data(el, store, {
21042      // Default options
21043      latLng: '51.511214,-0.119824',
21044      tooltip: '',
21045      style: 'roadmap',
21046      zoom: 12,
21047      // Marker
21048      marker: new google.maps.Marker({
21049        draggable: false
21050      }),
21051      // Tooltip infowindow
21052      infowindow: new google.maps.InfoWindow({
21053        disableAutoPan: true
21054      })
21055    }); // LatLng center point
21056
21057    var latLng = data.widgetLatlng || state.latLng;
21058    state.latLng = latLng;
21059    var coords = latLng.split(',');
21060    var latLngObj = new google.maps.LatLng(coords[0], coords[1]);
21061    state.latLngObj = latLngObj; // Disable touch events
21062
21063    var mapDraggable = !(Webflow.env.touch && data.disableTouch); // Map instance
21064
21065    state.map = new google.maps.Map(el, {
21066      center: state.latLngObj,
21067      zoom: state.zoom,
21068      maxZoom: 18,
21069      mapTypeControl: false,
21070      panControl: false,
21071      streetViewControl: false,
21072      scrollwheel: !data.disableScroll,
21073      draggable: mapDraggable,
21074      zoomControl: true,
21075      zoomControlOptions: {
21076        style: google.maps.ZoomControlStyle.SMALL
21077      },
21078      mapTypeId: state.style
21079    });
21080    state.marker.setMap(state.map); // Set map position and offset
21081
21082    state.setMapPosition = function () {
21083      state.map.setCenter(state.latLngObj);
21084      var offsetX = 0;
21085      var offsetY = 0;
21086      var padding = $el.css(['paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft']);
21087      offsetX -= parseInt(padding.paddingLeft, 10);
21088      offsetX += parseInt(padding.paddingRight, 10);
21089      offsetY -= parseInt(padding.paddingTop, 10);
21090      offsetY += parseInt(padding.paddingBottom, 10);
21091
21092      if (offsetX || offsetY) {
21093        state.map.panBy(offsetX, offsetY);
21094      }
21095
21096      $el.css('position', ''); // Remove injected position
21097    }; // Fix position after first tiles have loaded
21098
21099
21100    google.maps.event.addListener(state.map, 'tilesloaded', function () {
21101      google.maps.event.clearListeners(state.map, 'tilesloaded');
21102      state.setMapPosition();
21103    }); // Set initial position
21104
21105    state.setMapPosition();
21106    state.marker.setPosition(state.latLngObj);
21107    state.infowindow.setPosition(state.latLngObj); // Draw tooltip
21108
21109    var tooltip = data.widgetTooltip;
21110
21111    if (tooltip) {
21112      state.tooltip = tooltip;
21113      state.infowindow.setContent(tooltip);
21114
21115      if (!state.infowindowOpen) {
21116        state.infowindow.open(state.map, state.marker);
21117        state.infowindowOpen = true;
21118      }
21119    } // Map style - options.style
21120
21121
21122    var style = data.widgetStyle;
21123
21124    if (style) {
21125      state.map.setMapTypeId(style);
21126    } // Zoom - options.zoom
21127
21128
21129    var zoom = data.widgetZoom;
21130
21131    if (zoom != null) {
21132      state.zoom = zoom;
21133      state.map.setZoom(Number(zoom));
21134    } // Click marker to open in google maps
21135
21136
21137    google.maps.event.addListener(state.marker, 'click', function () {
21138      window.open('https://maps.google.com/?z=' + state.zoom + '&daddr=' + state.latLng);
21139    });
21140    return state;
21141  } // Export module
21142
21143
21144  return api;
21145});
21146
21147/***/ })
21148/******/ ]);/**
21149 * ----------------------------------------------------------------------
21150 * Webflow: Interactions 2.0: Init
21151 */
21152Webflow.require('ix2').init(
21153{"events":{"e":{"id":"e","name":"","eventTypeId":"MOUSE_CLICK","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-2"}},"mediaQueries":["main","medium","small","tiny"],"target":{"selector":".expandable-title","originalId":"5f7cea2f5aeed41e0d326f80|1d8d6aa0-1b2d-5b81-f934-92dc03c3ef81","appliesTo":"CLASS"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1565568647478},"e-2":{"id":"e-2","name":"","eventTypeId":"MOUSE_SECOND_CLICK","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-2","affectedElements":{},"playInReverse":false,"autoStopEventId":"e"}},"mediaQueries":["main","medium","small","tiny"],"target":{"selector":".expandable-title","originalId":"5f7cea2f5aeed41e0d326f80|1d8d6aa0-1b2d-5b81-f934-92dc03c3ef81","appliesTo":"CLASS"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1565568647478},"e-5":{"id":"e-5","name":"","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-5","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f7cea2f5aeed41e0d326f80"},"targets":[],"config":[{"continuousParameterGroupId":"a-5-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565579015108},"e-6":{"id":"e-6","name":"","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-5","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f7cea2f5aeed45d7b326f86"},"targets":[],"config":[{"continuousParameterGroupId":"a-5-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565580429556},"e-8":{"id":"e-8","name":"","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-5","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f7cea2f5aeed4
2115367d3326f88"},"targets":[],"config":[{"continuousParameterGroupId":"a-5-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565651205211},"e-9":{"id":"e-9","name":"","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-7","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed467d3326f88|35f9b2b5-6f2e-bcc0-b419-0ce254d19861"},"targets":[],"config":[{"continuousParameterGroupId":"a-7-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565651205211},"e-10":{"id":"e-10","name":"","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-5","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f7cea2f5aeed49777326f89"},"targets":[],"config":[{"continuousParameterGroupId":"a-5-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565651241894},"e-11":{"id":"e-11","name":"","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-7","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed49777326f89|b407bb2e-2b95-8bea-d562-7d6cbde37a07"},"targets":[],"config":[{"continuousParameterGroupId":"a-7-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565651908988},"e-12":{"id":"e-12","name":"","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-5","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f7cea2f5aeed418cf326f8a"},"targets":[],"config":[{"continuousParameterGroupId":"a-5-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565656182608},"e-13":{"id":"e-13","name":"","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-7","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed418cf326f8a|7a995d90-238b-6a02-0b95-699e210eb66f"},"targets":[],"config":[{"continuousParameterGroupId":"a-7-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565656276619},"e-16":{"id":"e-16","name":"","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-5","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f7cea2f5aeed40cc8326f8c"},"targets":[],"config":[{"continuousParameterGroupId":"a-5-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565661948531},"e-17":{"id":"e-17","name":"","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-7","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed40cc8326f8c|7a995d90-238b-6a02-0b95-699e210eb66f"},"targets":[],"config":[{"continuousParameterGroupId":"a-7-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565661948531},"e-18":{"id":"e-18","name":"","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-5","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f7cea2f5aeed47c23326f8d"},"targets":[],"config":[{"continuousParameterGroupId":"a-5-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565663496748},"e-19":{"id":"e-19","name":"","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-7","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed47c23326f8d|2d28422e-c0f3-8cdc-97f8-b8a3f8004f79"},"targets":[],"config":[{"continuousParameterGroupId":"a-7-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565663923418},"e-21":{"id":"e-21","name":"","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-7","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed4
211536e76326f8f|c7321c28-488f-91eb-9937-b235ff635ff1"},"targets":[],"config":[{"continuousParameterGroupId":"a-7-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565672986138},"e-23":{"id":"e-23","name":"","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-7","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed4cec4326f90|c7321c28-488f-91eb-9937-b235ff635ff1"},"targets":[],"config":[{"continuousParameterGroupId":"a-7-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565674819728},"e-25":{"id":"e-25","name":"","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-7","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed41785326f91|b407bb2e-2b95-8bea-d562-7d6cbde37a07"},"targets":[],"config":[{"continuousParameterGroupId":"a-7-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565674927136},"e-26":{"id":"e-26","name":"","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-7","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed41785326f91|7a0e40d2-98a3-cfc3-b266-12512c607783"},"targets":[],"config":[{"continuousParameterGroupId":"a-7-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565677442674},"e-28":{"id":"e-28","name":"","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-7","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed44023326f92|a759bfa4-77f4-a870-34ca-9c72c671320c"},"targets":[],"config":[{"continuousParameterGroupId":"a-7-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565737453942},"e-29":{"id":"e-29","name":"","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-5","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f7cea2f5aeed479f6326f94"},"targets":[],"config":[{"continuousParameterGroupId":"a-5-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565737526030},"e-30":{"id":"e-30","name":"","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-7","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed479f6326f94|35f9b2b5-6f2e-bcc0-b419-0ce254d19861"},"targets":[],"config":[{"continuousParameterGroupId":"a-7-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565737526030},"e-31":{"id":"e-31","name":"","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-5","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f7cea2f5aeed4421a326f95"},"targets":[],"config":[{"continuousParameterGroupId":"a-5-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565739819916},"e-32":{"id":"e-32","name":"","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-7","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed4421a326f95|591a310f-cd9f-ee87-5279-c6b4a860c792"},"targets":[],"config":[{"continuousParameterGroupId":"a-7-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565740079133},"e-33":{"id":"e-33","name":"","eventTypeId":"MOUSE_CLICK","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-21","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-34"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"dfcc347b-9488-6802-f907-ea3594cba704"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1565740729200},"e-35":{"id":"e-35","name":"","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-22","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f7cea2f5aeed4421a326f95"},"targets":[],"config":[{"continuousParameterGroupId":"a-22-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565746220652},"e-36":{"id":"e-36","name":"","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-7","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed4
211536502326f96|0769e264-c66d-e0ec-fbfa-c11d0d7d78b4"},"targets":[],"config":[{"continuousParameterGroupId":"a-7-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565751117449},"e-37":{"id":"e-37","name":"","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-5","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f7cea2f5aeed4d6f4326f99"},"targets":[],"config":[{"continuousParameterGroupId":"a-5-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565756096900},"e-38":{"id":"e-38","name":"","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-5","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f7cea2f5aeed46159326f9a"},"targets":[],"config":[{"continuousParameterGroupId":"a-5-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565761896378},"e-39":{"id":"e-39","name":"","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-5","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f7cea2f5aeed43218326f9b"},"targets":[],"config":[{"continuousParameterGroupId":"a-5-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565822145245},"e-42":{"id":"e-42","name":"","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-5","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f7cea2f5aeed46949326f9d"},"targets":[],"config":[{"continuousParameterGroupId":"a-5-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565835518792},"e-43":{"id":"e-43","name":"","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-7","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed46949326f9d|def833e6-9c5e-5df8-7515-b527e786d58c"},"targets":[],"config":[{"continuousParameterGroupId":"a-7-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565835518792},"e-44":{"id":"e-44","name":"","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-7","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed46949326f9d|fcfb1eb7-ad26-f467-f92a-3e277e556124"},"targets":[],"config":[{"continuousParameterGroupId":"a-7-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565835518792},"e-45":{"id":"e-45","name":"","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-5","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f7cea2f5aeed4b16c326f9e"},"targets":[],"config":[{"continuousParameterGroupId":"a-5-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565835865008},"e-46":{"id":"e-46","name":"","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-7","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed4b16c326f9e|e9a9639d-1830-3d01-f9ef-6a2d4d7aa643"},"targets":[],"config":[{"continuousParameterGroupId":"a-7-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565840559481},"e-47":{"id":"e-47","name":"","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-5","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f7cea2f5aeed45846326f9f"},"targets":[],"config":[{"continuousParameterGroupId":"a-5-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565842729600}
21153,"e-48":{"id":"e-48","name":"","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-5","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f7cea2f5aeed4f726326fa0"},"targets":[],"config":[{"continuousParameterGroupId":"a-5-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565844395934},"e-49":{"id":"e-49","name":"","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-5","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f7cea2f5aeed4d0c8326fa1"},"targets":[],"config":[{"continuousParameterGroupId":"a-5-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565847140159},"e-50":{"id":"e-50","name":"","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-22","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f7cea2f5aeed418cf326f8a"},"targets":[],"config":[{"continuousParameterGroupId":"a-22-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565913632704},"e-51":{"id":"e-51","name":"","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-22","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f7cea2f5aeed4d0c8326fa1"},"targets":[],"config":[{"continuousParameterGroupId":"a-22-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565914520930},"e-52":{"id":"e-52","name":"","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-5","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f7cea2f5aeed41ff9326fbc"},"targets":[],"config":[{"continuousParameterGroupId":"a-5-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565927436127},"e-53":{"id":"e-53","name":"","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-5","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f7cea2f5aeed48147326fd0"},"targets":[],"config":[{"continuousParameterGroupId":"a-5-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565931889080},"e-54":{"id":"e-54","name":"","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-7","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed41ff9326fbc|84d7ff8f-ba77-75ea-17d7-a0f44b4118a0"},"targets":[],"config":[{"continuousParameterGroupId":"a-7-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1565932784099},"e-55":{"id":"e-55","name":"","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-7","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed48147326fd0|134ea0b9-dba0-9394-666f-cf7bb20472c0"},"targets":[],"config":[{"continuousParameterGroupId":"a-7-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1566168162347},"e-56":{"id":"e-56","name":"","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-5","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f7cea2f5aeed41444326fe4"},"targets":[],"config":[{"continuousParameterGroupId":"a-5-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1566254441694},"e-57":{"id":"e-57","name":"","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-7","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed41444326fe4|134ea0b9-dba0-9394-666f-cf7bb20472c0"},"targets":[],"config":[{"continuousParameterGroupId":"a-7-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1566254441694},"e-58":{"id":"e-58","name":"","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-7","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed45d7b326f86|7553a581-113a-88ae-0b78-511d7f79b584"},"targets":[],"config":[{"continuousParameterGroupId":"a-7-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1566254768510},"e-59":{"id":"e-59","name":"","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-7","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed4d0c8326fa1|bcc1ea15-7434-4097-04c3-4ebce4ca4797"},"targets":[],"config":[{"continuousParameterGroupId":"a-7-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1566254948578},"e-60":{"id":"e-60","name":"","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-7","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed4f726326fa0|0da03010-40ef-e302-d7d1-508cae3e37af"},"targets":[],"config":[{"continuousParameterGroupId":"a-7-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1566255031130},"e-61":{"id":"e-61","name":"","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-7","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed4d0c8326fa1|babd4ba7-7d59-9ab4-ecb3-cd5f1a0adb25"},"targets":[],"config":[{"continuousParameterGroupId":"a-7-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1566255335240}
21153,"e-62":{"id":"e-62","name":"","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-5","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f7cea2f5aeed4792932700b"},"targets":[],"config":[{"continuousParameterGroupId":"a-5-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1566259233084},"e-64":{"id":"e-64","name":"","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-22","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f7cea2f5aeed4792932700b"},"targets":[],"config":[{"continuousParameterGroupId":"a-22-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1566259233084},"e-66":{"id":"e-66","name":"","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-22","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f7cea2f5aeed40cc8326f8c"},"targets":[],"config":[{"continuousParameterGroupId":"a-22-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1566516096638},"e-67":{"id":"e-67","name":"","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-7","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed41e0d326f80|5fde5fa8-2af1-a406-9480-07311c1da8ed"},"targets":[],"config":[{"continuousParameterGroupId":"a-7-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1566778489586},"e-68":{"id":"e-68","name":"","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-5","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f7cea2f5aeed468b6327026"},"targets":[],"config":[{"continuousParameterGroupId":"a-5-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1566860069007},"e-69":{"id":"e-69","name":"","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-7","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed468b6327026|7553a581-113a-88ae-0b78-511d7f79b584"},"targets":[],"config":[{"continuousParameterGroupId":"a-7-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1566860069007},"e-70":{"id":"e-70","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-71"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed41e0d326f80|f35a5dee-1e7f-b139-f48d-791e53e81de6"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566861094157},"e-72":{"id":"e-72","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-73"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed41e0d326f80|f35a5dee-1e7f-b139-f48d-791e53e81dfd"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":250,"direction":null,"effectIn":true},"createdOn":1566861114307}
21153,"e-74":{"id":"e-74","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-75"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed41e0d326f80|380ed9e8-a889-0016-1372-cb714df10dea"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566861134014},"e-76":{"id":"e-76","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-77"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed41e0d326f80|380ed9e8-a889-0016-1372-cb714df10df1"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":250,"direction":null,"effectIn":true},"createdOn":1566861141160},"e-78":{"id":"e-78","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-79"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed41e0d326f80|4de273b0-2571-7774-e67e-d1a4dbbbf9c1"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566861159589},"e-80":{"id":"e-80","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-81"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed41e0d326f80|4de273b0-2571-7774-e67e-d1a4dbbbf9c8"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":250,"direction":null,"effectIn":true},"createdOn":1566861169082},"e-82":{"id":"e-82","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","config":{"actionListId":"slideInBottom","autoStopEventId":"e-83"},"instant":false},"mediaQueries":["main","medium"],"target":{"selector":".demo-container","originalId":"5f7cea2f5aeed41e0d326f80|31df7a85-1323-9594-818a-eadd164026d8","appliesTo":"CLASS"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":"BOTTOM","effectIn":true},"createdOn":1566861183098},"e-84":{"id":"e-84","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-85"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed418cf326f8a|f4e63b6f-898e-92aa-8399-d944af82ccdf"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566873653000},"e-86":{"id":"e-86","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-87"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed418cf326f8a|f4e63b6f-898e-92aa-8399-d944af82ccd1"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566873664272},"e-88":{"id":"e-88","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-89"},"instant":false},"mediaQueries":["main","medium"],"target":{"selector":".team-member","originalId":"5f7cea2f5aeed418cf326f8a|880043bd-d1e0-1924-cb58-1277f8ce3189","appliesTo":"CLASS"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566873676816},"e-90":{"id":"e-90","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-91"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed418cf326f8a|6151d294-06ed-7444-78eb-819ae61194f9"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566873690012},"e-92":{"id":"e-92","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-93"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed418cf326f8a|6151d294-06ed-7444-78eb-819ae6119500"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566873700869},"e-94":{"id":"e-94","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","config":{"actionListId":"slideInBottom","autoStopEventId":"e-95"},"instant":false},"mediaQueries":["main","medium"],"target":{"selector":".cta-container","originalId":"3af66913-a4ab-bdb7-fd6f-e1e707befb4e","appliesTo":"CLASS"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":"BOTTOM","effectIn":true},"createdOn":1566873718995},"e-96":{"id":"e-96","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-97"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed418cf326f8a|f4e4c23f-9696-d033-284c-5930c63006e4"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566873742251},"e-98":{"id":"e-98","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-99"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed418cf326f8a|f4e4c23f-9696-d033-284c-5930c63006ea"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":250,"direction":null,"effectIn":true},"createdOn":1566873751483},"e-100":{"id":"e-100","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-101"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed418cf326f8a|f4e4c23f-9696-d033-284c-5930c63006f0"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":500,"direction":null,"effectIn":true},"createdOn":1566873770662},"e-102":{"id":"e-102","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-103"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed49777326f89|b413be71-d3fa-6b10-4365-2e127a6bf33f"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true}
21153,"createdOn":1566873812741},"e-104":{"id":"e-104","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-105"},"instant":false},"mediaQueries":["main","medium"],"target":{"selector":".section-title","originalId":"5f7cea2f5aeed49777326f89|171a80d0-8855-8025-d305-a47a1a28ba60","appliesTo":"CLASS"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566873823990},"e-106":{"id":"e-106","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","config":{"actionListId":"slideInRight","autoStopEventId":"e-107"},"instant":false},"mediaQueries":["main","medium"],"target":{"selector":".timeline-item.timeline-item-right","originalId":"5f7cea2f5aeed49777326f89|70e66ec3-5289-63e0-6000-3d677e244afa","appliesTo":"CLASS"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":"RIGHT","effectIn":true},"createdOn":1566873853804},"e-108":{"id":"e-108","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"SLIDE_EFFECT","config":{"actionListId":"slideInLeft","autoStopEventId":"e-109"},"instant":false},"mediaQueries":["main","medium"],"target":{"selector":".timeline-item","originalId":"5f7cea2f5aeed49777326f89|72a46860-0149-7ac0-d0b0-923476ce6ff6","appliesTo":"CLASS"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":"LEFT","effectIn":true},"createdOn":1566873865906},"e-110":{"id":"e-110","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-111"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed49777326f89|f4e63b6f-898e-92aa-8399-d944af82ccdf"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566873877686},"e-112":{"id":"e-112","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-113"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed49777326f89|f4e63b6f-898e-92aa-8399-d944af82ccd1"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566873886864},"e-114":{"id":"e-114","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-115"},"instant":false},"mediaQueries":["main","medium"],"target":{"selector":".video-lightbox-container","originalId":"5f7cea2f5aeed467d3326f88|19f75d04-8898-4e70-fdf7-0d75616b3682","appliesTo":"CLASS"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566873910064},"e-116":{"id":"e-116","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-117"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed467d3326f88|67906d49-ec0f-7356-a6fa-501308bbe8d4"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566873932945},"e-118":{"id":"e-118","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-119"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed467d3326f88|1319c0ba-a460-e34d-ce98-23f5025f35e3"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566873941136},"e-120":{"id":"e-120","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-121"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed4
2115367d3326f88|79f6fbdd-e8f7-f7dc-92f6-cbf5d5e65bd2"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566873950798},"e-122":{"id":"e-122","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-123"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed467d3326f88|79f6fbdd-e8f7-f7dc-92f6-cbf5d5e65bba"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566873958946},"e-124":{"id":"e-124","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-125"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed47c23326f8d|c943334d-9ead-ecfd-dfc0-c31490c130c8"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566874347420},"e-126":{"id":"e-126","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"GROW_EFFECT","config":{"actionListId":"growIn","autoStopEventId":"e-127"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed47c23326f8d|2ecac598-6211-0448-67ab-f04054a22ca2"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566874356624},"e-128":{"id":"e-128","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-129"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed40cc8326f8c|f4e63b6f-898e-92aa-8399-d944af82ccd1"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566874471643},"e-130":{"id":"e-130","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-131"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed40cc8326f8c|551b0760-2451-5ac0-cc36-07c3981a14a5"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566874482986},"e-132":{"id":"e-132","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-133"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed40cc8326f8c|f4e63b6f-898e-92aa-8399-d944af82ccdf"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566874492748},"e-134":{"id":"e-134","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-135"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed40cc8326f8c|551b0760-2451-5ac0-cc36-07c3981a14cd"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566874505699},"e-136":{"id":"e-136","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-137"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed40cc8326f8c|0fdaab95-5af3-a28c-5b05-adab39932f66"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566874515888},"e-138":{"id":"e-138","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-139"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed40cc8326f8c|0fdaab95-5af3-a28c-5b05-adab39932f3e"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566874524742},"e-140":{"id":"e-140","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-141"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed479f6326f94|3011ae6b-43d4-757b-2c54-f7ca4c390b93"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566874609324},"e-142":{"id":"e-142","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-143"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed4421a326f95|591a310f-cd9f-ee87-5279-c6b4a860c768"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566874709180}
21153,"e-144":{"id":"e-144","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-145"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed4421a326f95|591a310f-cd9f-ee87-5279-c6b4a860c790"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566874718561},"e-146":{"id":"e-146","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-147"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed46949326f9d|fcfb1eb7-ad26-f467-f92a-3e277e55610f"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566874768141},"e-148":{"id":"e-148","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-149"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed46949326f9d|fcfb1eb7-ad26-f467-f92a-3e277e556122"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566874776274},"e-154":{"id":"e-154","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-155"},"instant":false},"mediaQueries":["main","medium"],"target":{"selector":".icon-list-item.icon-list-item-large.card","originalId":"5f7cea2f5aeed4b16c326f9e|4e9a5c9d-251b-3a4d-b84c-5fe62de1871d","appliesTo":"CLASS"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566874821748},"e-156":{"id":"e-156","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-157"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed4b16c326f9e|434aab7a-9b25-1f95-7836-9edd707bf277"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566874830444},"e-158":{"id":"e-158","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-159"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed4b16c326f9e|9109e042-81f1-e823-5cab-458730b3a250"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566874839478},"e-160":{"id":"e-160","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-161"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed4b16c326f9e|9109e042-81f1-e823-5cab-458730b3a258"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566874847903},"e-162":{"id":"e-162","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-163"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed45846326f9f|c556fdbd-f199-4008-b1d7-28167e7027e7"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566874888246},"e-164":{"id":"e-164","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-165"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed45846326f9f|c556fdbd-f199-4008-b1d7-28167e7027bf"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566874894410},"e-166":{"id":"e-166","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-167"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed45846326f9f|d030367b-685f-f69b-e49b-74cf077ccb63"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566874903850},"e-168":{"id":"e-168","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-169"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed45846326f9f|d030367b-685f-f69b-e49b-74cf077ccb5c"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566874912277},"e-170":{"id":"e-170","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-171"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed4f726326fa0|29ec5744-b56a-8fb0-1f28-372876f4b16e"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566874935306},"e-172":{"id":"e-172","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-173"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed4f726326fa0|29ec5744-b56a-8fb0-1f28-372876f4b156"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566874943507},"e-174":{"id":"e-174","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-175"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed4d0c8326fa1|eb8e0e34-fdbe-1c82-c0f2-93e31ec13b19"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566874998045}
21153,"e-176":{"id":"e-176","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-177"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed4d0c8326fa1|eb8e0e34-fdbe-1c82-c0f2-93e31ec13b31"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566875008197},"e-178":{"id":"e-178","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-179"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed4d0c8326fa1|44392856-c860-bb6d-c912-c4e7a6ec91ed"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566875027499},"e-180":{"id":"e-180","name":"","eventTypeId":"SCROLL_INTO_VIEW","action":{"id":"","actionTypeId":"FADE_EFFECT","config":{"actionListId":"fadeIn","autoStopEventId":"e-181"},"instant":false},"mediaQueries":["main","medium"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed4d0c8326fa1|44392856-c860-bb6d-c912-c4e7a6ec91e5"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":0,"scrollOffsetUnit":"%","delay":0,"direction":null,"effectIn":true},"createdOn":1566875036014},"e-182":{"id":"e-182","name":"","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-7","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed479e9326fa2|7e162033-e85f-e101-4b3f-9153d3decee7"},"targets":[],"config":[{"continuousParameterGroupId":"a-7-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1566875274842},"e-183":{"id":"e-183","name":"","eventTypeId":"NAVBAR_OPEN","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-3","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-184"}},"mediaQueries":["main","medium","small","tiny"],"target":{"selector":".navbar","originalId":"cec6feca-7767-79ce-475e-53ba9fa67cf2","appliesTo":"CLASS"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1569206849008},"e-184":{"id":"e-184","name":"","eventTypeId":"NAVBAR_CLOSE","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-4","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-183"}},"mediaQueries":["main","medium","small","tiny"],"target":{"selector":".navbar","originalId":"cec6feca-7767-79ce-475e-53ba9fa67cf2","appliesTo":"CLASS"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1569206849014},"e-185":{"id":"e-185","name":"","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-5","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f7cea2f5aeed45e61327027"},"targets":[],"config":[{"continuousParameterGroupId":"a-5-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1576103868852},"e-186":{"id":"e-186","name":"","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-7","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed45e61327027|7553a581-113a-88ae-0b78-511d7f79b584"},"targets":[],"config":[{"continuousParameterGroupId":"a-7-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1576103868852},"e-187":{"id":"e-187","name":"","eventTypeId":"PAGE_SCROLL","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-5","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f7cea2f5aeed4
211536f22327028"},"targets":[],"config":[{"continuousParameterGroupId":"a-5-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1595896523548},"e-188":{"id":"e-188","name":"","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a-7","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f7cea2f5aeed46f22327028|84d7ff8f-ba77-75ea-17d7-a0f44b4118a0"},"targets":[],"config":[{"continuousParameterGroupId":"a-7-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1595896523548}},"actionLists":{"a":{"id":"a","title":"Expandable Open","actionItemGroups":[{"actionItems":[{"id":"a-n","actionTypeId":"GENERAL_DISPLAY","config":{"delay":0,"easing":"","duration":0,"value":"block","target":{"useEventTarget":"SIBLINGS","selector":".expandable-content-wrapper","selectorGuids":["d4f1dd39-c7bb-8b52-b502-116fddaf8722"]}}},{"id":"a-n-2","actionTypeId":"TRANSFORM_ROTATE","config":{"delay":0,"easing":"ease","duration":200,"target":{"useEventTarget":"CHILDREN","selector":".expandable-icon","selectorGuids":["d4f1dd39-c7bb-8b52-b502-116fddaf8721"]},"zValue":90,"xUnit":"DEG","yUnit":"DEG","zUnit":"DEG"}}]}],"createdOn":1565568653025,"useFirstGroupAsInitialState":false},"a-2":{"id":"a-2","title":"Expandable Close","actionItemGroups":[{"actionItems":[{"id":"a-2-n","actionTypeId":"GENERAL_DISPLAY","config":{"delay":0,"easing":"","duration":0,"value":"none","target":{"useEventTarget":"SIBLINGS","selector":".expandable-content-wrapper","selectorGuids":["d4f1dd39-c7bb-8b52-b502-116fddaf8722"]}}},{"id":"a-2-n-2","actionTypeId":"TRANSFORM_ROTATE","config":{"delay":0,"easing":"ease","duration":200,"target":{"useEventTarget":"CHILDREN","selector":".expandable-icon","selectorGuids":["d4f1dd39-c7bb-8b52-b502-116fddaf8721"]},"zValue":0,"xUnit":"DEG","yUnit":"DEG","zUnit":"DEG"}}]}],"createdOn":1565568653025,"useFirstGroupAsInitialState":false},"a-5":{"id":"a-5","title":"Show Back To Top Button","continuousParameterGroups":[{"id":"a-5-p","type":"SCROLL_PROGRESS","parameterLabel":"Scroll","continuousActionGroups":[{"keyframe":0,"actionItems":[{"id":"a-5-n","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"ease","duration":500,"target":{"selector":".back-to-top","selectorGuids":["08a828e6-59f8-df5d-867a-e3e7fa39ad46"]},"value":0,"unit":""}},{"id":"a-5-n-4","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"ease","duration":500,"target":{"selector":".back-to-top","selectorGuids":["08a828e6-59f8-df5d-867a-e3e7fa39ad46"]},"yValue":100,"xUnit":"PX","yUnit":"%","zUnit":"PX"}}]},{"keyframe":20,"actionItems":[{"id":"a-5-n-5","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"ease","duration":500,"target":{"selector":".back-to-top","selectorGuids":["08a828e6-59f8-df5d-867a-e3e7fa39ad46"]},"value":0,"unit":""}},{"id":"a-5-n-6","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"ease","duration":500,"target":{"selector":".back-to-top","selectorGuids":["08a828e6-59f8-df5d-867a-e3e7fa39ad46"]},"yValue":100,"xUnit":"PX","yUnit":"%","zUnit":"PX"}}]},{"keyframe":25,"actionItems":[{"id":"a-5-n-3","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"ease","duration":500,"target":{"selector":".back-to-top","selectorGuids":["08a828e6-59f8-df5d-867a-e3e7fa39ad46"]},"yValue":0,"xUnit":"PX","yUnit":"%","zUnit":"PX"}},{"id":"a-5-n-2","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"selector":".back-to-top","selectorGuids":["08a828e6-59f8-df5d-867a-e3e7fa39ad46"]},"value":1,"unit":""}}]}]}],"createdOn":1565579024705},"a-7":{"id":"a-7","title":"Parallax Slow","continuousParameterGroups":[{"id":"a-7-p","type":"SCROLL_PROGRESS","parameterLabel":"Scroll","continuousActionGroups":[{"keyframe":0,"actionItems":[{"id":"a-7-n","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":true,"id":"5f7cea2f5aeed41e0d326f80|35f9b2b5-6f2e-bcc0-b419-0ce254d19861"},"yValue":48,"xUnit":"PX","yUnit":"PX","zUnit":"PX"}}]},{"keyframe":100,"actionItems":[{"id":"a-7-n-2","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":true,"id":"5f7cea2f5aeed41e0d326f80|35f9b2b5-6f2e-bcc0-b419-0ce254d19861"},"yValue":-48,"xUnit":"PX","yUnit":"PX","zUnit":"PX"}}]}]}],"createdOn":1565586478204},"a-21":{"id":"a-21","title":"Dismiss Announcement Bar","actionItemGroups":[{"actionItems":[{"id":"a-21-n","actionTypeId":"GENERAL_DISPLAY","config":{"delay":0,"easing":"","duration":0,"value":"none","target":{"useEventTarget":"PARENT","selector":".announcement-bar.bg-gray-1","selectorGuids":["24a636f5-3ecc-1a03-6e1b-b37d552d276d","9b161a48-ea4f-d4e1-2eb6-912155a5ac45"]}}}]}],"createdOn":1565740734846,"useFirstGroupAsInitialState":false},"a-22":{"id":"a-22","title":"Add BG To Transparent Navbar","continuousParameterGroups":[{"id":"a-22-p","type":"SCROLL_PROGRESS","parameterLabel":"Scroll","continuousActionGroups":[{"keyframe":0,"actionItems":[{"id":"a-22-n","actionTypeId":"STYLE_BACKGROUND_COLOR","config":{"delay":0,"easing":"ease","duration":500,"target":{"selector":".navbar-container.sticky-top","selectorGuids":["7fece259-2f99-b509-00ab-7546f943bd26","5b452738-f61e-cbe9-7be6-5f6c5497f0bc"]},"rValue":0,"gValue":84,"bValue":80,"aValue":0}}]},{"keyframe":5,"actionItems":[{"id":"a-22-n-2","actionTypeId":"STYLE_BACKGROUND_COLOR","config":{"delay":0,"easing":"ease","duration":500,"globalSwatchId":"db82bbd0","target":{"selector":".navbar-container.sticky-top","selectorGuids":["7fece259-2f99-b509-00ab-7546f943bd26","5b452738-f61e-cbe9-7be6-5f6c5497f0bc"]},"rValue":0,"gValue":84,"bValue":80,"aValue":1}}]}]}],"createdOn":1565746261211},"a-3":{"id":"a-3","title":"Navbar Toggle Open","actionItemGroups":[{"actionItems":[{"id":"a-3-n","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".navbar-toggle-cross-icon","selectorGuids":["b5980122-770c-805b-6026-eae1ec048768"]},"xValue":100,"xUnit":"%","yUnit":"PX","zUnit":"PX"}},{"id":"a-3-n-2","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".navbar-toggle-cross-icon","selectorGuids":["b5980122-770c-805b-6026-eae1ec048768"]},"value":0,"unit":""}}]},{"actionItems":[{"id":"a-3-n-3","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"ease","duration":250,"target":{"useEventTarget":"CHILDREN","selector":".navbar-toggle-cross-icon","selectorGuids":["b5980122-770c-805b-6026-eae1ec048768"]},"xValue":0,"xUnit":"PX","yUnit":"PX","zUnit":"PX"}},{"id":"a-3-n-4","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"ease","duration":250,"target":{"useEventTarget":"CHILDREN","selector":".navbar-toggle-cross-icon","selectorGuids":["b5980122-770c-805b-6026-eae1ec048768"]},"value":1,"unit":""}},{"id":"a-3-n-5","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"ease","duration":250,"target":{"useEventTarget":"CHILDREN","selector":".navbar-toggle-icon","selectorGuids":["ae495988-f7ae-363c-ef99-a16d6760fdef"]},"value":0,"unit":""}},{"id":"a-3-n-6","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"ease","duration":250,"target":{"useEventTarget":"CHILDREN","selector":".navbar-toggle-icon","selectorGuids":["ae495988-f7ae-363c-ef99-a16d6760fdef"]},"xValue":-100,"xUnit":"%","yUnit":"PX","zUnit":"PX"}}]}],"createdOn":1565573344724,"useFirstGroupAsInitialState":true},"a-4":{"id":"a-4","title":"Navbar Toggle Close","actionItemGroups":[{"actionItems":[{"id":"a-4-n-2","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"ease","duration":250,"target":{"useEventTarget":"CHILDREN","selector":".navbar-toggle-cross-icon","selectorGuids":["b5980122-770c-805b-6026-eae1ec048768"]},"value":0,"unit":""}},{"id":"a-4-n","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"ease","duration":250,"target":{"useEventTarget":"CHILDREN","selector":".navbar-toggle-cross-icon","selectorGuids":["b5980122-770c-805b-6026-eae1ec048768"]},"xValue":100,"xUnit":"%","yUnit":"PX","zUnit":"PX"}},{"id":"a-4-n-5","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"ease","duration":250,"target":{"useEventTarget":"CHILDREN","selector":".navbar-toggle-icon","selectorGuids":["ae495988-f7ae-363c-ef99-a16d6760fdef"]},"value":1,"unit":""}},{"id":"a-4-n-6","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"ease","duration":250,"target":{"useEventTarget":"CHILDREN","selector":".navbar-toggle-icon","selectorGuids":["ae495988-f7ae-363c-ef99-a16d6760fdef"]},"xValue":0,"xUnit":"%","yUnit":"PX","zUnit":"PX"}}]}],"createdOn":1565573344724,"useFirstGroupAsInitialState":false},"fadeIn":{"id":"fadeIn","useFirstGroupAsInitialState":true,"actionItemGroups":[{"actionItems":[{"actionTypeId":"STYLE_OPACITY","config":{"delay":0,"duration":0,"target":{"id":"N/A","appliesTo":"TRIGGER_ELEMENT","useEventTarget":true},"value":0}}]},{"actionItems":[{"actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"outQuart","duration":1000,"target":{"id":"N/A","appliesTo":"TRIGGER_ELEMENT","useEventTarget":true},"value":1}}]}]},"slideInBottom":{"id":"slideInBottom","useFirstGroupAsInitialState":true,"actionItemGroups":[{"actionItems":[{"actionTypeId":"STYLE_OPACITY","config":{"delay":0,"duration":0,"target":{"id":"N/A","appliesTo":"TRIGGER_ELEMENT","useEventTarget":true},"value":0}}]},{"actionItems":[{"actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"duration":0,"target":{"id":"N/A","appliesTo":"TRIGGER_ELEMENT","useEventTarget":true},"xValue":0,"yValue":100,"xUnit":"PX","yUnit":"PX","zUnit":"PX"}}]},{"actionItems":[{"actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"outQuart","duration":1000,"target":{"id":"N/A","appliesTo":"TRIGGER_ELEMENT","useEventTarget":true},"xValue":0,"yValue":0,"xUnit":"PX","yUnit":"PX","zUnit":"PX"}},{"actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"outQuart","duration":1000,"target":{"id":"N/A","appliesTo":"TRIGGER_ELEMENT","useEventTarget":true},"value":1}}]}]}
21153,"slideInRight":{"id":"slideInRight","useFirstGroupAsInitialState":true,"actionItemGroups":[{"actionItems":[{"actionTypeId":"STYLE_OPACITY","config":{"delay":0,"duration":0,"target":{"id":"N/A","appliesTo":"TRIGGER_ELEMENT","useEventTarget":true},"value":0}}]},{"actionItems":[{"actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"duration":0,"target":{"id":"N/A","appliesTo":"TRIGGER_ELEMENT","useEventTarget":true},"xValue":100,"yValue":0,"xUnit":"PX","yUnit":"PX","zUnit":"PX"}}]},{"actionItems":[{"actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"outQuart","duration":1000,"target":{"id":"N/A","appliesTo":"TRIGGER_ELEMENT","useEventTarget":true},"value":1}},{"actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"outQuart","duration":1000,"target":{"id":"N/A","appliesTo":"TRIGGER_ELEMENT","useEventTarget":true},"xValue":0,"yValue":0,"xUnit":"PX","yUnit":"PX","zUnit":"PX"}}]}]},"slideInLeft":{"id":"slideInLeft","useFirstGroupAsInitialState":true,"actionItemGroups":[{"actionItems":[{"actionTypeId":"STYLE_OPACITY","config":{"delay":0,"duration":0,"target":{"id":"N/A","appliesTo":"TRIGGER_ELEMENT","useEventTarget":true},"value":0}}]},{"actionItems":[{"actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"duration":0,"target":{"id":"N/A","appliesTo":"TRIGGER_ELEMENT","useEventTarget":true},"xValue":-100,"yValue":0,"xUnit":"PX","yUnit":"PX","zUnit":"PX"}}]},{"actionItems":[{"actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"outQuart","duration":1000,"target":{"id":"N/A","appliesTo":"TRIGGER_ELEMENT","useEventTarget":true},"value":1}},{"actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"outQuart","duration":1000,"target":{"id":"N/A","appliesTo":"TRIGGER_ELEMENT","useEventTarget":true},"xValue":0,"yValue":0,"xUnit":"PX","yUnit":"PX","zUnit":"PX"}}]}]},"growIn":{"id":"growIn","useFirstGroupAsInitialState":true,"actionItemGroups":[{"actionItems":[{"actionTypeId":"STYLE_OPACITY","config":{"delay":0,"duration":0,"target":{"id":"N/A","appliesTo":"TRIGGER_ELEMENT","useEventTarget":true},"value":0}}]},{"actionItems":[{"actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"duration":0,"target":{"id":"N/A","appliesTo":"TRIGGER_ELEMENT","useEventTarget":true},"xValue":0.7500000000000001,"yValue":0.7500000000000001}}]},{"actionItems":[{"actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"outQuart","duration":1000,"target":{"id":"N/A","appliesTo":"TRIGGER_ELEMENT","useEventTarget":true},"xValue":1,"yValue":1}},{"actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"outQuart","duration":1000,"target":{"id":"N/A","appliesTo":"TRIGGER_ELEMENT","useEventTarget":true},"value":1}}]}]}},"site":{"mediaQueries":[{"key":"main","min":992,"max":10000},{"key":"medium","min":768,"max":991},{"key":"small","min":480,"max":767},{"key":"tiny","min":0,"max":479}]}}
21154);

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.