PageSourceSearch

https://uat-epicdice.firebaseapp.com/js/webflow.js

js uat-epicdice.firebaseapp.com collected 2026-10-03 14:08:00 UTC 597,047 bytes, 19,791 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 = 121);
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__(170);
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__(171);
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__(172);
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__(173));
196
197exports.IX2EngineActionTypes = IX2EngineActionTypes;
198
199var IX2EngineConstants = _interopRequireWildcard(__webpack_require__(174));
200
201exports.IX2EngineConstants = IX2EngineConstants;
202
203/***/ }),
204/* 3 */
205/***/ (function(module, exports, __webpack_require__) {
206
207/* WEBPACK VAR INJECTION */(function(global) {var O = 'object';
208var check = function (it) {
209  return it && it.Math == Math && it;
210};
211
212// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
213module.exports =
214  // eslint-disable-next-line no-undef
215  check(typeof globalThis == O && globalThis) ||
216  check(typeof window == O && window) ||
217  check(typeof self == O && self) ||
218  check(typeof global == O && global) ||
219  // eslint-disable-next-line no-new-func
220  Function('return this')();
221
222/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(22)))
223
224/***/ }),
225/* 4 */
226/***/ (function(module, exports, __webpack_require__) {
227
228var freeGlobal = __webpack_require__(90);
229
230/** Detect free variable `self`. */
231var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
232
233/** Used as a reference to the global object. */
234var root = freeGlobal || freeSelf || Function('return this')();
235
236module.exports = root;
237
238
239/***/ }),
240/* 5 */
241/***/ (function(module, exports, __webpack_require__) {
242
243"use strict";
244 // @wf-will-never-add-flow-to-this-file
245
246/* globals window, document, navigator, WEBFLOW_ENV_TEST */
247
248/* eslint-disable no-var */
249
250/**
251 * Webflow: Core site library
252 */
253
254var Webflow = {};
255var modules = {};
256var primary = [];
257var secondary = window.Webflow || [];
258var $ = window.jQuery;
259var $win = $(window);
260var $doc = $(document);
261var isFunction = $.isFunction;
262
263var _ = Webflow._ = __webpack_require__(123);
264
265var tram = Webflow.tram = __webpack_require__(66) && $.tram;
266var domready = false;
267var destroyed = false;
268tram.config.hideBackface = false;
269tram.config.keepInherited = true;
270/**
271 * Webflow.define - Define a named module
272 * @param  {string} name
273 * @param  {function} factory
274 * @param  {object} options
275 * @return {object}
276 */
277
278Webflow.define = function (name, factory, options) {
279  if (modules[name]) {
280    unbindModule(modules[name]);
281  }
282
283  var instance = modules[name] = factory($, _, options) || {};
284  bindModule(instance);
285  return instance;
286};
287/**
288 * Webflow.require - Require a named module
289 * @param  {string} name
290 * @return {object}
291 */
292
293
294Webflow.require = function (name) {
295  return modules[name];
296};
297
298function bindModule(module) {
299  // If running in Webflow app, subscribe to design/preview events
300  if (Webflow.env()) {
301    isFunction(module.design) && $win.on('__wf_design', module.design);
302    isFunction(module.preview) && $win.on('__wf_preview', module.preview);
303  } // Subscribe to front-end destroy event
304
305
306  isFunction(module.destroy) && $win.on('__wf_destroy', module.destroy); // Look for ready method on module
307
308  if (module.ready && isFunction(module.ready)) {
309    addReady(module);
310  }
311}
312
313function addReady(module) {
314  // If domready has already happened, run ready method
315  if (domready) {
316    module.ready();
317    return;
318  } // Otherwise add ready method to the primary queue (only once)
319
320
321  if (_.contains(primary, module.ready)) {
322    return;
323  }
324
325  primary.push(module.ready);
326}
327
328function unbindModule(module) {
329  // Unsubscribe module from window events
330  isFunction(module.design) && $win.off('__wf_design', module.design);
331  isFunction(module.preview) && $win.off('__wf_preview', module.preview);
332  isFunction(module.destroy) && $win.off('__wf_destroy', module.destroy); // Remove ready method from primary queue
333
334  if (module.ready && isFunction(module.ready)) {
335    removeReady(module);
336  }
337}
338
339function removeReady(module) {
340  primary = _.filter(primary, function (readyFn) {
341    return readyFn !== module.ready;
342  });
343}
344/**
345 * Webflow.push - Add a ready handler into secondary queue
346 * @param {function} ready  Callback to invoke on domready
347 */
348
349
350Webflow.push = function (ready) {
351  // If domready has already happened, invoke handler
352  if (domready) {
353    isFunction(ready) && ready();
354    return;
355  } // Otherwise push into secondary queue
356
357
358  secondary.push(ready);
359};
360/**
361 * Webflow.env - Get the state of the Webflow app
362 * @param {string} mode [optional]
363 * @return {boolean}
364 */
365
366
367Webflow.env = function (mode) {
368  var designFlag = window.__wf_design;
369  var inApp = typeof designFlag !== 'undefined';
370
371  if (!mode) {
372    return inApp;
373  }
374
375  if (mode === 'design') {
376    return inApp && designFlag;
377  }
378
379  if (mode === 'preview') {
380    return inApp && !designFlag;
381  }
382
383  if (mode === 'slug') {
384    return inApp && window.__wf_slug;
385  }
386
387  if (mode === 'editor') {
388    return window.WebflowEditor;
389  }
390
391  if (mode === 'test') {
392    return  false || window.__wf_test;
393  }
394
395  if (mode === 'frame') {
396    return window !== window.top;
397  }
398}; // Feature detects + browser sniffs  ಠ_ಠ
399
400
401var userAgent = navigator.userAgent.toLowerCase();
402var touch = Webflow.env.touch = 'ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch;
403var chrome = Webflow.env.chrome = /chrome/.test(userAgent) && /Google/.test(navigator.vendor) && parseInt(userAgent.match(/chrome\/(\d+)\./)[1], 10);
404var ios = Webflow.env.ios = /(ipod|iphone|ipad)/.test(userAgent);
405Webflow.env.safari = /safari/.test(userAgent) && !chrome && !ios; // Maintain current touch target to prevent late clicks on touch devices
406
407var touchTarget; // Listen for both events to support touch/mouse hybrid devices
408
409touch && $doc.on('touchstart mousedown', function (evt) {
410  touchTarget = evt.target;
411});
412/**
413 * Webflow.validClick - validate click target against current touch target
414 * @param  {HTMLElement} clickTarget  Element being clicked
415 * @return {Boolean}  True if click target is valid (always true on non-touch)
416 */
417
418Webflow.validClick = touch ? function (clickTarget) {
419  return clickTarget === touchTarget || $.contains(clickTarget, touchTarget);
420} : function () {
421  return true;
422};
423/**
424 * Webflow.resize, Webflow.scroll - throttled event proxies
425 */
426
427var resizeEvents = 'resize.webflow orientationchange.webflow load.webflow';
428var scrollEvents = 'scroll.webflow ' + resizeEvents;
429Webflow.resize = eventProxy($win, resizeEvents);
430Webflow.scroll = eventProxy($win, scrollEvents);
431Webflow.redraw = eventProxy(); // Create a proxy instance for throttled events
432
433function eventProxy(target, types) {
434  // Set up throttled method (using custom frame-based _.throttle)
435  var handlers = [];
436  var proxy = {};
437  proxy.up = _.throttle(function (evt) {
438    _.each(handlers, function (h) {
439      h(evt);
440    });
441  }); // Bind events to target
442
443  if (target && types) {
444    target.on(types, proxy.up);
445  }
446  /**
447   * Add an event handler
448   * @param  {function} handler
449   */
450
451
452  proxy.on = function (handler) {
453    if (typeof handler !== 'function') {
454      return;
455    }
456
457    if (_.contains(handlers, handler)) {
458      return;
459    }
460
461    handlers.push(handler);
462  };
463  /**
464   * Remove an event handler
465   * @param  {function} handler
466   */
467
468
469  proxy.off = function (handler) {
470    // If no arguments supplied, clear all handlers
471    if (!arguments.length) {
472      handlers = [];
473      return;
474    } // Otherwise, remove handler from the list
475
476
477    handlers = _.filter(handlers, function (h) {
478      return h !== handler;
479    });
480  };
481
482  return proxy;
483} // Webflow.location - Wrap window.location in api
484
485
486Webflow.location = function (url) {
487  window.location = url;
488};
489
490if (Webflow.env()) {
491  // Ignore redirects inside a Webflow design/edit environment
492  Webflow.location = function () {};
493} // Webflow.ready - Call primary and secondary handlers
494
495
496Webflow.ready = function () {
497  domready = true; // Restore modules after destroy
498
499  if (destroyed) {
500    restoreModules(); // Otherwise run primary ready methods
501  } else {
502    _.each(primary, callReady);
503  } // Run secondary ready methods
504
505
506  _.each(secondary, callReady); // Trigger resize
507
508
509  Webflow.resize.up();
510};
511
512function callReady(readyFn) {
513  isFunction(readyFn) && readyFn();
514}
515
516function restoreModules() {
517  destroyed = false;
518
519  _.each(modules, bindModule);
520}
521/**
522 * Webflow.load - Add a window load handler that will run even if load event has already happened
523 * @param  {function} handler
524 */
525
526
527var deferLoad;
528
529Webflow.load = function (handler) {
530  deferLoad.then(handler);
531};
532
533function bindLoad() {
534  // Reject any previous deferred (to support destroy)
535  if (deferLoad) {
536    deferLoad.reject();
537    $win.off('load', deferLoad.resolve);
538  } // Create deferred and bind window load event
539
540
541  deferLoad = new $.Deferred();
542  $win.on('load', deferLoad.resolve);
543} // Webflow.destroy - Trigger a destroy event for all modules
544
545
546Webflow.destroy = function (options) {
547  options = options || {};
548  destroyed = true;
549  $win.triggerHandler('__wf_destroy'); // Allow domready reset for tests
550
551  if (options.domready != null) {
552    domready = options.domready;
553  } // Unbind modules
554
555
556  _.each(modules, unbindModule); // Clear any proxy event handlers
557
558
559  Webflow.resize.off();
560  Webflow.scroll.off();
561  Webflow.redraw.off(); // Clear any queued ready methods
562
563  primary = [];
564  secondary = []; // If load event has not yet fired, replace the deferred
565
566  if (deferLoad.state() === 'pending') {
567    bindLoad();
568  }
569}; // Listen for domready
570
571
572$(Webflow.ready); // Listen for window.onload and resolve deferred
573
574bindLoad(); // Export commonjs module
575
576module.exports = window.Webflow = Webflow;
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__(177),
620    baseMatchesProperty = __webpack_require__(231),
621    identity = __webpack_require__(60),
622    isArray = __webpack_require__(1),
623    property = __webpack_require__(240);
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__(189),
657    getValue = __webpack_require__(194);
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 = exports.IX2BrowserSupport = void 0;
723
724var IX2BrowserSupport = _interopRequireWildcard(__webpack_require__(46));
725
726exports.IX2BrowserSupport = IX2BrowserSupport;
727
728var IX2Easings = _interopRequireWildcard(__webpack_require__(107));
729
730exports.IX2Easings = IX2Easings;
731
732var IX2EasingUtils = _interopRequireWildcard(__webpack_require__(109));
733
734exports.IX2EasingUtils = IX2EasingUtils;
735
736var IX2ElementsReducer = _interopRequireWildcard(__webpack_require__(247));
737
738exports.IX2ElementsReducer = IX2ElementsReducer;
739
740var IX2VanillaPlugins = _interopRequireWildcard(__webpack_require__(111));
741
742exports.IX2VanillaPlugins = IX2VanillaPlugins;
743
744var IX2VanillaUtils = _interopRequireWildcard(__webpack_require__(249));
745
746exports.IX2VanillaUtils = IX2VanillaUtils;
747
748/***/ }),
749/* 11 */
750/***/ (function(module, exports, __webpack_require__) {
751
752var Symbol = __webpack_require__(19),
753    getRawTag = __webpack_require__(190),
754    objectToString = __webpack_require__(191);
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__(89),
787    isLength = __webpack_require__(54);
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__(40);
894var createPropertyDescriptor = __webpack_require__(68);
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__(4);
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__(36);
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) {
1637
1638var g;
1639
1640// This works in non-strict mode
1641g = (function() {
1642	return this;
1643})();
1644
1645try {
1646	// This works if eval is allowed (see CSP)
1647	g = g || new Function("return this")();
1648} catch (e) {
1649	// This works if the window reference is available
1650	if (typeof window === "object") g = window;
1651}
1652
1653// g can still be undefined, but nothing to do about it...
1654// We return undefined, instead of nothing here, so it's
1655// easier to handle this case. if(!global) { ...}
1656
1657module.exports = g;
1658
1659
1660/***/ }),
1661/* 23 */
1662/***/ (function(module, exports) {
1663
1664module.exports = function (it) {
1665  return typeof it === 'object' ? it !== null : typeof it === 'function';
1666};
1667
1668
1669/***/ }),
1670/* 24 */
1671/***/ (function(module, exports, __webpack_require__) {
1672
1673var isObject = __webpack_require__(23);
1674
1675module.exports = function (it) {
1676  if (!isObject(it)) {
1677    throw TypeError(String(it) + ' is not an object');
1678  } return it;
1679};
1680
1681
1682/***/ }),
1683/* 25 */
1684/***/ (function(module, exports, __webpack_require__) {
1685
1686var global = __webpack_require__(3);
1687var setGlobal = __webpack_require__(41);
1688var IS_PURE = __webpack_require__(136);
1689
1690var SHARED = '__core-js_shared__';
1691var store = global[SHARED] || setGlobal(SHARED, {});
1692
1693(module.exports = function (key, value) {
1694  return store[key] || (store[key] = value !== undefined ? value : {});
1695})('versions', []).push({
1696  version: '3.1.3',
1697  mode: IS_PURE ? 'pure' : 'global',
1698  copyright: '© 2019 Denis Pushkarev (zloirock.ru)'
1699});
1700
1701
1702/***/ }),
1703/* 26 */
1704/***/ (function(module, exports) {
1705
1706function _defineProperty(obj, key, value) {
1707  if (key in obj) {
1708    Object.defineProperty(obj, key, {
1709      value: value,
1710      enumerable: true,
1711      configurable: true,
1712      writable: true
1713    });
1714  } else {
1715    obj[key] = value;
1716  }
1717
1718  return obj;
1719}
1720
1721module.exports = _defineProperty;
1722
1723/***/ }),
1724/* 27 */
1725/***/ (function(module, exports) {
1726
1727function _extends() {
1728  module.exports = _extends = Object.assign || function (target) {
1729    for (var i = 1; i < arguments.length; i++) {
1730      var source = arguments[i];
1731
1732      for (var key in source) {
1733        if (Object.prototype.hasOwnProperty.call(source, key)) {
1734          target[key] = source[key];
1735        }
1736      }
1737    }
1738
1739    return target;
1740  };
1741
1742  return _extends.apply(this, arguments);
1743}
1744
1745module.exports = _extends;
1746
1747/***/ }),
1748/* 28 */
1749/***/ (function(module, exports, __webpack_require__) {
1750
1751var listCacheClear = __webpack_require__(179),
1752    listCacheDelete = __webpack_require__(180),
1753    listCacheGet = __webpack_require__(181),
1754    listCacheHas = __webpack_require__(182),
1755    listCacheSet = __webpack_require__(183);
1756
1757/**
1758 * Creates an list cache object.
1759 *
1760 * @private
1761 * @constructor
1762 * @param {Array} [entries] The key-value pairs to cache.
1763 */
1764function ListCache(entries) {
1765  var index = -1,
1766      length = entries == null ? 0 : entries.length;
1767
1768  this.clear();
1769  while (++index < length) {
1770    var entry = entries[index];
1771    this.set(entry[0], entry[1]);
1772  }
1773}
1774
1775// Add methods to `ListCache`.
1776ListCache.prototype.clear = listCacheClear;
1777ListCache.prototype['delete'] = listCacheDelete;
1778ListCache.prototype.get = listCacheGet;
1779ListCache.prototype.has = listCacheHas;
1780ListCache.prototype.set = listCacheSet;
1781
1782module.exports = ListCache;
1783
1784
1785/***/ }),
1786/* 29 */
1787/***/ (function(module, exports, __webpack_require__) {
1788
1789var eq = __webpack_require__(47);
1790
1791/**
1792 * Gets the index at which the `key` is found in `array` of key-value pairs.
1793 *
1794 * @private
1795 * @param {Array} array The array to inspect.
1796 * @param {*}
vendor: 4,532 bytes, lines 1796-1987
1796 key The key to search for.
1797 * @returns {number} Returns the index of the matched value, else `-1`.
1798 */
1799function assocIndexOf(array, key) {
1800  var length = array.length;
1801  while (length--) {
1802    if (eq(array[length][0], key)) {
1803      return length;
1804    }
1805  }
1806  return -1;
1807}
1808
1809module.exports = assocIndexOf;
1810
1811
1812/***/ }),
1813/* 30 */
1814/***/ (function(module, exports, __webpack_require__) {
1815
1816var getNative = __webpack_require__(8);
1817
1818/* Built-in method references that are verified to be native. */
1819var nativeCreate = getNative(Object, 'create');
1820
1821module.exports = nativeCreate;
1822
1823
1824/***/ }),
1825/* 31 */
1826/***/ (function(module, exports, __webpack_require__) {
1827
1828var isKeyable = __webpack_require__(203);
1829
1830/**
1831 * Gets the data for `map`.
1832 *
1833 * @private
1834 * @param {Object} map The map to query.
1835 * @param {string} key The reference key.
1836 * @returns {*} Returns the map data.
1837 */
1838function getMapData(map, key) {
1839  var data = map.__data__;
1840  return isKeyable(key)
1841    ? data[typeof key == 'string' ? 'string' : 'hash']
1842    : data.map;
1843}
1844
1845module.exports = getMapData;
1846
1847
1848/***/ }),
1849/* 32 */
1850/***/ (function(module, exports, __webpack_require__) {
1851
1852var arrayLikeKeys = __webpack_require__(97),
1853    baseKeys = __webpack_require__(55),
1854    isArrayLike = __webpack_require__(12);
1855
1856/**
1857 * Creates an array of the own enumerable property names of `object`.
1858 *
1859 * **Note:** Non-object values are coerced to objects. See the
1860 * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
1861 * for more details.
1862 *
1863 * @static
1864 * @since 0.1.0
1865 * @memberOf _
1866 * @category Object
1867 * @param {Object} object The object to query.
1868 * @returns {Array} Returns the array of property names.
1869 * @example
1870 *
1871 * function Foo() {
1872 *   this.a = 1;
1873 *   this.b = 2;
1874 * }
1875 *
1876 * Foo.prototype.c = 3;
1877 *
1878 * _.keys(new Foo);
1879 * // => ['a', 'b'] (iteration order is not guaranteed)
1880 *
1881 * _.keys('hi');
1882 * // => ['0', '1']
1883 */
1884function keys(object) {
1885  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
1886}
1887
1888module.exports = keys;
1889
1890
1891/***/ }),
1892/* 33 */
1893/***/ (function(module, exports, __webpack_require__) {
1894
1895var baseIsArguments = __webpack_require__(221),
1896    isObjectLike = __webpack_require__(9);
1897
1898/** Used for built-in method references. */
1899var objectProto = Object.prototype;
1900
1901/** Used to check objects for own properties. */
1902var hasOwnProperty = objectProto.hasOwnProperty;
1903
1904/** Built-in value references. */
1905var propertyIsEnumerable = objectProto.propertyIsEnumerable;
1906
1907/**
1908 * Checks if `value` is likely an `arguments` object.
1909 *
1910 * @static
1911 * @memberOf _
1912 * @since 0.1.0
1913 * @category Lang
1914 * @param {*} value The value to check.
1915 * @returns {boolean} Returns `true` if `value` is an `arguments` object,
1916 *  else `false`.
1917 * @example
1918 *
1919 * _.isArguments(function() { return arguments; }());
1920 * // => true
1921 *
1922 * _.isArguments([1, 2, 3]);
1923 * // => false
1924 */
1925var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
1926  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
1927    !propertyIsEnumerable.call(value, 'callee');
1928};
1929
1930module.exports = isArguments;
1931
1932
1933/***/ }),
1934/* 34 */
1935/***/ (function(module, exports, __webpack_require__) {
1936
1937var baseGet = __webpack_require__(58);
1938
1939/**
1940 * Gets the value at `path` of `object`. If the resolved value is
1941 * `undefined`, the `defaultValue` is returned in its place.
1942 *
1943 * @static
1944 * @memberOf _
1945 * @since 3.7.0
1946 * @category Object
1947 * @param {Object} object The object to query.
1948 * @param {Array|string} path The path of the property to get.
1949 * @param {*} [defaultValue] The value returned for `undefined` resolved values.
1950 * @returns {*} Returns the resolved value.
1951 * @example
1952 *
1953 * var object = { 'a': [{ 'b': { 'c': 3 } }] };
1954 *
1955 * _.get(object, 'a[0].b.c');
1956 * // => 3
1957 *
1958 * _.get(object, ['a', '0', 'b', 'c']);
1959 * // => 3
1960 *
1961 * _.get(object, 'a.b.c', 'default');
1962 * // => 'default'
1963 */
1964function get(object, path, defaultValue) {
1965  var result = object == null ? undefined : baseGet(object, path);
1966  return result === undefined ? defaultValue : result;
1967}
1968
1969module.exports = get;
1970
1971
1972/***/ }),
1973/* 35 */
1974/***/ (function(module, exports, __webpack_require__) {
1975
1976var isArray = __webpack_require__(1),
1977    isKey = __webpack_require__(59),
1978    stringToPath = __webpack_require__(232),
1979    toString = __webpack_require__(235);
1980
1981/**
1982 * Casts `value` to a path array if it's not one.
1983 *
1984 * @private
1985 * @param {*} value The value to inspect.
1986 * @param {Object} [object] The object to query keys on.
1987 * @returns {Array} Returns the cast property path array.
1988 */
1989function castPath(value, object) {
1990  if (isArray(value)) {
1991    return value;
1992  }
1993  return isKey(value, object) ? [value] : stringToPath(toString(value));
1994}
1995
1996module.exports = castPath;
1997
1998
1999/***/ }),
2000/* 36 */
2001/***/ (function(module, exports, __webpack_require__) {
2002
2003var baseGetTag = __webpack_require__(11),
2004    isObjectLike = __webpack_require__(9);
2005
2006/** `Object#toString` result references. */
2007var symbolTag = '[object Symbol]';
2008
2009/**
2010 * Checks if `value` is classified as a `Symbol` primitive or object.
2011 *
2012 * @static
2013 * @memberOf _
2014 * @since 4.0.0
2015 * @category Lang
2016 * @param {*} value The value to check.
2017 * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
2018 * @example
2019 *
2020 * _.isSymbol(Symbol.iterator);
2021 * // => true
2022 *
2023 * _.isSymbol('abc');
2024 * // => false
2025 */
2026function isSymbol(value) {
2027  return typeof value == 'symbol' ||
2028    (isObjectLike(value) && baseGetTag(value) == symbolTag);
2029}
2030
2031module.exports = isSymbol;
2032
2033
2034/***/ }),
2035/* 37 */
2036/***/ (function(module, exports, __webpack_require__) {
2037
2038"use strict";
2039// @wf-will-never-add-flow-to-this-file
2040
2041/* globals window */
2042
2043/* eslint-disable no-var */
2044
2045/**
2046 * Webflow: IX Event triggers for other modules
2047 */
2048// eslint-disable-next-line strict
2049
2050
2051var $ = window.jQuery;
2052var api = {};
2053var eventQueue = [];
2054var namespace = '.w-ix';
2055var eventTriggers = {
2056  reset: function reset(i, el) {
2057    el.__wf_intro = null;
2058  },
2059  intro: function intro(i, el) {
2060    if (el.__wf_intro) {
2061      return;
2062    }
2063
2064    el.__wf_intro = true;
2065    $(el).triggerHandler(api.types.INTRO);
2066  },
2067  outro: function outro(i, el) {
2068    if (!el.__wf_intro) {
2069      return;
2070    }
2071
2072    el.__wf_intro = null;
2073    $(el).triggerHandler(api.types.OUTRO);
2074  }
2075};
2076api.triggers = {};
2077api.types = {
2078  INTRO: 'w-ix-intro' + namespace,
2079  OUTRO: 'w-ix-outro' + namespace
2080}; // Trigger any events in queue + restore trigger methods
2081
2082api.init = function () {
2083  var count = eventQueue.length;
2084
2085  for (var i = 0; i < count; i++) {
2086    var memo = eventQueue[i];
2087    memo[0](0, memo[1]);
2088  }
2089
2090  eventQueue = [];
2091  $.extend(api.triggers, eventTriggers);
2092}; // Replace all triggers with async wrapper to queue events until init
2093
2094
2095api.async = function () {
2096  for (var key in eventTriggers) {
2097    var func = eventTriggers[key];
2098
2099    if (!eventTriggers.hasOwnProperty(key)) {
2100      continue;
2101    } // Replace trigger method with async wrapper
2102
2103
2104    api.triggers[key] = function (i, el) {
2105      eventQueue.push([func, el]);
2106    };
2107  }
2108}; // Default triggers to async queue
2109
2110
2111api.async();
2112module.exports = api;
2113
2114/***/ }),
2115/* 38 */
2116/***/ (function(module, exports, __webpack_require__) {
2117
2118"use strict";
2119// @wf-will-never-add-flow-to-this-file
2120
2121/* globals window, document */
2122
2123/* eslint-disable no-var */
2124// eslint-disable-next-line strict
2125
2126
2127var IXEvents = __webpack_require__(37);
2128
2129function dispatchCustomEvent(element, eventName) {
2130  var event = document.createEvent('CustomEvent');
2131  event.initCustomEvent(eventName, true, true, null);
2132  element.dispatchEvent(event);
2133}
2134/**
2135 * Webflow: IX Event triggers for other modules
2136 */
2137
2138
2139var $ = window.jQuery;
2140var api = {};
2141var namespace = '.w-ix';
2142var eventTriggers = {
2143  reset: function reset(i, el) {
2144    IXEvents.triggers.reset(i, el);
2145  },
2146  intro: function intro(i, el) {
2147    IXEvents.triggers.intro(i, el);
2148    dispatchCustomEvent(el, 'COMPONENT_ACTIVE');
2149  },
2150  outro: function outro(i, el) {
2151    IXEvents.triggers.outro(i, el);
2152    dispatchCustomEvent(el, 'COMPONENT_INACTIVE');
2153  }
2154};
2155api.triggers = {};
2156api.types = {
2157  INTRO: 'w-ix-intro' + namespace,
2158  OUTRO: 'w-ix-outro' + namespace
2159};
2160$.extend(api.triggers, eventTriggers);
2161module.exports = api;
2162
2163/***/ }),
2164/* 39 */
2165/***/ (function(module, exports, __webpack_require__) {
2166
2167// toObject with fallback for non-array-like ES3 strings
2168var IndexedObject = __webpack_require__(132);
2169var requireObjectCoercible = __webpack_require__(134);
2170
2171module.exports = function (it) {
2172  return IndexedObject(requireObjectCoercible(it));
2173};
2174
2175
2176/***/ }),
2177/* 40 */
2178/***/ (function(module, exports, __webpack_require__) {
2179
2180var DESCRIPTORS = __webpack_require__(14);
2181var IE8_DOM_DEFINE = __webpack_require__(70);
2182var anObject = __webpack_require__(24);
2183var toPrimitive = __webpack_require__(69);
2184
2185var nativeDefineProperty = Object.defineProperty;
2186
2187// `Object.defineProperty` method
2188// https://tc39.github.io/ecma262/#sec-object.defineproperty
2189exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {
2190  anObject(O);
2191  P = toPrimitive(P, true);
2192  anObject(Attributes);
2193  if (IE8_DOM_DEFINE) try {
2194    return nativeDefineProperty(O, P, Attributes);
2195  } catch (error) { /* empty */ }
2196  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');
2197  if ('value' in Attributes) O[P] = Attributes.value;
2198  return O;
2199};
2200
2201
2202/***/ }),
2203/* 41 */
2204/***/ (function(module, exports, __webpack_require__) {
2205
2206var global = __webpack_require__(3);
2207var hide = __webpack_require__(17);
2208
2209module.exports = function (key, value) {
2210  try {
2211    hide(global, key, value);
2212  } catch (error) {
2213    global[key] = value;
2214  } return value;
2215};
2216
2217
2218/***/ }),
2219/* 42 */
2220/***/ (function(module, exports) {
2221
2222module.exports = {};
2223
2224
2225/***/ }),
2226/* 43 */
2227/***/ (function(module, exports) {
2228
2229// IE8- don't enum bug keys
2230module.exports = [
2231  'constructor',
2232  'hasOwnProperty',
2233  'isPrototypeOf',
2234  'propertyIsEnumerable',
2235  'toLocaleString',
2236  'toString',
2237  'valueOf'
2238];
2239
2240
2241/***/ }),
2242/* 44 */
2243/***/ (function(module, __webpack_exports__, __webpack_require__) {
2244
2245"use strict";
2246__webpack_require__.r(__webpack_exports__);
2247/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ActionTypes", function() { return ActionTypes; });
2248/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return createStore; });
2249/* harmony import */ var lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(80);
2250/* harmony import */ var symbol_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(165);
2251
2252
2253
2254/**
2255 * These are private action types reserved by Redux.
2256 * For any unknown actions, you must return the current state.
2257 * If the current state is undefined, you must return the initial state.
2258 * Do not reference these action types directly in your code.
2259 */
2260var ActionTypes = {
2261  INIT: '@@redux/INIT'
2262};
2263
2264/**
2265 * Creates a Redux store that holds the state tree.
2266 * The only way to change the data in the store is to call `dispatch()` on it.
2267 *
2268 * There should only be a single store in your app. To specify how different
2269 * parts of the state tree respond to actions, you may combine several reducers
2270 * into a single reducer function by using `combineReducers`.
2271 *
2272 * @param {Function} reducer A function that returns the next state tree, given
2273 * the current state tree and the action to handle.
2274 *
2275 * @param {any} [preloadedState] The initial state. You may optionally specify it
2276 * to hydrate the state from the server in universal apps, or to restore a
2277 * previously serialized user session.
2278 * If you use `combineReducers` to produce the root reducer function, this must be
2279 * an object with the same shape as `combineReducers` keys.
2280 *
2281 * @param {Function} enhancer The store enhancer. You may optionally specify it
2282 * to enhance the store with third-party capabilities such as middleware,
2283 * time travel, persistence, etc. The only store enhancer that ships with Redux
2284 * is `applyMiddleware()`.
2285 *
2286 * @returns {Store} A Redux store that lets you read the state, dispatch actions
2287 * and subscribe to changes.
2288 */
2289function createStore(reducer, preloadedState, enhancer) {
2290  var _ref2;
2291
2292  if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {
2293    enhancer = preloadedState;
2294    preloadedState = undefined;
2295  }
2296
2297  if (typeof enhancer !== 'undefined') {
2298    if (typeof enhancer !== 'function') {
2299      throw new Error('Expected the enhancer to be a function.');
2300    }
2301
2302    return enhancer(createStore)(reducer, preloadedState);
2303  }
2304
2305  if (typeof reducer !== 'function') {
2306    throw new Error('Expected the reducer to be a function.');
2307  }
2308
2309  var currentReducer = reducer;
2310  var currentState = preloadedState;
2311  var currentListeners = [];
2312  var nextListeners = currentListeners;
2313  var isDispatching = false;
2314
2315  function ensureCanMutateNextListeners() {
2316    if (nextListeners === currentListeners) {
2317      nextListeners = currentListeners.slice();
2318    }
2319  }
2320
2321  /**
2322   * Reads the state tree managed by the store.
2323   *
2324   * @returns {any} The current state tree of your application.
2325   */
2326  function getState() {
2327    return currentState;
2328  }
2329
2330  /**
2331   * Adds a change listener. It will be called any time an action is dispatched,
2332   * and some part of the state tree may potentially have changed. You may then
2333   * call `getState()` to read the current state tree inside the callback.
2334   *
2335   * You may call `dispatch()` from a change listener, with the following
2336   * caveats:
2337   *
2338   * 1. The subscriptions are snapshotted just before every `dispatch()` call.
2339   * If you subscribe or unsubscribe while the listeners are being invoked, this
2340   * will not have any effect on the `dispatch()` that is currently in progress.
2341   * However, the next `dispatch()` call, whether nested or not, will use a more
2342   * recent snapshot of the subscription list.
2343   *
2344   * 2. The listener should not expect to see all state changes, as the state
2345   * might have been updated multiple times during a nested `dispatch()` before
2346   * the listener is called. It is, however, guaranteed that all subscribers
2347   * registered before the `dispatch()` started will be called with the latest
2348   * state by the time it exits.
2349   *
2350   * @param {Function} listener A callback to be invoked on every dispatch.
2351   * @returns {Function} A function to remove this change listener.
2352   */
2353  function subscribe(listener) {
2354    if (typeof listener !== 'function') {
2355      throw new Error('Expected listener to be a function.');
2356    }
2357
2358    var isSubscribed = true;
2359
2360    ensureCanMutateNextListeners();
2361    nextListeners.push(listener);
2362
2363    return function unsubscribe() {
2364      if (!isSubscribed) {
2365        return;
2366      }
2367
2368      isSubscribed = false;
2369
2370      ensureCanMutateNextListeners();
2371      var index = nextListeners.indexOf(listener);
2372      nextListeners.splice(index, 1);
2373    };
2374  }
2375
2376  /**
2377   * Dispatches an action. It is the only way to trigger a state change.
2378   *
2379   * The `reducer` function, used to create the store, will be called with the
2380   * current state tree and the given `action`. Its return value will
2381   * be considered the **next** state of the tree, and the change listeners
2382   * will be notified.
2383   *
2384   * The base implementation only supports plain object actions. If you want to
2385   * dispatch a Promise, an Observable, a thunk, or something else, you need to
2386   * wrap your store creating function into the corresponding middleware. For
2387   * example, see the documentation for the `redux-thunk` package. Even the
2388   * middleware will eventually dispatch plain object actions using this method.
2389   *
2390   * @param {Object} action A plain object representing “what changed”. It is
2391   * a good idea to keep actions serializable so you can record and replay user
2392   * sessions, or use the time travelling `redux-devtools`. An action must have
2393   * a `type` property which may not be `undefined`. It is a good idea to use
2394   * string constants for action types.
2395   *
2396   * @returns {Object} For convenience, the same action object you dispatched.
2397   *
2398   * Note that, if you use a custom middleware, it may wrap `dispatch()` to
2399   * return something else (for example, a Promise you can await).
2400   */
2401  function dispatch(action) {
2402    if (!Object(lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_0__["default"])(action)) {
2403      throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');
2404    }
2405
2406    if (typeof action.type === 'undefined') {
2407      throw new Error('Actions may not have an undefined "type" property. ' + 'Have you misspelled a constant?');
2408    }
2409
2410    if (isDispatching) {
2411      throw new Error('Reducers may not dispatch actions.');
2412    }
2413
2414    try {
2415      isDispatching = true;
2416      currentState = currentReducer(currentState, action);
2417    } finally {
2418      isDispatching = false;
2419    }
2420
2421    var listeners = currentListeners = nextListeners;
2422    for (var i = 0; i < listeners.length; i++) {
2423      listeners[i]();
2424    }
2425
2426    return action;
2427  }
2428
2429  /**
2430   * Replaces the reducer currently used by the store to calculate the state.
2431   *
2432   * You might need this if your app implements code splitting and you want to
2433   * load some of the reducers dynamically. You might also need this if you
2434   * implement a hot reloading mechanism for Redux.
2435   *
2436   * @param {Function} nextReducer The reducer for the store to use instead.
2437   * @returns {void}
2438   */
2439  function replaceReducer(nextReducer) {
2440    if (typeof nextReducer !== 'function') {
2441      throw new Error('Expected the nextReducer to be a function.');
2442    }
2443
2444    currentReducer = nextReducer;
2445    dispatch({ type: ActionTypes.INIT });
2446  }
2447
2448  /**
2449   * Interoperability point for observable/reactive libraries.
2450   * @returns {observable} A minimal observable of state changes.
2451   * For more information, see the observable proposal:
2452   * https://github.com/zenparsing/es-observable
2453   */
2454  function observable() {
2455    var _ref;
2456
2457    var outerSubscribe = subscribe;
2458    return _ref = {
2459      /**
2460       * The minimal observable subscription method.
2461       * @param {Object} observer Any object that can be used as an observer.
2462       * The observer object should have a `next` method.
2463       * @returns {subscription} An object with an `unsubscribe` method that can
2464       * be used to unsubscribe the observable from the store, and prevent further
2465       * emission of values from the observable.
2466       */
2467      subscribe: function subscribe(observer) {
2468        if (typeof observer !== 'object') {
2469          throw new TypeError('Expected the observer to be an object.');
2470        }
2471
2472        function observeState() {
2473          if (observer.next) {
2474            observer.next(getState());
2475          }
2476        }
2477
2478        observeState();
2479        var unsubscribe = outerSubscribe(observeState);
2480        return { unsubscribe: unsubscribe };
2481      }
2482    }, _ref[symbol_observable__WEBPACK_IMPORTED_MODULE_1__["default"]] = function () {
2483      return this;
2484    }, _ref;
2485  }
2486
2487  // When a store is created, an "INIT" action is dispatched so that every
2488  // reducer returns their initial state. This effectively populates
2489  // the initial state tree.
2490  dispatch({ type: ActionTypes.INIT });
2491
2492  return _ref2 = {
2493    dispatch: dispatch,
2494    subscribe: subscribe,
2495    getState: getState,
2496    replaceReducer: replaceReducer
2497  }, _ref2[symbol_observable__WEBPACK_IMPORTED_MODULE_1__["default"]] = observable, _ref2;
2498}
2499
2500/***/ }),
2501/* 45 */
2502/***/ (function(module, __webpack_exports__, __webpack_require__) {
2503
2504"use strict";
2505__webpack_require__.r(__webpack_exports__);
2506/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return compose; });
2507/**
2508 * Composes single-argument functions from right to left. The rightmost
2509 * function can take multiple arguments as it provides the signature for
2510 * the resulting composite function.
2511 *
2512 * @param {...Function} funcs The functions to compose.
2513 * @returns {Function} A function obtained by composing the argument functions
2514 * from right to left. For example, compose(f, g, h) is identical to doing
2515 * (...args) => f(g(h(...args))).
2516 */
2517
2518function compose() {
2519  for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {
2520    funcs[_key] = arguments[_key];
2521  }
2522
2523  if (funcs.length === 0) {
2524    return function (arg) {
2525      return arg;
2526    };
2527  }
2528
2529  if (funcs.length === 1) {
2530    return funcs[0];
2531  }
2532
2533  var last = funcs[funcs.length - 1];
2534  var rest = funcs.slice(0, -1);
2535  return function () {
2536    return rest.reduceRight(function (composed, f) {
2537      return f(composed);
2538    }, last.apply(undefined, arguments));
2539  };
2540}
2541
2542/***/ }),
2543/* 46 */
2544/***/ (function(module, exports, __webpack_require__) {
2545
2546"use strict";
2547
2548
2549var _interopRequireDefault = __webpack_require__(0);
2550
2551Object.defineProperty(exports, "__esModule", {
2552  value: true
2553});
2554exports.TRANSFORM_STYLE_PREFIXED = exports.TRANSFORM_PREFIXED = exports.FLEX_PREFIXED = exports.ELEMENT_MATCHES = exports.withBrowser = exports.IS_BROW
2554SER_ENV = void 0;
2555
2556var _find = _interopRequireDefault(__webpack_require__(86));
2557/* eslint-env browser */
2558
2559
2560var IS_BROWSER_ENV = typeof window !== 'undefined'; // $FlowFixMe
2561
2562exports.IS_BROWSER_ENV = IS_BROWSER_ENV;
2563
2564var withBrowser = function withBrowser(fn, fallback) {
2565  if (IS_BROWSER_ENV) {
2566    return fn();
2567  }
2568
2569  return fallback;
2570};
2571
2572exports.withBrowser = withBrowser;
2573var ELEMENT_MATCHES = withBrowser(function () {
2574  return (0, _find["default"])(['matches', 'matchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector', 'webkitMatchesSelector'], function (key) {
2575    return key in Element.prototype;
2576  });
2577});
2578exports.ELEMENT_MATCHES = ELEMENT_MATCHES;
2579var FLEX_PREFIXED = withBrowser(function () {
2580  var el = document.createElement('i');
2581  var values = ['flex', '-webkit-flex', '-ms-flexbox', '-moz-box', '-webkit-box'];
2582  var none = '';
2583
2584  try {
2585    var length = values.length;
2586
2587    for (var i = 0; i < length; i++) {
2588      var value = values[i];
2589      el.style.display = value;
2590
2591      if (el.style.display === value) {
2592        return value;
2593      }
2594    }
2595
2596    return none;
2597  } catch (err) {
2598    return none;
2599  }
2600}, 'flex');
2601exports.FLEX_PREFIXED = FLEX_PREFIXED;
2602var TRANSFORM_PREFIXED = withBrowser(function () {
2603  var el = document.createElement('i');
2604
2605  if (el.style.transform == null) {
2606    var prefixes = ['Webkit', 'Moz', 'ms'];
2607    var suffix = 'Transform';
2608    var length = prefixes.length;
2609
2610    for (var i = 0; i < length; i++) {
2611      var prop = prefixes[i] + suffix; // $FlowFixMe
2612
2613      if (el.style[prop] !== undefined) {
2614        return prop;
2615      }
2616    }
2617  }
2618
2619  return 'transform';
2620}, 'transform'); // $FlowFixMe
2621
2622exports.TRANSFORM_PREFIXED = TRANSFORM_PREFIXED;
2623var TRANSFORM_PREFIX = TRANSFORM_PREFIXED.split('transform')[0];
2624var TRANSFORM_STYLE_PREFIXED = TRANSFORM_PREFIX ? TRANSFORM_PREFIX + 'TransformStyle' : 'transformStyle';
2625exports.TRANSFORM_STYLE_PREFIXED = TRANSFORM_STYLE_PREFIXED;
2626
2627/***/ }),
2628/* 47 */
2629/***/ (function(module, exports) {
2630
2631/**
2632 * Performs a
2633 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
2634 * comparison between two values to determine if they are equivalent.
2635 *
2636 * @static
2637 * @memberOf _
2638 * @since 4.0.0
2639 * @category Lang
2640 * @param {*} value The value to compare.
2641 * @param {*} other The other value to compare.
2642 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
2643 * @example
2644 *
2645 * var object = { 'a': 1 };
2646 * var other = { 'a': 1 };
2647 *
2648 * _.eq(object, object);
2649 * // => true
2650 *
2651 * _.eq(object, other);
2652 * // => false
2653 *
2654 * _.eq('a', 'a');
2655 * // => true
2656 *
2657 * _.eq('a', Object('a'));
2658 * // => false
2659 *
2660 * _.eq(NaN, NaN);
2661 * // => true
2662 */
2663function eq(value, other) {
2664  return value === other || (value !== value && other !== other);
2665}
2666
2667module.exports = eq;
2668
2669
2670/***/ }),
2671/* 48 */
2672/***/ (function(module, exports, __webpack_require__) {
2673
2674var getNative = __webpack_require__(8),
2675    root = __webpack_require__(4);
2676
2677/* Built-in method references that are verified to be native. */
2678var Map = getNative(root, 'Map');
2679
2680module.exports = Map;
2681
2682
2683/***/ }),
2684/* 49 */
2685/***/ (function(module, exports, __webpack_require__) {
2686
2687var mapCacheClear = __webpack_require__(195),
2688    mapCacheDelete = __webpack_require__(202),
2689    mapCacheGet = __webpack_require__(204),
2690    mapCacheHas = __webpack_require__(205),
2691    mapCacheSet = __webpack_require__(206);
2692
2693/**
2694 * Creates a map cache object to store key-value pairs.
2695 *
2696 * @private
2697 * @constructor
2698 * @param {Array} [entries] The key-value pairs to cache.
2699 */
2700function MapCache(entries) {
2701  var index = -1,
2702      length = entries == null ? 0 : entries.length;
2703
2704  this.clear();
2705  while (++index < length) {
2706    var entry = entries[index];
2707    this.set(entry[0], entry[1]);
2708  }
2709}
2710
2711// Add methods to `MapCache`.
2712MapCache.prototype.clear = mapCacheClear;
2713MapCache.prototype['delete'] = mapCacheDelete;
2714MapCache.prototype.get = mapCacheGet;
2715MapCache.prototype.has = mapCacheHas;
2716MapCache.prototype.set = mapCacheSet;
2717
2718module.exports = MapCache;
2719
2720
2721/***/ }),
2722/* 50 */
2723/***/ (function(module, exports) {
2724
2725/**
2726 * Appends the elements of `values` to `array`.
2727 *
2728 * @private
2729 * @param {Array} array The array to modify.
2730 * @param {Array} values The values to append.
2731 * @returns {Array} Returns `array`.
2732 */
2733function arrayPush(array, values) {
2734  var index = -1,
2735      length = values.length,
2736      offset = array.length;
2737
2738  while (++index < length) {
2739    array[offset + index] = values[index];
2740  }
2741  return array;
2742}
2743
2744module.exports = arrayPush;
2745
2746
2747/***/ }),
2748/* 51 */
2749/***/ (function(module, exports, __webpack_require__) {
2750
2751/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(4),
2752    stubFalse = __webpack_require__(222);
2753
2754/** Detect free variable `exports`. */
2755var freeExports =  true && exports && !exports.nodeType && exports;
2756
2757/** Detect free variable `module`. */
2758var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
2759
2760/** Detect the popular CommonJS extension `module.exports`. */
2761var moduleExports = freeModule && freeModule.exports === freeExports;
2762
2763/** Built-in value references. */
2764var Buffer = moduleExports ? root.Buffer : undefined;
2765
2766/* Built-in method references for those with the same name as other `lodash` methods. */
2767var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;
2768
2769/**
2770 * Checks if `value` is a buffer.
2771 *
2772 * @static
2773 * @memberOf _
2774 * @since 4.3.0
2775 * @category Lang
2776 * @param {*} value The value to check.
2777 * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
2778 * @example
2779 *
2780 * _.isBuffer(new Buffer(2));
2781 * // => true
2782 *
2783 * _.isBuffer(new Uint8Array(2));
2784 * // => false
2785 */
2786var isBuffer = nativeIsBuffer || stubFalse;
2787
2788module.exports = isBuffer;
2789
2790/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(98)(module)))
2791
2792/***/ }),
2793/* 52 */
vendor: 5,343 bytes, lines 2794-3002
2794/***/ (function(module, exports) {
2795
2796/** Used as references for various `Number` constants. */
2797var MAX_SAFE_INTEGER = 9007199254740991;
2798
2799/** Used to detect unsigned integer values. */
2800var reIsUint = /^(?:0|[1-9]\d*)$/;
2801
2802/**
2803 * Checks if `value` is a valid array-like index.
2804 *
2805 * @private
2806 * @param {*} value The value to check.
2807 * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
2808 * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
2809 */
2810function isIndex(value, length) {
2811  var type = typeof value;
2812  length = length == null ? MAX_SAFE_INTEGER : length;
2813
2814  return !!length &&
2815    (type == 'number' ||
2816      (type != 'symbol' && reIsUint.test(value))) &&
2817        (value > -1 && value % 1 == 0 && value < length);
2818}
2819
2820module.exports = isIndex;
2821
2822
2823/***/ }),
2824/* 53 */
2825/***/ (function(module, exports, __webpack_require__) {
2826
2827var baseIsTypedArray = __webpack_require__(223),
2828    baseUnary = __webpack_require__(224),
2829    nodeUtil = __webpack_require__(225);
2830
2831/* Node.js helper references. */
2832var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
2833
2834/**
2835 * Checks if `value` is classified as a typed array.
2836 *
2837 * @static
2838 * @memberOf _
2839 * @since 3.0.0
2840 * @category Lang
2841 * @param {*} value The value to check.
2842 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
2843 * @example
2844 *
2845 * _.isTypedArray(new Uint8Array);
2846 * // => true
2847 *
2848 * _.isTypedArray([]);
2849 * // => false
2850 */
2851var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
2852
2853module.exports = isTypedArray;
2854
2855
2856/***/ }),
2857/* 54 */
2858/***/ (function(module, exports) {
2859
2860/** Used as references for various `Number` constants. */
2861var MAX_SAFE_INTEGER = 9007199254740991;
2862
2863/**
2864 * Checks if `value` is a valid array-like length.
2865 *
2866 * **Note:** This method is loosely based on
2867 * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
2868 *
2869 * @static
2870 * @memberOf _
2871 * @since 4.0.0
2872 * @category Lang
2873 * @param {*} value The value to check.
2874 * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
2875 * @example
2876 *
2877 * _.isLength(3);
2878 * // => true
2879 *
2880 * _.isLength(Number.MIN_VALUE);
2881 * // => false
2882 *
2883 * _.isLength(Infinity);
2884 * // => false
2885 *
2886 * _.isLength('3');
2887 * // => false
2888 */
2889function isLength(value) {
2890  return typeof value == 'number' &&
2891    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
2892}
2893
2894module.exports = isLength;
2895
2896
2897/***/ }),
2898/* 55 */
2899/***/ (function(module, exports, __webpack_require__) {
2900
2901var isPrototype = __webpack_require__(56),
2902    nativeKeys = __webpack_require__(226);
2903
2904/** Used for built-in method references. */
2905var objectProto = Object.prototype;
2906
2907/** Used to check objects for own properties. */
2908var hasOwnProperty = objectProto.hasOwnProperty;
2909
2910/**
2911 * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
2912 *
2913 * @private
2914 * @param {Object} object The object to query.
2915 * @returns {Array} Returns the array of property names.
2916 */
2917function baseKeys(object) {
2918  if (!isPrototype(object)) {
2919    return nativeKeys(object);
2920  }
2921  var result = [];
2922  for (var key in Object(object)) {
2923    if (hasOwnProperty.call(object, key) && key != 'constructor') {
2924      result.push(key);
2925    }
2926  }
2927  return result;
2928}
2929
2930module.exports = baseKeys;
2931
2932
2933/***/ }),
2934/* 56 */
2935/***/ (function(module, exports) {
2936
2937/** Used for built-in method references. */
2938var objectProto = Object.prototype;
2939
2940/**
2941 * Checks if `value` is likely a prototype object.
2942 *
2943 * @private
2944 * @param {*} value The value to check.
2945 * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
2946 */
2947function isPrototype(value) {
2948  var Ctor = value && value.constructor,
2949      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;
2950
2951  return value === proto;
2952}
2953
2954module.exports = isPrototype;
2955
2956
2957/***/ }),
2958/* 57 */
2959/***/ (function(module, exports, __webpack_require__) {
2960
2961var DataView = __webpack_require__(227),
2962    Map = __webpack_require__(48),
2963    Promise = __webpack_require__(228),
2964    Set = __webpack_require__(229),
2965    WeakMap = __webpack_require__(100),
2966    baseGetTag = __webpack_require__(11),
2967    toSource = __webpack_require__(91);
2968
2969/** `Object#toString` result references. */
2970var mapTag = '[object Map]',
2971    objectTag = '[object Object]',
2972    promiseTag = '[object Promise]',
2973    setTag = '[object Set]',
2974    weakMapTag = '[object WeakMap]';
2975
2976var dataViewTag = '[object DataView]';
2977
2978/** Used to detect maps, sets, and weakmaps. */
2979var dataViewCtorString = toSource(DataView),
2980    mapCtorString = toSource(Map),
2981    promiseCtorString = toSource(Promise),
2982    setCtorString = toSource(Set),
2983    weakMapCtorString = toSource(WeakMap);
2984
2985/**
2986 * Gets the `toStringTag` of `value`.
2987 *
2988 * @private
2989 * @param {*} value The value to query.
2990 * @returns {string} Returns the `toStringTag`.
2991 */
2992var getTag = baseGetTag;
2993
2994// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.
2995if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||
2996    (Map && getTag(new Map) != mapTag) ||
2997    (Promise && getTag(Promise.resolve()) != promiseTag) ||
2998    (Set && getTag(new Set) != setTag) ||
2999    (WeakMap && getTag(new WeakMap) != weakMapTag)) {
3000  getTag = function(value) {
3001    var result = baseGetTag(value),
3002        Ctor = result == objectTag ? value.constructor : undefined,
vendor: 5,135 bytes, lines 3003-3205
3003        ctorString = Ctor ? toSource(Ctor) : '';
3004
3005    if (ctorString) {
3006      switch (ctorString) {
3007        case dataViewCtorString: return dataViewTag;
3008        case mapCtorString: return mapTag;
3009        case promiseCtorString: return promiseTag;
3010        case setCtorString: return setTag;
3011        case weakMapCtorString: return weakMapTag;
3012      }
3013    }
3014    return result;
3015  };
3016}
3017
3018module.exports = getTag;
3019
3020
3021/***/ }),
3022/* 58 */
3023/***/ (function(module, exports, __webpack_require__) {
3024
3025var castPath = __webpack_require__(35),
3026    toKey = __webpack_require__(20);
3027
3028/**
3029 * The base implementation of `_.get` without support for default values.
3030 *
3031 * @private
3032 * @param {Object} object The object to query.
3033 * @param {Array|string} path The path of the property to get.
3034 * @returns {*} Returns the resolved value.
3035 */
3036function baseGet(object, path) {
3037  path = castPath(path, object);
3038
3039  var index = 0,
3040      length = path.length;
3041
3042  while (object != null && index < length) {
3043    object = object[toKey(path[index++])];
3044  }
3045  return (index && index == length) ? object : undefined;
3046}
3047
3048module.exports = baseGet;
3049
3050
3051/***/ }),
3052/* 59 */
3053/***/ (function(module, exports, __webpack_require__) {
3054
3055var isArray = __webpack_require__(1),
3056    isSymbol = __webpack_require__(36);
3057
3058/** Used to match property names within property paths. */
3059var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
3060    reIsPlainProp = /^\w*$/;
3061
3062/**
3063 * Checks if `value` is a property name and not a property path.
3064 *
3065 * @private
3066 * @param {*} value The value to check.
3067 * @param {Object} [object] The object to query keys on.
3068 * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
3069 */
3070function isKey(value, object) {
3071  if (isArray(value)) {
3072    return false;
3073  }
3074  var type = typeof value;
3075  if (type == 'number' || type == 'symbol' || type == 'boolean' ||
3076      value == null || isSymbol(value)) {
3077    return true;
3078  }
3079  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||
3080    (object != null && value in Object(object));
3081}
3082
3083module.exports = isKey;
3084
3085
3086/***/ }),
3087/* 60 */
3088/***/ (function(module, exports) {
3089
3090/**
3091 * This method returns the first argument it receives.
3092 *
3093 * @static
3094 * @since 0.1.0
3095 * @memberOf _
3096 * @category Util
3097 * @param {*} value Any value.
3098 * @returns {*} Returns `value`.
3099 * @example
3100 *
3101 * var object = { 'a': 1 };
3102 *
3103 * console.log(_.identity(object) === object);
3104 * // => true
3105 */
3106function identity(value) {
3107  return value;
3108}
3109
3110module.exports = identity;
3111
3112
3113/***/ }),
3114/* 61 */
3115/***/ (function(module, exports, __webpack_require__) {
3116
3117var isObject = __webpack_require__(6),
3118    isSymbol = __webpack_require__(36);
3119
3120/** Used as references for various `Number` constants. */
3121var NAN = 0 / 0;
3122
3123/** Used to match leading and trailing whitespace. */
3124var reTrim = /^\s+|\s+$/g;
3125
3126/** Used to detect bad signed hexadecimal string values. */
3127var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
3128
3129/** Used to detect binary string values. */
3130var reIsBinary = /^0b[01]+$/i;
3131
3132/** Used to detect octal string values. */
3133var reIsOctal = /^0o[0-7]+$/i;
3134
3135/** Built-in method references without a dependency on `root`. */
3136var freeParseInt = parseInt;
3137
3138/**
3139 * Converts `value` to a number.
3140 *
3141 * @static
3142 * @memberOf _
3143 * @since 4.0.0
3144 * @category Lang
3145 * @param {*} value The value to process.
3146 * @returns {number} Returns the number.
3147 * @example
3148 *
3149 * _.toNumber(3.2);
3150 * // => 3.2
3151 *
3152 * _.toNumber(Number.MIN_VALUE);
3153 * // => 5e-324
3154 *
3155 * _.toNumber(Infinity);
3156 * // => Infinity
3157 *
3158 * _.toNumber('3.2');
3159 * // => 3.2
3160 */
3161function toNumber(value) {
3162  if (typeof value == 'number') {
3163    return value;
3164  }
3165  if (isSymbol(value)) {
3166    return NAN;
3167  }
3168  if (isObject(value)) {
3169    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
3170    value = isObject(other) ? (other + '') : other;
3171  }
3172  if (typeof value != 'string') {
3173    return value === 0 ? value : +value;
3174  }
3175  value = value.replace(reTrim, '');
3176  var isBinary = reIsBinary.test(value);
3177  return (isBinary || reIsOctal.test(value))
3178    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
3179    : (reIsBadHex.test(value) ? NAN : +value);
3180}
3181
3182module.exports = toNumber;
3183
3184
3185/***/ }),
3186/* 62 */
3187/***/ (function(module, exports, __webpack_require__) {
3188
3189"use strict";
3190
3191
3192var _interopRequireDefault = __webpack_require__(0);
3193
3194Object.defineProperty(exports, "__esModule", {
3195  value: true
3196});
3197exports.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;
3198
3199var _extends2 = _interopRequireDefault(__webpack_require__(27));
3200
3201var _constants = __webpack_require__(2);
3202
3203var _shared = __webpack_require__(10);
3204
3205var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
3206    IX2_RAW_DATA_IMPORTED = _constants$IX2EngineA.IX2_RAW_DATA_IMPORTED,
3207    IX2_SESSION_INITIALIZED = _constants$IX2EngineA.IX2_SESSION_INITIALIZED,
3208    IX2_SESSION_STARTED = _constants$IX2EngineA.IX2_SESSION_STARTED,
3209    IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED,
3210    IX2_PREVIEW_REQUESTED = _constants$IX2EngineA.IX2_PREVIEW_REQUESTED,
3211    IX2_PLAYBACK_REQUESTED = _constants$IX2EngineA.IX2_PLAYBACK_REQUESTED,
3212    IX2_STOP_REQUESTED = _constants$IX2EngineA.IX2_STOP_REQUESTED,
3213    IX2_CLEAR_REQUESTED = _constants$IX2EngineA.IX2_CLEAR_REQUESTED,
3214    IX2_EVENT_LISTENER_ADDED = _constants$IX2EngineA.IX2_EVENT_LISTENER_ADDED,
3215    IX2_TEST_FRAME_RENDERED = _constants$IX2EngineA.IX2_TEST_FRAME_RENDERED,
3216    IX2_EVENT_STATE_CHANGED = _constants$IX2EngineA.IX2_EVENT_STATE_CHANGED,
3217    IX2_ANIMATION_FRAME_CHANGED = _constants$IX2EngineA.IX2_ANIMATION_FRAME_CHANGED,
3218    IX2_PARAMETER_CHANGED = _constants$IX2EngineA.IX2_PARAMETER_CHANGED,
3219    IX2_INSTANCE_ADDED = _constants$IX2EngineA.IX2_INSTANCE_ADDED,
3220    IX2_INSTANCE_STARTED = _constants$IX2EngineA.IX2_INSTANCE_STARTED,
3221    IX2_INSTANCE_REMOVED = _constants$IX2EngineA.IX2_INSTANCE_REMOVED,
3222    IX2_ELEMENT_STATE_CHANGED = _constants$IX2EngineA.IX2_ELEMENT_STATE_CHANGED,
3223    IX2_ACTION_LIST_PLAYBACK_CHANGED = _constants$IX2EngineA.IX2_ACTION_LIST_PLAYBACK_CHANGED,
3224    IX2_VIEWPORT_WIDTH_CHANGED = _constants$IX2EngineA.IX2_VIEWPORT_WIDTH_CHANGED,
3225    IX2_MEDIA_QUERIES_DEFINED = _constants$IX2EngineA.IX2_MEDIA_QUERIES_DEFINED;
3226var reifyState = _shared.IX2VanillaUtils.reifyState; // TODO: Figure out what this is and elevate it
3227
3228var rawDataImported = function rawDataImported(rawData) {
3229  return {
3230    type: IX2_RAW_DATA_IMPORTED,
3231    payload: (0, _extends2["default"])({}, reifyState(rawData))
3232  };
3233};
3234
3235exports.rawDataImported = rawDataImported;
3236
3237var sessionInitialized = function sessionInitialized(_ref) {
3238  var hasBoundaryNodes = _ref.hasBoundaryNodes;
3239  return {
3240    type: IX2_SESSION_INITIALIZED,
3241    payload: {
3242      hasBoundaryNodes: hasBoundaryNodes
3243    }
3244  };
3245};
3246
3247exports.sessionInitialized = sessionInitialized;
3248
3249var sessionStarted = function sessionStarted() {
3250  return {
3251    type: IX2_SESSION_STARTED
3252  };
3253};
3254
3255exports.sessionStarted = sessionStarted;
3256
3257var sessionStopped = function sessionStopped() {
3258  return {
3259    type: IX2_SESSION_STOPPED
3260  };
3261};
3262
3263exports.sessionStopped = sessionStopped;
3264
3265var previewRequested = function previewRequested(_ref2) {
3266  var rawData = _ref2.rawData,
3267      defer = _ref2.defer;
3268  return {
3269    type: IX2_PREVIEW_REQUESTED,
3270    payload: {
3271      defer: defer,
3272      rawData: rawData
3273    }
3274  };
3275};
3276
3277exports.previewRequested = previewRequested;
3278
3279var playbackRequested = function playbackRequested(_ref3) {
3280  var _ref3$actionTypeId = _ref3.actionTypeId,
3281      actionTypeId = _ref3$actionTypeId === void 0 ? _constants.ActionTypeConsts.GENERAL_START_ACTION : _ref3$actionTypeId,
3282      actionListId = _ref3.actionListId,
3283      actionItemId = _ref3.actionItemId,
3284      eventId = _ref3.eventId,
3285      allowEvents = _ref3.allowEvents,
3286      immediate = _ref3.immediate,
3287      testManual = _ref3.testManual,
3288      verbose = _ref3.verbose,
3289      rawData = _ref3.rawData;
3290  return {
3291    type: IX2_PLAYBACK_REQUESTED,
3292    payload: {
3293      actionTypeId: actionTypeId,
3294      actionListId: actionListId,
3295      actionItemId: actionItemId,
3296      testManual: testManual,
3297      eventId: eventId,
3298      allowEvents: allowEvents,
3299      immediate: immediate,
3300      verbose: verbose,
3301      rawData: rawData
3302    }
3303  };
3304};
3305
3306exports.playbackRequested = playbackRequested;
3307
3308var stopRequested = function stopRequested(actionListId) {
3309  return {
3310    type: IX2_STOP_REQUESTED,
3311    payload: {
3312      actionListId: actionListId
3313    }
3314  };
3315};
3316
3317exports.stopRequested = stopRequested;
3318
3319var clearRequested = function clearRequested() {
3320  return {
3321    type: IX2_CLEAR_REQUESTED
3322  };
3323};
3324
3325exports.clearRequested = clearRequested;
3326
3327var eventListenerAdded = function eventListenerAdded(target, listenerParams) {
3328  return {
3329    type: IX2_EVENT_LISTENER_ADDED,
3330    payload: {
3331      target: target,
3332      listenerParams: listenerParams
3333    }
3334  };
3335};
3336
3337exports.eventListenerAdded = eventListenerAdded;
3338
3339var testFrameRendered = function testFrameRendered() {
3340  var step = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
3341  return {
3342    type: IX2_TEST_FRAME_RENDERED,
3343    payload: {
3344      step: step
3345    }
3346  };
3347};
3348
3349exports.testFrameRendered = testFrameRendered;
3350
3351var eventStateChanged = function eventStateChanged(stateKey, newState) {
3352  return {
3353    type: IX2_EVENT_STATE_CHANGED,
3354    payload: {
3355      stateKey: stateKey,
3356      newState: newState
3357    }
3358  };
3359};
3360
3361exports.eventStateChanged = eventStateChanged;
3362
3363var animationFrameChanged = function animationFrameChanged(now, parameters) {
3364  return {
3365    type: IX2_ANIMATION_FRAME_CHANGED,
3366    payload: {
3367      now: now,
3368      parameters: parameters
3369    }
3370  };
3371};
3372
3373exports.animationFrameChanged = animationFrameChanged;
3374
3375var parameterChanged = function parameterChanged(key, value) {
3376  return {
3377    type: IX2_PARAMETER_CHANGED,
3378    payload: {
3379      key: key,
3380      value: value
3381    }
3382  };
3383};
3384
3385exports.parameterChanged = parameterChanged;
3386
3387var instanceAdded = function instanceAdded(options) {
3388  return {
3389    type: IX2_INSTANCE_ADDED,
3390    payload: (0, _extends2["default"])({}, options)
3391  };
3392};
3393
3394exports.instanceAdded = instanceAdded;
3395
3396var instanceStarted = function instanceStarted(instanceId, time) {
3397  return {
3398    type: IX2_INSTANCE_STARTED,
3399    payload: {
3400      instanceId: instanceId,
3401      time: time
3402    }
3403  };
3404};
3405
3406exports.instanceStarted = instanceStarted;
3407
3408var instanceRemoved = function instanceRemoved(instanceId) {
3409  return {
3410    type: IX2_INSTANCE_REMOVED,
3411    payload: {
3412      instanceId: instanceId
3413    }
3414  };
3415};
3416
3417exports.instanceRemoved = instanceRemoved;
3418
3419var elementStateChanged = function elementStateChanged(elementId, actionTypeId, current, actionItem) {
3420  return {
3421    type: IX2_ELEMENT_STATE_CHANGED,
3422    payload: {
3423      elementId: elementId,
3424      actionTypeId: actionTypeId,
3425      current: current,
3426      actionItem: actionItem
3427    }
3428  };
3429};
3430
3431exports.elementStateChanged = elementStateChanged;
3432
3433var actionListPlaybackChanged = function actionListPlaybackChanged(_ref4) {
3434  var actionListId = _ref4.actionListId,
3435      isPlaying = _ref4.isPlaying;
3436  return {
3437    type: IX2_ACTION_LIST_PLAYBACK_CHANGED,
3438    payload: {
3439      actionListId: actionListId,
3440      isPlaying: isPlaying
3441    }
3442  };
3443};
3444
3445exports.actionListPlaybackChanged = actionListPlaybackChanged;
3446
3447var viewportWidthChanged = function viewportWidthChanged(_ref5) {
3448  var width = _ref5.width,
3449      mediaQueries = _ref5.mediaQueries;
3450  return {
3451    type: IX2_VIEWPORT_WIDTH_CHANGED,
3452    payload: {
3453      width: width,
3454      mediaQueries: mediaQueries
3455    }
3456  };
3457};
3458
3459exports.viewportWidthChanged = viewportWidthChanged;
3460
3461var mediaQueriesDefined = function mediaQueriesDefined() {
3462  return {
3463    type: IX2_MEDIA_QUERIES_DEFINED
3464  };
3465};
3466
3467exports.mediaQueriesDefined = mediaQueriesDefined;
3468
3469/***/ }),
3470/* 63 */
3471/***/ (function(module, exports, __webpack_require__) {
3472
3473var baseCreate = __webpack_require__(118),
3474    baseLodash = __webpack_require__(64);
3475
3476/**
3477 * The base constructor for creating `lodash` wrapper objects.
3478 *
3479 * @private
3480 * @param {*} value The value to wrap.
3481 * @param {boolean} [chainAll] Enable explicit method chain sequences.
3482 */
3483function LodashWrapper(value, chainAll) {
3484  this.__wrapped__ = value;
3485  this.__actions__ = [];
3486  this.__chain__ = !!chainAll;
3487  this.__index__ = 0;
3488  this.__values__ = undefined;
3489}
3490
3491LodashWrapper.prototype = baseCreate(baseLodash.prototype);
3492LodashWrapper.prototype.constructor = LodashWrapper;
3493
3494module.exports = LodashWrapper;
3495
3496
3497/***/ }),
3498/* 64 */
3499/***/ (function(module, exports) {
3500
3501/**
3502 * The function whose prototype chain sequence wrappers inherit from.
3503 *
3504 * @private
3505 */
3506function baseLodash() {
3507  // No operation performed.
3508}
3509
3510module.exports = baseLodash;
3511
3512
3513/***/ }),
3514/* 65 */
3515/***/ (function(module, exports, __webpack_require__) {
3516
3517var baseCreate = __webpack_require__(118),
3518    baseLodash = __webpack_require__(64);
3519
3520/** Used as references for the maximum length and index of an array. */
3521var MAX_ARRAY_LENGTH = 4294967295;
3522
3523/**
3524 * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.
3525 *
3526 * @private
3527 * @constructor
3528 * @param {*} value The value to wrap.
3529 */
3530function LazyWrapper(value) {
3531  this.__wrapped__ = value;
3532  this.__actions__ = [];
3533  this.__dir__ = 1;
3534  this.__filtered__ = false;
3535  this.__iteratees__ = [];
3536  this.__takeCount__ = MAX_ARRAY_LENGTH;
3537  this.__views__ = [];
3538}
3539
3540// Ensure `LazyWrapper` is an instance of `baseLodash`.
3541LazyWrapper.prototype = baseCreate(baseLodash.prototype);
3542LazyWrapper.prototype.constructor = LazyWrapper;
3543
3544module.exports = LazyWrapper;
3545
3546
3547/***/ }),
3548/* 66 */
3549/***/ (function(module, exports, __webpack_require__) {
3550
3551"use strict";
3552 // @wf-will-never-add-flow-to-this-file
3553
3554/* eslint-disable eslint-comments/no-unlimited-disable */
3555
3556/* eslint-disable */
3557
3558/*!
3559 * tram.js v0.8.2-global
3560 * Cross-browser CSS3 transitions in JavaScript
3561 * https://github.com/bkwld/tram
3562 * MIT License
3563 */
3564
3565/* prettier-ignore */
3566
3567var _interopRequireDefault = __webpack_require__(0);
3568
3569var _typeof2 = _interopRequireDefault(__webpack_require__(21));
3570
3571window.tram = function (a) {
3572  function b(a, b) {
3573    var c = new M.Bare();
3574    return c.init(a, b);
3575  }
3576
3577  function c(a) {
3578    return a.replace(/[A-Z]/g, function (a) {
3579      return "-" + a.toLowerCase();
3580    });
3581  }
3582
3583  function d(a) {
3584    var b = parseInt(a.slice(1), 16),
3585        c = b >> 16 & 255,
3586        d = b >> 8 & 255,
3587        e = 255 & b;
3588    return [c, d, e];
3589  }
3590
3591  function e(a, b, c) {
3592    return "#" + (1 << 24 | a << 16 | b << 8 | c).toString(16).slice(1);
3593  }
3594
3595  function f() {}
3596
3597  function g(a, b) {
3598    j("Type warning: Expected: [" + a + "] Got: [" + (0, _typeof2["default"])(b) + "] " + b);
3599  }
3600
3601  function h(a, b, c) {
3602    j("Units do not match [" + a + "]: " + b + ", " + c);
3603  }
3604
3605  function i(a, b, c) {
3606    if (void 0 !== b && (c = b), void 0 === a) return c;
3607    var d = c;
3608    return $.test(a) || !_.test(a) ? d = parseInt(a, 10) : _.test(a) && (d = 1e3 * parseFloat(a)), 0 > d && (d = 0), d === d ? d : c;
3609  }
3610
3611  function j(a) {
3612    U.debug && window && window.console.warn(a);
3613  }
3614
3615  function k(a) {
3616    for (var b = -1, c = a ? a.length : 0, d = []; ++b < c;) {
3617      var e = a[b];
3618      e && d.push(e);
3619    }
3620
3621    return d;
3622  }
3623
3624  var l = function (a, b, c) {
3625    function d(a) {
3626      return "object" == (0, _typeof2["default"])(a);
3627    }
3628
3629    function e(a) {
3630      return "function" == typeof a;
3631    }
3632
3633    function f() {}
3634
3635    function g(h, i) {
3636      function j() {
3637        var a = new k();
3638        return e(a.init) && a.init.apply(a, arguments), a;
3639      }
3640
3641      function k() {}
3642
3643      i === c && (i = h, h = Object), j.Bare = k;
3644      var l,
3645          m = f[a] = h[a],
3646          n = k[a] = j[a] = new f();
3647      return n.constructor = j, j.mixin = function (b) {
3648        return k[a] = j[a] = g(j, b)[a], j;
3649      }, j.open = function (a) {
3650        if (l = {}, e(a) ? l = a.call(j, n, m, j, h) : d(a) && (l = a), d(l)) for (var c in l) {
3651          b.call(l, c) && (n[c] = l[c]);
3652        }
3653        return e(n.init) || (n.init = h), j;
3654      }, j.open(i);
3655    }
3656
3657    return g;
3658  }("prototype", {}.hasOwnProperty),
3659      m = {
3660    ease: ["ease", function (a, b, c, d) {
3661      var e = (a /= d) * a,
3662          f = e * a;
3663      return b + c * (-2.75 * f * e + 11 * e * e + -15.5 * f + 8 * e + .25 * a);
3664    }],
3665    "ease-in": ["ease-in", function (a, b, c, d) {
3666      var e = (a /= d) * a,
3667          f = e * a;
3668      return b + c * (-1 * f * e + 3 * e * e + -3 * f + 2 * e);
3669    }],
3670    "ease-out": ["ease-out", function (a, b, c, d) {
3671      var e = (a /= d) * a,
3672          f = e * a;
3673      return b + c * (.3 * f * e + -1.6 * e * e + 2.2 * f + -1.8 * e + 1.9 * a);
3674    }],
3675    "ease-in-out": ["ease-in-out", function (a, b, c, d) {
3676      var e = (a /= d) * a,
3677          f = e * a;
3678      return b + c * (2 * f * e + -5 * e * e + 2 * f + 2 * e);
3679    }],
3680    linear: ["linear", function (a, b, c, d) {
3681      return c * a / d + b;
3682    }],
3683    "ease-in-quad": ["cubic-bezier(0.550, 0.085, 0.680, 0.530)", function (a, b, c, d) {
3684      return c * (a /= d) * a + b;
3685    }],
3686    "ease-out-quad": ["cubic-bezier(0.250, 0.460, 0.450, 0.940)", function (a, b, c, d) {
3687      return -c * (a /= d) * (a - 2) + b;
3688    }],
3689    "ease-in-out-quad": ["cubic-bezier(0.455, 0.030, 0.515, 0.955)", function (a, b, c, d) {
3690      return (a /= d / 2) < 1 ? c / 2 * a * a + b : -c / 2 * (--a * (a - 2) - 1) + b;
3691    }],
3692    "ease-in-cubic": ["cubic-bezier(0.550, 0.055, 0.675, 0.190)", function (a, b, c, d) {
3693      return c * (a /= d) * a * a + b;
3694    }],
3695    "ease-out-cubic": ["cubic-bezier(0.215, 0.610, 0.355, 1)", function (a, b, c, d) {
3696      return c * ((a = a / d - 1) * a * a + 1) + b;
3697    }],
3698    "ease-in-out-cubic": ["cubic-bezier(0.645, 0.045, 0.355, 1)", function (a, b, c, d) {
3699      return (a /= d / 2) < 1 ? c / 2 * a * a * a + b : c / 2 * ((a -= 2) * a * a + 2) + b;
3700    }],
3701    "ease-in-quart": ["cubic-bezier(0.895, 0.030, 0.685, 0.220)", function (a, b, c, d) {
3702      return c * (a /= d) * a * a * a + b;
3703    }],
3704    "ease-out-quart": ["cubic-bezier(0.165, 0.840, 0.440, 1)", function (a, b, c, d) {
3705      return -c * ((a = a / d - 1) * a * a * a - 1) + b;
3706    }],
3707    "ease-in-out-quart": ["cubic-bezier(0.770, 0, 0.175, 1)", function (a, b, c, d) {
3708      return (a /= d / 2) < 1 ? c / 2 * a * a * a * a + b : -c / 2 * ((a -= 2) * a * a * a - 2) + b;
3709    }],
3710    "ease-in-quint": ["cubic-bezier(0.755, 0.050, 0.855, 0.060)", function (a, b, c, d) {
3711      return c * (a /= d) * a * a * a * a + b;
3712    }],
3713    "ease-out-quint": ["cubic-bezier(0.230, 1, 0.320, 1)", function (a, b, c, d) {
3714      return c * ((a = a / d - 1) * a * a * a * a + 1) + b;
3715    }],
3716    "ease-in-out-quint": ["cubic-bezier(0.860, 0, 0.070, 1)", function (a, b, c, d) {
3717      return (a /= d / 2) < 1 ? c / 2 * a * a * a * a * a + b : c / 2 * ((a -= 2) * a * a * a * a + 2) + b;
3718    }],
3719    "ease-in-sine": ["cubic-bezier(0.470, 0, 0.745, 0.715)", function (a, b, c, d) {
3720      return -c * Math.cos(a / d * (Math.PI / 2)) + c + b;
3721    }],
3722    "ease-out-sine": ["cubic-bezier(0.390, 0.575, 0.565, 1)", function (a, b, c, d) {
3723      return c * Math.sin(a / d * (Math.PI / 2)) + b;
3724    }],
3725    "ease-in-out-sine": ["cubic-bezier(0.445, 0.050, 0.550, 0.950)", function (a, b, c, d) {
3726      return -c / 2 * (Math.cos(Math.PI * a / d) - 1) + b;
3727    }],
3728    "ease-in-expo": ["cubic-bezier(0.950, 0.050, 0.795, 0.035)", function (a, b, c, d) {
3729      return 0 === a ? b : c * Math.pow(2, 10 * (a / d - 1)) + b;
3730    }],
3731    "ease-out-expo": ["cubic-bezier(0.190, 1, 0.220, 1)", function (a, b, c, d) {
3732      return a === d ? b + c : c * (-Math.pow(2, -10 * a / d) + 1) + b;
3733    }],
3734    "ease-in-out-expo": ["cubic-bezier(1, 0, 0, 1)", function (a, b, c, d) {
3735      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;
3736    }],
3737    "ease-in-circ": ["cubic-bezier(0.600, 0.040, 0.980, 0.335)", function (a, b, c, d) {
3738      return -c * (Math.sqrt(1 - (a /= d) * a) - 1) + b;
3739    }],
3740    "ease-out-circ": ["cubic-bezier(0.075, 0.820, 0.165, 1)", function (a, b, c, d) {
3741      return c * Math.sqrt(1 - (a = a / d - 1) * a) + b;
3742    }],
3743    "ease-in-out-circ": ["cubic-bezier(0.785, 0.135, 0.150, 0.860)", function (a, b, c, d) {
3744      return (a /= d / 2) < 1 ? -c / 2 * (Math.sqrt(1 - a * a) - 1) + b : c / 2 * (Math.sqrt(1 - (a -= 2) * a) + 1) + b;
3745    }],
3746    "ease-in-back": ["cubic-bezier(0.600, -0.280, 0.735, 0.045)", function (a, b, c, d, e) {
3747      return void 0 === e && (e = 1.70158), c * (a /= d) * a * ((e + 1) * a - e) + b;
3748    }],
3749    "ease-out-back": ["cubic-bezier(0.175, 0.885, 0.320, 1.275)", function (a, b, c, d, e) {
3750      return void 0 === e && (e = 1.70158), c * ((a = a / d - 1) * a * ((e + 1) * a + e) + 1) + b;
3751    }],
3752    "ease-in-out-back": ["cubic-bezier(0.680, -0.550, 0.265, 1.550)", function (a, b, c, d, e) {
3753      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;
3754    }]
3755  },
3756      n = {
3757    "ease-in-back": "cubic-bezier(0.600, 0, 0.735, 0.045)",
3758    "ease-out-back": "cubic-bezier(0.175, 0.885, 0.320, 1)",
3759    "ease-in-out-back": "cubic-bezier(0.680, 0, 0.265, 1)"
3760  },
3761      o = document,
3762      p = window,
3763      q = "bkwld-tram",
3764      r = /[\-\.0-9]/g,
3765      s = /[A-Z]/,
3766      t = "number",
3767      u = /^(rgb|#)/,
3768      v = /(em|cm|mm|in|pt|pc|px)$/,
3769      w = /(em|cm|mm|in|pt|pc|px|%)$/,
3770      x = /(deg|rad|turn)$/,
3771      y = "unitless",
3772      z = /(all|none) 0s ease 0s/,
3773      A = /^(width|height)$/,
3774      B = " ",
3775      C = o.createElement("a"),
3776      D = ["Webkit", "Moz", "O", "ms"],
3777      E = ["-webkit-", "-moz-", "-o-", "-ms-"],
3778      F = function F(a) {
3779    if (a in C.style) return {
3780      dom: a,
3781      css: a
3782    };
3783    var b,
3784        c,
3785        d = "",
3786        e = a.split("-");
3787
3788    for (b = 0; b < e.length; b++) {
3789      d += e[b].charAt(0).toUpperCase() + e[b].slice(1);
3790    }
3791
3792    for (b = 0; b < D.length; b++) {
3793      if (c = D[b] + d, c in C.style) return {
3794        dom: c,
3795        css: E[b] + a
3796      };
3797    }
3798  },
3799      G = b.support = {
3800    bind: Function.prototype.bind,
3801    transform: F("transform"),
3802    transition: F("transition"),
3803    backface: F("backface-visibility"),
3804    timing: F("transition-timing-function")
3805  };
3806
3807  if (G.transition) {
3808    var H = G.timing.dom;
3809    if (C.style[H] = m["ease-in-back"][0], !C.style[H]) for (var I in n) {
3810      m[I][0] = n[I];
3811    }
3812  }
3813
3814  var J = b.frame = function () {
3815    var a = p.requestAnimationFrame || p.webkitRequestAnimationFrame || p.mozRequestAnimationFrame || p.oRequestAnimationFrame || p.msRequestAnimationFrame;
3816    return a && G.bind ? a.bind(p) : function (a) {
3817      p.setTimeout(a, 16);
3818    };
3819  }(),
3820      K = b.now = function () {
3821    var a = p.performance,
3822        b = a && (a.now || a.webkitNow || a.msNow || a.mozNow);
3823    return b && G.bind ? b.bind(a) : Date.now || function () {
3824      return +new Date();
3825    };
3826  }(),
3827      L = l(function (b) {
3828    function d(a, b) {
3829      var c = k(("" + a).split(B)),
3830          d = c[0];
3831      b = b || {};
3832      var e = Y[d];
3833      if (!e) return j("Unsupported property: " + d);
3834
3835      if (!b.weak || !this.props[d]) {
3836        var f = e[0],
3837            g = this.props[d];
3838        return g || (g = this.props[d] = new f.Bare()), g.init(this.$el, c, e, b), g;
3839      }
3840    }
3841
3842    function e(a, b, c) {
3843      if (a) {
3844        var e = (0, _typeof2["default"])(a);
3845        if (b || (this.timer && this.timer.destroy(), this.queue = [], this.active = !1), "number" == e && b) return this.timer = new S({
3846          duration: a,
3847          context: this,
3848          complete: h
3849        }), void (this.active = !0);
3850
3851        if ("string" == e && b) {
3852          switch (a) {
3853            case "hide":
3854              o.call(this);
3855              break;
3856
3857            case "stop":
3858              l.call(this);
3859              break;
3860
3861            case "redraw":
3862              p.call(this);
3863              break;
3864
3865            default:
3866              d.call(this, a, c && c[1]);
3867          }
3868
3869          return h.call(this);
3870        }
3871
3872        if ("function" == e) return void a.call(this, this);
3873
3874        if ("object" == e) {
3875          var f = 0;
3876          u.call(this, a, function (a, b) {
3877            a.span > f && (f = a.span), a.stop(), a.animate(b);
3878          }, function (a) {
3879            "wait" in a && (f = i(a.wait, 0));
3880          }), t.call(this), f > 0 && (this.timer = new S({
3881            duration: f,
3882            context: this
3883          }), this.active = !0, b && (this.timer.complete = h));
3884          var g = this,
3885              j = !1,
3886              k = {};
3887          J(function () {
3888            u.call(g, a, function (a) {
3889              a.active && (j = !0, k[a.name] = a.nextStyle);
3890            }), j && g.$el.css(k);
3891          });
3892        }
3893      }
3894    }
3895
3896    function f(a) {
3897      a = i(a, 0), this.active ? this.queue.push({
3898        options: a
3899      }) : (this.timer = new S({
3900        duration: a,
3901        context: this,
3902        complete: h
3903      }), this.active = !0);
3904    }
3905
3906    function g(a) {
3907      return this.active ? (this.queue.push({
3908        options: a,
3909        args: arguments
3910      }), void (this.timer.complete = h)) : j("No active transition timer. Use start() or wait() before then().");
3911    }
3912
3913    function h() {
3914      if (this.timer && this.timer.destroy(), this.active = !1, this.queue.length) {
3915        var a = this.queue.shift();
3916        e.call(this, a.options, !0, a.args);
3917      }
3918    }
3919
3920    function l(a) {
3921      this.timer && this.timer.destroy(), this.queue = [], this.active = !1;
3922      var b;
3923      "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);
3924    }
3925
3926    function m(a) {
3927      l.call(this, a), u.call(this, a, w, x);
3928    }
3929
3930    function n(a) {
3931      "string" != typeof a && (a = "block"), this.el.style.display = a;
3932    }
3933
3934    function o() {
3935      l.call(this), this.el.style.display = "none";
3936    }
3937
3938    function p() {
3939      this.el.offsetHeight;
3940    }
3941
3942    function r() {
3943      l.call(this), a.removeData(this.el, q), this.$el = this.el = null;
3944    }
3945
3946    function t() {
3947      var a,
3948          b,
3949          c = [];
3950      this.upstream && c.push(this.upstream);
3951
3952      for (a in this.props) {
3953        b = this.props[a], b.active && c.push(b.string);
3954      }
3955
3956      c = c.join(","), this.style !== c && (this.style = c, this.el.style[G.transition.dom] = c);
3957    }
3958
3959    function u(a, b, e) {
3960      var f,
3961          g,
3962          h,
3963          i,
3964          j = b !== v,
3965          k = {};
3966
3967      for (f in a) {
3968        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));
3969      }
3970
3971      for (f in k) {
3972        if (h = k[f], g = this.props[f], !g) {
3973          if (!j) continue;
3974          g = d.call(this, f);
3975        }
3976
3977        b.call(this, g, h);
3978      }
3979
3980      e && i && e.call(this, i);
3981    }
3982
3983    function v(a) {
3984      a.stop();
3985    }
3986
3987    function w(a, b) {
3988      a.set(b);
3989    }
3990
3991    function x(a) {
3992      this.$el.css(a);
3993    }
3994
3995    function y(a, c) {
3996      b[a] = function () {
3997        return this.children ? A.call(this, c, arguments) : (this.el && c.apply(this, arguments), this);
3998      };
3999    }
4000
4001    function A(a, b) {
4002      var c,
4003          d = this.children.length;
4004
4005      for (c = 0; d > c; c++) {
4006        a.apply(this.children[c], b);
4007      }
4008
4009      return this;
4010    }
4011
4012    b.init = function (b) {
4013      if (this.$el = a(b), this.el = this.$el[0], this.props = {}, this.queue = [], this.style = "", this.active = !1, U.keepInherited && !U.fallback) {
4014        var c = W(this.el, "transition");
4015        c && !z.test(c) && (this.upstream = c);
4016      }
4017
4018      G.backface && U.hideBackface && V(this.el, G.backface.css, "hidden");
4019    }, 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);
4020  }),
4021      M = l(L, function (b) {
4022    function c(b, c) {
4023      var d = a.data(b, q) || a.data(b, q, new L.Bare());
4024      return d.el || d.init(b), c ? d.start(c) : d;
4025    }
4026
4027    b.init = function (b, d) {
4028      var e = a(b);
4029      if (!e.length) return this;
4030      if (1 === e.length) return c(e[0], d);
4031      var f = [];
4032      return e.each(function (a, b) {
4033        f.push(c(b, d));
4034      }), this.children = f, this;
4035    };
4036  }),
4037      N = l(function (a) {
4038    function b() {
4039      var a = this.get();
4040      this.update("auto");
4041      var b = this.get();
4042      return this.update(a), b;
4043    }
4044
4045    function c(a, b, c) {
4046      return void 0 !== b && (c = b), a in m ? a : c;
4047    }
4048
4049    function d(a) {
4050      var b = /rgba?\((\d+),\s*(\d+),\s*(\d+)/.exec(a);
4051      return (b ? e(b[1], b[2], b[3]) : a).replace(/#(\w)(\w)(\w)$/, "#$1$1$2$2$3$3");
4052    }
4053
4054    var f = {
4055      duration: 500,
4056      ease: "ease",
4057      delay: 0
4058    };
4059    a.init = function (a, b, d, e) {
4060      this.$el = a, this.el = a[0];
4061      var g = b[0];
4062      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" : ""));
4063    }, a.set = function (a) {
4064      a = this.convert(a, this.type), this.update(a), this.redraw();
4065    }, a.transition = function (a) {
4066      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;
4067    }, a.fallback = function (a) {
4068      var c = this.el.style[this.name] || this.convert(this.get(), this.type);
4069      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({
4070        from: c,
4071        to: a,
4072        duration: this.duration,
4073        delay: this.delay,
4074        ease: this.ease,
4075        update: this.update,
4076        context: this
4077      });
4078    }, a.get = function () {
4079      return W(this.el, this.name);
4080    }, a.update = function (a) {
4081      V(this.el, this.name, a);
4082    }, a.stop = function () {
4083      (this.active || this.nextStyle) && (this.active = !1, this.nextStyle = null, V(this.el, this.name, this.get()));
4084      var a = this.tween;
4085      a && a.context && a.destroy();
4086    }, a.convert = function (a, b) {
4087      if ("auto" == a && this.auto) return a;
4088      var c,
4089          e = "number" == typeof a,
4090          f = "string" == typeof a;
4091
4092      switch (b) {
4093        case t:
4094          if (e) return a;
4095          if (f && "" === a.replace(r, "")) return +a;
4096          c = "number(unitless)";
4097          break;
4098
4099        case u:
4100          if (f) {
4101            if ("" === a && this.original) return this.original;
4102            if (b.test(a)) return "#" == a.charAt(0) && 7 == a.length ? a : d(a);
4103          }
4104
4105          c = "hex or rgb string";
4106          break;
4107
4108        case v:
4109          if (e) return a + this.unit;
4110          if (f && b.test(a)) return a;
4111          c = "number(px) or string(unit)";
4112          break;
4113
4114        case w:
4115          if (e) return a + this.unit;
4116          if (f && b.test(a)) return a;
4117          c = "number(px) or string(unit or %)";
4118          break;
4119
4120        case x:
4121          if (e) return a + this.angle;
4122          if (f && b.test(a)) return a;
4123          c = "number(deg) or string(angle)";
4124          break;
4125
4126        case y:
4127          if (e) return a;
4128          if (f && w.test(a)) return a;
4129          c = "number(unitless) or string(unit or %)";
4130      }
4131
4132      return g(c, a), a;
4133    }, a.redraw = function () {
4134      this.el.offsetHeight;
4135    };
4136  }),
4137      O = l(N, function (a, b) {
4138    a.init = function () {
4139      b.init.apply(this, arguments), this.original || (this.original = this.convert(this.get(), u));
4140    };
4141  }),
4142      P = l(N, function (a, b) {
4143    a.init = function () {
4144      b.init.apply(this, arguments), this.animate = this.fallback;
4145    }, a.get = function () {
4146      return this.$el[this.name]();
4147    }, a.update = function (a) {
4148      this.$el[this.name](a);
4149    };
4150  }),
4151      Q = l(N, function (a, b) {
4152    function c(a, b) {
4153      var c, d, e, f, g;
4154
4155      for (c in a) {
4156        f = Z[c], e = f[0], d = f[1] || c, g = this.convert(a[c], e), b.call(this, d, g, e);
4157      }
4158    }
4159
4160    a.init = function () {
4161      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()));
4162    }, a.set = function (a) {
4163      c.call(this, a, function (a, b) {
4164        this.current[a] = b;
4165      }), V(this.el, this.name, this.style(this.current)), this.redraw();
4166    }, a.transition = function (a) {
4167      var b = this.values(a);
4168      this.tween = new T({
4169        current: this.current,
4170        values: b,
4171        duration: this.duration,
4172        delay: this.delay,
4173        ease: this.ease
4174      });
4175      var c,
4176          d = {};
4177
4178      for (c in this.current) {
4179        d[c] = c in b ? b[c] : this.current[c];
4180      }
4181
4182      this.active = !0, this.nextStyle = this.style(d);
4183    }, a.fallback = function (a) {
4184      var b = this.values(a);
4185      this.tween = new T({
4186        current: this.current,
4187        values: b,
4188        duration: this.duration,
4189        delay: this.delay,
4190        ease: this.ease,
4191        update: this.update,
4192        context: this
4193      });
4194    }, a.update = function () {
4195      V(this.el, this.name, this.style(this.current));
4196    }, a.style = function (a) {
4197      var b,
4198          c = "";
4199
4200      for (b in a) {
4201        c += b + "(" + a[b] + ") ";
4202      }
4203
4204      return c;
4205    }, a.values = function (a) {
4206      var b,
4207          d = {};
4208      return c.call(this, a, function (a, c, e) {
4209        d[a] = c, void 0 === this.current[a] && (b = 0, ~a.indexOf("scale") && (b = 1), this.current[a] = this.convert(b, e));
4210      }), d;
4211    };
4212  }),
4213      R = l(function (b) {
4214    function c(a) {
4215      1 === n.push(a) && J(g);
4216    }
4217
4218    function g() {
4219      var a,
4220          b,
4221          c,
4222          d = n.length;
4223      if (d) for (J(g), b = K(), a = d; a--;) {
4224        c = n[a], c && c.render(b);
4225      }
4226    }
4227
4228    function i(b) {
4229      var c,
4230          d = a.inArray(b, n);
4231      d >= 0 && (c = n.slice(d + 1), n.length = d, c.length && (n = n.concat(c)));
4232    }
4233
4234    function j(a) {
4235      return Math.round(a * o) / o;
4236    }
4237
4238    function k(a, b, c) {
4239      return e(a[0] + c * (b[0] - a[0]), a[1] + c * (b[1] - a[1]), a[2] + c * (b[2] - a[2]));
4240    }
4241
4242    var l = {
4243      ease: m.ease[1],
4244      from: 0,
4245      to: 1
4246    };
4247    b.init = function (a) {
4248      this.duration = a.duration || 0, this.delay = a.delay || 0;
4249      var b = a.ease || l.ease;
4250      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;
4251      var c = a.from,
4252          d = a.to;
4253      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();
4254    }, b.play = function () {
4255      this.active || (this.start || (this.start = K()), this.active = !0, c(this));
4256    }, b.stop = function () {
4257      this.active && (this.active = !1, i(this));
4258    }, b.render = function (a) {
4259      var b,
4260          c = a - this.start;
4261
4262      if (this.delay) {
4263        if (c <= this.delay) return;
4264        c -= this.delay;
4265      }
4266
4267      if (c < this.duration) {
4268        var d = this.ease(c, 0, 1, this.duration);
4269        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);
4270      }
4271
4272      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();
4273    }, b.format = function (a, b) {
4274      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);
4275
4276      if (!this.unit) {
4277        var c = b.replace(r, ""),
4278            e = a.replace(r, "");
4279        c !== e && h("tween", b, a), this.unit = c;
4280      }
4281
4282      b = parseFloat(b), a = parseFloat(a), this.begin = this.value = b, this.change = a - b;
4283    }, b.destroy = function () {
4284      this.stop(), this.context = null, this.ease = this.update = this.complete = f;
4285    };
4286    var n = [],
4287        o = 1e3;
4288  }),
4289      S = l(R, function (a) {
4290    a.init = function (a) {
4291      this.duration = a.duration || 0, this.complete = a.complete || f, this.context = a.context, this.play();
4292    }, a.render = function (a) {
4293      var b = a - this.start;
4294      b < this.duration || (this.complete.call(this.context), this.destroy());
4295    };
4296  }),
4297      T = l(R, function (a, b) {
4298    a.init = function (a) {
4299      this.context = a.context, this.update = a.update, this.tweens = [], this.current = a.current;
4300      var b, c;
4301
4302      for (b in a.values) {
4303        c = a.values[b], this.current[b] !== c && this.tweens.push(new R({
4304          name: b,
4305          from: this.current[b],
4306          to: c,
4307          duration: a.duration,
4308          delay: a.delay,
4309          ease: a.ease,
4310          autoplay: !1
4311        }));
4312      }
4313
4314      this.play();
4315    }, a.render = function (a) {
4316      var b,
4317          c,
4318          d = this.tweens.length,
4319          e = !1;
4320
4321      for (b = d; b--;) {
4322        c = this.tweens[b], c.context && (c.render(a), this.current[c.name] = c.value, e = !0);
4323      }
4324
4325      return e ? void (this.update && this.update.call(this.context)) : this.destroy();
4326    }, a.destroy = function () {
4327      if (b.destroy.call(this), this.tweens) {
4328        var a,
4329            c = this.tweens.length;
4330
4331        for (a = c; a--;) {
4332          this.tweens[a].destroy();
4333        }
4334
4335        this.tweens = null, this.current = null;
4336      }
4337    };
4338  }),
4339      U = b.config = {
4340    debug: !1,
4341    defaultUnit: "px",
4342    defaultAngle: "deg",
4343    keepInherited: !1,
4344    hideBackface: !1,
4345    perspective: "",
4346    fallback: !G.transition,
4347    agentTests: []
4348  };
4349
4350  b.fallback = function (a) {
4351    if (!G.transition) return U.fallback = !0;
4352    U.agentTests.push("(" + a + ")");
4353    var b = new RegExp(U.agentTests.join("|"), "i");
4354    U.fallback = b.test(navigator.userAgent);
4355  }, b.fallback("6.0.[2-5] Safari"), b.tween = function (a) {
4356    return new R(a);
4357  }, b.delay = function (a, b, c) {
4358    return new S({
4359      complete: b,
4360      duration: a,
4361      context: c
4362    });
4363  }, a.fn.tram = function (a) {
4364    return b.call(null, this, a);
4365  };
4366  var V = a.style,
4367      W = a.css,
4368      X = {
4369    transform: G.transform && G.transform.css
4370  },
4371      Y = {
4372    color: [O, u],
4373    background: [O, u, "background-color"],
4374    "outline-color": [O, u],
4375    "border-color": [O, u],
4376    "border-top-color": [O, u],
4377    "border-right-color": [O, u],
4378    "border-bottom-color": [O, u],
4379    "border-left-color": [O, u],
4380    "border-width": [N, v],
4381    "border-top-width": [N, v],
4382    "border-right-width": [N, v],
4383    "border-bottom-width": [N, v],
4384    "border-left-width": [N, v],
4385    "border-spacing": [N, v],
4386    "letter-spacing": [N, v],
4387    margin: [N, v],
4388    "margin-top": [N, v],
4389    "margin-right": [N, v],
4390    "margin-bottom": [N, v],
4391    "margin-left": [N, v],
4392    padding: [N, v],
4393    "padding-top": [N, v],
4394    "padding-right": [N, v],
4395    "padding-bottom": [N, v],
4396    "padding-left": [N, v],
4397    "outline-width": [N, v],
4398    opacity: [N, t],
4399    top: [N, w],
4400    right: [N, w],
4401    bottom: [N, w],
4402    left: [N, w],
4403    "font-size": [N, w],
4404    "text-indent": [N, w],
4405    "word-spacing": [N, w],
4406    width: [N, w],
4407    "min-width": [N, w],
4408    "max-width": [N, w],
4409    height: [N, w],
4410    "min-height": [N, w],
4411    "max-height": [N, w],
4412    "line-height": [N, y],
4413    "scroll-top": [P, t, "scrollTop"],
4414    "scroll-left": [P, t, "scrollLeft"]
4415  },
4416      Z = {};
4417  G.transform && (Y.transform = [Q], Z = {
4418    x: [w, "translateX"],
4419    y: [w, "translateY"],
4420    rotate: [x],
4421    rotateX: [x],
4422    rotateY: [x],
4423    scale: [t],
4424    scaleX: [t],
4425    scaleY: [t],
4426    skew: [x],
4427    skewX: [x],
4428    skewY: [x]
4429  }), G.transform && G.backface && (Z.z = [w, "translateZ"], Z.rotateZ = [x], Z.scaleZ = [t], Z.perspective = [v]);
4430  var $ = /ms/,
4431      _ = /s|\./;
4432  return a.tram = b;
4433}(window.jQuery);
4434
4435/***/ }),
4436/* 67 */
4437/***/ (function(module, exports, __webpack_require__) {
4438
4439var DESCRIPTORS = __webpack_require__(14);
4440var propertyIsEnumerableModule = __webpack_require__(131);
4441var createPropertyDescriptor = __webpack_require__(68);
4442var toIndexedObject = __webpack_require__(39);
4443var toPrimitive = __webpack_require__(69);
4444var has = __webpack_require__(16);
4445var IE8_DOM_DEFINE = __webpack_require__(70);
4446
4447var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
4448
4449// `Object.getOwnPropertyDescriptor` method
4450// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor
4451exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
4452  O = toIndexedObject(O);
4453  P = toPrimitive(P, true);
4454  if (IE8_DOM_DEFINE) try {
4455    return nativeGetOwnPropertyDescriptor(O, P);
4456  } catch (error) { /* empty */ }
4457  if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);
4458};
4459
4460
4461/***/ }),
4462/* 68 */
vendor: 4,284 bytes, lines 4463-4618
4463/***/ (function(module, exports) {
4464
4465module.exports = function (bitmap, value) {
4466  return {
4467    enumerable: !(bitmap & 1),
4468    configurable: !(bitmap & 2),
4469    writable: !(bitmap & 4),
4470    value: value
4471  };
4472};
4473
4474
4475/***/ }),
4476/* 69 */
4477/***/ (function(module, exports, __webpack_require__) {
4478
4479var isObject = __webpack_require__(23);
4480
4481// `ToPrimitive` abstract operation
4482// https://tc39.github.io/ecma262/#sec-toprimitive
4483// instead of the ES6 spec version, we didn't implement @@toPrimitive case
4484// and the second argument - flag - preferred type is a string
4485module.exports = function (input, PREFERRED_STRING) {
4486  if (!isObject(input)) return input;
4487  var fn, val;
4488  if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
4489  if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;
4490  if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
4491  throw TypeError("Can't convert object to primitive value");
4492};
4493
4494
4495/***/ }),
4496/* 70 */
4497/***/ (function(module, exports, __webpack_require__) {
4498
4499var DESCRIPTORS = __webpack_require__(14);
4500var fails = __webpack_require__(15);
4501var createElement = __webpack_require__(71);
4502
4503// Thank's IE8 for his funny defineProperty
4504module.exports = !DESCRIPTORS && !fails(function () {
4505  return Object.defineProperty(createElement('div'), 'a', {
4506    get: function () { return 7; }
4507  }).a != 7;
4508});
4509
4510
4511/***/ }),
4512/* 71 */
4513/***/ (function(module, exports, __webpack_require__) {
4514
4515var global = __webpack_require__(3);
4516var isObject = __webpack_require__(23);
4517
4518var document = global.document;
4519// typeof document.createElement is 'object' in old IE
4520var EXISTS = isObject(document) && isObject(document.createElement);
4521
4522module.exports = function (it) {
4523  return EXISTS ? document.createElement(it) : {};
4524};
4525
4526
4527/***/ }),
4528/* 72 */
4529/***/ (function(module, exports, __webpack_require__) {
4530
4531var shared = __webpack_require__(25);
4532
4533module.exports = shared('native-function-to-string', Function.toString);
4534
4535
4536/***/ }),
4537/* 73 */
4538/***/ (function(module, exports, __webpack_require__) {
4539
4540var shared = __webpack_require__(25);
4541var uid = __webpack_require__(74);
4542
4543var keys = shared('keys');
4544
4545module.exports = function (key) {
4546  return keys[key] || (keys[key] = uid(key));
4547};
4548
4549
4550/***/ }),
4551/* 74 */
4552/***/ (function(module, exports) {
4553
4554var id = 0;
4555var postfix = Math.random();
4556
4557module.exports = function (key) {
4558  return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);
4559};
4560
4561
4562/***/ }),
4563/* 75 */
4564/***/ (function(module, exports, __webpack_require__) {
4565
4566var path = __webpack_require__(141);
4567var global = __webpack_require__(3);
4568
4569var aFunction = function (variable) {
4570  return typeof variable == 'function' ? variable : undefined;
4571};
4572
4573module.exports = function (namespace, method) {
4574  return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])
4575    : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];
4576};
4577
4578
4579/***/ }),
4580/* 76 */
4581/***/ (function(module, exports, __webpack_require__) {
4582
4583var has = __webpack_require__(16);
4584var toIndexedObject = __webpack_require__(39);
4585var indexOf = __webpack_require__(77).indexOf;
4586var hiddenKeys = __webpack_require__(42);
4587
4588module.exports = function (object, names) {
4589  var O = toIndexedObject(object);
4590  var i = 0;
4591  var result = [];
4592  var key;
4593  for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);
4594  // Don't enum bug & hidden keys
4595  while (names.length > i) if (has(O, key = names[i++])) {
4596    ~indexOf(result, key) || result.push(key);
4597  }
4598  return result;
4599};
4600
4601
4602/***/ }),
4603/* 77 */
4604/***/ (function(module, exports, __webpack_require__) {
4605
4606var toIndexedObject = __webpack_require__(39);
4607var toLength = __webpack_require__(143);
4608var toAbsoluteIndex = __webpack_require__(144);
4609
4610// `Array.prototype.{ indexOf, includes }` methods implementation
4611var createMethod = function (IS_INCLUDES) {
4612  return function ($this, el, fromIndex) {
4613    var O = toIndexedObject($this);
4614    var length = toLength(O.length);
4615    var index = toAbsoluteIndex(fromIndex, length);
4616    var value;
4617    // Array#includes uses SameValueZero equality algorithm
4618    // eslint-disable-next-line no-self-compare
4619    if (IS_INCLUDES && el != el) while (length > index) {
4620      value = O[index++];
4621      // eslint-disable-next-line no-self-compare
4622      if (value != value) return true;
4623    // Array#indexOf ignores holes, Array#includes - not
4624    } else for (;length > index; index++) {
4625      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
4626    } return !IS_INCLUDES && -1;
4627  };
4628};
4629
4630module.exports = {
4631  // `Array.prototype.includes` method
4632  // https://tc39.github.io/ecma262/#sec-array.prototype.includes
4633  includes: createMethod(true),
4634  // `Array.prototype.indexOf` method
4635  // https://tc39.github.io/ecma262/#sec-array.prototype.indexof
4636  indexOf: createMethod(false)
4637};
4638
4639
4640/***/ }),
4641/* 78 */
4642/***/ (function(module, exports) {
4643
4644var ceil = Math.ceil;
4645var floor = Math.floor;
4646
4647// `ToInteger` abstract operation
4648// https://tc39.github.io/ecma262/#sec-tointeger
4649module.exports = function (argument) {
4650  return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);
4651};
4652
4653
4654/***/ }),
4655/* 79 */
4656/***/ (function(module, __webpack_exports__, __webpack_require__) {
4657
4658"use strict";
4659__webpack_require__.r(__webpack_exports__);
4660/* harmony import */ var _createStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(44);
4661/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "createStore", function() { return _createStore__WEBPACK_IMPORTED_MODULE_0__["default"]; });
4662
4663/* harmony import */ var _combineReducers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(82);
4664/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineReducers", function() { return _combineReducers__WEBPACK_IMPORTED_MODULE_1__["default"]; });
4665
4666/* harmony import */ var _bindActionCreators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(84);
4667/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bindActionCreators", function() { return _bindActionCreators__WEBPACK_IMPORTED_MODULE_2__["default"]; });
4668
4669/* harmony import */ var _applyMiddleware__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(85);
4670/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "applyMiddleware", function() { return _applyMiddleware__WEBPACK_IMPORTED_MODULE_3__["default"]; });
4671
4672/* harmony import */ var _compose__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(45);
4673/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "compose", function() { return _compose__WEBPACK_IMPORTED_MODULE_4__["default"]; });
4674
4675/* harmony import */ var _utils_warning__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(83);
4676
4677
4678
4679
4680
4681
4682
4683/*
4684* This is a dummy function to check if the function name has been altered by minification.
4685* If the function has been minified and NODE_ENV !== 'production', warn the user.
4686*/
4687function isCrushed() {}
4688
4689if (false) {}
4690
4691
4692
4693/***/ }),
4694/* 80 */
4695/***/ (function(module, __webpack_exports__, __webpack_require__) {
4696
4697"use strict";
4698__webpack_require__.r(__webpack_exports__);
4699/* harmony import */ var _baseGetTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(157);
4700/* harmony import */ var _getPrototype_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(162);
4701/* harmony import */ var _isObjectLike_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(164);
4702
4703
4704
4705
4706/** `Object#toString` result references. */
4707var objectTag = '[object Object]';
4708
4709/** Used for built-in method references. */
4710var funcProto = Function.prototype,
4711    objectProto = Object.prototype;
4712
4713/** Used to resolve the decompiled source of functions. */
4714var funcToString = funcProto.toString;
4715
4716/** Used to check objects for own properties. */
4717var hasOwnProperty = objectProto.hasOwnProperty;
4718
4719/** Used to infer the `Object` constructor. */
4720var objectCtorString = funcToString.call(Object);
4721
4722/**
4723 * Checks if `value` is a plain object, that is, an object created by the
4724 * `Object` constructor or one with a `[[Prototype]]` of `null`.
4725 *
4726 * @static
4727 * @memberOf _
4728 * @since 0.8.0
4729 * @category Lang
4730 * @param {*} value The value to check.
4731 * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
4732 * @example
4733 *
4734 * function Foo() {
4735 *   this.a = 1;
4736 * }
4737 *
4738 * _.isPlainObject(new Foo);
4739 * // => false
4740 *
4741 * _.isPlainObject([1, 2, 3]);
4742 * // => false
4743 *
4744 * _.isPlainObject({ 'x': 0, 'y': 0 });
4745 * // => true
4746 *
4747 * _.isPlainObject(Object.create(null));
4748 * // => true
4749 */
4750function isPlainObject(value) {
4751  if (!Object(_isObjectLike_js__WEBPACK_IMPORTED_MODULE_2__["default"])(value) || Object(_baseGetTag_js__WEBPACK_IMPORTED_MODULE_0__["default"])(value) != objectTag) {
4752    return false;
4753  }
4754  var proto = Object(_getPrototype_js__WEBPACK_IMPORTED_MODULE_1__["default"])(value);
4755  if (proto === null) {
4756    return true;
4757  }
4758  var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;
4759  return typeof Ctor == 'function' && Ctor instanceof Ctor &&
4760    funcToString.call(Ctor) == objectCtorString;
4761}
4762
4763/* harmony default export */ __webpack_exports__["default"] = (isPlainObject);
4764
4765
4766/***/ }),
4767/* 81 */
4768/***/ (function(module, __webpack_exports__, __webpack_require__) {
4769
4770"use strict";
4771__webpack_require__.r(__webpack_exports__);
4772/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(158);
4773
4774
4775/** Built-in value references. */
4776var Symbol = _root_js__WEBPACK_IMPORTED_MODULE_0__["default"].Symbol;
4777
4778/* harmony default export */ __webpack_exports__["default"] = (Symbol);
4779
4780
4781/***/ }),
4782/* 82 */
4783/***/ (function(module, __webpack_exports__, __webpack_require__) {
4784
4785"use strict";
4786__webpack_require__.r(__webpack_exports__);
4787/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return combineReducers; });
4788/* harmony import */ var _createStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(44);
4789/* harmony import */ var lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(80);
4790/* harmony import */ var _utils_warning__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(83);
4791
4792
4793
4794
4795function getUndefinedStateErrorMessage(key, action) {
4796  var actionType = action && action.type;
4797  var actionName = actionType && '"' + actionType.toString() + '"' || 'an action';
4798
4799  return 'Given action ' + actionName + ', reducer "' + key + '" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state.';
4800}
4801
4802function getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unex
4802pectedKeyCache) {
4803  var reducerKeys = Object.keys(reducers);
4804  var argumentName = action && action.type === _createStore__WEBPACK_IMPORTED_MODULE_0__["ActionTypes"].INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';
4805
4806  if (reducerKeys.length === 0) {
4807    return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';
4808  }
4809
4810  if (!Object(lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_1__["default"])(inputState)) {
4811    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('", "') + '"');
4812  }
4813
4814  var unexpectedKeys = Object.keys(inputState).filter(function (key) {
4815    return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];
4816  });
4817
4818  unexpectedKeys.forEach(function (key) {
4819    unexpectedKeyCache[key] = true;
4820  });
4821
4822  if (unexpectedKeys.length > 0) {
4823    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.');
4824  }
4825}
4826
4827function assertReducerSanity(reducers) {
4828  Object.keys(reducers).forEach(function (key) {
4829    var reducer = reducers[key];
4830    var initialState = reducer(undefined, { type: _createStore__WEBPACK_IMPORTED_MODULE_0__["ActionTypes"].INIT });
4831
4832    if (typeof initialState === 'undefined') {
4833      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.');
4834    }
4835
4836    var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.');
4837    if (typeof reducer(undefined, { type: type }) === 'undefined') {
4838      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.');
4839    }
4840  });
4841}
4842
4843/**
4844 * Turns an object whose values are different reducer functions, into a single
4845 * reducer function. It will call every child reducer, and gather their results
4846 * into a single state object, whose keys correspond to the keys of the passed
4847 * reducer functions.
4848 *
4849 * @param {Object} reducers An object whose values correspond to different
4850 * reducer functions that need to be combined into one. One handy way to obtain
4851 * it is to use ES6 `import * as reducers` syntax. The reducers may never return
4852 * undefined for any action. Instead, they should return their initial state
4853 * if the state passed to them was undefined, and the current state for any
4854 * unrecognized action.
4855 *
4856 * @returns {Function} A reducer function that invokes every reducer inside the
4857 * passed object, and builds a state object with the same shape.
4858 */
4859function combineReducers(reducers) {
4860  var reducerKeys = Object.keys(reducers);
4861  var finalReducers = {};
4862  for (var i = 0; i < reducerKeys.length; i++) {
4863    var key = reducerKeys[i];
4864
4865    if (false) {}
4866
4867    if (typeof reducers[key] === 'function') {
4868      finalReducers[key] = reducers[key];
4869    }
4870  }
4871  var finalReducerKeys = Object.keys(finalReducers);
4872
4873  if (false) { var unexpectedKeyCache; }
4874
4875  var sanityError;
4876  try {
4877    assertReducerSanity(finalReducers);
4878  } catch (e) {
4879    sanityError = e;
4880  }
4881
4882  return function combination() {
4883    var state = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
4884    var action = arguments[1];
4885
4886    if (sanityError) {
4887      throw sanityError;
4888    }
4889
4890    if (false) { var warningMessage; }
4891
4892    var hasChanged = false;
4893    var nextState = {};
4894    for (var i = 0; i < finalReducerKeys.length; i++) {
4895      var key = finalReducerKeys[i];
4896      var reducer = finalReducers[key];
4897      var previousStateForKey = state[key];
4898      var nextStateForKey = reducer(previousStateForKey, action);
4899      if (typeof nextStateForKey === 'undefined') {
4900        var errorMessage = getUndefinedStateErrorMessage(key, action);
4901        throw new Error(errorMessage);
4902      }
4903      nextState[key] = nextStateForKey;
4904      hasChanged = hasChanged || nextStateForKey !== previousStateForKey;
4905    }
4906    return hasChanged ? nextState : state;
4907  };
4908}
4909
4910/***/ }),
4911/* 83 */
4912/***/ (function(module, __webpack_exports__, __webpack_require__) {
4913
4914"use strict";
4915__webpack_require__.r(__webpack_exports__);
4916/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return warning; });
4917/**
4918 * Prints a warning in the console if it exists.
4919 *
4920 * @param {String} message The warning message.
4921 * @returns {void}
4922 */
4923function warning(message) {
4924  /* eslint-disable no-console */
4925  if (typeof console !== 'undefined' && typeof console.error === 'function') {
4926    console.error(message);
4927  }
4928  /* eslint-enable no-console */
4929  try {
4930    // This error was thrown as a convenience so that if you enable
4931    // "break on all exceptions" in your console,
4932    // it would pause the execution at this line.
4933    throw new Error(message);
4934    /* eslint-disable no-empty */
4935  } catch (e) {}
4936  /* eslint-enable no-empty */
4937}
4938
4939/***/ }),
4940/* 84 */
4941/***/ (function(module, __webpack_exports__, __webpack_require__) {
4942
4943"use strict";
4944__webpack_require__.r(__webpack_exports__);
4945/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return bindActionCreators; });
4946function bindActionCreator(actionCreator, dispatch) {
4947  return function () {
4948    return dispatch(actionCreator.apply(undefined, arguments));
4949  };
4950}
4951
4952/**
4953 * Turns an object whose values are action creators, into an object with the
4954 * same keys, but with every function wrapped into a `dispatch` call so they
4955 * may be invoked directly. This is just a convenience method, as you can call
4956 * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.
4957 *
4958 * For convenience, you can also pass a single function as the first argument,
4959 * and get a function in return.
4960 *
4961 * @param {Function|Object} actionCreators An object whose values are action
4962 * creator functions. One handy way to obtain it is to use ES6 `import * as`
4963 * syntax. You may also pass a single function.
4964 *
4965 * @param {Function} dispatch The `dispatch` function available on your Redux
4966 * store.
4967 *
4968 * @returns {Function|Object} The object mimicking the original object, but with
4969 * every action creator wrapped into the `dispatch` call. If you passed a
4970 * function as `actionCreators`, the return value will also be a single
4971 * function.
4972 */
4973function bindActionCreators(actionCreators, dispatch) {
4974  if (typeof actionCreators === 'function') {
4975    return bindActionCreator(actionCreators, dispatch);
4976  }
4977
4978  if (typeof actionCreators !== 'object' || actionCreators === null) {
4979    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"?');
4980  }
4981
4982  var keys = Object.keys(actionCreators);
4983  var boundActionCreators = {};
4984  for (var i = 0; i < keys.length; i++) {
4985    var key = keys[i];
4986    var actionCreator = actionCreators[key];
4987    if (typeof actionCreator === 'function') {
4988      boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);
4989    }
4990  }
4991  return boundActionCreators;
4992}
4993
4994/***/ }),
4995/* 85 */
4996/***/ (function(module, __webpack_exports__, __webpack_require__) {
4997
4998"use strict";
4999__webpack_require__.r(__webpack_exports__);
5000/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return applyMiddleware; });
5001/* harmony import */ var _compose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(45);
5002var _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; };
5003
5004
5005
5006/**
5007 * Creates a store enhancer that applies middleware to the dispatch method
5008 * of the Redux store. This is handy for a variety of tasks, such as expressing
5009 * asynchronous actions in a concise manner, or logging every action payload.
5010 *
5011 * See `redux-thunk` package as an example of the Redux middleware.
5012 *
5013 * Because middleware is potentially asynchronous, this should be the first
5014 * store enhancer in the composition chain.
5015 *
5016 * Note that each middleware will be given the `dispatch` and `getState` functions
5017 * as named arguments.
5018 *
5019 * @param {...Function} middlewares The middleware chain to be applied.
5020 * @returns {Function} A store enhancer applying the middleware.
5021 */
5022function applyMiddleware() {
5023  for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {
5024    middlewares[_key] = arguments[_key];
5025  }
5026
5027  return function (createStore) {
5028    return function (reducer, preloadedState, enhancer) {
5029      var store = createStore(reducer, preloadedState, enhancer);
5030      var _dispatch = store.dispatch;
5031      var chain = [];
5032
5033      var middlewareAPI = {
5034        getState: store.getState,
5035        dispatch: function dispatch(action) {
5036          return _dispatch(action);
5037        }
5038      };
5039      chain = middlewares.map(function (middleware) {
5040        return middleware(middlewareAPI);
5041      });
5042      _dispatch = _compose__WEBPACK_IMPORTED_MODULE_0__["default"].apply(undefined, chain)(store.dispatch);
5043
5044      return _extends({}, store, {
5045        dispatch: _dispatch
5046      });
5047    };
5048  };
5049}
5050
5051/***/ }),
5052/* 86 */
5053/***/ (function(module, exports, __webpack_require__) {
5054
5055var createFind = __webpack_require__(87),
5056    findIndex = __webpack_require__(242);
5057
5058/**
5059 * Iterates over elements of `collection`, returning the first element
5060 * `predicate` returns truthy for. The predicate is invoked with three
5061 * arguments: (value, index|key, collection).
5062 *
5063 * @static
5064 * @memberOf _
5065 * @since 0.1.0
5066 * @category Collection
5067 * @param {Array|Object} collection The collection to inspect.
5068 * @param {Function} [predicate=_.identity] The function invoked per iteration.
5069 * @param {number} [fromIndex=0] The index to search from.
5070 * @returns {*} Returns the matched element, else `undefined`.
5071 * @example
5072 *
5073 * var users = [
5074 *   { 'user': 'barney',  'age': 36, 'active': true },
5075 *   { 'user': 'fred',    'age': 40, 'active': false },
5076 *   { 'user': 'pebbles', 'age': 1,  'active': true }
5077 * ];
5078 *
5079 * _.find(users, function(o) { return o.age < 40; });
5080 * // => object for 'barney'
5081 *
5082 * // The `_.matches` iteratee shorthand.
5083 * _.find(users, { 'age': 1, 'active': true });
5084 * // => object for 'pebbles'
5085 *
5086 * // The `_.matchesProperty` iteratee shorthand.
5087 * _.find(users, ['active', false]);
5088 * // => object for 'fred'
5089 *
5090 * // The `_.property` iteratee shorthand.
5091 * _.find(users, 'active');
5092 * // => object for 'barney'
5093 */
5094var find = createFind(findIndex);
5095
5096module.exports = find;
5097
5098
5099/***/ }),
5100/* 87 */
5101/***/ (function(module, exports, __webpack_require__) {
5102
5103var baseIteratee = __webpack_require__(7),
5104    isArrayLike = __webpack_require__(12),
5105    keys = __webpack_require__(32);
5106
5107/**
5108 * Creates a `_.find` or `_.findLast` function.
5109 *
5110 * @private
5111 * @param {Function} findIndexFunc The function to find the collection index.
5112 * @returns {Function} Returns the new find function.
5113 */
5114function createFind(findIndexFunc) {
5115  return function(collection, predicate, fromIndex) {
5116    var iterable = Object(collection);
5117    if (!isArrayLike(collection)) {
5118      var iteratee = baseIteratee(predicate, 3);
5119      collection = keys(collection);
5120      predicate = function(key) { return iteratee(iterable[key], key, iterable); };
5121    }
5122    var index = findIndexFunc(collection, predicate, fromIndex);
5123    return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;
5124  };
5125}
5126
5127module.exports = createFind;
5128
5129
5130/***/ }),
5131/* 88 */
5132/***/ (function(module, exports, __webpack_require__) {
5133
5134var ListCache = __webpack_require__(28),
5135    stackClear = __webpack_require__(184),
5136    stackDelete = __webpack_require__(185),
5137    stackGet = __webpack_require__(186),
5138    stackHas = __webpack_require__(187),
5139    stackSet = __webpack_require__(188);
5140
5141/**
5142 * Creates a stack cache object to store key-value pairs.
5143 *
5144 * @private
5145 * @constructor
5146 * @param {Array} [entries] The key-value pairs to cache.
5147 */
5148function Stack(entries) {
5149  var data = this.__data__ = new ListCache(entries);
5150  this.size = data.size;
5151}
5152
5153// Add methods to `Stack`.
5154Stack.prototype.clear = stackClear;
5155Stack.prototype['delete'] = stackDelete;
5156Stack.prototype.get = stackGet;
vendor: 3,424 bytes, lines 5157-5289
5157Stack.prototype.has = stackHas;
5158Stack.prototype.set = stackSet;
5159
5160module.exports = Stack;
5161
5162
5163/***/ }),
5164/* 89 */
5165/***/ (function(module, exports, __webpack_require__) {
5166
5167var baseGetTag = __webpack_require__(11),
5168    isObject = __webpack_require__(6);
5169
5170/** `Object#toString` result references. */
5171var asyncTag = '[object AsyncFunction]',
5172    funcTag = '[object Function]',
5173    genTag = '[object GeneratorFunction]',
5174    proxyTag = '[object Proxy]';
5175
5176/**
5177 * Checks if `value` is classified as a `Function` object.
5178 *
5179 * @static
5180 * @memberOf _
5181 * @since 0.1.0
5182 * @category Lang
5183 * @param {*} value The value to check.
5184 * @returns {boolean} Returns `true` if `value` is a function, else `false`.
5185 * @example
5186 *
5187 * _.isFunction(_);
5188 * // => true
5189 *
5190 * _.isFunction(/abc/);
5191 * // => false
5192 */
5193function isFunction(value) {
5194  if (!isObject(value)) {
5195    return false;
5196  }
5197  // The use of `Object#toString` avoids issues with the `typeof` operator
5198  // in Safari 9 which returns 'object' for typed arrays and other constructors.
5199  var tag = baseGetTag(value);
5200  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
5201}
5202
5203module.exports = isFunction;
5204
5205
5206/***/ }),
5207/* 90 */
5208/***/ (function(module, exports, __webpack_require__) {
5209
5210/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */
5211var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
5212
5213module.exports = freeGlobal;
5214
5215/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(22)))
5216
5217/***/ }),
5218/* 91 */
5219/***/ (function(module, exports) {
5220
5221/** Used for built-in method references. */
5222var funcProto = Function.prototype;
5223
5224/** Used to resolve the decompiled source of functions. */
5225var funcToString = funcProto.toString;
5226
5227/**
5228 * Converts `func` to its source code.
5229 *
5230 * @private
5231 * @param {Function} func The function to convert.
5232 * @returns {string} Returns the source code.
5233 */
5234function toSource(func) {
5235  if (func != null) {
5236    try {
5237      return funcToString.call(func);
5238    } catch (e) {}
5239    try {
5240      return (func + '');
5241    } catch (e) {}
5242  }
5243  return '';
5244}
5245
5246module.exports = toSource;
5247
5248
5249/***/ }),
5250/* 92 */
5251/***/ (function(module, exports, __webpack_require__) {
5252
5253var baseIsEqualDeep = __webpack_require__(207),
5254    isObjectLike = __webpack_require__(9);
5255
5256/**
5257 * The base implementation of `_.isEqual` which supports partial comparisons
5258 * and tracks traversed objects.
5259 *
5260 * @private
5261 * @param {*} value The value to compare.
5262 * @param {*} other The other value to compare.
5263 * @param {boolean} bitmask The bitmask flags.
5264 *  1 - Unordered comparison
5265 *  2 - Partial comparison
5266 * @param {Function} [customizer] The function to customize comparisons.
5267 * @param {Object} [stack] Tracks traversed `value` and `other` objects.
5268 * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
5269 */
5270function baseIsEqual(value, other, bitmask, customizer, stack) {
5271  if (value === other) {
5272    return true;
5273  }
5274  if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {
5275    return value !== value && other !== other;
5276  }
5277  return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);
5278}
5279
5280module.exports = baseIsEqual;
5281
5282
5283/***/ }),
5284/* 93 */
5285/***/ (function(module, exports, __webpack_require__) {
5286
5287var SetCache = __webpack_require__(208),
5288    arraySome = __webpack_require__(211),
5289    cacheHas = __webpack_require__(212
vendor: 2,480 bytes, lines 5289-5370
5289);
5290
5291/** Used to compose bitmasks for value comparisons. */
5292var COMPARE_PARTIAL_FLAG = 1,
5293    COMPARE_UNORDERED_FLAG = 2;
5294
5295/**
5296 * A specialized version of `baseIsEqualDeep` for arrays with support for
5297 * partial deep comparisons.
5298 *
5299 * @private
5300 * @param {Array} array The array to compare.
5301 * @param {Array} other The other array to compare.
5302 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
5303 * @param {Function} customizer The function to customize comparisons.
5304 * @param {Function} equalFunc The function to determine equivalents of values.
5305 * @param {Object} stack Tracks traversed `array` and `other` objects.
5306 * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
5307 */
5308function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {
5309  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
5310      arrLength = array.length,
5311      othLength = other.length;
5312
5313  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
5314    return false;
5315  }
5316  // Assume cyclic values are equal.
5317  var stacked = stack.get(array);
5318  if (stacked && stack.get(other)) {
5319    return stacked == other;
5320  }
5321  var index = -1,
5322      result = true,
5323      seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;
5324
5325  stack.set(array, other);
5326  stack.set(other, array);
5327
5328  // Ignore non-index properties.
5329  while (++index < arrLength) {
5330    var arrValue = array[index],
5331        othValue = other[index];
5332
5333    if (customizer) {
5334      var compared = isPartial
5335        ? customizer(othValue, arrValue, index, other, array, stack)
5336        : customizer(arrValue, othValue, index, array, other, stack);
5337    }
5338    if (compared !== undefined) {
5339      if (compared) {
5340        continue;
5341      }
5342      result = false;
5343      break;
5344    }
5345    // Recursively compare arrays (susceptible to call stack limits).
5346    if (seen) {
5347      if (!arraySome(other, function(othValue, othIndex) {
5348            if (!cacheHas(seen, othIndex) &&
5349                (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {
5350              return seen.push(othIndex);
5351            }
5352          })) {
5353        result = false;
5354        break;
5355      }
5356    } else if (!(
5357          arrValue === othValue ||
5358            equalFunc(arrValue, othValue, bitmask, customizer, stack)
5359        )) {
5360      result = false;
5361      break;
5362    }
5363  }
5364  stack['delete'](array);
5365  stack['delete'](other);
5366  return result;
5367}
5368
5369module.exports = equalArrays;
5370
vendor: 3,125 bytes, lines 5371-5490
5371
5372/***/ }),
5373/* 94 */
5374/***/ (function(module, exports, __webpack_require__) {
5375
5376var arrayPush = __webpack_require__(50),
5377    isArray = __webpack_require__(1);
5378
5379/**
5380 * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
5381 * `keysFunc` and `symbolsFunc` to get the enumerable property names and
5382 * symbols of `object`.
5383 *
5384 * @private
5385 * @param {Object} object The object to query.
5386 * @param {Function} keysFunc The function to get the keys of `object`.
5387 * @param {Function} symbolsFunc The function to get the symbols of `object`.
5388 * @returns {Array} Returns the array of property names and symbols.
5389 */
5390function baseGetAllKeys(object, keysFunc, symbolsFunc) {
5391  var result = keysFunc(object);
5392  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
5393}
5394
5395module.exports = baseGetAllKeys;
5396
5397
5398/***/ }),
5399/* 95 */
5400/***/ (function(module, exports, __webpack_require__) {
5401
5402var arrayFilter = __webpack_require__(219),
5403    stubArray = __webpack_require__(96);
5404
5405/** Used for built-in method references. */
5406var objectProto = Object.prototype;
5407
5408/** Built-in value references. */
5409var propertyIsEnumerable = objectProto.propertyIsEnumerable;
5410
5411/* Built-in method references for those with the same name as other `lodash` methods. */
5412var nativeGetSymbols = Object.getOwnPropertySymbols;
5413
5414/**
5415 * Creates an array of the own enumerable symbols of `object`.
5416 *
5417 * @private
5418 * @param {Object} object The object to query.
5419 * @returns {Array} Returns the array of symbols.
5420 */
5421var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
5422  if (object == null) {
5423    return [];
5424  }
5425  object = Object(object);
5426  return arrayFilter(nativeGetSymbols(object), function(symbol) {
5427    return propertyIsEnumerable.call(object, symbol);
5428  });
5429};
5430
5431module.exports = getSymbols;
5432
5433
5434/***/ }),
5435/* 96 */
5436/***/ (function(module, exports) {
5437
5438/**
5439 * This method returns a new empty array.
5440 *
5441 * @static
5442 * @memberOf _
5443 * @since 4.13.0
5444 * @category Util
5445 * @returns {Array} Returns the new empty array.
5446 * @example
5447 *
5448 * var arrays = _.times(2, _.stubArray);
5449 *
5450 * console.log(arrays);
5451 * // => [[], []]
5452 *
5453 * console.log(arrays[0] === arrays[1]);
5454 * // => false
5455 */
5456function stubArray() {
5457  return [];
5458}
5459
5460module.exports = stubArray;
5461
5462
5463/***/ }),
5464/* 97 */
5465/***/ (function(module, exports, __webpack_require__) {
5466
5467var baseTimes = __webpack_require__(220),
5468    isArguments = __webpack_require__(33),
5469    isArray = __webpack_require__(1),
5470    isBuffer = __webpack_require__(51),
5471    isIndex = __webpack_require__(52),
5472    isTypedArray = __webpack_require__(53);
5473
5474/** Used for built-in method references. */
5475var objectProto = Object.prototype;
5476
5477/** Used to check objects for own properties. */
5478var hasOwnProperty = objectProto.hasOwnProperty;
5479
5480/**
5481 * Creates an array of the enumerable property names of the array-like `value`.
5482 *
5483 * @private
5484 * @param {*} value The value to query.
5485 * @param {boolean} inherited Specify returning inherited property names.
5486 * @returns {Array} Returns the array of property names.
5487 */
5488function arrayLikeKeys(value, inherited) {
5489  var isArr = isArray(value),
5490      isArg = !isArr && isArguments(value),
vendor: 4,426 bytes, lines 5491-5675
5491      isBuff = !isArr && !isArg && isBuffer(value),
5492      isType = !isArr && !isArg && !isBuff && isTypedArray(value),
5493      skipIndexes = isArr || isArg || isBuff || isType,
5494      result = skipIndexes ? baseTimes(value.length, String) : [],
5495      length = result.length;
5496
5497  for (var key in value) {
5498    if ((inherited || hasOwnProperty.call(value, key)) &&
5499        !(skipIndexes && (
5500           // Safari 9 has enumerable `arguments.length` in strict mode.
5501           key == 'length' ||
5502           // Node.js 0.10 has enumerable non-index properties on buffers.
5503           (isBuff && (key == 'offset' || key == 'parent')) ||
5504           // PhantomJS 2 has enumerable non-index properties on typed arrays.
5505           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
5506           // Skip index properties.
5507           isIndex(key, length)
5508        ))) {
5509      result.push(key);
5510    }
5511  }
5512  return result;
5513}
5514
5515module.exports = arrayLikeKeys;
5516
5517
5518/***/ }),
5519/* 98 */
5520/***/ (function(module, exports) {
5521
5522module.exports = function(module) {
5523	if (!module.webpackPolyfill) {
5524		module.deprecate = function() {};
5525		module.paths = [];
5526		// module.parent = undefined by default
5527		if (!module.children) module.children = [];
5528		Object.defineProperty(module, "loaded", {
5529			enumerable: true,
5530			get: function() {
5531				return module.l;
5532			}
5533		});
5534		Object.defineProperty(module, "id", {
5535			enumerable: true,
5536			get: function() {
5537				return module.i;
5538			}
5539		});
5540		module.webpackPolyfill = 1;
5541	}
5542	return module;
5543};
5544
5545
5546/***/ }),
5547/* 99 */
5548/***/ (function(module, exports) {
5549
5550/**
5551 * Creates a unary function that invokes `func` with its argument transformed.
5552 *
5553 * @private
5554 * @param {Function} func The function to wrap.
5555 * @param {Function} transform The argument transform.
5556 * @returns {Function} Returns the new function.
5557 */
5558function overArg(func, transform) {
5559  return function(arg) {
5560    return func(transform(arg));
5561  };
5562}
5563
5564module.exports = overArg;
5565
5566
5567/***/ }),
5568/* 100 */
5569/***/ (function(module, exports, __webpack_require__) {
5570
5571var getNative = __webpack_require__(8),
5572    root = __webpack_require__(4);
5573
5574/* Built-in method references that are verified to be native. */
5575var WeakMap = getNative(root, 'WeakMap');
5576
5577module.exports = WeakMap;
5578
5579
5580/***/ }),
5581/* 101 */
5582/***/ (function(module, exports, __webpack_require__) {
5583
5584var isObject = __webpack_require__(6);
5585
5586/**
5587 * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
5588 *
5589 * @private
5590 * @param {*} value The value to check.
5591 * @returns {boolean} Returns `true` if `value` if suitable for strict
5592 *  equality comparisons, else `false`.
5593 */
5594function isStrictComparable(value) {
5595  return value === value && !isObject(value);
5596}
5597
5598module.exports = isStrictComparable;
5599
5600
5601/***/ }),
5602/* 102 */
5603/***/ (function(module, exports) {
5604
5605/**
5606 * A specialized version of `matchesProperty` for source values suitable
5607 * for strict equality comparisons, i.e. `===`.
5608 *
5609 * @private
5610 * @param {string} key The key of the property to get.
5611 * @param {*} srcValue The value to match.
5612 * @returns {Function} Returns the new spec function.
5613 */
5614function matchesStrictComparable(key, srcValue) {
5615  return function(object) {
5616    if (object == null) {
5617      return false;
5618    }
5619    return object[key] === srcValue &&
5620      (srcValue !== undefined || (key in Object(object)));
5621  };
5622}
5623
5624module.exports = matchesStrictComparable;
5625
5626
5627/***/ }),
5628/* 103 */
5629/***/ (function(module, exports) {
5630
5631/**
5632 * A specialized version of `_.map` for arrays without support for iteratee
5633 * shorthands.
5634 *
5635 * @private
5636 * @param {Array} [array] The array to iterate over.
5637 * @param {Function} iteratee The function invoked per iteration.
5638 * @returns {Array} Returns the new mapped array.
5639 */
5640function arrayMap(array, iteratee) {
5641  var index = -1,
5642      length = array == null ? 0 : array.length,
5643      result = Array(length);
5644
5645  while (++index < length) {
5646    result[index] = iteratee(array[index], index, array);
5647  }
5648  return result;
5649}
5650
5651module.exports = arrayMap;
5652
5653
5654/***/ }),
5655/* 104 */
5656/***/ (function(module, exports) {
5657
5658/**
5659 * The base implementation of `_.property` without support for deep paths.
5660 *
5661 * @private
5662 * @param {string} key The key of the property to get.
5663 * @returns {Function} Returns the new accessor function.
5664 */
5665function baseProperty(key) {
5666  return function(object) {
5667    return object == null ? undefined : object[key];
5668  };
5669}
5670
5671module.exports = baseProperty;
5672
5673
5674/***/ }),
5675/* 105 */
5676/***/ (function(module, exports) {
5677
5678/**
5679 * The base implementation of `_.findIndex` and `_.findLastIndex` without
5680 * support for iteratee shorthands.
5681 *
5682 * @private
5683 * @param {Array} array The array to inspect.
5684 * @param {Function} predicate The function invoked per iteration.
5685 * @param {number} fromIndex The index to search from.
5686 * @param {boolean} [fromRight] Specify iterating from right to left.
5687 * @returns {number} Returns the index of the matched value, else `-1`.
5688 */
5689function baseFindIndex(array, predicate, fromIndex, fromRight) {
5690  var length = array.length,
5691      index = fromIndex + (fromRight ? 1 : -1);
5692
5693  while ((fromRight ? index-- : ++index < length)) {
5694    if (predicate(array[index], index, array)) {
5695      return index;
5696    }
5697  }
5698  return -1;
5699}
5700
5701module.exports = baseFindIndex;
5702
5703
5704/***/ }),
5705/* 106 */
5706/***/ (function(module, exports, __webpack_require__) {
5707
5708var toFinite = __webpack_require__(243);
5709
5710/**
5711 * Converts `value` to an integer.
5712 *
5713 * **Note:** This method is loosely based on
5714 * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).
5715 *
5716 * @static
5717 * @memberOf _
5718 * @since 4.0.0
5719 * @category Lang
5720 * @param {*} value The value to convert.
5721 * @returns {number} Returns the converted integer.
5722 * @example
5723 *
5724 * _.toInteger(3.2);
5725 * // => 3
5726 *
5727 * _.toInteger(Number.MIN_VALUE);
5728 * // => 0
5729 *
5730 * _.toInteger(Infinity);
5731 * // => 1.7976931348623157e+308
5732 *
5733 * _.toInteger('3.2');
5734 * // => 3
5735 */
5736function toInteger(value) {
5737  var result = toFinite(value),
5738      remainder = result % 1;
5739
5740  return result === result ? (remainder ? result - remainder : result) : 0;
5741}
5742
5743module.exports = toInteger;
5744
5745
5746/***/ }),
5747/* 107 */
5748/***/ (function(module, exports, __webpack_require__) {
5749
5750"use strict";
5751
5752
5753var _interopRequireDefault = __webpack_require__(0);
5754
5755Object.defineProperty(exports, "__esModule", {
5756  value: true
5757});
5758exports.inQuad = inQuad;
5759exports.outQuad = outQuad;
5760exports.inOutQuad = inOutQuad;
5761exports.inCubic = inCubic;
5762exports.outCubic = outCubic;
5763exports.inOutCubic = inOutCubic;
5764exports.inQuart = inQuart;
5765exports.outQuart = outQuart;
5766exports.inOutQuart = inOutQuart;
5767exports.inQuint = inQuint;
5768exports.outQuint = outQuint;
5769exports.inOutQuint = inOutQuint;
5770exports.inSine = inSine;
5771exports.outSine = outSine;
5772exports.inOutSine = inOutSine;
5773exports.inExpo = inExpo;
5774exports.outExpo = outExpo;
5775exports.inOutExpo = inOutExpo;
5776exports.inCirc = inCirc;
5777exports.outCirc = outCirc;
5778exports.inOutCirc = inOutCirc;
5779exports.outBounce = outBounce;
5780exports.inBack = inBack;
5781exports.outBack = outBack;
5782exports.inOutBack = inOutBack;
5783exports.inElastic = inElastic;
5784exports.outElastic = outElastic;
5785exports.inOutElastic = inOutElastic;
5786exports.swingFromTo = swingFromTo;
5787exports.swingFrom = swingFrom;
5788exports.swingTo = swingTo;
5789exports.bounce = bounce;
5790exports.bouncePast = bouncePast;
5791exports.easeInOut = exports.easeOut = exports.easeIn = exports.ease = void 0;
5792
5793var _bezierEasing = _interopRequireDefault(__webpack_require__(108)); // Easing functions adapted from Thomas Fuchs & Jeremy Kahn
5794// Easing Equations (c) 2003 Robert Penner, BSD license
5795// https://raw.github.com/danro/easing-js/master/LICENSE
5796
5797
5798var magicSwing = 1.70158;
5799var ease = (0, _bezierEasing["default"])(0.25, 0.1, 0.25, 1.0);
5800exports.ease = ease;
5801var easeIn = (0, _bezierEasing["default"])(0.42, 0.0, 1.0, 1.0);
5802exports.easeIn = easeIn;
5803var easeOut = (0, _bezierEasing["default"])(0.0, 0.0, 0.58, 1.0);
5804exports.easeOut = easeOut;
5805var easeInOut = (0, _bezierEasing["default"])(0.42, 0.0, 0.58, 1.0);
5806exports.easeInOut = easeInOut;
5807
5808function inQuad(pos) {
5809  return Math.pow(pos, 2);
5810}
5811
5812function outQuad(pos) {
5813  return -(Math.pow(pos - 1, 2) - 1);
5814}
5815
5816function inOutQuad(pos) {
5817  if ((pos /= 0.5) < 1) {
5818    return 0.5 * Math.pow(pos, 2);
5819  }
5820
5821  return -0.5 * ((pos -= 2) * pos - 2);
5822}
5823
5824function inCubic(pos) {
5825  return Math.pow(pos, 3);
5826}
5827
5828function outCubic(pos) {
5829  return Math.pow(pos - 1, 3) + 1;
5830}
5831
5832function inOutCubic(pos) {
5833  if ((pos /= 0.5) < 1) {
5834    return 0.5 * Math.pow(pos, 3);
5835  }
5836
5837  return 0.5 * (Math.pow(pos - 2, 3) + 2);
5838}
5839
5840function inQuart(pos) {
5841  return Math.pow(pos, 4);
5842}
5843
5844function outQuart(pos) {
5845  return -(Math.pow(pos - 1, 4) - 1);
5846}
5847
5848function inOutQuart(pos) {
5849  if ((pos /= 0.5) < 1) {
5850    return 0.5 * Math.pow(pos, 4);
5851  }
5852
5853  return -0.5 * ((pos -= 2) * Math.pow(pos, 3) - 2);
5854}
5855
5856function inQuint(pos) {
5857  return Math.pow(pos, 5);
5858}
5859
5860function outQuint(pos) {
5861  return Math.pow(pos - 1, 5) + 1;
5862}
5863
5864function inOutQuint(pos) {
5865  if ((pos /= 0.5) < 1) {
5866    return 0.5 * Math.pow(pos, 5);
5867  }
5868
5869  return 0.5 * (Math.pow(pos - 2, 5) + 2);
5870}
5871
5872function inSine(pos) {
5873  return -Math.cos(pos * (Math.PI / 2)) + 1;
5874}
5875
5876function outSine(pos) {
5877  return Math.sin(pos * (Math.PI / 2));
5878}
5879
5880function inOutSine(pos) {
5881  return -0.5 * (Math.cos(Math.PI * pos) - 1);
5882}
5883
5884function inExpo(pos) {
5885  return pos === 0 ? 0 : Math.pow(2, 10 * (pos - 1));
5886}
5887
5888function outExpo(pos) {
5889  return pos === 1 ? 1 : -Math.pow(2, -10 * pos) + 1;
5890}
5891
5892function inOutExpo(pos) {
5893  if (pos === 0) {
5894    return 0;
5895  }
5896
5897  if (pos === 1) {
5898    return 1;
5899  }
5900
5901  if ((pos /= 0.5) < 1) {
5902    return 0.5 * Math.pow(2, 10 * (pos - 1));
5903  }
5904
5905  return 0.5 * (-Math.pow(2, -10 * --pos) + 2);
5906}
5907
5908function inCirc(pos) {
5909  return -(Math.sqrt(1 - pos * pos) - 1);
5910}
5911
5912function outCirc(pos) {
5913  return Math.sqrt(1 - Math.pow(pos - 1, 2));
5914}
5915
5916function inOutCirc(pos) {
5917  if ((pos /= 0.5) < 1) {
5918    return -0.5 * (Math.sqrt(1 - pos * pos) - 1);
5919  }
5920
5921  return 0.5 * (Math.sqrt(1 - (pos -= 2) * pos) + 1);
5922}
5923
5924function outBounce(pos) {
5925  if (pos < 1 / 2.75) {
5926    return 7.5625 * pos * pos;
5927  } else if (pos < 2 / 2.75) {
5928    return 7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75;
5929  } else if (pos < 2.5 / 2.75) {
5930    return 7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375;
5931  } else {
5932    return 7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375;
5933  }
5934}
5935
5936function inBack(pos) {
5937  var s = magicSwing;
5938  return pos * pos * ((s + 1) * pos - s);
5939}
5940
5941function outBack(pos) {
5942  var s = magicSwing;
5943  return (pos -= 1) * pos * ((s + 1) * pos + s) + 1;
5944}
5945
5946function inOutBack(pos) {
5947  var s = magicSwing;
5948
5949  if ((pos /= 0.5) < 1) {
5950    return 0.5 * (pos * pos * (((s *= 1.525) + 1) * pos - s));
5951  }
5952
5953  return 0.5 * ((pos -= 2) * pos * (((s *= 1.525) + 1) * pos + s) + 2);
5954}
5955
5956function inElastic(pos) {
5957  var s = magicSwing;
5958  var p = 0;
5959  var a = 1;
5960
5961  if (pos === 0) {
5962    return 0;
5963  }
5964
5965  if (pos === 1) {
5966    return 1;
5967  }
5968
5969  if (!p) {
5970    p = 0.3;
5971  }
5972
5973  if (a < 1) {
5974    a = 1;
5975    s = p / 4;
5976  } else {
5977    s = p / (2 * Math.PI) * Math.asin(1 / a);
5978  }
5979
5980  return -(a * Math.pow(2, 10 * (pos -= 1)) * Math.sin((pos - s) * (2 * Math.PI) / p));
5981}
5982
5983function outElastic(pos) {
5984  var s = magicSwing;
5985  var p = 0;
5986  var a = 1;
5987
5988  if (pos === 0) {
5989    return 0;
5990  }
5991
5992  if (pos === 1) {
5993    return 1;
5994  }
5995
5996  if (!p) {
5997    p = 0.3;
5998  }
5999
6000  if (a < 1) {
6001    a = 1;
6002    s = p / 4;
6003  } else {
6004    s = p / (2 * Math.PI) * Math.asin(1 / a);
6005  }
6006
6007  return a * Math.pow(2, -10 * pos) * Math.sin((pos - s) * (2 * Math.PI) / p) + 1;
6008}
6009
6010function inOutElastic(pos) {
6011  var s = magicSwing;
6012  var p = 0;
6013  var a = 1;
6014
6015  if (pos === 0) {
6016    return 0;
6017  }
6018
6019  if ((pos /= 1 / 2) === 2) {
6020    return 1;
6021  }
6022
6023  if (!p) {
6024    p = 0.3 * 1.5;
6025  }
6026
6027  if (a < 1) {
6028    a = 1;
6029    s = p / 4;
6030  } else {
6031    s = p / (2 * Math.PI) * Math.asin(1 / a);
6032  }
6033
6034  if (pos < 1) {
6035    return -0.5 * (a * Math.pow(2, 10 * (pos -= 1)) * Math.sin((pos - s) * (2 * Math.PI) / p));
6036  }
6037
6038  return a * Math.pow(2, -10 * (pos -= 1)) * Math.sin((pos - s) * (2 * Math.PI) / p) * 0.5 + 1;
6039}
6040
6041function swingFromTo(pos) {
6042  var s = magicSwing;
6043  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);
6044}
6045
6046function swingFrom(pos) {
6047  var s = magicSwing;
6048  return pos * pos * ((s + 1) * pos - s);
6049}
6050
6051function swingTo(pos) {
6052  var s = magicSwing;
6053  return (pos -= 1) * pos * ((s + 1) * pos + s) + 1;
6054}
6055
6056function bounce(pos) {
6057  if (pos < 1 / 2.75) {
6058    return 7.5625 * pos * pos;
6059  } else if (pos < 2 / 2.75) {
6060    return 7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75;
6061  } else if (pos < 2.5 / 2.75) {
6062    return 7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375;
6063  } else {
6064    return 7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375;
6065  }
6066}
6067
6068function bouncePast(pos) {
6069  if (pos < 1 / 2.75) {
6070    return 7.5625 * pos * pos;
6071  } else if (pos < 2 / 2.75) {
6072    return 2 - (7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75);
6073  } else if (pos < 2.5 / 2.75) {
6074    return 2 - (7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375);
6075  } else {
6076    return 2 - (7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375);
6077  }
6078}
6079
6080/***/ }),
6081/* 108 */
6082/***/ (function(module, exports) {
6083
6084/**
6085 * https://github.com/gre/bezier-easing
6086 * BezierEasing - use bezier curve for transition easing function
6087 * by Gaëtan Renaudeau 2014 - 2015 – MIT License
6088 */
6089
6090// These values are established by empiricism with tests (tradeoff: performance VS precision)
6091var NEWTON_ITERATIONS = 4;
6092var NEWTON_MIN_SLOPE = 0.001;
6093var SUBDIVISION_PRECISION = 0.0000001;
6094var SUBDIVISION_MAX_ITERATIONS = 10;
6095
6096var kSplineTableSize = 11;
6097var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);
6098
6099var float32ArraySupported = typeof Float32Array === 'function';
6100
6101function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }
6102function B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; }
6103function C (aA1)      { return 3.0 * aA1; }
6104
6105// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.
6106function calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; }
6107
6108// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.
6109function getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); }
6110
6111function binarySubdivide (aX, aA, aB, mX1, mX2) {
6112  var currentX, currentT, i = 0;
6113  do {
6114    currentT = aA + (aB - aA) / 2.0;
6115    currentX = calcBezier(currentT, mX1, mX2) - aX;
6116    if (currentX > 0.0) {
6117      aB = currentT;
6118    } else {
6119      aA = currentT;
6120    }
6121  } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);
6122  return currentT;
6123}
6124
6125function newtonRaphsonIterate (aX, aGuessT, mX1, mX2) {
6126 for (var i = 0; i < NEWTON_ITERATIONS; ++i) {
6127   var currentSlope = getSlope(aGuessT, mX1, mX2);
6128   if (currentSlope === 0.0) {
6129     return aGuessT;
6130   }
6131   var currentX = calcBezier(aGuessT, mX1, mX2) - aX;
6132   aGuessT -= currentX / currentSlope;
6133 }
6134 return aGuessT;
6135}
6136
6137module.exports = function bezier (mX1, mY1, mX2, mY2) {
6138  if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) {
6139    throw new Error('bezier x values must be in [0, 1] range');
6140  }
6141
6142  // Precompute samples table
6143  var sampleValues = float32ArraySupported ? new Float32Array(kS
6143plineTableSize) : new Array(kSplineTableSize);
6144  if (mX1 !== mY1 || mX2 !== mY2) {
6145    for (var i = 0; i < kSplineTableSize; ++i) {
6146      sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);
6147    }
6148  }
6149
6150  function getTForX (aX) {
6151    var intervalStart = 0.0;
6152    var currentSample = 1;
6153    var lastSample = kSplineTableSize - 1;
6154
6155    for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {
6156      intervalStart += kSampleStepSize;
6157    }
6158    --currentSample;
6159
6160    // Interpolate to provide an initial guess for t
6161    var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);
6162    var guessForT = intervalStart + dist * kSampleStepSize;
6163
6164    var initialSlope = getSlope(guessForT, mX1, mX2);
6165    if (initialSlope >= NEWTON_MIN_SLOPE) {
6166      return newtonRaphsonIterate(aX, guessForT, mX1, mX2);
6167    } else if (initialSlope === 0.0) {
6168      return guessForT;
6169    } else {
6170      return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);
6171    }
6172  }
6173
6174  return function BezierEasing (x) {
6175    if (mX1 === mY1 && mX2 === mY2) {
6176      return x; // linear
6177    }
6178    // Because JavaScript number are imprecise, we should guarantee the extremes are right.
6179    if (x === 0) {
6180      return 0;
6181    }
6182    if (x === 1) {
6183      return 1;
6184    }
6185    return calcBezier(getTForX(x), mY1, mY2);
6186  };
6187};
6188
6189
6190/***/ }),
6191/* 109 */
6192/***/ (function(module, exports, __webpack_require__) {
6193
6194"use strict";
6195
6196
6197var _interopRequireDefault2 = __webpack_require__(0);
6198
6199var _toConsumableArray2 = _interopRequireDefault2(__webpack_require__(110));
6200
6201var _interopRequireDefault = __webpack_require__(0);
6202
6203var _interopRequireWildcard = __webpack_require__(13);
6204
6205Object.defineProperty(exports, "__esModule", {
6206  value: true
6207});
6208exports.optimizeFloat = optimizeFloat;
6209exports.createBezierEasing = createBezierEasing;
6210exports.applyEasing = applyEasing;
6211
6212var easings = _interopRequireWildcard(__webpack_require__(107));
6213
6214var _bezierEasing = _interopRequireDefault(__webpack_require__(108));
6215
6216function optimizeFloat(value) {
6217  var digits = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;
6218  var base = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10;
6219  var pow = Math.pow(base, digits);
6220
6221  var _float = Number(Math.round(value * pow) / pow);
6222
6223  return Math.abs(_float) > 0.0001 ? _float : 0;
6224}
6225
6226function createBezierEasing(easing) {
6227  return (0, _bezierEasing["default"]).apply(void 0, (0, _toConsumableArray2["default"])(easing));
6228}
6229
6230function applyEasing(easing, position, customEasingFn) {
6231  if (position === 0) {
6232    return 0;
6233  }
6234
6235  if (position === 1) {
6236    return 1;
6237  }
6238
6239  if (customEasingFn) {
6240    return optimizeFloat(position > 0 ? customEasingFn(position) : position);
6241  }
6242
6243  return optimizeFloat(position > 0 && easing && easings[easing] ? easings[easing](position) : position);
6244}
6245
6246/***/ }),
6247/* 110 */
6248/***/ (function(module, exports, __webpack_require__) {
6249
6250var arrayWithoutHoles = __webpack_require__(244);
6251
6252var iterableToArray = __webpack_require__(245);
6253
6254var nonIterableSpread = __webpack_require__(246);
6255
6256function _toConsumableArray(arr) {
6257  return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();
6258}
6259
6260module.exports = _toConsumableArray;
6261
6262/***/ }),
6263/* 111 */
6264/***/ (function(module, exports, __webpack_require__) {
6265
6266"use strict";
6267
6268
6269var _interopRequireDefault = __webpack_require__(0);
6270
6271var _defineProperty2 = _interopRequireDefault(__webpack_require__(26));
6272
6273Object.defineProperty(exports, "__esModule", {
6274  value: true
6275});
6276exports.isPluginType = isPluginType;
6277exports.clearPlugin = exports.renderPlugin = exports.createPluginInstance = exports.getPluginDestination = exports.getPluginDuration = exports.getPluginOrigin = exports.getPluginConfig = void 0;
6278
6279var _IX2LottieUtils = __webpack_require__(248);
6280
6281var _constants = __webpack_require__(2);
6282
6283var _IX2BrowserSupport = __webpack_require__(46); // eslint-disable-next-line webflow/module-top-level-imports, webflow/packages-must-be-defined
6284
6285
6286var pluginMethodMap = (0, _defineProperty2["default"])({}, _constants.ActionTypeConsts.PLUGIN_LOTTIE, {
6287  getConfig: _IX2LottieUtils.getPluginConfig,
6288  getOrigin: _IX2LottieUtils.getPluginOrigin,
6289  getDuration: _IX2LottieUtils.getPluginDuration,
6290  getDestination: _IX2LottieUtils.getPluginDestination,
6291  createInstance: _IX2LottieUtils.createPluginInstance,
6292  render: _IX2LottieUtils.renderPlugin,
6293  clear: _IX2LottieUtils.clearPlugin
6294});
6295
6296function isPluginType(actionTypeId) {
6297  return actionTypeId === _constants.ActionTypeConsts.PLUGIN_LOTTIE;
6298}
6299
6300var pluginMethod = function pluginMethod(methodName) {
6301  return function (actionTypeId) {
6302    if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
6303      // IX2 plugins require browser libs for now
6304      return function () {
6305        return null;
6306      };
6307    }
6308
6309    var plugin = pluginMethodMap[actionTypeId];
6310
6311    if (!plugin) {
6312      throw new Error("IX2 no plugin configured for: ".concat(actionTypeId));
6313    }
6314
6315    var method = plugin[methodName];
6316
6317    if (!method) {
6318      throw new Error("IX2 invalid plugin method: ".concat(methodName));
6319    }
6320
6321    return method;
6322  };
6323};
6324
6325var getPluginConfig = pluginMethod('getConfig');
6326exports.getPluginConfig = getPluginConfig;
6327var getPluginOrigin = pluginMethod('getOrigin');
6328exports.getPluginOrigin = getPluginOrigin;
6329var getPluginDuration = pluginMethod('getDuration');
6330exports.getPluginDuration = getPluginDuration;
6331var getPluginDestination = pluginMethod('getDestination');
6332exports.getPluginDestination = getPluginDestination;
6333var createPluginInstance = pluginMethod('createInstance');
6334exports.createPluginInstance = createPluginInstance;
6335var renderPlugin = pluginMethod('render');
6336exports.renderPlugin = renderPlugin;
6337var clearPlugin = pluginMethod('clear');
6338exports.clearPlugin = clearPlugin;
6339
6340/***/ }),
6341/* 112 */
6342/***/ (function(module, exports, __webpack_require__) {
6343
6344var baseForOwn = __webpack_require__(113),
6345    createBaseEach = __webpack_require__(255);
6346
6347/**
6348 * The base implementation of `_.forEach` without support for iteratee shorthands.
6349 *
6350 * @private
6351 * @param {Array|Object} collection The collection to iterate over.
6352 * @param {Function} iteratee The function invoked per iteration.
6353 * @returns {Array|Object} Returns `collection`.
6354 */
6355var baseEach = createBaseEach(baseForOwn);
6356
6357module.exports = baseEach;
6358
6359
6360/***/ }),
6361/* 113 */
6362/***/ (function(module, exports, __webpack_require__) {
6363
6364var baseFor = __webpack_require__(253),
6365    keys = __webpack_require__(32);
6366
6367/**
6368 * The base implementation of `_.forOwn` without support for iteratee shorthands.
6369 *
6370 * @private
6371 * @param {Object} object The object to iterate over.
6372 * @param {Function} iteratee The function invoked per iteration.
6373 * @returns {Object} Returns `object`.
6374 */
6375function baseForOwn(object, iteratee) {
6376  return object && baseFor(object, iteratee, keys);
6377}
6378
6379module.exports = baseForOwn;
6380
6381
6382/***/ }),
6383/* 114 */
6384/***/ (function(module, exports, __webpack_require__) {
6385
6386"use strict";
6387
6388
6389var _interopRequireDefault = __webpack_require__(259);
6390
6391exports.__esModule = true;
6392exports.default = void 0;
6393
6394var _shallowEqual = _interopRequireDefault(__webpack_require__(260));
6395
6396var _default = _shallowEqual.default;
6397exports.default = _default;
6398
6399/***/ }),
6400/* 115 */
6401/***/ (function(module, exports, __webpack_require__) {
6402
6403"use strict";
6404
6405
6406var _interopRequireDefault2 = __webpack_require__(0);
6407
6408var _toConsumableArray2 = _interopRequireDefault2(__webpack_require__(110));
6409
6410var _interopRequireWildcard = __webpack_require__(13);
6411
6412var _interopRequireDefault = __webpack_require__(0);
6413
6414Object.defineProperty(exports, "__esModule", {
6415  value: true
6416});
6417exports.observeRequests = observeRequests;
6418exports.startEngine = startEngine;
6419exports.stopEngine = stopEngine;
6420exports.stopAllActionGroups = stopAllActionGroups;
6421exports.stopActionGroup = stopActionGroup;
6422exports.startActionGroup = startActionGroup;
6423
6424var _extends2 = _interopRequireDefault(__webpack_require__(27));
6425
6426var _objectWithoutPropertiesLoose2 = _interopRequireDefault(__webpack_require__(263));
6427
6428var _find = _interopRequireDefault(__webpack_require__(86));
6429
6430var _get = _interopRequireDefault(__webpack_require__(34));
6431
6432var _size = _interopRequireDefault(__webpack_require__(264));
6433
6434var _omitBy = _interopRequireDefault(__webpack_require__(270));
6435
6436var _isEmpty = _interopRequireDefault(__webpack_require__(282));
6437
6438var _mapValues = _interopRequireDefault(__webpack_require__(283));
6439
6440var _forEach = _interopRequireDefault(__webpack_require__(284));
6441
6442var _throttle = _interopRequireDefault(__webpack_require__(287));
6443
6444var _shallowEqual = _interopRequireDefault(__webpack_require__(114));
6445
6446var _constants = __webpack_require__(2);
6447
6448var _utils = __webpack_require__(290);
6449
6450var _shared = __webpack_require__(10);
6451
6452var _IX2EngineActions = __webpack_require__(62);
6453
6454var elementApi = _interopRequireWildcard(__webpack_require__(292));
6455
6456var _IX2VanillaEvents = _interopRequireDefault(__webpack_require__(293));
6457/* eslint-env browser */
6458
6459
6460var _constants$IX2EngineC = _constants.IX2EngineConstants,
6461    COLON_DELIMITER = _constants$IX2EngineC.COLON_DELIMITER,
6462    BOUNDARY_SELECTOR = _constants$IX2EngineC.BOUNDARY_SELECTOR,
6463    HTML_ELEMENT = _constants$IX2EngineC.HTML_ELEMENT,
6464    RENDER_GENERAL = _constants$IX2EngineC.RENDER_GENERAL,
6465    W_MOD_IX = _constants$IX2EngineC.W_MOD_IX;
6466var _shared$IX2VanillaUti = _shared.IX2VanillaUtils,
6467    getAffectedElements = _shared$IX2VanillaUti.getAffectedElements,
6468    getElementId = _shared$IX2VanillaUti.getElementId,
6469    getDestinationValues = _shared$IX2VanillaUti.getDestinationValues,
6470    observeStore = _shared$IX2VanillaUti.observeStore,
6471    getInstanceId = _shared$IX2VanillaUti.getInstanceId,
6472    renderHTMLElement = _shared$IX2VanillaUti.renderHTMLElement,
6473    clearAllStyles = _shared$IX2VanillaUti.clearAllStyles,
6474    getMaxDurationItemIndex = _shared$IX2VanillaUti.getMaxDurationItemIndex,
6475    getComputedStyle = _shared$IX2VanillaUti.getComputedStyle,
6476    getInstanceOrigin = _shared$IX2VanillaUti.getInstanceOrigin,
6477    reduceListToGroup = _shared$IX2VanillaUti.reduceListToGroup,
6478    shouldNamespaceEventParameter = _shared$IX2VanillaUti.shouldNamespaceEventParameter,
6479    getNamespacedParameterId = _shared$IX2VanillaUti.getNamespacedParameterId,
6480    shouldAllowMediaQuery = _shared$IX2VanillaUti.shouldAllowMediaQuery,
6481    cleanupHTMLElement = _shared$IX2VanillaUti.cleanupHTMLElement,
6482    stringifyTarget = _shared$IX2VanillaUti.stringifyTarget,
6483    mediaQueriesEqual = _shared$IX2VanillaUti.mediaQueriesEqual;
6484var _shared$IX2VanillaPlu = _shared.IX2VanillaPlugins,
6485    isPluginType = _shared$IX2VanillaPlu.isPluginType,
6486    createPluginInstance = _shared$IX2VanillaPlu.createPluginInstance,
6487    getPluginDuration = _shared$IX2VanillaPlu.getPluginDuration;
6488var ua = navigator.userAgent;
6489var IS_MOBILE_SAFARI = ua.match(/iPad/i) || ua.match(/iPhone/); // Keep throttled events at ~80fps to reduce reflows while maintaining render accuracy
6490
6491var THROTTLED_EVENT_WAIT = 12; // $FlowFixMe
6492
6493function observeRequests(store) {
6494  observeStore({
6495    store: store,
6496    select: function select(_ref) {
6497      var ixRequest = _ref.ixRequest;
6498      return ixRequest.preview;
6499    },
6500    onChange: handlePreviewRequest
6501  });
6502  observeStore({
6503    store: store,
6504    select: function select(_ref2) {
6505      var ixRequest = _ref2.ixRequest;
6506      return ixRequest.playback;
6507    },
6508    onChange: handlePlaybackRequest
6509  });
6510  observeStore({
6511    store: store,
6512    select: function select(_ref3) {
6513      var ixRequest = _ref3.ixRequest;
6514      return ixRequest.stop;
6515    },
6516    onChange: handleStopRequest
6517  });
6518  observeStore({
6519    store: store,
6520    select: function select(_ref4) {
6521      var ixRequest = _ref4.ixRequest;
6522      return ixRequest.clear;
6523    },
6524    onChange: handleClearRequest
6525  });
6526}
6527
6528function observeMediaQueryChange(store) {
6529  observeStore({
6530    store: store,
6531    select: function select(_ref5) {
6532      var ixSession = _ref5.ixSession;
6533      return ixSession.mediaQueryKey;
6534    },
6535    onChange: function onChange() {
6536      stopEngine(store);
6537      clearAllStyles({
6538        store: store,
6539        elementApi: elementApi
6540      });
6541      startEngine({
6542        store: store,
6543        allowEvents: true
6544      });
6545      dispatchPageUpdateEvent();
6546    }
6547  });
6548}
6549
6550function observeOneRenderTick(store, onTick) {
6551  var unsubscribe = observeStore({
6552    store: store,
6553    select: function select(_ref6) {
6554      var ixSession = _ref6.ixSession;
6555      return ixSession.tick;
6556    },
6557    onChange: function onChange(tick) {
6558      onTick(tick);
6559      unsubscribe();
6560    }
6561  });
6562}
6563
6564function handlePreviewRequest(_ref7, store) {
6565  var rawData = _ref7.rawData,
6566      defer = _ref7.defer;
6567
6568  var start = function start() {
6569    startEngine({
6570      store: store,
6571      rawData: rawData,
6572      allowEvents: true
6573    });
6574    dispatchPageUpdateEvent();
6575  };
6576
6577  defer ? setTimeout(start, 0) : start();
6578}
6579
6580function dispatchPageUpdateEvent() {
6581  document.dispatchEvent(new CustomEvent('IX2_PAGE_UPDATE'));
6582}
6583
6584function handlePlaybackRequest(playback, store) {
6585  var actionTypeId = playback.actionTypeId,
6586      actionListId = playback.actionListId,
6587      actionItemId = playback.actionItemId,
6588      eventId = playback.eventId,
6589      allowEvents = playback.allowEvents,
6590      immediate = playback.immediate,
6591      testManual = playback.testManual,
6592      _playback$verbose = playback.verbose,
6593      verbose = _playback$verbose === void 0 ? true : _playback$verbose;
6594  var rawData = playback.rawData;
6595
6596  if (actionListId && actionItemId && rawData && immediate) {
6597    var actionList = rawData.actionLists[actionListId];
6598
6599    if (actionList) {
6600      rawData = reduceListToGroup({
6601        actionList: actionList,
6602        actionItemId: actionItemId,
6603        rawData: rawData
6604      });
6605    }
6606  }
6607
6608  startEngine({
6609    store: store,
6610    rawData: rawData,
6611    allowEvents: allowEvents,
6612    testManual: testManual
6613  });
6614
6615  if (actionListId && actionTypeId === _constants.ActionTypeConsts.GENERAL_START_ACTION || (0, _utils.isQuickEffect)(actionTypeId)) {
6616    stopActionGroup({
6617      store: store,
6618      actionListId: actionListId
6619    });
6620    renderInitialGroup({
6621      store: store,
6622      actionListId: actionListId,
6623      eventId: eventId
6624    });
6625    var started = startActionGroup({
6626      store: store,
6627      eventId: eventId,
6628      actionListId: actionListId,
6629      immediate: immediate,
6630      verbose: verbose
6631    });
6632
6633    if (verbose && started) {
6634      store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({
6635        actionListId: actionListId,
6636        isPlaying: !immediate
6637      }));
6638    }
6639  }
6640}
6641
6642function handleStopRequest(_ref8, store) {
6643  var actionListId = _ref8.actionListId;
6644
6645  if (actionListId) {
6646    stopActionGroup({
6647      store: store,
6648      actionListId: actionListId
6649    });
6650  } else {
6651    stopAllActionGroups({
6652      store: store
6653    });
6654  }
6655
6656  stopEngine(store);
6657}
6658
6659function handleClearRequest(state, store) {
6660  stopEngine(store);
6661  clearAllStyles({
6662    store: store,
6663    elementApi: elementApi
6664  });
6665} // $FlowFixMe
6666
6667
6668function startEngine(_ref9) {
6669  var store = _ref9.store,
6670      rawData = _ref9.rawData,
6671      allowEvents = _ref9.allowEvents,
6672      testManual = _ref9.testManual;
6673
6674  var _store$getState = store.getState(),
6675      ixSession = _store$getState.ixSession;
6676
6677  if (rawData) {
6678    store.dispatch((0, _IX2EngineActions.rawDataImported)(rawData));
6679  }
6680
6681  if (!ixSession.active) {
6682    store.dispatch((0, _IX2EngineActions.sessionInitialized)({
6683      hasBoundaryNodes: Boolean(document.querySelector(BOUNDARY_SELECTOR))
6684    }));
6685
6686    if (allowEvents) {
6687      bindEvents(store);
6688      addDocumentClass();
6689
6690      if (store.getState().ixSession.hasDefinedMediaQueries) {
6691        observeMediaQueryChange(store);
6692      }
6693    }
6694
6695    store.dispatch((0, _IX2EngineActions.sessionStarted)());
6696    startRenderLoop(store, testManual);
6697  }
6698}
6699
6700function addDocumentClass() {
6701  var _document = document,
6702      documentElement = _document.documentElement; // $FlowFixMe
6703
6704  if (documentElement.className.indexOf(W_MOD_IX) === -1) {
6705    // $FlowFixMe
6706    documentElement.className += " ".concat(W_MOD_IX);
6707  }
6708}
6709
6710function startRenderLoop(store, testManual) {
6711  var handleFrame = function handleFrame(now) {
6712    var _store$getState2 = store.getState(),
6713        ixSession = _store$getState2.ixSession,
6714        ixParameters = _store$getState2.ixParameters;
6715
6716    if (ixSession.active) {
6717      store.dispatch((0, _IX2EngineActions.animationFrameChanged)(now, ixParameters));
6718
6719      if (testManual) {
6720        observeOneRenderTick(store, handleFrame);
6721      } else {
6722        requestAnimationFrame(handleFrame);
6723      }
6724    }
6725  };
6726
6727  handleFrame(window.performance.now());
6728} // $FlowFixMe
6729
6730
6731function stopEngine(store) {
6732  var _store$getState3 = store.getState(),
6733      ixSession = _store$getState3.ixSession;
6734
6735  if (ixSession.active) {
6736    var eventListeners = ixSession.eventListeners;
6737    eventListeners.forEach(clearEventListener);
6738    store.dispatch((0, _IX2EngineActions.sessionStopped)());
6739  }
6740}
6741
6742function clearEventListener(_ref10) {
6743  var target = _ref10.target,
6744      listenerParams = _ref10.listenerParams;
6745  target.removeEventListener.apply(target, listenerParams);
6746}
6747
6748function createGroupInstances(_ref11) {
6749  var store = _ref11.store,
6750      eventStateKey = _ref11.eventStateKey,
6751      eventTarget = _ref11.eventTarget,
6752      eventId = _ref11.eventId,
6753      eventConfig = _ref11.eventConfig,
6754      actionListId = _ref11.actionListId,
6755      parameterGroup = _ref11.parameterGroup,
6756      smoothing = _ref11.smoothing,
6757      restingValue = _ref11.restingValue;
6758
6759  var _store$getState4 = store.getState(),
6760      ixData = _store$getState4.ixData,
6761      ixSession = _store$getState4.ixSession;
6762
6763  var events = ixData.events;
6764  var event = events[eventId];
6765  var eventTypeId = event.eventTypeId;
6766  var targetCache = {};
6767  var instanceActionGroups = {};
6768  var instanceConfigs = [];
6769  var continuousActionGroups = parameterGroup.continuousActionGroups;
6770  var parameterId = parameterGroup.id;
6771
6772  if (shouldNamespaceEventParameter(eventTypeId, eventConfig)) {
6773    parameterId = getNamespacedParameterId(eventStateKey, parameterId);
6774  } // Limit affected elements when event target is within a boundary node
6775
6776
6777  var eventElementRoot = ixSession.hasBoundaryNodes && eventTarget ? elementApi.getClosestElement(eventTarget, BOUNDARY_SELECTOR) : null;
6778  continuousActionGroups.forEach(function (actionGroup) {
6779    var keyframe = actionGroup.keyframe,
6780        actionItems = actionGroup.actionItems;
6781    actionItems.forEach(function (actionItem) {
6782      var actionTypeId = actionItem.actionTypeId;
6783      var target = actionItem.config.target;
6784
6785      if (!target) {
6786        return;
6787      }
6788
6789      var elementRoot = target.boundaryMode ? eventElementRoot : null;
6790      var key = stringifyTarget(target) + COLON_DELIMITER + actionTypeId;
6791      instanceActionGroups[key] = appendActionItem(instanceActionGroups[key], keyframe, actionItem);
6792
6793      if (!targetCache[key]) {
6794        targetCache[key] = true;
6795        var config = actionItem.config;
6796        getAffectedElements({
6797          config: config,
6798          event: event,
6799          eventTarget: eventTarget,
6800          elementRoot: elementRoot,
6801          elementApi: elementApi
6802        }).forEach(function (element) {
6803          instanceConfigs.push({
6804            element: element,
6805            key: key
6806          });
6807        });
6808      }
6809    });
6810  });
6811  instanceConfigs.forEach(function (_ref12) {
6812    var element = _ref12.element,
6813        key = _ref12.key;
6814    var actionGroups = instanceActionGroups[key];
6815    var actionItem = (0, _get["default"])(actionGroups, "[0].actionItems[0]", {});
6816    var actionTypeId = actionItem.actionTypeId;
6817    var pluginInstance = isPluginType(actionTypeId) ? // $FlowFixMe
6818    createPluginInstance(actionTypeId)(element, actionItem) : null;
6819    var destination = getDestinationValues({
6820      element: element,
6821      actionItem: actionItem,
6822      elementApi: elementApi
6823    }, // $FlowFixMe
6824    pluginInstance);
6825    createInstance({
6826      store: store,
6827      element: element,
6828      eventId: eventId,
6829      actionListId: actionListId,
6830      actionItem: actionItem,
6831      destination: destination,
6832      continuous: true,
6833      parameterId: parameterId,
6834      actionGroups: actionGroups,
6835      smoothing: smoothing,
6836      restingValue: restingValue,
6837      pluginInstance: pluginInstance
6838    });
6839  });
6840}
6841
6842function appendActionItem() {
6843  var actionGroups = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
6844  var keyframe = arguments.length > 1 ? arguments[1] : undefined;
6845  var actionItem = arguments.length > 2 ? arguments[2] : undefined;
6846  var newActionGroups = (0, _toConsumableArray2["default"])(actionGroups);
6847  var groupIndex;
6848  newActionGroups.some(function (group, index) {
6849    if (group.keyframe === keyframe) {
6850      groupIndex = index;
6851      return true;
6852    }
6853
6854    return false;
6855  });
6856
6857  if (groupIndex == null) {
6858    groupIndex = newActionGroups.length;
6859    newActionGroups.push({
6860      keyframe: keyframe,
6861      actionItems: []
6862    });
6863  }
6864
6865  newActionGroups[groupIndex].actionItems.push(actionItem);
6866  return newActionGroups;
6867}
6868
6869function bindEvents(store) {
6870  var _store$getState5 = store.getState(),
6871      ixData = _store$getState5.ixData;
6872
6873  var eventTypeMap = ixData.eventTypeMap;
6874  updateViewportWidth(store);
6875  (0, _forEach["default"])(eventTypeMap, function (events, key) {
6876    var logic = _IX2VanillaEvents["default"][key];
6877
6878    if (!logic) {
6879      console.warn("IX2 event type not configured: ".concat(key));
6880      return;
6881    }
6882
6883    bindEventType({
6884      logic: logic,
6885      store: store,
6886      events: events
6887    });
6888  });
6889
6890  var _store$getState6 = store.getState(),
6891      ixSession = _store$getState6.ixSession;
6892
6893  if (ixSession.eventListeners.length) {
6894    bindResizeEvents(store);
6895  }
6896}
6897
6898var WINDOW_RESIZE_EVENTS = ['resize', 'orientationchange'];
6899
6900function bindResizeEvents(store) {
6901  var handleResize = function handleResize() {
6902    updateViewportWidth(store);
6903  };
6904
6905  WINDOW_RESIZE_EVENTS.forEach(function (type) {
6906    window.addEventListener(type, handleResize);
6907    store.dispatch((0, _IX2EngineActions.eventListenerAdded)(window, [type, handleResize]));
6908  });
6909  handleResize();
6910}
6911
6912function updateViewportWidth(store) {
6913  var _store$getState7 = store.getState(),
6914      ixSession = _store$getState7.ixSession,
6915      ixData = _store$getState7.ixData;
6916
6917  var width = window.innerWidth;
6918
6919  if (width !== ixSession.viewportWidth) {
6920    var mediaQueries = ixData.mediaQueries;
6921    store.dispatch((0, _IX2EngineActions.viewportWidthChanged)({
6922      width: width,
6923      mediaQueries: mediaQueries
6924    }));
6925  }
6926}
6927
6928var mapFoundValues = function mapFoundValues(object, iteratee) {
6929  return (0, _omitBy["default"])((0, _mapValues["default"])(object, iteratee), _isEmpty["default"]);
6930};
6931
6932var forEachEventTarget = function forEachEventTarget(eventTargets, eventCallback) {
6933  (0, _forEach["default"])(eventTargets, function (elements, eventId) {
6934    elements.forEach(function (element, index) {
6935      var eventStateKey = eventId + COLON_DELIMITER + index;
6936      eventCallback(element, eventId, eventStateKey);
6937    });
6938  });
6939};
6940
6941var getAffectedForEvent = function getAffectedForEvent(_ref13) {
6942  var singleTarget = _ref13.target,
6943      targets = _ref13.targets;
6944
6945  if (targets && targets.length) {
6946    return targets.reduce(function (acc, target) {
6947      var config = {
6948        target: target
6949      };
6950      return acc.concat(getAffectedElements({
6951        config: config,
6952        elementApi: elementApi
6953      }));
6954    }, []);
6955  } else {
6956    var config = {
6957      target: singleTarget
6958    };
6959    return getAffectedElements({
6960      config: config,
6961      elementApi: elementApi
6962    });
6963  }
6964};
6965
6966function bindEventType(_ref14) {
6967  var logic = _ref14.logic,
6968      store = _ref14.store,
6969      events = _ref14.events;
6970  injectBehaviorCSSFixes(events);
6971  var eventTypes = logic.types,
6972      eventHandler = logic.handler;
6973
6974  var _store$getState8 = store.getState(),
6975      ixData = _store$getState8.ixData;
6976
6977  var actionLists = ixData.actionLists;
6978  var eventTargets = mapFoundValues(events, getAffectedForEvent);
6979
6980  if (!(0, _size["default"])(eventTargets)) {
6981    return;
6982  }
6983
6984  (0, _forEach["default"])(eventTargets, function (elements, key) {
6985    var event = events[key];
6986    var eventAction = event.action,
6987        eventId = event.id,
6988        _event$mediaQueries = event.mediaQueries,
6989        mediaQueries = _event$mediaQueries === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries;
6990    var actionListId = eventAction.config.actionListId;
6991
6992    if (!mediaQueriesEqual(mediaQueries, ixData.mediaQueryKeys)) {
6993      store.dispatch((0, _IX2EngineActions.mediaQueriesDefined)());
6994    }
6995
6996    if (eventAction.actionTypeId === _constants.ActionTypeConsts.GENERAL_CONTINUOUS_ACTION) {
6997      var configs = Array.isArray(event.config) ? event.config : [event.config];
6998      configs.forEach(function (eventConfig) {
6999        var continuousParameterGroupId = eventConfig.continuousParameterGroupId;
7000        var paramGroups = (0, _get["default"])(actionLists, "".concat(actionListId, ".continuousParameterGroups"), []);
7001        var parameterGroup = (0, _find["default"])(paramGroups, function (_ref15) {
7002          var id = _ref15.id;
7003          return id === continuousParameterGroupId;
7004        });
7005        var smoothing = (eventConfig.smoothing || 0) / 100;
7006        var restingValue = (eventConfig.restingState || 0) / 100;
7007
7008        if (!parameterGroup) {
7009          return;
7010        }
7011
7012        elements.forEach(function (eventTarget, index) {
7013          var eventStateKey = eventId + COLON_DELIMITER + index;
7014          createGroupInstances({
7015            store: store,
7016            eventStateKey: eventStateKey,
7017            eventTarget: eventTarget,
7018            eventId: eventId,
7019            eventConfig: eventConfig,
7020            actionListId: actionListId,
7021            parameterGroup: parameterGroup,
7022            smoothing: smoothing,
7023            restingValue: restingValue
7024          });
7025        });
7026      });
7027    }
7028
7029    if (eventAction.actionTypeId === _constants.ActionTypeConsts.GENERAL_START_ACTION || (0, _utils.isQuickEffect)(eventAction.actionTypeId)) {
7030      renderInitialGroup({
7031        store: store,
7032        actionListId: actionListId,
7033        eventId: eventId
7034      });
7035    }
7036  });
7037
7038  var handleEvent = function handleEvent(nativeEvent) {
7039    var _store$getState9 = store.getState(),
7040        ixSession = _store$getState9.ixSession;
7041
7042    forEachEventTarget(eventTargets, function (element, eventId, eventStateKey) {
7043      var event = events[eventId];
7044      var oldState = ixSession.eventState[eventStateKey];
7045      var eventAction = event.action,
7046          _event$mediaQueries2 = event.mediaQueries,
7047          mediaQueries = _event$mediaQueries2 === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries2; // Bypass event handler if current media query is not listed in event config
7048
7049      if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) {
7050        return;
7051      }
7052
7053      var handleEventWithConfig = function handleEventWithConfig() {
7054        var eventConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7055        var newState = eventHandler({
7056          store: store,
7057          element: element,
7058          event: event,
7059          eventConfig: eventConfig,
7060          nativeEvent: nativeEvent,
7061          eventStateKey: eventStateKey
7062        }, oldState);
7063
7064        if (!(0, _shallowEqual["default"])(newState, oldState)) {
7065          store.dispatch((0, _IX2EngineActions.eventStateChanged)(eventStateKey, newState));
7066        }
7067      };
7068
7069      if (eventAction.actionTypeId === _constants.ActionTypeConsts.GENERAL_CONTINUOUS_ACTION) {
7070        var configs = Array.isArray(event.config) ? event.config : [event.config];
7071        configs.forEach(handleEventWithConfig);
7072      } else {
7073        handleEventWithConfig();
7074      }
7075    });
7076  };
7077
7078  var handleEventThrottled = (0, _throttle["default"])(handleEvent, THROTTLED_EVENT_WAIT);
7079
7080  var addListeners = function addListeners(_ref16) {
7081    var _ref16$target = _ref16.target,
7082        target = _ref16$target === void 0 ? document : _ref16$target,
7083        types = _ref16.types,
7084        shouldThrottle = _ref16.throttle;
7085    types.split(' ').filter(Boolean).forEach(function (type) {
7086      var handlerFunc = shouldThrottle ? handleEventThrottled : handleEvent; // $FlowFixMe
7087
7088      target.addEventListener(type, handlerFunc);
7089      store.dispatch((0, _IX2EngineActions.eventListenerAdded)(target, [type, handlerFunc]));
7090    });
7091  };
7092
7093  if (Array.isArray(eventTypes)) {
7094    eventTypes.forEach(addListeners);
7095  } else if (typeof eventTypes === 'string') {
7096    addListeners(logic);
7097  }
7098}
7099/**
7100 * Injects CSS into the document to fix behavior issues across
7101 * different devices.
7102 */
7103
7104
7105function injectBehaviorCSSFixes(events) {
7106  if (!IS_MOBILE_SAFARI) {
7107    return;
7108  }
7109
7110  var injectedSelectors = {};
7111  var cssText = '';
7112
7113  for (var eventId in events) {
7114    var _events$eventId = events[eventId],
7115        eventTypeId = _events$eventId.eventTypeId,
7116        target = _events$eventId.target;
7117    var selector = elementApi.getQuerySelector(target); // $FlowFixMe
7118
7119    if (injectedSelectors[selector]) {
7120      continue;
7121    } // add a "cursor: pointer" style rule to ensure that CLICK events get fired for IOS devices
7122
7123
7124    if (eventTypeId === _constants.EventTypeConsts.MOUSE_CLICK || eventTypeId === _constants.EventTypeConsts.MOUSE_SECOND_CLICK) {
7125      // $FlowFixMe
7126      injectedSelectors[selector] = true;
7127      cssText += // $FlowFixMe
7128      selector + '{' + 'cursor: pointer;' + 'touch-action: manipulation;' + '}';
7129    }
7130  }
7131
7132  if (cssText) {
7133    var style = document.createElement('style');
7134    style.textContent = cssText; // $FlowFixMe
7135
7136    document.body.appendChild(style);
7137  }
7138}
7139
7140function renderInitialGroup(_ref17) {
7141  var store = _ref17.store,
7142      actionListId = _ref17.actionListId,
7143      eventId = _ref17.eventId;
7144
7145  var _store$getState10 = store.getState(),
7146      ixData = _store$getState10.ixData,
7147      ixSession = _store$getState10.ixSession;
7148
7149  var actionLists = ixData.actionLists,
7150      events = ixData.events;
7151  var event = events[eventId];
7152  var actionList = actionLists[actionListId];
7153
7154  if (actionList && actionList.useFirstGroupAsInitialState) {
7155    var initialStateItems = (0, _get["default"])(actionList, 'actionItemGroups[0].actionItems', []); // Bypass initial state render if current media query is not listed in event config
7156
7157    var mediaQueries = (0, _get["default"])(event, 'mediaQueries', ixData.mediaQueryKeys);
7158
7159    if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) {
7160      return;
7161    }
7162
7163    initialStateItems.forEach(function (actionItem) {
7164      var config = actionItem.config,
7165          actionTypeId = actionItem.actionTypeId;
7166      var itemElements = getAffectedElements({
7167        config: config,
7168        event: event,
7169        elementApi: elementApi
7170      });
7171      var shouldUsePlugin = isPluginType(actionTypeId);
7172      itemElements.forEach(function (element) {
7173        var pluginInstance = shouldUsePlugin ? // $FlowFixMe
7174        createPluginInstance(actionTypeId)(element, actionItem) : null;
7175        createInstance({
7176          destination: getDestinationValues({
7177            element: element,
7178            actionItem: actionItem,
7179            elementApi: elementApi
7180          }, // $FlowFixMe
7181          pluginInstance),
7182          immediate: true,
7183          store: store,
7184          element: element,
7185          eventId: eventId,
7186          actionItem: actionItem,
7187          actionListId: actionListId,
7188          pluginInstance: pluginInstance
7189        });
7190      });
7191    });
7192  }
7193} // $FlowFixMe
7194
7195
7196function stopAllActionGroups(_ref18) {
7197  var store = _ref18.store;
7198
7199  var _store$getState11 = store.getState(),
7200      ixInstances = _store$getState11.ixInstances;
7201
7202  (0, _forEach["default"])(ixInstances, function (instance) {
7203    if (!instance.continuous) {
7204      var actionListId = instance.actionListId,
7205          verbose = instance.verbose;
7206      removeInstance(instance, store);
7207
7208      if (verbose) {
7209        store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({
7210          actionListId: actionListId,
7211          isPlaying: false
7212        }));
7213      }
7214    }
7215  });
7216} // $FlowFixMe
7217
7218
7219function stopActionGroup(_ref19) {
7220  var store = _ref19.store,
7221      eventId = _ref19.eventId,
7222      eventTarget = _ref19.eventTarget,
7223      eventStateKey = _ref19.eventStateKey,
7224      actionListId = _ref19.actionListId;
7225
7226  var _store$getState12 = store.getState(),
7227      ixInstances = _store$getState12.ixInstances,
7228      ixSession = _store$getState12.ixSession; // Check for element boundary before stopping engine instances
7229
7230
7231  var eventElementRoot = ixSession.hasBoundaryNodes && eventTarget ? elementApi.getClosestElement(eventTarget, BOUNDARY_SELECTOR) : null;
7232  (0, _forEach["default"])(ixInstances, function (instance) {
7233    var boundaryMode = (0, _get["default"])(instance, 'actionItem.config.target.boundaryMode'); // Validate event key if eventStateKey was provided, otherwise default to true
7234
7235    var validEventKey = eventStateKey ? instance.eventStateKey === eventStateKey : true; // Remove engine instances that match the required ids
7236
7237    if (instance.actionListId === actionListId && instance.eventId === eventId && validEventKey) {
7238      // Avoid removal when root boundary does not contain instance element
7239      if (eventElementRoot && boundaryMode && !elementApi.elementContains(eventElementRoot, instance.element)) {
7240        return;
7241      }
7242
7243      removeInstance(instance, store);
7244
7245      if (instance.verbose) {
7246        store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({
7247          actionListId: actionListId,
7248          isPlaying: false
7249        }));
7250      }
7251    }
7252  });
7253} // $FlowFixMe
7254
7255
7256function startActionGroup(_ref20) {
7257  var store = _ref20.store,
7258      eventId = _ref20.eventId,
7259      eventTarget = _ref20.eventTarget,
7260      eventStateKey = _ref20.eventStateKey,
7261      actionListId = _ref20.actionListId,
7262      _ref20$groupIndex = _ref20.groupIndex,
7263      groupIndex = _ref20$groupIndex === void 0 ? 0 : _ref20$groupIndex,
7264      immediate = _ref20.immediate,
7265      verbose = _ref20.verbose;
7266
7267  var _event$action;
7268
7269  var _store$getState13 = store.getState(),
7270      ixData = _store$getState13.ixData,
7271      ixSession = _store$getState13.ixSession;
7272
7273  var events = ixData.events;
7274  var event = events[eventId] || {};
7275  var _event$mediaQueries3 = event.mediaQueries,
7276      mediaQueries = _event$mediaQueries3 === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries3;
7277  var actionList = (0, _get["default"])(ixData, "actionLists.".concat(actionListId), {});
7278  var actionItemGroups = actionList.actionItemGroups,
7279      useFirstGroupAsInitialState = actionList.useFirstGroupAsInitialState; // Abort playback if no action groups
7280
7281  if (!actionItemGroups || !actionItemGroups.length) {
7282    return false;
7283  } // Reset to first group when event loop is configured
7284
7285
7286  if (groupIndex >= actionItemGroups.length && (0, _get["default"])(event, 'config.loop')) {
7287    groupIndex = 0;
7288  } // Skip initial state group during action list playback, as it should already be applied
7289
7290
7291  if (groupIndex === 0 && useFirstGroupAsInitialState) {
7292    groupIndex++;
7293  } // Identify first animated group and apply the initial QuickEffect delay
7294
7295
7296  var isFirstGroup = groupIndex === 0 || groupIndex === 1 && useFirstGroupAsInitialState;
7297  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
7298
7299  var actionItems = (0, _get["default"])(actionItemGroups, [groupIndex, 'actionItems'], []);
7300
7301  if (!actionItems.length) {
7302    return false;
7303  } // Abort playback if current media query is not listed in event config
7304
7305
7306  if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) {
7307    return false;
7308  } // Limit affected elements when event target is within a boundary node
7309
7310
7311  var eventElementRoot = ixSession.hasBoundaryNodes && eventTarget ? elementApi.getClosestElement(eventTarget, BOUNDARY_SELECTOR) : null;
7312  var carrierIndex = getMaxDurationItemIndex(actionItems);
7313  var groupStartResult = false;
7314  actionItems.forEach(function (actionItem, actionIndex) {
7315    var config = actionItem.config,
7316        actionTypeId = actionItem.actionTypeId;
7317    var shouldUsePlugin = isPluginType(actionTypeId);
7318    var target = config.target;
7319
7320    if (!target) {
7321      return;
7322    }
7323
7324    var elementRoot = target.boundaryMode ? eventElementRoot : null;
7325    var elements = getAffectedElements({
7326      config: config,
7327      event: event,
7328      eventTarget: eventTarget,
7329      elementRoot: elementRoot,
7330      elementApi: elementApi
7331    });
7332    elements.forEach(function (element, elementIndex) {
7333      var pluginInstance = shouldUsePlugin ? // $FlowFixMe
7334      createPluginInstance(actionTypeId)(element, actionItem) : null;
7335      var pluginDuration = shouldUsePlugin ? // $FlowFixMe
7336      getPluginDuration(actionTypeId)(element, actionItem) : null;
7337      groupStartResult = true;
7338      var isCarrier = carrierIndex === actionIndex && elementIndex === 0;
7339      var computedStyle = getComputedStyle({
7340        element: element,
7341        actionItem: actionItem
7342      });
7343      var destination = getDestinationValues({
7344        element: element,
7345        actionItem: actionItem,
7346        elementApi: elementApi
7347      }, // $FlowFixMe
7348      pluginInstance);
7349      createInstance({
7350        store: store,
7351        element: element,
7352        actionItem: actionItem,
7353        eventId: eventId,
7354        eventTarget: eventTarget,
7355        eventStateKey: eventStateKey,
7356        actionListId: actionListId,
7357        groupIndex: groupIndex,
7358        isCarrier: isCarrier,
7359        computedStyle: computedStyle,
7360        destination: destination,
7361        immediate: immediate,
7362        verbose: verbose,
7363        pluginInstance: pluginInstance,
7364        pluginDuration: pluginDuration,
7365        instanceDelay: instanceDelay
7366      });
7367    });
7368  });
7369  return groupStartResult;
7370}
7371
7372function createInstance(options) {
7373  // $FlowFixMe
7374  var store = options.store,
7375      computedStyle = options.computedStyle,
7376      rest = (0, _objectWithoutPropertiesLoose2["default"])(options, ["store", "computedStyle"]); // $FlowFixMe
7377
7378  var autoStart = !rest.continuous; // $FlowFixMe
7379
7380  var element = rest.element,
7381      actionItem = rest.actionItem,
7382      immediate = rest.immediate,
7383      pluginInstance = rest.pluginInstance;
7384  var instanceId = getInstanceId();
7385
7386  var _store$getState14 = store.getState(),
7387      ixElements = _store$getState14.ixElements,
7388      ixSession = _store$getState14.ixSession;
7389
7390  var elementId = getElementId(ixElements, element);
7391
7392  var _ref21 = ixElements[elementId] || {},
7393      refState = _ref21.refState;
7394
7395  var refType = elementApi.getRefType(element);
7396  var origin = getInstanceOrigin(element, refState, computedStyle, actionItem, elementApi, // $FlowFixMe
7397  pluginInstance);
7398  store.dispatch((0, _IX2EngineActions.instanceAdded)((0, _extends2["default"])({
7399    instanceId: instanceId,
7400    elementId: elementId,
7401    origin: origin,
7402    refType: refType
7403  }, rest)));
7404  dispatchCustomEvent(document.body, 'ix2-animation-started', instanceId);
7405
7406  if (immediate) {
7407    renderImmediateInstance(store, instanceId);
7408    return;
7409  }
7410
7411  observeStore({
7412    store: store,
7413    select: function select(_ref22) {
7414      var ixInstances = _ref22.ixInstances;
7415      return ixInstances[instanceId];
7416    },
7417    onChange: handleInstanceChange
7418  });
7419
7420  if (autoStart) {
7421    store.dispatch((0, _IX2EngineActions.instanceStarted)(instanceId, ixSession.tick));
7422  }
7423}
7424
7425function removeInstance(instance, store) {
7426  dispatchCustomEvent(document.body, 'ix2-animation-stopping', {
7427    instanceId: instance.id,
7428    state: store.getState()
7429  });
7430  var elementId = instance.elementId,
7431      actionItem = instance.actionItem;
7432
7433  var _store$getState15 = store.getState(),
7434      ixElements = _store$getState15.ixElements;
7435
7436  var _ref23 = ixElements[elementId] || {},
7437      ref = _ref23.ref,
7438      refType = _ref23.refType;
7439
7440  if (refType === HTML_ELEMENT) {
7441    cleanupHTMLElement(ref, actionItem, elementApi);
7442  }
7443
7444  store.dispatch((0, _IX2EngineActions.instanceRemoved)(instance.id));
7445}
7446
7447function dispatchCustomEvent(element, eventName, detail) {
7448  var event = document.createEvent('CustomEvent');
7449  event.initCustomEvent(eventName, true, true, detail); // $FlowFixMe
7450
7451  element.dispatchEvent(event);
7452}
7453
7454function renderImmediateInstance(store, instanceId) {
7455  var _store$getState16 = store.getState(),
7456      ixParameters = _store$getState16.ixParameters;
7457
7458  store.dispatch((0, _IX2EngineActions.instanceStarted)(instanceId, 0));
7459  store.dispatch((0, _IX2EngineActions.animationFrameChanged)(performance.now(), ixParameters));
7460
7461  var _store$getState17 = store.getState(),
7462      ixInstances = _store$getState17.ixInstances;
7463
7464  handleInstanceChange(ixInstances[instanceId], store);
7465}
7466
7467function handleInstanceChange(instance, store) {
7468  var active = instance.active,
7469      continuous = instance.continuous,
7470      complete = instance.complete,
7471      elementId = instance.elementId,
7472      actionItem = instance.actionItem,
7473      actionTypeId = instance.actionTypeId,
7474      renderType = instance.renderType,
7475      current = instance.current,
7476      groupIndex = instance.groupIndex,
7477      eventId = instance.eventId,
7478      eventTarget = instance.eventTarget,
7479      eventStateKey = instance.eventStateKey,
7480      actionListId = instance.actionListId,
7481      isCarrier = instance.isCarrier,
7482      styleProp = instance.styleProp,
7483      verbose = instance.verbose,
7484      pluginInstance = instance.pluginInstance; // Bypass render if current media query is not listed in event config
7485
7486  var _store$getState18 = store.getState(),
7487      ixData = _store$getState18.ixData,
7488      ixSession = _store$getState18.ixSession;
7489
7490  var events = ixData.events;
7491  var event = events[eventId] || {};
7492  var _event$mediaQueries4 = event.mediaQueries,
7493      mediaQueries = _event$mediaQueries4 === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries4;
7494
7495  if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) {
7496    return;
7497  }
7498
7499  if (continuous || active || complete) {
7500    if (current || renderType === RENDER_GENERAL && complete) {
7501      // Render current values to ref state and grab latest
7502      store.dispatch((0, _IX2EngineActions.elementStateChanged)(elementId, actionTypeId, current, actionItem));
7503
7504      var _store$getState19 = store.getState(),
7505          ixElements = _store$getState19.ixElements;
7506
7507      var _ref24 = ixElements[elementId] || {},
7508          ref = _ref24.ref,
7509          refType = _ref24.refType,
7510          refState = _ref24.refState;
7511
7512      var actionState = refState && refState[actionTypeId]; // Choose render based on ref type
7513
7514      switch (refType) {
7515        case HTML_ELEMENT:
7516          {
7517            renderHTMLElement(ref, refState, actionState, eventId, actionItem, styleProp, elementApi, renderType, pluginInstance);
7518            break;
7519          }
7520      }
7521    }
7522
7523    if (complete) {
7524      if (isCarrier) {
7525        var started = startActionGroup({
7526          store: store,
7527          eventId: eventId,
7528          eventTarget: eventTarget,
7529          eventStateKey: eventStateKey,
7530          actionListId: actionListId,
7531          groupIndex: groupIndex + 1,
7532          verbose: verbose
7533        });
7534
7535        if (verbose && !started) {
7536          store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({
7537            actionListId: actionListId,
7538            isPlaying: false
7539          }));
7540        }
7541      }
7542
7543      removeInstance(instance, store);
7544    }
7545  }
7546}
7547
7548/***/ }),
7549/* 116 */
7550/***/ (function(module, exports, __webpack_require__) {
7551
7552var defineProperty = __webpack_require__(117);
7553
7554/**
7555 * The base implementation of `assignValue` and `assignMergeValue` without
7556 * value checks.
7557 *
7558 * @private
7559 * @param {Object} object The object to modify.
7560 * @param {string} key The key of the property to assign.
7561 * @param {*} value The value to assign.
7562 */
7563function baseAssignValue(object, key, value) {
7564  if (key == '__proto__' && defineProperty) {
7565    defineProperty(object, key, {
7566      'configurable': true,
7567      'enumerable': true,
7568      'value': value,
7569      'writable': true
7570    });
7571  } else {
7572    object[key] = value;
7573  }
7574}
7575
7576module.exports = baseAssignValue;
7577
7578
7579/***/ }),
7580/* 117 */
7581/***/ (function(module, exports, __webpack_require__) {
7582
7583var getNative = __webpack_require__(8);
7584
7585var defineProperty = (function() {
7586  try {
7587    var func = getNative(Object, 'defineProperty');
7588    func({}, '', {});
7589    return func;
7590  } catch (e) {}
7591}());
7592
7593module.exports = defineProperty;
7594
7595
7596/***/ }),
7597/* 118 */
7598/***/ (function(module, exports, __webpack_require__) {
7599
7600var isObject = __webpack_require__(6);
7601
7602/** Built-in value references. */
7603var objectCreate = Object.create;
7604
7605/**
7606 * The base implementation of `_.create` without support for assigning
7607 * properties to the created object.
7608 *
7609 * @private
7610 * @param {Object} proto The object to inherit from.
7611 * @returns {Object} Returns the new object.
7612 */
7613var baseCreate = (function() {
7614  function object() {}
7615  return function(proto) {
7616    if (!isObject(proto)) {
7617      return {};
7618    }
7619    if (objectCreate) {
7620      return objectCreate(proto);
7621    }
7622    object.prototype = proto;
7623    var result = new object;
7624    object.prototype = undefined;
7625    return result;
7626  };
7627}());
7628
7629module.exports = baseCreate;
7630
7631
7632/***/ }),
7633/* 119 */
7634/***/ (function(module, exports, __webpack_require__) {
7635
7636var metaMap = __webpack_require__(306),
7637    noop = __webpack_require__(307);
7638
7639/**
7640 * Gets metadata for `func`.
7641 *
7642 * @private
7643 * @param {Function} func The function to query.
7644 * @returns {*} Returns the metadata for `func`.
7645 */
7646var getData = !metaMap ? noop : function(func) {
7647  return metaMap.get(func);
7648};
7649
7650module.exports = getData;
7651
7652
7653/***/ }),
7654/* 120 */
7655/***/ (function(module, exports, __webpack_require__) {
7656
7657var realNames = __webpack_require__(308);
7658
7659/** Used for built-in method references. */
7660var objectProto = Object.prototype;
7661
7662/** Used to check objects for own properties. */
7663var hasOwnProperty = objectProto.hasOwnProperty;
7664
7665/**
7666 * Gets the name of `func`.
7667 *
7668 * @private
7669 * @param {Function} func The function to query.
7670 * @returns {string} Returns the function name.
7671 */
7672function getFuncName(func) {
7673  var result = (func.name + ''),
7674      array = realNames[result],
7675      length = hasOwnProperty.call(realNames, result) ? array.length : 0;
7676
7677  while (length--) {
7678    var data = array[length],
7679        otherFunc = data.func;
7680    if (otherFunc == null || otherFunc == func) {
7681      return data.name;
7682    }
7683  }
7684  return result;
7685}
7686
7687module.exports = getFuncName;
7688
7689
7690/***/ }),
7691/* 121 */
7692/***/ (function(module, exports, __webpack_require__) {
7693
7694__webpack_require__(122);
7695__webpack_require__(37);
7696__webpack_require__(124);
7697__webpack_require__(38);
7698__webpack_require__(125);
7699__webpack_require__(315);
7700__webpack_require__(316);
7701__webpack_require__(317);
7702__webpack_require__(318);
7703__webpack_require__(319);
7704module.exports = __webpack_require__(324);
7705
7706
7707/***/ }),
7708/* 122 */
7709/***/ (function(module, exports, __webpack_require__) {
7710
7711"use strict";
7712 // @wf-will-never-add-flow-to-this-file
7713
7714/* globals document, window, navigator */
7715
7716/* eslint-disable no-var */
7717
7718/**
7719 * Webflow: Brand pages on the subdomain
7720 */
7721
7722var Webflow = __webpack_require__(5);
7723
7724Webflow.define('brand', module.exports = function ($) {
7725  var api = {};
7726  var doc = document;
7727  var $html = $('html');
7728  var $body = $('body');
7729  var namespace = '.w-webflow-badge';
7730  var location = window.location;
7731  var isPhantom = /PhantomJS/i.test(navigator.userAgent);
7732  var fullScreenEvents = 'fullscreenchange webkitfullscreenchange mozfullscreenchange msfullscreenchange';
7733  var brandElement; // -----------------------------------
7734  // Module methods
7735
7736  api.ready = function () {
7737    var shouldBrand = $html.attr('data-wf-status');
7738    var publishedDomain = $html.attr('data-wf-domain') || '';
7739
7740    if (/\.webflow\.io$/i.test(publishedDomain) && location.hostname !== publishedDomain) {
7741      shouldBrand = true;
7742    }
7743
7744    if (shouldBrand && !isPhantom) {
7745      brandElement = brandElement || createBadge();
7746      ensureBrand();
7747      setTimeout(ensureBrand, 500);
7748      $(doc).off(fullScreenEvents, onFullScreenChange).on(fullScreenEvents, onFullScreenChange);
7749    }
7750  };
7751
7752  function onFullScreenChange() {
7753    var fullScreen = doc.fullScreen || doc.mozFullScreen || doc.webkitIsFullScreen || doc.msFullscreenElement || Boolean(doc.webkitFullscreenElement);
7754    $(brandElement).attr('style', fullScreen ? 'display: none !important;' : '');
7755  }
7756
7757  function createBadge() {
7758    var $brand = $('<a class="w-webflow-badge"></a>').attr('href', 'https://webflow.com?utm_campaign=brandjs');
7759    var $logoArt = $('<img>').attr('src', 'https://d3e54v103j8qbb.cloudfront.net/img/webflow-badge-icon.f67cd735e3.svg').attr('alt', '').css({
7760      marginRight: '8px',
7761      width: '16px'
7762    });
7763    var $logoText = $('<img>').attr('src', 'https://d1otoma47x30pg.cloudfront.net/img/webflow-badge-text.6faa6a38cd.svg').attr('alt', 'Made in Webflow');
7764    $brand.append($logoArt, $logoText);
7765    return $brand[0];
7766  }
7767
7768  function ensureBrand() {
7769    var found = $body.children(namespace);
7770    var match = found.length && found.get(0) === brandElement;
7771    var inEditor = Webflow.env('editor');
7772
7773    if (match) {
7774      // Remove brand when Editor is active
7775      if (inEditor) {
7776        found.remove();
7777      } // Exit early, brand is in place
7778
7779
7780      return;
7781    } // Remove any invalid brand elements
7782
7783
7784    if (found.length) {
7785      found.remove();
7786    } // Append the brand (unless Editor is active)
7787
7788
7789    if (!inEditor) {
7790      $body.append(brandElement);
7791    }
7792  } // Export module
7793
7794
7795  return api;
7796});
7797
7798/***/ }),
7799/* 123 */
7800/***/ (function(module, exports, __webpack_require__) {
7801
7802"use strict";
7803 // @wf-will-never-add-flow-to-this-file
7804// Include tram for frame-throttling
7805
7806/* globals window */
7807
7808/* eslint-disable no-var */
7809
7810var $ = window.$;
7811var tram = __webpack_require__(66) && $.tram;
7812/*!
7813 * Webflow._ (aka) Underscore.js 1.6.0 (custom build)
7814 * _.each
7815 * _.map
7816 * _.find
7817 * _.filter
7818 * _.any
7819 * _.contains
7820 * _.delay
7821 * _.defer
7822 * _.throttle (webflow)
7823 * _.debounce
7824 * _.keys
7825 * _.has
7826 * _.now
7827 *
7828 * http://underscorejs.org
7829 * (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
7830 * Underscore may be freely distributed under the MIT license.
7831 * @license MIT
7832 */
7833
7834module.exports = function () {
7835  var _ = {}; // Current version.
7836
7837  _.VERSION = '1.6.0-Webflow'; // Establish the object that gets returned to break out of a loop iteration.
7838
7839  var breaker = {}; // Save bytes in the minified (but not gzipped) version:
7840
7841  /* eslint-disable one-var */
7842
7843  var ArrayProto = Array.prototype,
7844      ObjProto = Object.prototype,
7845      FuncProto = Function.prototype;
7846  /* eslint-enable one-var */
7847  // Create quick reference variables for speed access to core prototypes.
7848
7849  /* eslint-disable one-var, no-unused-vars */
7850
7851  var push = ArrayProto.push,
7852      slice = ArrayProto.slice,
7853      concat = ArrayProto.concat,
7854      toString = ObjProto.toString,
7855      hasOwnProperty = ObjProto.hasOwnProperty;
7856  /* eslint-enable one-var, no-unused-vars */
7857  // All **ECMAScript 5** native function implementations that we hope to use
7858  // are declared here.
7859
7860  /* eslint-disable one-var, no-unused-vars */
7861
7862  var nativeForEach = ArrayProto.forEach,
7863      nativeMap = ArrayProto.map,
7864      nativeReduce = ArrayProto.reduce,
7865      nativeReduceRight = ArrayProto.reduceRight,
7866      nativeFilter = ArrayProto.filter,
7867      nativeEvery = ArrayProto.every,
7868      nativeSome = ArrayProto.some,
7869      nativeIndexOf = ArrayProto.indexOf,
7870      nativeLastIndexOf = ArrayProto.lastIndexOf,
7871      nativeIsArray = Array.isArray,
7872      nativeKeys = Object.keys,
7873      nativeBind = FuncProto.bind;
7874  /* eslint-enable one-var, no-unused-vars */
7875  // Collection Functions
7876  // --------------------
7877  // The cornerstone, an `each` implementation, aka `forEach`.
7878  // Handles objects with the built-in `forEach`, arrays, and raw objects.
7879  // Delegates to **ECMAScript 5**'s native `forEach` if available.
7880
7881  var each = _.each = _.forEach = function (obj, iterator, context) {
7882    /* jshint shadow:true */
7883    if (obj == null) return obj;
7884
7885    if (nativeForEach && obj.forEach === nativeForEach) {
7886      obj.forEach(iterator, context); // eslint-disable-next-line no-implicit-coercion
7887    } else if (obj.length === +obj.length) {
7888      for (var i = 0, length = obj.length; i < length; i++) {
7889        if (iterator.call(context, obj[i], i, obj) === breaker) return;
7890      }
7891    } else {
7892      var keys = _.keys(obj); // eslint-disable-next-line no-redeclare
7893
7894
7895      for (var i = 0, length = keys.length; i < length; i++) {
7896        if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return;
7897      }
7898    }
7899
7900    return obj;
7901  }; // Return the results of applying the iterator to each element.
7902  // Delegates to **ECMAScript 5**'s native `map` if available.
7903
7904
7905  _.map = _.collect = function (obj, iterator, context) {
7906    var results = [];
7907    if (obj == null) return results;
7908    if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
7909    each(obj, function (value, index, list) {
7910      results.push(iterator.call(context, value, index, list));
7911    });
7912    return results;
7913  }; // Return the first value which passes a truth test. Aliased as `detect`.
7914
7915
7916  _.find = _.detect = function (obj, predicate, context) {
7917    var result;
7918    any(obj, function (value, index, list) {
7919      if (predicate.call(context, value, index, list)) {
7920        result = value;
7921        return true;
7922      }
7923    });
7924    return result;
7925  }; // Return all the elements that pass a truth test.
7926  // Delegates to **ECMAScript 5**'s native `filter` if available.
7927  // Aliased as `select`.
7928
7929
7930  _.filter = _.select = function (obj, predicate, context) {
7931    var results = [];
7932    if (obj == null) return results;
7933    if (nativeFilter && obj.filter === nativeFilter) return obj.filter(predicate, context);
7934    each(obj, function (value, index, list) {
7935      if (predicate.call(context, value, index, list)) results.push(value);
7936    });
7937    return results;
7938  }; // Determine if at least one element in the object matches a truth test.
7939  // Delegates to **ECMAScript 5**'s native `some` if available.
7940  // Aliased as `any`.
7941
7942
7943  var any = _.some = _.any = function (obj, predicate, context) {
7944    predicate || (predicate = _.identity);
7945    var result = false;
7946    if (obj == null) return result;
7947    if (nativeSome && obj.some === nativeSome) return obj.some(predicate, context);
7948    each(obj, function (value, index, list) {
7949      if (result || (result = predicate.call(context, value, index, list))) return breaker;
7950    });
7951    return !!result; // eslint-disable-line no-implicit-coercion
7952  }; // Determine if the array or object contains a given value (using `===`).
7953  // Aliased as `include`.
7954
7955
7956  _.contains = _.include = function (obj, target) {
7957    if (obj == null) return false;
7958    if (nativeIndexOf && obj.indexOf === nativeIndexOf) // eslint-disable-next-line eqeqeq
7959      return obj.indexOf(target) != -1;
7960    return any(obj, function (value) {
7961      return value === target;
7962    });
7963  }; // Function (ahem) Functions
7964  // --------------------
7965  // Delays a function for the given number of milliseconds, and then calls
7966  // it with the arguments supplied.
7967
7968
7969  _.delay = function (func, wait) {
7970    var args = slice.call(arguments, 2);
7971    return setTimeout(function () {
7972      return func.apply(null, args);
7973    }, wait);
7974  }; // Defers a function, scheduling it to run after the current call stack has
7975  // cleared.
7976
7977
7978  _.defer = function (func) {
7979    return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
7980  }; // Returns a function, that, when invoked, will only be triggered once every
7981  // browser animation frame - using tram's requestAnimationFrame polyfill.
7982
7983
7984  _.throttle = function (func) {
7985    // eslint-disable-next-line one-var
7986    var wait, args, context;
7987    return function () {
7988      if (wait) return;
7989      wait = true;
7990      args = arguments;
7991      context = this;
7992      tram.frame(function () {
7993        wait = false;
7994        func.apply(context, args);
7995      });
7996    };
7997  }; // Returns a function, that, as long as it continues to be invoked, will not
7998  // be triggered. The function will be called after it stops being called for
7999  // N milliseconds. If `immediate` is passed, trigger the function on the
8000  // leading edge, instead of the trailing.
8001
8002
8003  _.debounce = function (func, wait, immediate) {
8004    // eslint-disable-next-line one-var
8005    var timeout, args, context, timestamp, result;
8006
8007    var later = function later() {
8008      var last = _.now() - timestamp;
8009
8010      if (last < wait) {
8011        timeout = setTimeout(later, wait - last);
8012      } else {
8013        timeout = null;
8014
8015        if (!immediate) {
8016          result = func.apply(context, args);
8017          context = args = null;
8018        }
8019      }
8020    };
8021
8022    return function () {
8023      context = this;
8024      args = arguments;
8025      timestamp = _.now();
8026      var callNow = immediate && !timeout;
8027
8028      if (!timeout) {
8029        timeout = setTimeout(later, wait);
8030      }
8031
8032      if (callNow) {
8033        result = func.apply(context, args);
8034        context = args = null;
8035      }
8036
8037      return result;
8038    };
8039  }; // Object Functions
8040  // ----------------
8041  // Fill in a given object with default properties.
8042
8043
8044  _.defaults = function (obj) {
8045    if (!_.isObject(obj)) return obj;
8046
8047    for (var i = 1, length = arguments.length; i < length; i++) {
8048      var source = arguments[i];
8049
8050      for (var prop in source) {
8051        // eslint-disable-next-line no-void
8052        if (obj[prop] === void 0) obj[prop] = source[prop];
8053      }
8054    }
8055
8056    return obj;
8057  }; // Retrieve the names of an object's properties.
8058  // Delegates to **ECMAScript 5**'s native `Object.keys`
8059
8060
8061  _.keys = function (obj) {
8062    if (!_.isObject(obj)) return [];
8063    if (nativeKeys) return nativeKeys(obj);
8064    var keys = [];
8065
8066    for (var key in obj) {
8067      if (_.has(obj, key)) keys.push(key);
8068    }
8069
8070    return keys;
8071  }; // Shortcut function for checking if an object has a given property directly
8072  // on itself (in other words, not on a prototype).
8073
8074
8075  _.has = function (obj, key) {
8076    return hasOwnProperty.call(obj, key);
8077  }; // Is a given variable an object?
8078
8079
8080  _.isObject = function (obj) {
8081    return obj === Object(obj);
8082  }; // Utility Functions
8083  // -----------------
8084  // A (possibly faster) way to get the current timestamp as an integer.
8085
8086
8087  _.now = Date.now || function () {
8088    return new Date().getTime();
8089  }; // By default, Underscore uses ERB-style template delimiters, change the
8090  // following template settings to use alternative delimiters.
8091
8092
8093  _.templateSettings = {
8094    evaluate: /<%([\s\S]+?)%>/g,
8095    interpolate: /<%=([\s\S]+?)%>/g,
8096    escape: /<%-([\s\S]+?)%>/g
8097  }; // When customizing `templateSettings`, if you don't want to define an
8098  // interpolation, evaluation or escaping regex, we need one that is
8099  // guaranteed not to match.
8100
8101  var noMatch = /(.)^/; // Certain characters need to be escaped so that they can be put into a
8102  // string literal.
8103
8104  var escapes = {
8105    "'": "'",
8106    '\\': '\\',
8107    '\r': 'r',
8108    '\n': 'n',
8109    "\u2028": 'u2028',
8110    "\u2029": 'u2029'
8111  };
8112  var escaper = /\\|'|\r|\n|\u2028|\u2029/g;
8113
8114  var escapeChar = function escapeChar(match) {
8115    return '\\' + escapes[match];
8116  }; // JavaScript micro-templating, similar to John Resig's implementation.
8117  // Underscore templating handles arbitrary delimiters, preserves whitespace,
8118  // and correctly escapes quotes within interpolated code.
8119  // NB: `oldSettings` only exists for backwards compatibility.
8120
8121
8122  _.template = function (text, settings, oldSettings) {
8123    if (!settings && oldSettings) settings = oldSettings;
8124    settings = _.defaults({}, settings, _.templateSettings); // Combine delimiters into one regular expression via alternation.
8125
8126    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.
8127
8128    var index = 0;
8129    var source = "__p+='";
8130    text.replace(matcher, function (match, escape, interpolate, evaluate, offset) {
8131      source += text.slice(index, offset).replace(escaper, escapeChar);
8132      index = offset + match.length;
8133
8134      if (escape) {
8135        source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'";
8136      } else if (interpolate) {
8137        source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
8138      } else if (evaluate) {
8139        source += "';\n" + evaluate + "\n__p+='";
8140      } // Adobe VMs need the match returned to produce the correct offest.
8141
8142
8143      return match;
8144    });
8145    source += "';\n"; // If a variable is not specified, place data values in local scope.
8146
8147    if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';
8148    source = "var __t,__p='',__j=Array.prototype.join," + "print=function(){__p+=__j.call(arguments,'');};\n" + source + 'return __p;\n';
8149
8150    try {
8151      // eslint-disable-next-line no-new-func
8152      var render = new Function(settings.variable || 'obj', '_', source);
8153    } catch (e) {
8154      e.source = source;
8155      throw e;
8156    }
8157
8158    var template = function template(data) {
8159      return render.call(this, data, _);
8160    }; // Provide the compiled source as a convenience for precompilation.
8161
8162
8163    var argument = settings.variable || 'obj';
8164    template.source = 'function(' + argument + '){\n' + source + '}';
8165    return template;
8166  }; // Export underscore
8167
8168
8169  return _;
8170}();
8171/* eslint-enable */
8172
8173/***/ }),
8174/* 124 */
8175/***/ (function(module, exports, __webpack_require__) {
8176
8177"use strict";
8178 // @wf-will-never-add-flow-to-this-file
8179
8180/* globals window */
8181
8182/* eslint-disable no-var */
8183
8184/**
8185 * Webflow: Interactions
8186 */
8187
8188var Webflow = __webpack_require__(5);
8189
8190var IXEvents = __webpack_require__(37);
8191
8192Webflow.define('ix', module.exports = function ($, _) {
8193  var api = {};
8194  var designer;
8195  var $win = $(window);
8196  var namespace = '.w-ix';
8197  var tram = $.tram;
8198  var env = Webflow.env;
8199  var inApp = env();
8200  var emptyFix = env.chrome && env.chrome < 35;
8201  var transNone = 'none 0s ease 0s';
8202  var $subs = $();
8203  var config = {};
8204  var anchors = [];
8205  var loads = [];
8206  var readys = [];
8207  var destroyed;
8208  var readyDelay = 1; // Component types and proxy selectors
8209
8210  var components = {
8211    tabs: '.w-tab-link, .w-tab-pane',
8212    dropdown: '.w-dropdown',
8213    slider: '.w-slide',
8214    navbar: '.w-nav'
8215  }; // -----------------------------------
8216  // Module methods
8217
8218  api.init = function (list) {
8219    setTimeout(function () {
8220      configure(list);
8221    }, 1);
8222  };
8223
8224  api.preview = function () {
8225    designer = false;
8226    readyDelay = 100;
8227    setTimeout(function () {
8228      configure(window.__wf_ix);
8229    }, 1);
8230  };
8231
8232  api.design = function () {
8233    designer = true;
8234    api.destroy();
8235  };
8236
8237  api.destroy = function () {
8238    destroyed = true;
8239    $subs.each(teardown);
8240    Webflow.scroll.off(scroll);
8241    IXEvents.async();
8242    anchors = [];
8243    loads = [];
8244    readys = [];
8245  };
8246
8247  api.ready = function () {
8248    // Redirect IX init while in design/preview modes
8249    if (inApp) {
8250      return env('design') ? api.design() : api.preview();
8251    } // Ready should only be used after destroy, as a way to re-init
8252
8253
8254    if (config && destroyed) {
8255      destroyed = false;
8256      init();
8257    }
8258  };
8259
8260  api.run = run;
8261  api.style = inApp ? styleApp : stylePub; // -----------------------------------
8262  // Private methods
8263
8264  function configure(list) {
8265    if (!list) {
8266      return;
8267    } // Map all interactions by slug
8268
8269
8270    config = {};
8271
8272    _.each(list, function (item) {
8273      config[item.slug] = item.value;
8274    }); // Init ix after config
8275
8276
8277    init();
8278  }
8279
8280  function init() {
8281    initIX1Engine(); // Need init IXEvents regardless if IX1 events exist since
8282    // IXEvents _also_ dispatch IX2 events.
8283    // Trigger queued events, must happen after init
8284
8285    IXEvents.init(); // Trigger a redraw to ensure all IX intros play
8286
8287    Webflow.redraw.up();
8288  }
8289
8290  function initIX1Engine() {
8291    // Build each element's interaction keying from data attribute
8292    var els = $('[data-ix]');
8293
8294    if (!els.length) {
8295      return;
8296    }
8297
8298    els.each(teardown);
8299    els.each(build); // Listen for scroll events if any anchors exist
8300
8301    if (anchors.length) {
8302      Webflow.scroll.on(scroll);
8303      setTimeout(scroll, 1);
8304    } // Handle loads or readys if they exist
8305
8306
8307    if (loads.length) {
8308      Webflow.load(runLoads);
8309    }
8310
8311    if (readys.length) {
8312      setTimeout(runReadys, readyDelay);
8313    }
8314  }
8315
8316  function build(i, el) {
8317    var $el = $(el);
8318    var id = $el.attr('data-ix');
8319    var ix = config[id];
8320
8321    if (!ix) {
8322      return;
8323    }
8324
8325    var triggers = ix.triggers;
8326
8327    if (!triggers) {
8328      return;
8329    } // Set styles immediately to provide tram with starting transform values
8330
8331
8332    api.style($el, ix.style);
8333
8334    _.each(triggers, function (trigger) {
8335      var state = {};
8336      var type = trigger.type;
8337      var stepsB = trigger.stepsB && trigger.stepsB.length;
8338
8339      function runA() {
8340        run(trigger, $el, {
8341          group: 'A'
8342        });
8343      }
8344
8345      function runB() {
8346        run(trigger, $el, {
8347          group: 'B'
8348        });
8349      }
8350
8351      if (type === 'load') {
8352        trigger.preload && !inApp ? loads.push(runA) : readys.push(runA);
8353        return;
8354      }
8355
8356      if (type === 'click') {
8357        $el.on('click' + namespace, function (evt) {
8358          // Avoid late clicks on touch devices
8359          if (!Webflow.validClick(evt.currentTarget)) {
8360            return;
8361          } // Prevent default on empty hash urls
8362
8363
8364          if ($el.attr('href') === '#') {
8365            evt.preventDefault();
8366          }
8367
8368          run(trigger, $el, {
8369            group: state.clicked ? 'B' : 'A'
8370          });
8371
8372          if (stepsB) {
8373            state.clicked = !state.clicked;
8374          }
8375        });
8376        $subs = $subs.add($el);
8377        return;
8378      }
8379
8380      if (type === 'hover') {
8381        $el.on('mouseenter' + namespace, runA);
8382        $el.on('mouseleave' + namespace, runB);
8383        $subs = $subs.add($el);
8384        return;
8385      }
8386
8387      if (type === 'scroll') {
8388        anchors.push({
8389          el: $el,
8390          trigger: trigger,
8391          state: {
8392            active: false
8393          },
8394          offsetTop: convert(trigger.offsetTop),
8395          offsetBot: convert(trigger.offsetBot)
8396        });
8397        return;
8398      } // Check for a proxy component selector
8399      // type == [tabs, dropdown, slider, navbar]
8400
8401
8402      var proxy = components[type];
8403
8404      if (proxy) {
8405        var $proxy = $el.closest(proxy);
8406        $proxy.on(IXEvents.types.INTRO, runA).on(IXEvents.types.OUTRO, runB);
8407        $subs = $subs.add($proxy);
8408        return;
8409      }
8410    });
8411  }
8412
8413  function convert(offset) {
8414    if (!offset) {
8415      return 0;
8416    }
8417
8418    offset = String(offset);
8419    var result = parseInt(offset, 10); // eslint-disable-next-line no-self-compare
8420
8421    if (result !== result) {
8422      return 0;
8423    }
8424
8425    if (offset.indexOf('%') > 0) {
8426      result /= 100;
8427
8428      if (result >= 1) {
8429        result = 0.999;
8430      }
8431    }
8432
8433    return result;
8434  }
8435
8436  function teardown(i, el) {
8437    $(el).off(namespace);
8438  }
8439
8440  function scroll() {
8441    var viewTop = $win.scrollTop();
8442    var viewHeight = $win.height(); // Check each anchor for a valid scroll trigger
8443
8444    var count = anchors.length;
8445
8446    for (var i = 0; i < count; i++) {
8447      var anchor = anchors[i];
8448      var $el = anchor.el;
8449      var trigger = anchor.trigger;
8450      var stepsB = trigger.stepsB && trigger.stepsB.length;
8451      var state = anchor.state;
8452      var top = $el.offset().top;
8453      var height = $el.outerHeight();
8454      var offsetTop = anchor.offsetTop;
8455      var offsetBot = anchor.offsetBot;
8456
8457      if (offsetTop < 1 && offsetTop > 0) {
8458        offsetTop *= viewHeight;
8459      }
8460
8461      if (offsetBot < 1 && offsetBot > 0) {
8462        offsetBot *= viewHeight;
8463      }
8464
8465      var active = top + height - offsetTop >= viewTop && top + offsetBot <= viewTop + viewHeight;
8466
8467      if (active === state.active) {
8468        continue;
8469      }
8470
8471      if (active === false && !stepsB) {
8472        continue;
8473      }
8474
8475      state.active = active;
8476      run(trigger, $el, {
8477        group: active ? 'A' : 'B'
8478      });
8479    }
8480  }
8481
8482  function runLoads() {
8483    var count = loads.length;
8484
8485    for (var i = 0; i < count; i++) {
8486      loads[i]();
8487    }
8488  }
8489
8490  function runReadys() {
8491    var count = readys.length;
8492
8493    for (var i = 0; i < count; i++) {
8494      readys[i]();
8495    }
8496  }
8497
8498  function run(trigger, $el, opts, replay) {
8499    opts = opts || {};
8500    var done = opts.done;
8501    var preserve3d = trigger.preserve3d;
8501 // Do not run in designer unless forced
8502
8503    if (designer && !opts.force) {
8504      return;
8505    } // Operate on a set of grouped steps
8506
8507
8508    var group = opts.group || 'A';
8509    var loop = trigger['loop' + group];
8510    var steps = trigger['steps' + group];
8511
8512    if (!steps || !steps.length) {
8513      return;
8514    }
8515
8516    if (steps.length < 2) {
8517      loop = false;
8518    } // One-time init before any loops
8519
8520
8521    if (!replay) {
8522      // Find selector within element descendants, siblings, or query whole document
8523      var selector = trigger.selector;
8524
8525      if (selector) {
8526        if (trigger.descend) {
8527          $el = $el.find(selector);
8528        } else if (trigger.siblings) {
8529          $el = $el.siblings(selector);
8530        } else {
8531          $el = $(selector);
8532        }
8533
8534        if (inApp) {
8535          $el.attr('data-ix-affect', 1);
8536        }
8537      } // Apply empty fix for certain Chrome versions
8538
8539
8540      if (emptyFix) {
8541        $el.addClass('w-ix-emptyfix');
8542      } // Set preserve3d for triggers with 3d transforms
8543
8544
8545      if (preserve3d) {
8546        $el.css('transform-style', 'preserve-3d');
8547      }
8548    }
8549
8550    var _tram = tram($el); // Add steps
8551
8552
8553    var meta = {
8554      omit3d: !preserve3d
8555    };
8556
8557    for (var i = 0; i < steps.length; i++) {
8558      addStep(_tram, steps[i], meta);
8559    }
8560
8561    function fin() {
8562      // Run trigger again if looped
8563      if (loop) {
8564        return run(trigger, $el, opts, true);
8565      } // Reset any 'auto' values
8566
8567
8568      if (meta.width === 'auto') {
8569        _tram.set({
8570          width: 'auto'
8571        });
8572      }
8573
8574      if (meta.height === 'auto') {
8575        _tram.set({
8576          height: 'auto'
8577        });
8578      } // Run callback
8579
8580
8581      done && done();
8582    } // Add final step to queue if tram has started
8583
8584
8585    meta.start ? _tram.then(fin) : fin();
8586  }
8587
8588  function addStep(_tram, step, meta) {
8589    var addMethod = 'add';
8590    var startMethod = 'start'; // Once the transition has started, we will always use then() to add to the queue.
8591
8592    if (meta.start) {
8593      addMethod = startMethod = 'then';
8594    } // Parse transitions string on the current step
8595
8596
8597    var transitions = step.transition;
8598
8599    if (transitions) {
8600      transitions = transitions.split(',');
8601
8602      for (var i = 0; i < transitions.length; i++) {
8603        var transition = transitions[i];
8604
8605        _tram[addMethod](transition);
8606      }
8607    } // Build a clean object to pass to the tram method
8608
8609
8610    var clean = tramify(step, meta) || {}; // Store last width and height values
8611
8612    if (clean.width != null) {
8613      meta.width = clean.width;
8614    }
8615
8616    if (clean.height != null) {
8617      meta.height = clean.height;
8618    } // When transitions are not present, set values immediately and continue queue.
8619
8620
8621    if (transitions == null) {
8622      // If we have started, wrap set() in then() and reset queue
8623      if (meta.start) {
8624        _tram.then(function () {
8625          var queue = this.queue;
8626          this.set(clean);
8627
8628          if (clean.display) {
8629            _tram.redraw();
8630
8631            Webflow.redraw.up();
8632          }
8633
8634          this.queue = queue;
8635          this.next();
8636        });
8637      } else {
8638        _tram.set(clean); // Always redraw after setting display
8639
8640
8641        if (clean.display) {
8642          _tram.redraw();
8643
8644          Webflow.redraw.up();
8645        }
8646      } // Use the wait() method to kick off queue in absence of transitions.
8647
8648
8649      var wait = clean.wait;
8650
8651      if (wait != null) {
8652        _tram.wait(wait);
8653
8654        meta.start = true;
8655      } // Otherwise, when transitions are present
8656
8657    } else {
8658      // If display is present, handle it separately
8659      if (clean.display) {
8660        var display = clean.display; // eslint-disable-next-line webflow/no-delete
8661
8662        delete clean.display; // If we've already started, we need to wrap it in a then()
8663
8664        if (meta.start) {
8665          _tram.then(function () {
8666            var queue = this.queue;
8667            this.set({
8668              display: display
8669            }).redraw();
8670            Webflow.redraw.up();
8671            this.queue = queue;
8672            this.next();
8673          });
8674        } else {
8675          _tram.set({
8676            display: display
8677          }).redraw();
8678
8679          Webflow.redraw.up();
8680        }
8681      } // Otherwise, start a transition using the current start method.
8682
8683
8684      _tram[startMethod](clean);
8685
8686      meta.start = true;
8687    }
8688  } // (In app) Set styles immediately and manage upstream transition
8689
8690
8691  function styleApp(el, data) {
8692    var _tram = tram(el); // Exit early when data is empty to avoid clearing upstream
8693
8694
8695    if ($.isEmptyObject(data)) {
8696      return;
8697    } // Get computed transition value
8698
8699
8700    el.css('transition', '');
8701    var computed = el.css('transition'); // If computed is set to none, clear upstream
8702
8703    if (computed === transNone) {
8704      computed = _tram.upstream = null;
8705    } // Set upstream transition to none temporarily
8706
8707
8708    _tram.upstream = transNone; // Set values immediately
8709
8710    _tram.set(tramify(data)); // Only restore upstream in preview mode
8711
8712
8713    _tram.upstream = computed;
8714  } // (Published) Set styles immediately on specified jquery element
8715
8716
8717  function stylePub(el, data) {
8718    tram(el).set(tramify(data));
8719  } // Build a clean object for tram
8720
8721
8722  function tramify(obj, meta) {
8723    var omit3d = meta && meta.omit3d;
8724    var result = {};
8725    var found = false;
8726
8727    for (var key in obj) {
8728      if (key === 'transition') {
8729        continue;
8730      }
8731
8732      if (key === 'keysort') {
8733        continue;
8734      }
8735
8736      if (omit3d) {
8737        if (key === 'z' || key === 'rotateX' || key === 'rotateY' || key === 'scaleZ') {
8738          continue;
8739        }
8740      }
8741
8742      result[key] = obj[key];
8743      found = true;
8744    } // If empty, return null for tram.set/stop compliance
8745
8746
8747    return found ? result : null;
8748  } // Export module
8749
8750
8751  return api;
8752});
8753
8754/***/ }),
8755/* 125 */
8756/***/ (function(module, exports, __webpack_require__) {
8757
8758"use strict";
8759 // @wf-will-never-add-flow-to-this-file
8760
8761/* eslint-disable no-var */
8762
8763/**
8764 * Webflow: Interactions 2
8765 */
8766
8767var Webflow = __webpack_require__(5);
8768
8769var ix2 = __webpack_require__(126);
8770
8771ix2.setEnv(Webflow.env);
8772Webflow.define('ix2', module.exports = function () {
8773  return ix2;
8774});
8775
8776/***/ }),
8777/* 126 */
8778/***/ (function(module, exports, __webpack_require__) {
8779
8780"use strict";
8781
8782
8783var _interopRequireWildcard = __webpack_require__(13);
8784
8785var _interopRequireDefault = __webpack_require__(0);
8786
8787Object.defineProperty(exports, "__esModule", {
8788  value: true
8789});
8790exports.setEnv = setEnv;
8791exports.init = init;
8792exports.destroy = destroy;
8793exports.actions = exports.store = void 0;
8794
8795__webpack_require__(127);
8796
8797var _redux = __webpack_require__(79);
8798
8799var _IX2Reducer = _interopRequireDefault(__webpack_require__(168));
8800
8801var _IX2VanillaEngine = __webpack_require__(115);
8802
8803var actions = _interopRequireWildcard(__webpack_require__(62));
8804
8805exports.actions = actions; // Array.includes needed for IE11 @packages/systems/ix2/shared/utils/quick-effects
8806
8807var store = (0, _redux.createStore)(_IX2Reducer["default"]);
8808exports.store = store;
8809
8810function setEnv(env) {
8811  if (env()) {
8812    (0, _IX2VanillaEngine.observeRequests)(store);
8813  }
8814}
8815
8816function init(rawData) {
8817  destroy();
8818  (0, _IX2VanillaEngine.startEngine)({
8819    store: store,
8820    rawData: rawData,
8821    allowEvents: true
8822  });
8823}
8824
8825function destroy() {
8826  (0, _IX2VanillaEngine.stopEngine)(store);
8827}
8828
8829/***/ }),
8830/* 127 */
8831/***/ (function(module, exports, __webpack_require__) {
8832
8833module.exports = __webpack_require__(128);
8834
8835
8836/***/ }),
8837/* 128 */
8838/***/ (function(module, exports, __webpack_require__) {
8839
8840__webpack_require__(129);
8841var entryUnbind = __webpack_require__(154);
8842
8843module.exports = entryUnbind('Array', 'includes');
8844
8845
8846/***/ }),
8847/* 129 */
8848/***/ (function(module, exports, __webpack_require__) {
8849
8850"use strict";
8851
8852var $ = __webpack_require__(130);
8853var $includes = __webpack_require__(77).includes;
8854var addToUnscopables = __webpack_require__(147);
8855
8856// `Array.prototype.includes` method
8857// https://tc39.github.io/ecma262/#sec-array.prototype.includes
8858$({ target: 'Array', proto: true }, {
8859  includes: function includes(el /* , fromIndex = 0 */) {
8860    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
8861  }
8862});
8863
8864// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
8865addToUnscopables('includes');
8866
8867
8868/***/ }),
8869/* 130 */
8870/***/ (function(module, exports, __webpack_require__) {
8871
8872var global = __webpack_require__(3);
8873var getOwnPropertyDescriptor = __webpack_require__(67).f;
8874var hide = __webpack_require__(17);
8875var redefine = __webpack_require__(135);
8876var setGlobal = __webpack_require__(41);
8877var copyConstructorProperties = __webpack_require__(139);
8878var isForced = __webpack_require__(146);
8879
8880/*
8881  options.target      - name of the target object
8882  options.global      - target is the global object
8883  options.stat        - export as static methods of target
8884  options.proto       - export as prototype methods of target
8885  options.real        - real prototype method for the `pure` version
8886  options.forced      - export even if the native feature is available
vendor: 4,140 bytes, lines 8887-9012
8887  options.bind        - bind methods to the target, required for the `pure` version
8888  options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version
8889  options.unsafe      - use the simple assignment of property instead of delete + defineProperty
8890  options.sham        - add a flag to not completely full polyfills
8891  options.enumerable  - export as enumerable property
8892  options.noTargetGet - prevent calling a getter on target
8893*/
8894module.exports = function (options, source) {
8895  var TARGET = options.target;
8896  var GLOBAL = options.global;
8897  var STATIC = options.stat;
8898  var FORCED, target, key, targetProperty, sourceProperty, descriptor;
8899  if (GLOBAL) {
8900    target = global;
8901  } else if (STATIC) {
8902    target = global[TARGET] || setGlobal(TARGET, {});
8903  } else {
8904    target = (global[TARGET] || {}).prototype;
8905  }
8906  if (target) for (key in source) {
8907    sourceProperty = source[key];
8908    if (options.noTargetGet) {
8909      descriptor = getOwnPropertyDescriptor(target, key);
8910      targetProperty = descriptor && descriptor.value;
8911    } else targetProperty = target[key];
8912    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
8913    // contained in target
8914    if (!FORCED && targetProperty !== undefined) {
8915      if (typeof sourceProperty === typeof targetProperty) continue;
8916      copyConstructorProperties(sourceProperty, targetProperty);
8917    }
8918    // add a flag to not completely full polyfills
8919    if (options.sham || (targetProperty && targetProperty.sham)) {
8920      hide(sourceProperty, 'sham', true);
8921    }
8922    // extend global
8923    redefine(target, key, sourceProperty, options);
8924  }
8925};
8926
8927
8928/***/ }),
8929/* 131 */
8930/***/ (function(module, exports, __webpack_require__) {
8931
8932"use strict";
8933
8934var nativePropertyIsEnumerable = {}.propertyIsEnumerable;
8935var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
8936
8937// Nashorn ~ JDK8 bug
8938var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);
8939
8940// `Object.prototype.propertyIsEnumerable` method implementation
8941// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable
8942exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
8943  var descriptor = getOwnPropertyDescriptor(this, V);
8944  return !!descriptor && descriptor.enumerable;
8945} : nativePropertyIsEnumerable;
8946
8947
8948/***/ }),
8949/* 132 */
8950/***/ (function(module, exports, __webpack_require__) {
8951
8952var fails = __webpack_require__(15);
8953var classof = __webpack_require__(133);
8954
8955var split = ''.split;
8956
8957// fallback for non-array-like ES3 and non-enumerable old V8 strings
8958module.exports = fails(function () {
8959  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
8960  // eslint-disable-next-line no-prototype-builtins
8961  return !Object('z').propertyIsEnumerable(0);
8962}) ? function (it) {
8963  return classof(it) == 'String' ? split.call(it, '') : Object(it);
8964} : Object;
8965
8966
8967/***/ }),
8968/* 133 */
8969/***/ (function(module, exports) {
8970
8971var toString = {}.toString;
8972
8973module.exports = function (it) {
8974  return toString.call(it).slice(8, -1);
8975};
8976
8977
8978/***/ }),
8979/* 134 */
8980/***/ (function(module, exports) {
8981
8982// `RequireObjectCoercible` abstract operation
8983// https://tc39.github.io/ecma262/#sec-requireobjectcoercible
8984module.exports = function (it) {
8985  if (it == undefined) throw TypeError("Can't call method on " + it);
8986  return it;
8987};
8988
8989
8990/***/ }),
8991/* 135 */
8992/***/ (function(module, exports, __webpack_require__) {
8993
8994var global = __webpack_require__(3);
8995var shared = __webpack_require__(25);
8996var hide = __webpack_require__(17);
8997var has = __webpack_require__(16);
8998var setGlobal = __webpack_require__(41);
8999var nativeFunctionToString = __webpack_require__(72);
9000var InternalStateModule = __webpack_require__(137);
9001
9002var getInternalState = InternalStateModule.get;
9003var enforceInternalState = InternalStateModule.enforce;
9004var TEMPLATE = String(nativeFunctionToString).split('toString');
9005
9006shared('inspectSource', function (it) {
9007  return nativeFunctionToString.call(it);
9008});
9009
9010(module.exports = function (O, key, value, options) {
9011  var unsafe = options ? !!options.unsafe : false;
9012  var simple = options ? !!options.enumerable : false;
vendor: 10,923 bytes, lines 9013-9421
9013  var noTargetGet = options ? !!options.noTargetGet : false;
9014  if (typeof value == 'function') {
9015    if (typeof key == 'string' && !has(value, 'name')) hide(value, 'name', key);
9016    enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');
9017  }
9018  if (O === global) {
9019    if (simple) O[key] = value;
9020    else setGlobal(key, value);
9021    return;
9022  } else if (!unsafe) {
9023    delete O[key];
9024  } else if (!noTargetGet && O[key]) {
9025    simple = true;
9026  }
9027  if (simple) O[key] = value;
9028  else hide(O, key, value);
9029// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
9030})(Function.prototype, 'toString', function toString() {
9031  return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this);
9032});
9033
9034
9035/***/ }),
9036/* 136 */
9037/***/ (function(module, exports) {
9038
9039module.exports = false;
9040
9041
9042/***/ }),
9043/* 137 */
9044/***/ (function(module, exports, __webpack_require__) {
9045
9046var NATIVE_WEAK_MAP = __webpack_require__(138);
9047var global = __webpack_require__(3);
9048var isObject = __webpack_require__(23);
9049var hide = __webpack_require__(17);
9050var objectHas = __webpack_require__(16);
9051var sharedKey = __webpack_require__(73);
9052var hiddenKeys = __webpack_require__(42);
9053
9054var WeakMap = global.WeakMap;
9055var set, get, has;
9056
9057var enforce = function (it) {
9058  return has(it) ? get(it) : set(it, {});
9059};
9060
9061var getterFor = function (TYPE) {
9062  return function (it) {
9063    var state;
9064    if (!isObject(it) || (state = get(it)).type !== TYPE) {
9065      throw TypeError('Incompatible receiver, ' + TYPE + ' required');
9066    } return state;
9067  };
9068};
9069
9070if (NATIVE_WEAK_MAP) {
9071  var store = new WeakMap();
9072  var wmget = store.get;
9073  var wmhas = store.has;
9074  var wmset = store.set;
9075  set = function (it, metadata) {
9076    wmset.call(store, it, metadata);
9077    return metadata;
9078  };
9079  get = function (it) {
9080    return wmget.call(store, it) || {};
9081  };
9082  has = function (it) {
9083    return wmhas.call(store, it);
9084  };
9085} else {
9086  var STATE = sharedKey('state');
9087  hiddenKeys[STATE] = true;
9088  set = function (it, metadata) {
9089    hide(it, STATE, metadata);
9090    return metadata;
9091  };
9092  get = function (it) {
9093    return objectHas(it, STATE) ? it[STATE] : {};
9094  };
9095  has = function (it) {
9096    return objectHas(it, STATE);
9097  };
9098}
9099
9100module.exports = {
9101  set: set,
9102  get: get,
9103  has: has,
9104  enforce: enforce,
9105  getterFor: getterFor
9106};
9107
9108
9109/***/ }),
9110/* 138 */
9111/***/ (function(module, exports, __webpack_require__) {
9112
9113var global = __webpack_require__(3);
9114var nativeFunctionToString = __webpack_require__(72);
9115
9116var WeakMap = global.WeakMap;
9117
9118module.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap));
9119
9120
9121/***/ }),
9122/* 139 */
9123/***/ (function(module, exports, __webpack_require__) {
9124
9125var has = __webpack_require__(16);
9126var ownKeys = __webpack_require__(140);
9127var getOwnPropertyDescriptorModule = __webpack_require__(67);
9128var definePropertyModule = __webpack_require__(40);
9129
9130module.exports = function (target, source) {
9131  var keys = ownKeys(source);
9132  var defineProperty = definePropertyModule.f;
9133  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
9134  for (var i = 0; i < keys.length; i++) {
9135    var key = keys[i];
9136    if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));
9137  }
9138};
9139
9140
9141/***/ }),
9142/* 140 */
9143/***/ (function(module, exports, __webpack_require__) {
9144
9145var getBuiltIn = __webpack_require__(75);
9146var getOwnPropertyNamesModule = __webpack_require__(142);
9147var getOwnPropertySymbolsModule = __webpack_require__(145);
9148var anObject = __webpack_require__(24);
9149
9150// all object keys, includes non-enumerable and symbols
9151module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {
9152  var keys = getOwnPropertyNamesModule.f(anObject(it));
9153  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
9154  return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;
9155};
9156
9157
9158/***/ }),
9159/* 141 */
9160/***/ (function(module, exports, __webpack_require__) {
9161
9162module.exports = __webpack_require__(3);
9163
9164
9165/***/ }),
9166/* 142 */
9167/***/ (function(module, exports, __webpack_require__) {
9168
9169var internalObjectKeys = __webpack_require__(76);
9170var enumBugKeys = __webpack_require__(43);
9171
9172var hiddenKeys = enumBugKeys.concat('length', 'prototype');
9173
9174// `Object.getOwnPropertyNames` method
9175// https://tc39.github.io/ecma262/#sec-object.getownpropertynames
9176exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
9177  return internalObjectKeys(O, hiddenKeys);
9178};
9179
9180
9181/***/ }),
9182/* 143 */
9183/***/ (function(module, exports, __webpack_require__) {
9184
9185var toInteger = __webpack_require__(78);
9186
9187var min = Math.min;
9188
9189// `ToLength` abstract operation
9190// https://tc39.github.io/ecma262/#sec-tolength
9191module.exports = function (argument) {
9192  return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
9193};
9194
9195
9196/***/ }),
9197/* 144 */
9198/***/ (function(module, exports, __webpack_require__) {
9199
9200var toInteger = __webpack_require__(78);
9201
9202var max = Math.max;
9203var min = Math.min;
9204
9205// Helper for a popular repeating case of the spec:
9206// Let integer be ? ToInteger(index).
9207// If integer < 0, let result be max((length + integer), 0); else let result be min(length, length).
9208module.exports = function (index, length) {
9209  var integer = toInteger(index);
9210  return integer < 0 ? max(integer + length, 0) : min(integer, length);
9211};
9212
9213
9214/***/ }),
9215/* 145 */
9216/***/ (function(module, exports) {
9217
9218exports.f = Object.getOwnPropertySymbols;
9219
9220
9221/***/ }),
9222/* 146 */
9223/***/ (function(module, exports, __webpack_require__) {
9224
9225var fails = __webpack_require__(15);
9226
9227var replacement = /#|\.prototype\./;
9228
9229var isForced = function (feature, detection) {
9230  var value = data[normalize(feature)];
9231  return value == POLYFILL ? true
9232    : value == NATIVE ? false
9233    : typeof detection == 'function' ? fails(detection)
9234    : !!detection;
9235};
9236
9237var normalize = isForced.normalize = function (string) {
9238  return String(string).replace(replacement, '.').toLowerCase();
9239};
9240
9241var data = isForced.data = {};
9242var NATIVE = isForced.NATIVE = 'N';
9243var POLYFILL = isForced.POLYFILL = 'P';
9244
9245module.exports = isForced;
9246
9247
9248/***/ }),
9249/* 147 */
9250/***/ (function(module, exports, __webpack_require__) {
9251
9252var wellKnownSymbol = __webpack_require__(148);
9253var create = __webpack_require__(150);
9254var hide = __webpack_require__(17);
9255
9256var UNSCOPABLES = wellKnownSymbol('unscopables');
9257var ArrayPrototype = Array.prototype;
9258
9259// Array.prototype[@@unscopables]
9260// https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables
9261if (ArrayPrototype[UNSCOPABLES] == undefined) {
9262  hide(ArrayPrototype, UNSCOPABLES, create(null));
9263}
9264
9265// add a key to Array.prototype[@@unscopables]
9266module.exports = function (key) {
9267  ArrayPrototype[UNSCOPABLES][key] = true;
9268};
9269
9270
9271/***/ }),
9272/* 148 */
9273/***/ (function(module, exports, __webpack_require__) {
9274
9275var global = __webpack_require__(3);
9276var shared = __webpack_require__(25);
9277var uid = __webpack_require__(74);
9278var NATIVE_SYMBOL = __webpack_require__(149);
9279
9280var Symbol = global.Symbol;
9281var store = shared('wks');
9282
9283module.exports = function (name) {
9284  return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name]
9285    || (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name));
9286};
9287
9288
9289/***/ }),
9290/* 149 */
9291/***/ (function(module, exports, __webpack_require__) {
9292
9293var fails = __webpack_require__(15);
9294
9295module.exports = !!Object.getOwnPropertySymbols && !fails(function () {
9296  // Chrome 38 Symbol has incorrect toString conversion
9297  // eslint-disable-next-line no-undef
9298  return !String(Symbol());
9299});
9300
9301
9302/***/ }),
9303/* 150 */
9304/***/ (function(module, exports, __webpack_require__) {
9305
9306var anObject = __webpack_require__(24);
9307var defineProperties = __webpack_require__(151);
9308var enumBugKeys = __webpack_require__(43);
9309var hiddenKeys = __webpack_require__(42);
9310var html = __webpack_require__(153);
9311var documentCreateElement = __webpack_require__(71);
9312var sharedKey = __webpack_require__(73);
9313var IE_PROTO = sharedKey('IE_PROTO');
9314
9315var PROTOTYPE = 'prototype';
9316var Empty = function () { /* empty */ };
9317
9318// Create object with fake `null` prototype: use iframe Object with cleared prototype
9319var createDict = function () {
9320  // Thrash, waste and sodomy: IE GC bug
9321  var iframe = documentCreateElement('iframe');
9322  var length = enumBugKeys.length;
9323  var lt = '<';
9324  var script = 'script';
9325  var gt = '>';
9326  var js = 'java' + script + ':';
9327  var iframeDocument;
9328  iframe.style.display = 'none';
9329  html.appendChild(iframe);
9330  iframe.src = String(js);
9331  iframeDocument = iframe.contentWindow.document;
9332  iframeDocument.open();
9333  iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt);
9334  iframeDocument.close();
9335  createDict = iframeDocument.F;
9336  while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]];
9337  return createDict();
9338};
9339
9340// `Object.create` method
9341// https://tc39.github.io/ecma262/#sec-object.create
9342module.exports = Object.create || function create(O, Properties) {
9343  var result;
9344  if (O !== null) {
9345    Empty[PROTOTYPE] = anObject(O);
9346    result = new Empty();
9347    Empty[PROTOTYPE] = null;
9348    // add "__proto__" for Object.getPrototypeOf polyfill
9349    result[IE_PROTO] = O;
9350  } else result = createDict();
9351  return Properties === undefined ? result : defineProperties(result, Properties);
9352};
9353
9354hiddenKeys[IE_PROTO] = true;
9355
9356
9357/***/ }),
9358/* 151 */
9359/***/ (function(module, exports, __webpack_require__) {
9360
9361var DESCRIPTORS = __webpack_require__(14);
9362var definePropertyModule = __webpack_require__(40);
9363var anObject = __webpack_require__(24);
9364var objectKeys = __webpack_require__(152);
9365
9366// `Object.defineProperties` method
9367// https://tc39.github.io/ecma262/#sec-object.defineproperties
9368module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {
9369  anObject(O);
9370  var keys = objectKeys(Properties);
9371  var length = keys.length;
9372  var index = 0;
9373  var key;
9374  while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);
9375  return O;
9376};
9377
9378
9379/***/ }),
9380/* 152 */
9381/***/ (function(module, exports, __webpack_require__) {
9382
9383var internalObjectKeys = __webpack_require__(76);
9384var enumBugKeys = __webpack_require__(43);
9385
9386// `Object.keys` method
9387// https://tc39.github.io/ecma262/#sec-object.keys
9388module.exports = Object.keys || function keys(O) {
9389  return internalObjectKeys(O, enumBugKeys);
9390};
9391
9392
9393/***/ }),
9394/* 153 */
9395/***/ (function(module, exports, __webpack_require__) {
9396
9397var getBuiltIn = __webpack_require__(75);
9398
9399module.exports = getBuiltIn('document', 'documentElement');
9400
9401
9402/***/ }),
9403/* 154 */
9404/***/ (function(module, exports, __webpack_require__) {
9405
9406var global = __webpack_require__(3);
9407var bind = __webpack_require__(155);
9408
9409var call = Function.call;
9410
9411module.exports = function (CONSTRUCTOR, METHOD, length) {
9412  return bind(call, global[CONSTRUCTOR].prototype[METHOD], length);
9413};
9414
9415
9416/***/ }),
9417/* 155 */
9418/***/ (function(module, exports, __webpack_require__) {
9419
9420var aFunction = __webpack_require__(156);
9421
9422// optional / simple context binding
9423module.exports = function (fn, that, length) {
9424  aFunction(fn);
9425  if (that === undefined) return fn;
9426  switch (length) {
9427    case 0: return function () {
9428      return fn.call(that);
9429    };
9430    case 1: return function (a) {
9431      return fn.call(that, a);
9432    };
9433    case 2: return function (a, b) {
9434      return fn.call(that, a, b);
9435    };
9436    case 3: return function (a, b, c) {
9437      return fn.call(that, a, b, c);
9438    };
9439  }
9440  return function (/* ...args */) {
9441    return fn.apply(that, arguments);
9442  };
9443};
9444
9445
9446/***/ }),
9447/* 156 */
9448/***/ (function(module, exports) {
9449
9450module.exports = function (it) {
9451  if (typeof it != 'function') {
9452    throw TypeError(String(it) + ' is not a function');
9453  } return it;
9454};
9455
9456
9457/***/ }),
9458/* 157 */
9459/***/ (function(module, __webpack_exports__, __webpack_require__) {
9460
9461"use strict";
9462__webpack_require__.r(__webpack_exports__);
9463/* harmony import */ var _Symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81);
9464/* harmony import */ var _getRawTag_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(160);
9465/* harmony import */ var _objectToString_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(161);
9466
9467
9468
9469
9470/** `Object#toString` result references. */
9471var nullTag = '[object Null]',
9472    undefinedTag = '[object Undefined]';
9473
9474/** Built-in value references. */
9475var symToStringTag = _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"] ? _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"].toStringTag : undefined;
9476
9477/**
9478 * The base implementation of `getTag` without fallbacks for buggy environments.
9479 *
9480 * @private
9481 * @param {*} value The value to query.
9482 * @returns {string} Returns the `toStringTag`.
9483 */
9484function baseGetTag(value) {
9485  if (value == null) {
9486    return value === undefined ? undefinedTag : nullTag;
9487  }
9488  return (symToStringTag && symToStringTag in Object(value))
9489    ? Object(_getRawTag_js__WEBPACK_IMPORTED_MODULE_1__["default"])(value)
9490    : Object(_objectToString_js__WEBPACK_IMPORTED_MODULE_2__["default"])(value);
9491}
9492
9493/* harmony default export */ __webpack_exports__["default"] = (baseGetTag);
9494
9495
9496/***/ }),
9497/* 158 */
9498/***/ (function(module, __webpack_exports__, __webpack_require__) {
9499
9500"use strict";
9501__webpack_require__.r(__webpack_exports__);
9502/* harmony import */ var _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(159);
9503
9504
9505/** Detect free variable `self`. */
9506var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
9507
9508/** Used as a reference to the global object. */
9509var root = _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__["default"] || freeSelf || Function('return this')();
9510
9511/* harmony default export */ __webpack_exports__["default"] = (root);
9512
9513
9514/***/ }),
9515/* 159 */
9516/***/ (function(module, __webpack_exports__, __webpack_require__) {
9517
9518"use strict";
9519__webpack_require__.r(__webpack_exports__);
9520/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */
9521var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
9522
9523/* harmony default export */ __webpack_exports__["default"] = (freeGlobal);
9524
9525/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(22)))
9526
9527/***/ }),
9528/* 160 */
9529/***/ (function(module, __webpack_exports__, __webpack_require__) {
9530
9531"use strict";
9532__webpack_require__.r(__webpack_exports__);
9533/* harmony import */ var _Symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81);
9534
9535
9536/** Used for built-in method references. */
9537var objectProto = Object.prototype;
9538
9539/** Used to check objects for own properties. */
9540var hasOwnProperty = objectProto.hasOwnProperty;
9541
9542/**
9543 * Used to resolve the
9544 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
9545 * of values.
9546 */
9547var nativeObjectToString = objectProto.toString;
9548
9549/** Built-in value references. */
9550var symToStringTag = _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"] ? _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"].toStringTag : undefined;
9551
9552/**
9553 * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
9554 *
9555 * @private
9556 * @param {*} value The value to query.
9557 * @returns {string} Returns the raw `toStringTag`.
9558 */
9559function getRawTag(value) {
9560  var isOwn = hasOwnProperty.call(value, symToStringTag),
9561      tag = value[symToStringTag];
9562
9563  try {
9564    value[symToStringTag] = undefined;
9565    var unmasked = true;
9566  } catch (e) {}
9567
9568  var result = nativeObjectToString.call(value);
9569  if (unmasked) {
9570    if (isOwn) {
9571      value[symToStringTag] = tag;
9572    } else {
9573      delete value[symToStringTag];
9574    }
9575  }
9576  return result;
9577}
9578
9579/* harmony default export */ __webpack_exports__["default"] = (getRawTag);
9580
9581
9582/***/ }),
9583/* 161 */
9584/***/ (function(module, __webpack_exports__, __webpack_require__) {
9585
9586"use strict";
9587__webpack_require__.r(__webpack_exports__);
9588/** Used for built-in method references. */
9589var objectProto = Object.prototype;
9590
9591/**
9592 * Used to resolve the
9593 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
9594 * of values.
9595 */
9596var nativeObjectToString = objectProto.toString;
9597
9598/**
9599 * Converts `value` to a string using `Object.prototype.toString`.
9600 *
9601 * @private
9602 * @param {*} value The value to convert.
9603 * @returns {string} Returns the converted string.
9604 */
9605function objectToString(value) {
9606  return nativeObjectToString.call(value);
9607}
9608
9609/* harmony default export */ __webpack_exports__["default"] = (objectToString);
9610
9611
9612/***/ }),
9613/* 162 */
9614/***/ (function(module, __webpack_exports__, __webpack_require__) {
9615
9616"use strict";
9617__webpack_require__.r(__webpack_exports__);
9618/* harmony import */ var _overArg_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(163);
9619
9620
9621/** Built-in value references. */
9622var getPrototype = Object(_overArg_js__WEBPACK_IMPORTED_MODULE_0__["default"])(Object.getPrototypeOf, Object);
9623
9624/* harmony default export */ __webpack_exports__["default"] = (getPrototype);
9625
9626
9627/***/ }),
9628/* 163 */
9629/***/ (function(module, __webpack_exports__, __webpack_require__) {
9630
9631"use strict";
9632__webpack_require__.r(__webpack_exports__);
9633/**
9634 * Creates a unary function that invokes `func` with its argument transformed.
9635 *
9636 * @private
9637 * @param {Function} func The function to wrap.
9638 * @param {Function} transform The argument transform.
9639 * @returns {Function} Returns the new function.
9640 */
9641function overArg(func, transform) {
9642  return function(arg) {
9643    return func(transform(arg));
9644  };
9645}
9646
9647/* harmony default export */ __webpack_exports__["default"] = (overArg);
9648
9649
9650/***/ }),
9651/* 164 */
9652/***/ (function(module, __webpack_exports__, __webpack_require__) {
9653
9654"use strict";
9655__webpack_require__.r(__webpack_exports__);
9656/**
9657 * Checks if `value` is object-like. A value is object-like if it's not `null`
9658 * and has a `typeof` result of "object".
9659 *
9660 * @static
9661 * @memberOf _
9662 * @since 4.0.0
9663 * @category Lang
9664 * @param {*} value The value to check.
9665 * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
9666 * @example
9667 *
9668 * _.isObjectLike({});
9669 * // => true
9670 *
9671 * _.isObjectLike([1, 2, 3]);
9672 * // => true
9673 *
9674 * _.isObjectLike(_.noop);
9675 * // => false
9676 *
9677 * _.isObjectLike(null);
9678 * // => false
9679 */
9680function isObjectLike(value) {
9681  return value != null && typeof value == 'object';
9682}
9683
9684/* harmony default export */ __webpack_exports__["default"] = (isObjectLike);
9685
9686
9687/***/ }),
9688/* 165 */
9689/***/ (function(module, __webpack_exports__, __webpack_require__) {
9690
9691"use strict";
9692__webpack_require__.r(__webpack_exports__);
9693/* WEBPACK VAR INJECTION */(function(global, module) {/* harmony import */ var _ponyfill_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(167);
9694/* global window */
9695
9696
9697var root;
9698
9699if (typeof self !== 'undefined') {
9700  root = self;
9701} else if (typeof window !== 'undefined') {
9702  root = window;
9703} else if (typeof global !== 'undefined') {
9704  root = global;
9705} else if (true) {
9706  root = module;
9707} else {}
9708
9709var result = Object(_ponyfill_js__WEBPACK_IMPORTED_MODULE_0__["default"])(root);
9710/* harmony default export */ __webpack_exports__["default"] = (result);
9711
9712/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(22), __webpack_require__(166)(module)))
9713
9714/***/ }),
9715/* 166 */
9716/***/ (function(module, exports) {
9717
9718module.exports = function(originalModule) {
9719	if (!originalModule.webpackPolyfill) {
9720		var module = Object.create(originalModule);
9721		// module.parent = undefined by default
9722		if (!module.children) module.children = [];
9723		Object.defineProperty(module, "loaded", {
9724			enumerable: true,
9725			get: function() {
9726				return module.l;
9727			}
9728		});
9729		Object.defineProperty(module, "id", {
9730			enumerable: true,
9731			get: function() {
9732				return module.i;
9733			}
9734		});
9735		Object.defineProperty(module, "exports", {
9736			enumerable: true
9737		});
9738		module.webpackPolyfill = 1;
9739	}
9740	return module;
9741};
9742
9743
9744/***/ }),
9745/* 167 */
9746/***/ (function(module, __webpack_exports__, __webpack_require__) {
9747
9748"use strict";
9749__webpack_require__.r(__webpack_exports__);
9750/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return symbolObservablePonyfill; });
9751function symbolObservablePonyfill(root) {
9752	var result;
9753	var Symbol = root.Symbol;
9754
9755	if (typeof Symbol === 'function') {
9756		if (Symbol.observable) {
9757			result = Symbol.observable;
9758		} else {
9759			result = Symbol('observable');
9760			Symbol.observable = result;
9761		}
9762	} else {
9763		result = '@@observable';
9764	}
9765
9766	return result;
9767};
9768
9769
9770/***/ }),
9771/* 168 */
9772/***/ (function(module, exports, __webpack_require__) {
9773
9774"use strict";
9775
9776
9777Object.defineProperty(exports, "__esModule", {
9778  value: true
9779});
9780exports["default"] = void 0;
9781
9782var _redux = __webpack_require__(79);
9783
9784var _IX2DataReducer = __webpack_require__(169);
9785
9786var _IX2RequestReducer = __webpack_require__(175);
9787
9788var _IX2SessionReducer = __webpack_require__(176);
9789
9790var _shared = __webpack_require__(10);
9791
9792var _IX2InstancesReducer = __webpack_require__(261);
9793
9794var _IX2ParametersReducer = __webpack_require__(262);
9795
9796var ixElements = _shared.IX2ElementsReducer.ixElements;
9797
9798var _default = (0, _redux.combineReducers)({
9799  ixData: _IX2DataReducer.ixData,
9800  ixRequest: _IX2RequestReducer.ixRequest,
9801  ixSession: _IX2SessionReducer.ixSession,
9802  ixElements: ixElements,
9803  ixInstances: _IX2InstancesReducer.ixInstances,
9804  ixParameters: _IX2ParametersReducer.ixParameters
9805});
9806
9807exports["default"] = _default;
9808
9809/***/ }),
9810/* 169 */
9811/***/ (function(module, exports, __webpack_require__) {
9812
9813"use strict";
9814
9815
9816Object.defineProperty(exports, "__esModule", {
9817  value: true
9818});
9819exports.ixData = void 0;
9820
9821var _constants = __webpack_require__(2);
9822
9823var IX2_RAW_DATA_IMPORTED = _constants.IX2EngineActionTypes.IX2_RAW_DATA_IMPORTED;
9824
9825var ixData = function ixData() {
9826  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Object.freeze({});
9827  var action = arguments.length > 1 ? arguments[1] : undefined;
9828
9829  switch (action.type) {
9830    case IX2_RAW_DATA_IMPORTED:
9831      {
9832        return action.payload.ixData || Object.freeze({});
9833      }
9834
9835    default:
9836      {
9837        return state;
9838      }
9839  }
9840};
9841
9842exports.ixData = ixData;
9843
9844/***/ }),
9845/* 170 */
9846/***/ (function(module, exports, __webpack_require__) {
9847
9848"use strict";
9849
9850
9851Object.defineProperty(exports, "__esModule", {
9852  value: true
9853});
9854exports.QuickEffectDirectionConsts = exports.QuickEffectIds = exports.EventLimitAffectedElements = exports.EventContinuousMouseAxes = exports.EventBasedOn = exports.EventAppliesTo = exports.EventTypeConsts = void 0;
9855/**
9856 * Event Type IDs
9857 */
9858
9859var EventTypeConsts = {
9860  NAVBAR_OPEN: 'NAVBAR_OPEN',
9861  NAVBAR_CLOSE: 'NAVBAR_CLOSE',
9862  TAB_ACTIVE: 'TAB_ACTIVE',
9863  TAB_INACTIVE: 'TAB_INACTIVE',
9864  SLIDER_ACTIVE: 'SLIDER_ACTIVE',
9865  SLIDER_INACTIVE: 'SLIDER_INACTIVE',
9866  DROPDOWN_OPEN: 'DROPDOWN_OPEN',
9867  DROPDOWN_CLOSE: 'DROPDOWN_CLOSE',
9868  MOUSE_CLICK: 'MOUSE_CLICK',
9869  MOUSE_SECOND_CLICK: 'MOUSE_SECOND_CLICK',
9870  MOUSE_DOWN: 'MOUSE_DOWN',
9871  MOUSE_UP: 'MOUSE_UP',
9872  MOUSE_OVER: 'MOUSE_OVER',
9873  MOUSE_OUT: 'MOUSE_OUT',
9874  MOUSE_MOVE: 'MOUSE_MOVE',
9875  MOUSE_MOVE_IN_VIEWPORT: 'MOUSE_MOVE_IN_VIEWPORT',
9876  SCROLL_INTO_VIEW: 'SCROLL_INTO_VIEW',
9877  SCROLL_OUT_OF_VIEW: 'SCROLL_OUT_OF_VIEW',
9878  SCROLLING_IN_VIEW: 'SCROLLING_IN_VIEW',
9879  ECOMMERCE_CART_OPEN: 'ECOMMERCE_CART_OPEN',
9880  ECOMMERCE_CART_CLOSE: 'ECOMMERCE_CART_CLOSE',
9881  PAGE_START: 'PAGE_START',
9882  PAGE_FINISH: 'PAGE_FINISH',
9883  PAGE_SCROLL_UP: 'PAGE_SCROLL_UP',
9884  PAGE_SCROLL_DOWN: 'PAGE_SCROLL_DOWN',
9885  PAGE_SCROLL: 'PAGE_SCROLL'
9886};
9887/**
9888 * Event Config Enums
9889 */
9890
9891exports.EventTypeConsts = EventTypeConsts;
9892var EventAppliesTo = {
9893  ELEMENT: 'ELEMENT',
9894  CLASS: 'CLASS',
9895  PAGE: 'PAGE'
9896};
9897exports.EventAppliesTo = EventAppliesTo;
9898var EventBasedOn = {
9899  ELEMENT: 'ELEMENT',
9900  VIEWPORT: 'VIEWPORT'
9901};
9902exports.EventBasedOn = EventBasedOn;
9903var EventContinuousMouseAxes = {
9904  X_AXIS: 'X_AXIS',
9905  Y_AXIS: 'Y_AXIS'
9906};
9907exports.EventContinuousMouseAxes = EventContinuousMouseAxes;
9908var EventLimitAffectedElements = {
9909  CHILDREN: 'CHILDREN',
9910  SIBLINGS: 'SIBLINGS',
9911  IMMEDIATE_CHILDREN: 'IMMEDIATE_CHILDREN'
9912};
9913/**
9914 * Quick Effect Enums
9915 */
9916
9917exports.EventLimitAffectedElements = EventLimitAffectedElements;
9918var QuickEffectIds = {
9919  FADE_EFFECT: 'FADE_EFFECT',
9920  SLIDE_EFFECT: 'SLIDE_EFFECT',
9921  GROW_EFFECT: 'GROW_EFFECT',
9922  SHRINK_EFFECT: 'SHRINK_EFFECT',
9923  SPIN_EFFECT: 'SPIN_EFFECT',
9924  FLY_EFFECT: 'FLY_EFFECT',
9925  POP_EFFECT: 'POP_EFFECT',
9926  FLIP_EFFECT: 'FLIP_EFFECT',
9927  JIGGLE_EFFECT: 'JIGGLE_EFFECT',
9928  PULSE_EFFECT: 'PULSE_EFFECT',
9929  DROP_EFFECT: 'DROP_EFFECT',
9930  BLINK_EFFECT: 'BLINK_EFFECT',
9931  BOUNCE_EFFECT: 'BOUNCE_EFFECT',
9932  FLIP_LEFT_TO_RIGHT_EFFECT: 'FLIP_LEFT_TO_RIGHT_EFFECT',
9933  FLIP_RIGHT_TO_LEFT_EFFECT: 'FLIP_RIGHT_TO_LEFT_EFFECT',
9934  RUBBER_BAND_EFFECT: 'RUBBER_BAND_EFFECT',
9935  JELLO_EFFECT: 'JELLO_EFFECT',
9936  GROW_BIG_EFFECT: 'GROW_BIG_EFFECT',
9937  SHRINK_BIG_EFFECT: 'SHRINK_BIG_EFFECT',
9938  PLUGIN_LOTTIE_EFFECT: 'PLUGIN_LOTTIE_EFFECT'
9939};
9940/**
9941 * Quick Effect Direction Enums
9942 */
9943
9944exports.QuickEffectIds = QuickEffectIds;
9945var QuickEffectDirectionConsts = {
9946  LEFT: 'LEFT',
9947  RIGHT: 'RIGHT',
9948  BOTTOM: 'BOTTOM',
9949  TOP: 'TOP',
9950  BOTTOM_LEFT: 'BOTTOM_LEFT',
9951  BOTTOM_RIGHT: 'BOTTOM_RIGHT',
9952  TOP_RIGHT: 'TOP_RIGHT',
9953  TOP_LEFT: 'TOP_LEFT',
9954  CLOCKWISE: 'CLOCKWISE',
9955  COUNTER_CLOCKWISE: 'COUNTER_CLOCKWISE'
9956};
9957exports.QuickEffectDirectionConsts = QuickEffectDirectionConsts;
9958
9959/***/ }),
9960/* 171 */
9961/***/ (function(module, exports, __webpack_require__) {
9962
9963"use strict";
9964
9965
9966Object.defineProperty(exports, "__esModule", {
9967  value: true
9968});
9969exports.ActionAppliesTo = exports.ActionTypeConsts = void 0;
9970var ActionTypeConsts = {
9971  TRANSFORM_MOVE: 'TRANSFORM_MOVE',
9972  TRANSFORM_SCALE: 'TRANSFORM_SCALE',
9973  TRANSFORM_ROTATE: 'TRANSFORM_ROTATE',
9974  TRANSFORM_SKEW: 'TRANSFORM_SKEW',
9975  STYLE_OPACITY: 'STYLE_OPACITY',
9976  STYLE_SIZE: 'STYLE_SIZE',
9977  STYLE_FILTER: 'STYLE_FILTER',
9978  STYLE_BACKGROUND_COLOR: 'STYLE_BACKGROUND_COLOR',
9979  STYLE_BORDER: 'STYLE_BORDER',
9980  STYLE_TEXT_COLOR: 'STYLE_TEXT_COLOR',
9981  PLUGIN_LOTTIE: 'PLUGIN_LOTTIE',
9982  GENERAL_DISPLAY: 'GENERAL_DISPLAY',
9983  GENERAL_START_ACTION: 'GENERAL_START_ACTION',
9984  GENERAL_CONTINUOUS_ACTION: 'GENERAL_CONTINUOUS_ACTION',
9985  // TODO: Clean these up below because they're not used at this time
9986  GENERAL_COMBO_CLASS: 'GENERAL_COMBO_CLASS',
9987  GENERAL_STOP_ACTION: 'GENERAL_STOP_ACTION',
9988  GENERAL_LOOP: 'GENERAL_LOOP',
9989  STYLE_BOX_SHADOW: 'STYLE_BOX_SHADOW'
9990};
9991exports.ActionTypeConsts = ActionTypeConsts;
9992var ActionAppliesTo = {
9993  ELEMENT: 'ELEMENT',
9994  ELEMENT_CLASS: 'ELEMENT_CLASS',
9995  TRIGGER_ELEMENT: 'TRIGGER_ELEMENT'
9996};
9997exports.ActionAppliesTo = ActionAppliesTo;
9998
9999/***/ }),
10000/* 172 */
10001/***/ (function(module, exports, __webpack_require__) {
10002
10003"use strict";
10004
10005
10006Object.defineProperty(exports, "__esModule", {
10007  value: true
10008});
10009exports.InteractionTypeConsts = void 0;
10010var InteractionTypeConsts = {
10011  MOUSE_CLICK_INTERACTION: 'MOUSE_CLICK_INTERACTION',
10012  MOUSE_HOVER_INTERACTION: 'MOUSE_HOVER_INTERACTION',
10013  MOUSE_MOVE_INTERACTION: 'MOUSE_MOVE_INTERACTION',
10014  SCROLL_INTO_VIEW_INTERACTION: 'SCROLL_INTO_VIEW_INTERACTION',
10015  SCROLLING_IN_VIEW_INTERACTION: 'SCROLLING_IN_VIEW_INTERACTION',
10016  MOUSE_MOVE_IN_VIEWPORT_INTERACTION: 'MOUSE_MOVE_IN_VIEWPORT_INTERACTION',
10017  PAGE_IS_SCROLLING_INTERACTION: 'PAGE_IS_SCROLLING_INTERACTION',
10018  PAGE_LOAD_INTERACTION: 'PAGE_LOAD_INTERACTION',
10019  PAGE_SCROLLED_INTERACTION: 'PAGE_SCROLLED_INTERACTION',
10020  NAVBAR_INTERACTION: 'NAVBAR_INTERACTION',
10021  DROPDOWN_INTERACTION: 'DROPDOWN_INTERACTION',
10022  ECOMMERCE_CART_INTERACTION: 'ECOMMERCE_CART_INTERACTION',
10023  TAB_INTERACTION: 'TAB_INTERACTION',
10024  SLIDER_INTERACTION: 'SLIDER_INTERACTION'
10025};
10026exports.InteractionTypeConsts = InteractionTypeConsts;
10027
10028/***/ }),
10029/* 173 */
10030/***/ (function(module, exports, __webpack_require__) {
10031
10032"use strict";
10033
10034
10035Object.defineProperty(exports, "__esModule", {
10036  value: true
10037});
10038exports.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;
10039var IX2_RAW_DATA_IMPORTED = 'IX2_RAW_DATA_IMPORTED';
10040exports.IX2_RAW_DATA_IMPORTED = IX2_RAW_DATA_IMPORTED;
10041var IX2_SESSION_INITIALIZED = 'IX2_SESSION_INITIALIZED';
10042exports.IX2_SESSION_INITIALIZED = IX2_SESSION_INITIALIZED;
10043var IX2_SESSION_STARTED = 'IX2_SESSION_STARTED';
10044exports.IX2_SESSION_STARTED = IX2_SESSION_STARTED;
10045var IX2_SESSION_STOPPED = 'IX2_SESSION_STOPPED';
10046exports.IX2_SESSION_STOPPED = IX2_SESSION_STOPPED;
10047var IX2_PREVIEW_REQUESTED = 'IX2_PREVIEW_REQUESTED';
10048exports.IX2_PREVIEW_REQUESTED = IX2_PREVIEW_REQUESTED;
10049var IX2_PLAYBACK_REQUESTED = 'IX2_PLAYBACK_REQUESTED';
10050exports.IX2_PLAYBACK_REQUESTED = IX2_PLAYBACK_REQUESTED;
10051var IX2_STOP_REQUESTED = 'IX2_STOP_REQUESTED';
10052exports.IX2_STOP_REQUESTED = IX2_STOP_REQUESTED;
10053var IX2_CLEAR_REQUESTED = 'IX2_CLEAR_REQUESTED';
10054exports.IX2_CLEAR_REQUESTED = IX2_CLEAR_REQUESTED;
10055var IX2_EVENT_LISTENER_ADDED = 'IX2_EVENT_LISTENER_ADDED';
10056exports.IX2_EVENT_LISTENER_ADDED = IX2_EVENT_LISTENER_ADDED;
10057var IX2_EVENT_STATE_CHANGED = 'IX2_EVENT_STATE_CHANGED';
10058exports.IX2_EVENT_STATE_CHANGED = IX2_EVENT_STATE_CHANGED;
10059var IX2_ANIMATION_FRAME_CHANGED = 'IX2_ANIMATION_FRAME_CHANGED';
10060exports.IX2_ANIMATION_FRAME_CHANGED = IX2_ANIMATION_FRAME_CHANGED;
10061var IX2_PARAMETER_CHANGED = 'IX2_PARAMETER_CHANGED';
10062exports.IX2_PARAMETER_CHANGED = IX2_PARAMETER_CHANGED;
10063var IX2_INSTANCE_ADDED = 'IX2_INSTANCE_ADDED';
10064exports.IX2_INSTANCE_ADDED = IX2_INSTANCE_ADDED;
10065var IX2_INSTANCE_STARTED = 'IX2_INSTANCE_STARTED';
10066exports.IX2_INSTANCE_STARTED = IX2_INSTANCE_STARTED;
10067var IX2_INSTANCE_REMOVED = 'IX2_INSTANCE_REMOVED';
10068exports.IX2_INSTANCE_REMOVED = IX2_INSTANCE_REMOVED;
10069var IX2_ELEMENT_STATE_CHANGED = 'IX2_ELEMENT_STATE_CHANGED';
10070exports.IX2_ELEMENT_STATE_CHANGED = IX2_ELEMENT_STATE_CHANGED;
10071var IX2_ACTION_LIST_PLAYBACK_CHANGED = 'IX2_ACTION_LIST_PLAYBACK_CHANGED';
10072exports.IX2_ACTION_LIST_PLAYBACK_CHANGED = IX2_ACTION_LIST_PLAYBACK_CHANGED;
10073var IX2_VIEWPORT_WIDTH_CHANGED = 'IX2_VIEWPORT_WIDTH_CHANGED';
10074exports.IX2_VIEWPORT_WIDTH_CHANGED = IX2_VIEWPORT_WIDTH_CHANGED;
10075var IX2_MEDIA_QUERIES_DEFINED = 'IX2_MEDIA_QUERIES_DEFINED';
10076exports.IX2_MEDIA_QUERIES_DEFINED = IX2_MEDIA_QUERIES_DEFINED;
10077var IX2_TEST_FRAME_RENDERED = 'IX2_TEST_FRAME_RENDERED';
10078exports.IX2_TEST_FRAME_RENDERED = IX2_TEST_FRAME_RENDERED;
10079
10080/***/ }),
10081/* 174 */
10082/***/ (function(module, exports, __webpack_require__) {
10083
10084"use strict";
10085
10086
10087Object.defineProperty(exports, "__esModule", {
10088  value: true
10089});
10090exports.RENDER_PLUGIN = exports.RENDER_STYLE = exports.RENDER_GENERAL = exports.RENDER_TRANSFORM = exp
10090orts.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;
10091var IX2_ID_DELIMITER = '|';
10092exports.IX2_ID_DELIMITER = IX2_ID_DELIMITER;
10093var WF_PAGE = 'data-wf-page';
10094exports.WF_PAGE = WF_PAGE;
10095var W_MOD_JS = 'w-mod-js';
10096exports.W_MOD_JS = W_MOD_JS;
10097var W_MOD_IX = 'w-mod-ix';
10098exports.W_MOD_IX = W_MOD_IX;
10099var BOUNDARY_SELECTOR = '.w-dyn-item';
10100exports.BOUNDARY_SELECTOR = BOUNDARY_SELECTOR;
10101var CONFIG_X_VALUE = 'xValue';
10102exports.CONFIG_X_VALUE = CONFIG_X_VALUE;
10103var CONFIG_Y_VALUE = 'yValue';
10104exports.CONFIG_Y_VALUE = CONFIG_Y_VALUE;
10105var CONFIG_Z_VALUE = 'zValue';
10106exports.CONFIG_Z_VALUE = CONFIG_Z_VALUE;
10107var CONFIG_VALUE = 'value';
10108exports.CONFIG_VALUE = CONFIG_VALUE;
10109var CONFIG_X_UNIT = 'xUnit';
10110exports.CONFIG_X_UNIT = CONFIG_X_UNIT;
10111var CONFIG_Y_UNIT = 'yUnit';
10112exports.CONFIG_Y_UNIT = CONFIG_Y_UNIT;
10113var CONFIG_Z_UNIT = 'zUnit';
10114exports.CONFIG_Z_UNIT = CONFIG_Z_UNIT;
10115var CONFIG_UNIT = 'unit';
10116exports.CONFIG_UNIT = CONFIG_UNIT;
10117var TRANSFORM = 'transform';
10118exports.TRANSFORM = TRANSFORM;
10119var TRANSLATE_X = 'translateX';
10120exports.TRANSLATE_X = TRANSLATE_X;
10121var TRANSLATE_Y = 'translateY';
10122exports.TRANSLATE_Y = TRANSLATE_Y;
10123var TRANSLATE_Z = 'translateZ';
10124exports.TRANSLATE_Z = TRANSLATE_Z;
10125var TRANSLATE_3D = 'translate3d';
10126exports.TRANSLATE_3D = TRANSLATE_3D;
10127var SCALE_X = 'scaleX';
10128exports.SCALE_X = SCALE_X;
10129var SCALE_Y = 'scaleY';
10130exports.SCALE_Y = SCALE_Y;
10131var SCALE_Z = 'scaleZ';
10132exports.SCALE_Z = SCALE_Z;
10133var SCALE_3D = 'scale3d';
10134exports.SCALE_3D = SCALE_3D;
10135var ROTATE_X = 'rotateX';
10136exports.ROTATE_X = ROTATE_X;
10137var ROTATE_Y = 'rotateY';
10138exports.ROTATE_Y = ROTATE_Y;
10139var ROTATE_Z = 'rotateZ';
10140exports.ROTATE_Z = ROTATE_Z;
10141var SKEW = 'skew';
10142exports.SKEW = SKEW;
10143var SKEW_X = 'skewX';
10144exports.SKEW_X = SKEW_X;
10145var SKEW_Y = 'skewY';
10146exports.SKEW_Y = SKEW_Y;
10147var OPACITY = 'opacity';
10148exports.OPACITY = OPACITY;
10149var FILTER = 'filter';
10150exports.FILTER = FILTER;
10151var WIDTH = 'width';
10152exports.WIDTH = WIDTH;
10153var HEIGHT = 'height';
10154exports.HEIGHT = HEIGHT;
10155var BACKGROUND_COLOR = 'backgroundColor';
10156exports.BACKGROUND_COLOR = BACKGROUND_COLOR;
10157var BACKGROUND = 'background';
10158exports.BACKGROUND = BACKGROUND;
10159var BORDER_COLOR = 'borderColor';
10160exports.BORDER_COLOR = BORDER_COLOR;
10161var COLOR = 'color';
10162exports.COLOR = COLOR;
10163var DISPLAY = 'display';
10164exports.DISPLAY = DISPLAY;
10165var FLEX = 'flex';
10166exports.FLEX = FLEX;
10167var WILL_CHANGE = 'willChange';
10168exports.WILL_CHANGE = WILL_CHANGE;
10169var AUTO = 'AUTO';
10170exports.AUTO = AUTO;
10171var COMMA_DELIMITER = ',';
10172exports.COMMA_DELIMITER = COMMA_DELIMITER;
10173var COLON_DELIMITER = ':';
10174exports.COLON_DELIMITER = COLON_DELIMITER;
10175var BAR_DELIMITER = '|';
10176exports.BAR_DELIMITER = BAR_DELIMITER;
10177var CHILDREN = 'CHILDREN';
10178exports.CHILDREN = CHILDREN;
10179var IMMEDIATE_CHILDREN = 'IMMEDIATE_CHILDREN';
10180exports.IMMEDIATE_CHILDREN = IMMEDIATE_CHILDREN;
10181var SIBLINGS = 'SIBLINGS';
10182exports.SIBLINGS = SIBLINGS;
10183var PARENT = 'PARENT';
10184exports.PARENT = PARENT;
10185var PRESERVE_3D = 'preserve-3d';
10186exports.PRESERVE_3D = PRESERVE_3D;
10187var HTML_ELEMENT = 'HTML_ELEMENT';
10188exports.HTML_ELEMENT = HTML_ELEMENT;
10189var PLAIN_OBJECT = 'PLAIN_OBJECT';
10190exports.PLAIN_OBJECT = PLAIN_OBJECT;
10191var ABSTRACT_NODE = 'ABSTRACT_NODE';
10192exports.ABSTRACT_NODE = ABSTRACT_NODE;
10193var RENDER_TRANSFORM = 'RENDER_TRANSFORM';
10194exports.RENDER_TRANSFORM = RENDER_TRANSFORM;
10195var RENDER_GENERAL = 'RENDER_GENERAL';
10196exports.RENDER_GENERAL = RENDER_GENERAL;
10197var RENDER_STYLE = 'RENDER_STYLE';
10198exports.RENDER_STYLE = RENDER_STYLE;
10199var RENDER_PLUGIN = 'RENDER_PLUGIN';
10200exports.RENDER_PLUGIN = RENDER_PLUGIN;
10201
10202/***/ }),
10203/* 175 */
10204/***/ (function(module, exports, __webpack_require__) {
10205
10206"use strict";
10207
10208
10209var _interopRequireDefault2 = __webpack_require__(0);
10210
10211var _defineProperty2 = _interopRequireDefault2(__webpack_require__(26));
10212
10213var _Object$create;
10214
10215var _interopRequireDefault = __webpack_require__(0);
10216
10217Object.defineProperty(exports, "__esModule", {
10218  value: true
10219});
10220exports.ixRequest = void 0;
10221
10222var _extends2 = _interopRequireDefault(__webpack_require__(27));
10223
10224var _constants = __webpack_require__(2);
10225
10226var _timm = __webpack_require__(18);
10227
10228var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
10229    IX2_PREVIEW_REQUESTED = _constants$IX2EngineA.IX2_PREVIEW_REQUESTED,
10230    IX2_PLAYBACK_REQUESTED = _constants$IX2EngineA.IX2_PLAYBACK_REQUESTED,
10231    IX2_STOP_REQUESTED = _constants$IX2EngineA.IX2_STOP_REQUESTED,
10232    IX2_CLEAR_REQUESTED = _constants$IX2EngineA.IX2_CLEAR_REQUESTED;
10233var initialState = {
10234  preview: {},
10235  playback: {},
10236  stop: {},
10237  clear: {}
10238};
10239var stateKeys = Object.create(null, (_Object$create = {}, (0, _defineProperty2["default"])(_Object$create, IX2_PREVIEW_REQUESTED, {
10240  value: 'preview'
10241}), (0, _defineProperty2["default"])(_Object$create, IX2_PLAYBACK_REQUESTED, {
10242  value: 'playback'
10243}), (0, _defineProperty2["default"])(_Object$create, IX2_STOP_REQUESTED, {
10244  value: 'stop'
10245}), (0, _defineProperty2["default"])(_Object$create, IX2_CLEAR_REQUESTED, {
10246  value: 'clear'
10247}), _Object$create));
10248
10249var ixRequest = function ixRequest() {
10250  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
10251  var action = arguments.length > 1 ? arguments[1] : undefined;
10252
10253  if (action.type in stateKeys) {
10254    var key = [stateKeys[action.type]];
10255    return (0, _timm.setIn)(state, [key], (0, _extends2["default"])({}, action.payload));
10256  }
10257
10258  return state;
10259};
10260
10261exports.ixRequest = ixRequest;
10262
10263/***/ }),
10264/* 176 */
10265/***/ (function(module, exports, __webpack_require__) {
10266
10267"use strict";
10268
10269
10270Object.defineProperty(exports, "__esModule", {
10271  value: true
10272});
10273exports.ixSession = void 0;
10274
10275var _constants = __webpack_require__(2);
10276
10277var _timm = __webpack_require__(18);
10278
10279var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
10280    IX2_SESSION_INITIALIZED = _constants$IX2EngineA.IX2_SESSION_INITIALIZED,
10281    IX2_SESSION_STARTED = _constants$IX2EngineA.IX2_SESSION_STARTED,
10282    IX2_TEST_FRAME_RENDERED = _constants$IX2EngineA.IX2_TEST_FRAME_RENDERED,
10283    IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED,
10284    IX2_EVENT_LISTENER_ADDED = _constants$IX2EngineA.IX2_EVENT_LISTENER_ADDED,
10285    IX2_EVENT_STATE_CHANGED = _constants$IX2EngineA.IX2_EVENT_STATE_CHANGED,
10286    IX2_ANIMATION_FRAME_CHANGED = _constants$IX2EngineA.IX2_ANIMATION_FRAME_CHANGED,
10287    IX2_ACTION_LIST_PLAYBACK_CHANGED = _constants$IX2EngineA.IX2_ACTION_LIST_PLAYBACK_CHANGED,
10288    IX2_VIEWPORT_WIDTH_CHANGED = _constants$IX2EngineA.IX2_VIEWPORT_WIDTH_CHANGED,
10289    IX2_MEDIA_QUERIES_DEFINED = _constants$IX2EngineA.IX2_MEDIA_QUERIES_DEFINED;
10290var initialState = {
10291  active: false,
10292  tick: 0,
10293  eventListeners: [],
10294  eventState: {},
10295  playbackState: {},
10296  viewportWidth: 0,
10297  mediaQueryKey: null,
10298  hasBoundaryNodes: false,
10299  hasDefinedMediaQueries: false
10300};
10301var TEST_FRAME_STEPS_SIZE = 20; // $FlowFixMe
10302
10303var ixSession = function ixSession() {
10304  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
10305  var action = arguments.length > 1 ? arguments[1] : undefined;
10306
10307  switch (action.type) {
10308    case IX2_SESSION_INITIALIZED:
10309      {
10310        var hasBoundaryNodes = action.payload.hasBoundaryNodes;
10311        return (0, _timm.set)(state, 'hasBoundaryNodes', hasBoundaryNodes);
10312      }
10313
10314    case IX2_SESSION_STARTED:
10315      {
10316        return (0, _timm.set)(state, 'active', true);
10317      }
10318
10319    case IX2_TEST_FRAME_RENDERED:
10320      {
10321        var _action$payload$step = action.payload.step,
10322            step = _action$payload$step === void 0 ? TEST_FRAME_STEPS_SIZE : _action$payload$step;
10323        return (0, _timm.set)(state, 'tick', state.tick + step);
10324      }
10325
10326    case IX2_SESSION_STOPPED:
10327      {
10328        return initialState;
10329      }
10330
10331    case IX2_ANIMATION_FRAME_CHANGED:
10332      {
10333        var now = action.payload.now;
10334        return (0, _timm.set)(state, 'tick', now);
10335      }
10336
10337    case IX2_EVENT_LISTENER_ADDED:
10338      {
10339        var eventListeners = (0, _timm.addLast)(state.eventListeners, action.payload);
10340        return (0, _timm.set)(state, 'eventListeners', eventListeners);
10341      }
10342
10343    case IX2_EVENT_STATE_CHANGED:
10344      {
10345        var _action$payload = action.payload,
10346            stateKey = _action$payload.stateKey,
10347            newState = _action$payload.newState;
10348        return (0, _timm.setIn)(state, ['eventState', stateKey], newState);
10349      }
10350
10351    case IX2_ACTION_LIST_PLAYBACK_CHANGED:
10352      {
10353        var _action$payload2 = action.payload,
10354            actionListId = _action$payload2.actionListId,
10355            isPlaying = _action$payload2.isPlaying;
10356        return (0, _timm.setIn)(state, ['playbackState', actionListId], isPlaying);
10357      }
10358
10359    case IX2_VIEWPORT_WIDTH_CHANGED:
10360      {
10361        var _action$payload3 = action.payload,
10362            width = _action$payload3.width,
10363            mediaQueries = _action$payload3.mediaQueries;
10364        var mediaQueryCount = mediaQueries.length;
10365        var mediaQueryKey = null;
10366
10367        for (var i = 0; i < mediaQueryCount; i++) {
10368          var _mediaQueries$i = mediaQueries[i],
10369              key = _mediaQueries$i.key,
10370              min = _mediaQueries$i.min,
10371              max = _mediaQueries$i.max;
10372
10373          if (width >= min && width <= max) {
10374            mediaQueryKey = key;
10375            break;
10376          }
10377        }
10378
10379        return (0, _timm.merge)(state, {
10380          viewportWidth: width,
10381          mediaQueryKey: mediaQueryKey
10382        });
10383      }
10384
10385    case IX2_MEDIA_QUERIES_DEFINED:
10386      {
10387        return (0, _timm.set)(state, 'hasDefinedMediaQueries', true);
10388      }
10389
10390    default:
10391      {
10392        return state;
10393      }
10394  }
10395};
10396
10397exports.ixSession = ixSession;
10398
10399/***/ }),
10400/* 177 */
10401/***/ (function(module, exports, __webpack_require__) {
10402
10403var baseIsMatch = __webpack_require__(178),
10404    getMatchData = __webpack_require__(230),
10405    matchesStrictComparable = __webpack_require__(102);
10406
10407/**
10408 * The base implementation of `_.matches` which doesn't clone `source`.
10409 *
10410 * @private
10411 * @param {Object} source The object of property values to match.
10412 * @returns {Function} Returns the new spec function.
10413 */
10414function baseMatches(source) {
10415  var matchData = getMatchData(source);
10416  if (matchData.length == 1 && matchData[0][2]) {
10417    return matchesStrictComparable(matchData[0][0], matchData[0][1]);
10418  }
10419  return function(object) {
10420    return object === source || baseIsMatch(object, source, matchData);
10421  };
10422}
10423
10424module.exports = baseMatches;
10425
10426
10427/***/ }),
10428/* 178 */
10429/***/ (function(module, exports, __webpack_require__) {
10430
10431var Stack = __webpack_require__(88),
10432    baseIsEqual = __webpack_require__(92);
10433
10434/** Used to compose bitmasks for value comparisons. */
10435var COMPARE_PARTIAL_FLAG = 1,
10436    COMPARE_UNORDERED_FLAG = 2;
10437
10438/**
10439 * The base implementation of `_.isMatch` without support for iteratee shorthands.
10440 *
10441 * @private
10442 * @param {Object} object The object to inspect.
10443 * @param {Object} source The object of property values to match.
10444 * @param {Array} matchData The property names, values, and compare flags to match.
10445 * @param {Function} [customizer] The function to customize comparisons.
10446 * @returns {boolean} Returns `true` if `object` is a match, else `false`.
10447 */
10448function baseIsMatch(object, source, matchData, customizer) {
10449  var index = matchData.length,
10450      length = index,
10451      noCustomizer = !customizer;
10452
10453  if (object == null) {
10454    return !length;
10455  }
10456  object = Object(object);
10457  while (index--) {
10458    var data = matchData[index];
10459    if ((noCustomizer && data[2])
10460          ? data[1] !== object[data[0]]
10461          : !(data[0] in object)
10462        ) {
10463      return false;
vendor: 4,246 bytes, lines 10464-10680
10464    }
10465  }
10466  while (++index < length) {
10467    data = matchData[index];
10468    var key = data[0],
10469        objValue = object[key],
10470        srcValue = data[1];
10471
10472    if (noCustomizer && data[2]) {
10473      if (objValue === undefined && !(key in object)) {
10474        return false;
10475      }
10476    } else {
10477      var stack = new Stack;
10478      if (customizer) {
10479        var result = customizer(objValue, srcValue, key, object, source, stack);
10480      }
10481      if (!(result === undefined
10482            ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)
10483            : result
10484          )) {
10485        return false;
10486      }
10487    }
10488  }
10489  return true;
10490}
10491
10492module.exports = baseIsMatch;
10493
10494
10495/***/ }),
10496/* 179 */
10497/***/ (function(module, exports) {
10498
10499/**
10500 * Removes all key-value entries from the list cache.
10501 *
10502 * @private
10503 * @name clear
10504 * @memberOf ListCache
10505 */
10506function listCacheClear() {
10507  this.__data__ = [];
10508  this.size = 0;
10509}
10510
10511module.exports = listCacheClear;
10512
10513
10514/***/ }),
10515/* 180 */
10516/***/ (function(module, exports, __webpack_require__) {
10517
10518var assocIndexOf = __webpack_require__(29);
10519
10520/** Used for built-in method references. */
10521var arrayProto = Array.prototype;
10522
10523/** Built-in value references. */
10524var splice = arrayProto.splice;
10525
10526/**
10527 * Removes `key` and its value from the list cache.
10528 *
10529 * @private
10530 * @name delete
10531 * @memberOf ListCache
10532 * @param {string} key The key of the value to remove.
10533 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
10534 */
10535function listCacheDelete(key) {
10536  var data = this.__data__,
10537      index = assocIndexOf(data, key);
10538
10539  if (index < 0) {
10540    return false;
10541  }
10542  var lastIndex = data.length - 1;
10543  if (index == lastIndex) {
10544    data.pop();
10545  } else {
10546    splice.call(data, index, 1);
10547  }
10548  --this.size;
10549  return true;
10550}
10551
10552module.exports = listCacheDelete;
10553
10554
10555/***/ }),
10556/* 181 */
10557/***/ (function(module, exports, __webpack_require__) {
10558
10559var assocIndexOf = __webpack_require__(29);
10560
10561/**
10562 * Gets the list cache value for `key`.
10563 *
10564 * @private
10565 * @name get
10566 * @memberOf ListCache
10567 * @param {string} key The key of the value to get.
10568 * @returns {*} Returns the entry value.
10569 */
10570function listCacheGet(key) {
10571  var data = this.__data__,
10572      index = assocIndexOf(data, key);
10573
10574  return index < 0 ? undefined : data[index][1];
10575}
10576
10577module.exports = listCacheGet;
10578
10579
10580/***/ }),
10581/* 182 */
10582/***/ (function(module, exports, __webpack_require__) {
10583
10584var assocIndexOf = __webpack_require__(29);
10585
10586/**
10587 * Checks if a list cache value for `key` exists.
10588 *
10589 * @private
10590 * @name has
10591 * @memberOf ListCache
10592 * @param {string} key The key of the entry to check.
10593 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
10594 */
10595function listCacheHas(key) {
10596  return assocIndexOf(this.__data__, key) > -1;
10597}
10598
10599module.exports = listCacheHas;
10600
10601
10602/***/ }),
10603/* 183 */
10604/***/ (function(module, exports, __webpack_require__) {
10605
10606var assocIndexOf = __webpack_require__(29);
10607
10608/**
10609 * Sets the list cache `key` to `value`.
10610 *
10611 * @private
10612 * @name set
10613 * @memberOf ListCache
10614 * @param {string} key The key of the value to set.
10615 * @param {*} value The value to set.
10616 * @returns {Object} Returns the list cache instance.
10617 */
10618function listCacheSet(key, value) {
10619  var data = this.__data__,
10620      index = assocIndexOf(data, key);
10621
10622  if (index < 0) {
10623    ++this.size;
10624    data.push([key, value]);
10625  } else {
10626    data[index][1] = value;
10627  }
10628  return this;
10629}
10630
10631module.exports = listCacheSet;
10632
10633
10634/***/ }),
10635/* 184 */
10636/***/ (function(module, exports, __webpack_require__) {
10637
10638var ListCache = __webpack_require__(28);
10639
10640/**
10641 * Removes all key-value entries from the stack.
10642 *
10643 * @private
10644 * @name clear
10645 * @memberOf Stack
10646 */
10647function stackClear() {
10648  this.__data__ = new ListCache;
10649  this.size = 0;
10650}
10651
10652module.exports = stackClear;
10653
10654
10655/***/ }),
10656/* 185 */
10657/***/ (function(module, exports) {
10658
10659/**
10660 * Removes `key` and its value from the stack.
10661 *
10662 * @private
10663 * @name delete
10664 * @memberOf Stack
10665 * @param {string} key The key of the value to remove.
10666 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
10667 */
10668function stackDelete(key) {
10669  var data = this.__data__,
10670      result = data['delete'](key);
10671
10672  this.size = data.size;
10673  return result;
10674}
10675
10676module.exports = stackDelete;
10677
10678
10679/***/ }),
10680/* 186 */
vendor: 11,191 bytes, lines 10681-11177
10681/***/ (function(module, exports) {
10682
10683/**
10684 * Gets the stack value for `key`.
10685 *
10686 * @private
10687 * @name get
10688 * @memberOf Stack
10689 * @param {string} key The key of the value to get.
10690 * @returns {*} Returns the entry value.
10691 */
10692function stackGet(key) {
10693  return this.__data__.get(key);
10694}
10695
10696module.exports = stackGet;
10697
10698
10699/***/ }),
10700/* 187 */
10701/***/ (function(module, exports) {
10702
10703/**
10704 * Checks if a stack value for `key` exists.
10705 *
10706 * @private
10707 * @name has
10708 * @memberOf Stack
10709 * @param {string} key The key of the entry to check.
10710 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
10711 */
10712function stackHas(key) {
10713  return this.__data__.has(key);
10714}
10715
10716module.exports = stackHas;
10717
10718
10719/***/ }),
10720/* 188 */
10721/***/ (function(module, exports, __webpack_require__) {
10722
10723var ListCache = __webpack_require__(28),
10724    Map = __webpack_require__(48),
10725    MapCache = __webpack_require__(49);
10726
10727/** Used as the size to enable large array optimizations. */
10728var LARGE_ARRAY_SIZE = 200;
10729
10730/**
10731 * Sets the stack `key` to `value`.
10732 *
10733 * @private
10734 * @name set
10735 * @memberOf Stack
10736 * @param {string} key The key of the value to set.
10737 * @param {*} value The value to set.
10738 * @returns {Object} Returns the stack cache instance.
10739 */
10740function stackSet(key, value) {
10741  var data = this.__data__;
10742  if (data instanceof ListCache) {
10743    var pairs = data.__data__;
10744    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {
10745      pairs.push([key, value]);
10746      this.size = ++data.size;
10747      return this;
10748    }
10749    data = this.__data__ = new MapCache(pairs);
10750  }
10751  data.set(key, value);
10752  this.size = data.size;
10753  return this;
10754}
10755
10756module.exports = stackSet;
10757
10758
10759/***/ }),
10760/* 189 */
10761/***/ (function(module, exports, __webpack_require__) {
10762
10763var isFunction = __webpack_require__(89),
10764    isMasked = __webpack_require__(192),
10765    isObject = __webpack_require__(6),
10766    toSource = __webpack_require__(91);
10767
10768/**
10769 * Used to match `RegExp`
10770 * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
10771 */
10772var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
10773
10774/** Used to detect host constructors (Safari). */
10775var reIsHostCtor = /^\[object .+?Constructor\]$/;
10776
10777/** Used for built-in method references. */
10778var funcProto = Function.prototype,
10779    objectProto = Object.prototype;
10780
10781/** Used to resolve the decompiled source of functions. */
10782var funcToString = funcProto.toString;
10783
10784/** Used to check objects for own properties. */
10785var hasOwnProperty = objectProto.hasOwnProperty;
10786
10787/** Used to detect if a method is native. */
10788var reIsNative = RegExp('^' +
10789  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&')
10790  .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
10791);
10792
10793/**
10794 * The base implementation of `_.isNative` without bad shim checks.
10795 *
10796 * @private
10797 * @param {*} value The value to check.
10798 * @returns {boolean} Returns `true` if `value` is a native function,
10799 *  else `false`.
10800 */
10801function baseIsNative(value) {
10802  if (!isObject(value) || isMasked(value)) {
10803    return false;
10804  }
10805  var pattern = isFunction(value) ? reIsNative : reIsHostCtor;
10806  return pattern.test(toSource(value));
10807}
10808
10809module.exports = baseIsNative;
10810
10811
10812/***/ }),
10813/* 190 */
10814/***/ (function(module, exports, __webpack_require__) {
10815
10816var Symbol = __webpack_require__(19);
10817
10818/** Used for built-in method references. */
10819var objectProto = Object.prototype;
10820
10821/** Used to check objects for own properties. */
10822var hasOwnProperty = objectProto.hasOwnProperty;
10823
10824/**
10825 * Used to resolve the
10826 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
10827 * of values.
10828 */
10829var nativeObjectToString = objectProto.toString;
10830
10831/** Built-in value references. */
10832var symToStringTag = Symbol ? Symbol.toStringTag : undefined;
10833
10834/**
10835 * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
10836 *
10837 * @private
10838 * @param {*} value The value to query.
10839 * @returns {string} Returns the raw `toStringTag`.
10840 */
10841function getRawTag(value) {
10842  var isOwn = hasOwnProperty.call(value, symToStringTag),
10843      tag = value[symToStringTag];
10844
10845  try {
10846    value[symToStringTag] = undefined;
10847    var unmasked = true;
10848  } catch (e) {}
10849
10850  var result = nativeObjectToString.call(value);
10851  if (unmasked) {
10852    if (isOwn) {
10853      value[symToStringTag] = tag;
10854    } else {
10855      delete value[symToStringTag];
10856    }
10857  }
10858  return result;
10859}
10860
10861module.exports = getRawTag;
10862
10863
10864/***/ }),
10865/* 191 */
10866/***/ (function(module, exports) {
10867
10868/** Used for built-in method references. */
10869var objectProto = Object.prototype;
10870
10871/**
10872 * Used to resolve the
10873 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
10874 * of values.
10875 */
10876var nativeObjectToString = objectProto.toString;
10877
10878/**
10879 * Converts `value` to a string using `Object.prototype.toString`.
10880 *
10881 * @private
10882 * @param {*} value The value to convert.
10883 * @returns {string} Returns the converted string.
10884 */
10885function objectToString(value) {
10886  return nativeObjectToString.call(value);
10887}
10888
10889module.exports = objectToString;
10890
10891
10892/***/ }),
10893/* 192 */
10894/***/ (function(module, exports, __webpack_require__) {
10895
10896var coreJsData = __webpack_require__(193);
10897
10898/** Used to detect methods masquerading as native. */
10899var maskSrcKey = (function() {
10900  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
10901  return uid ? ('Symbol(src)_1.' + uid) : '';
10902}());
10903
10904/**
10905 * Checks if `func` has its source masked.
10906 *
10907 * @private
10908 * @param {Function} func The function to check.
10909 * @returns {boolean} Returns `true` if `func` is masked, else `false`.
10910 */
10911function isMasked(func) {
10912  return !!maskSrcKey && (maskSrcKey in func);
10913}
10914
10915module.exports = isMasked;
10916
10917
10918/***/ }),
10919/* 193 */
10920/***/ (function(module, exports, __webpack_require__) {
10921
10922var root = __webpack_require__(4);
10923
10924/** Used to detect overreaching core-js shims. */
10925var coreJsData = root['__core-js_shared__'];
10926
10927module.exports = coreJsData;
10928
10929
10930/***/ }),
10931/* 194 */
10932/***/ (function(module, exports) {
10933
10934/**
10935 * Gets the value at `key` of `object`.
10936 *
10937 * @private
10938 * @param {Object} [object] The object to query.
10939 * @param {string} key The key of the property to get.
10940 * @returns {*} Returns the property value.
10941 */
10942function getValue(object, key) {
10943  return object == null ? undefined : object[key];
10944}
10945
10946module.exports = getValue;
10947
10948
10949/***/ }),
10950/* 195 */
10951/***/ (function(module, exports, __webpack_require__) {
10952
10953var Hash = __webpack_require__(196),
10954    ListCache = __webpack_require__(28),
10955    Map = __webpack_require__(48);
10956
10957/**
10958 * Removes all key-value entries from the map.
10959 *
10960 * @private
10961 * @name clear
10962 * @memberOf MapCache
10963 */
10964function mapCacheClear() {
10965  this.size = 0;
10966  this.__data__ = {
10967    'hash': new Hash,
10968    'map': new (Map || ListCache),
10969    'string': new Hash
10970  };
10971}
10972
10973module.exports = mapCacheClear;
10974
10975
10976/***/ }),
10977/* 196 */
10978/***/ (function(module, exports, __webpack_require__) {
10979
10980var hashClear = __webpack_require__(197),
10981    hashDelete = __webpack_require__(198),
10982    hashGet = __webpack_require__(199),
10983    hashHas = __webpack_require__(200),
10984    hashSet = __webpack_require__(201);
10985
10986/**
10987 * Creates a hash object.
10988 *
10989 * @private
10990 * @constructor
10991 * @param {Array} [entries] The key-value pairs to cache.
10992 */
10993function Hash(entries) {
10994  var index = -1,
10995      length = entries == null ? 0 : entries.length;
10996
10997  this.clear();
10998  while (++index < length) {
10999    var entry = entries[index];
11000    this.set(entry[0], entry[1]);
11001  }
11002}
11003
11004// Add methods to `Hash`.
11005Hash.prototype.clear = hashClear;
11006Hash.prototype['delete'] = hashDelete;
11007Hash.prototype.get = hashGet;
11008Hash.prototype.has = hashHas;
11009Hash.prototype.set = hashSet;
11010
11011module.exports = Hash;
11012
11013
11014/***/ }),
11015/* 197 */
11016/***/ (function(module, exports, __webpack_require__) {
11017
11018var nativeCreate = __webpack_require__(30);
11019
11020/**
11021 * Removes all key-value entries from the hash.
11022 *
11023 * @private
11024 * @name clear
11025 * @memberOf Hash
11026 */
11027function hashClear() {
11028  this.__data__ = nativeCreate ? nativeCreate(null) : {};
11029  this.size = 0;
11030}
11031
11032module.exports = hashClear;
11033
11034
11035/***/ }),
11036/* 198 */
11037/***/ (function(module, exports) {
11038
11039/**
11040 * Removes `key` and its value from the hash.
11041 *
11042 * @private
11043 * @name delete
11044 * @memberOf Hash
11045 * @param {Object} hash The hash to modify.
11046 * @param {string} key The key of the value to remove.
11047 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
11048 */
11049function hashDelete(key) {
11050  var result = this.has(key) && delete this.__data__[key];
11051  this.size -= result ? 1 : 0;
11052  return result;
11053}
11054
11055module.exports = hashDelete;
11056
11057
11058/***/ }),
11059/* 199 */
11060/***/ (function(module, exports, __webpack_require__) {
11061
11062var nativeCreate = __webpack_require__(30);
11063
11064/** Used to stand-in for `undefined` hash values. */
11065var HASH_UNDEFINED = '__lodash_hash_undefined__';
11066
11067/** Used for built-in method references. */
11068var objectProto = Object.prototype;
11069
11070/** Used to check objects for own properties. */
11071var hasOwnProperty = objectProto.hasOwnProperty;
11072
11073/**
11074 * Gets the hash value for `key`.
11075 *
11076 * @private
11077 * @name get
11078 * @memberOf Hash
11079 * @param {string} key The key of the value to get.
11080 * @returns {*} Returns the entry value.
11081 */
11082function hashGet(key) {
11083  var data = this.__data__;
11084  if (nativeCreate) {
11085    var result = data[key];
11086    return result === HASH_UNDEFINED ? undefined : result;
11087  }
11088  return hasOwnProperty.call(data, key) ? data[key] : undefined;
11089}
11090
11091module.exports = hashGet;
11092
11093
11094/***/ }),
11095/* 200 */
11096/***/ (function(module, exports, __webpack_require__) {
11097
11098var nativeCreate = __webpack_require__(30);
11099
11100/** Used for built-in method references. */
11101var objectProto = Object.prototype;
11102
11103/** Used to check objects for own properties. */
11104var hasOwnProperty = objectProto.hasOwnProperty;
11105
11106/**
11107 * Checks if a hash value for `key` exists.
11108 *
11109 * @private
11110 * @name has
11111 * @memberOf Hash
11112 * @param {string} key The key of the entry to check.
11113 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
11114 */
11115function hashHas(key) {
11116  var data = this.__data__;
11117  return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);
11118}
11119
11120module.exports = hashHas;
11121
11122
11123/***/ }),
11124/* 201 */
11125/***/ (function(module, exports, __webpack_require__) {
11126
11127var nativeCreate = __webpack_require__(30);
11128
11129/** Used to stand-in for `undefined` hash values. */
11130var HASH_UNDEFINED = '__lodash_hash_undefined__';
11131
11132/**
11133 * Sets the hash `key` to `value`.
11134 *
11135 * @private
11136 * @name set
11137 * @memberOf Hash
11138 * @param {string} key The key of the value to set.
11139 * @param {*} value The value to set.
11140 * @returns {Object} Returns the hash instance.
11141 */
11142function hashSet(key, value) {
11143  var data = this.__data__;
11144  this.size += this.has(key) ? 0 : 1;
11145  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;
11146  return this;
11147}
11148
11149module.exports = hashSet;
11150
11151
11152/***/ }),
11153/* 202 */
11154/***/ (function(module, exports, __webpack_require__) {
11155
11156var getMapData = __webpack_require__(31);
11157
11158/**
11159 * Removes `key` and its value from the map.
11160 *
11161 * @private
11162 * @name delete
11163 * @memberOf MapCache
11164 * @param {string} key The key of the value to remove.
11165 * @returns {boolean} Returns `true` if the entry was removed, else `false`.
11166 */
11167function mapCacheDelete(key) {
11168  var result = getMapData(this, key)['delete'](key);
11169  this.size -= result ? 1 : 0;
11170  return result;
11171}
11172
11173module.exports = mapCacheDelete;
11174
11175
11176/***/ }),
11177/* 203 */
vendor: 13,821 bytes, lines 11178-11698
11178/***/ (function(module, exports) {
11179
11180/**
11181 * Checks if `value` is suitable for use as unique object key.
11182 *
11183 * @private
11184 * @param {*} value The value to check.
11185 * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
11186 */
11187function isKeyable(value) {
11188  var type = typeof value;
11189  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')
11190    ? (value !== '__proto__')
11191    : (value === null);
11192}
11193
11194module.exports = isKeyable;
11195
11196
11197/***/ }),
11198/* 204 */
11199/***/ (function(module, exports, __webpack_require__) {
11200
11201var getMapData = __webpack_require__(31);
11202
11203/**
11204 * Gets the map value for `key`.
11205 *
11206 * @private
11207 * @name get
11208 * @memberOf MapCache
11209 * @param {string} key The key of the value to get.
11210 * @returns {*} Returns the entry value.
11211 */
11212function mapCacheGet(key) {
11213  return getMapData(this, key).get(key);
11214}
11215
11216module.exports = mapCacheGet;
11217
11218
11219/***/ }),
11220/* 205 */
11221/***/ (function(module, exports, __webpack_require__) {
11222
11223var getMapData = __webpack_require__(31);
11224
11225/**
11226 * Checks if a map value for `key` exists.
11227 *
11228 * @private
11229 * @name has
11230 * @memberOf MapCache
11231 * @param {string} key The key of the entry to check.
11232 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
11233 */
11234function mapCacheHas(key) {
11235  return getMapData(this, key).has(key);
11236}
11237
11238module.exports = mapCacheHas;
11239
11240
11241/***/ }),
11242/* 206 */
11243/***/ (function(module, exports, __webpack_require__) {
11244
11245var getMapData = __webpack_require__(31);
11246
11247/**
11248 * Sets the map `key` to `value`.
11249 *
11250 * @private
11251 * @name set
11252 * @memberOf MapCache
11253 * @param {string} key The key of the value to set.
11254 * @param {*} value The value to set.
11255 * @returns {Object} Returns the map cache instance.
11256 */
11257function mapCacheSet(key, value) {
11258  var data = getMapData(this, key),
11259      size = data.size;
11260
11261  data.set(key, value);
11262  this.size += data.size == size ? 0 : 1;
11263  return this;
11264}
11265
11266module.exports = mapCacheSet;
11267
11268
11269/***/ }),
11270/* 207 */
11271/***/ (function(module, exports, __webpack_require__) {
11272
11273var Stack = __webpack_require__(88),
11274    equalArrays = __webpack_require__(93),
11275    equalByTag = __webpack_require__(213),
11276    equalObjects = __webpack_require__(217),
11277    getTag = __webpack_require__(57),
11278    isArray = __webpack_require__(1),
11279    isBuffer = __webpack_require__(51),
11280    isTypedArray = __webpack_require__(53);
11281
11282/** Used to compose bitmasks for value comparisons. */
11283var COMPARE_PARTIAL_FLAG = 1;
11284
11285/** `Object#toString` result references. */
11286var argsTag = '[object Arguments]',
11287    arrayTag = '[object Array]',
11288    objectTag = '[object Object]';
11289
11290/** Used for built-in method references. */
11291var objectProto = Object.prototype;
11292
11293/** Used to check objects for own properties. */
11294var hasOwnProperty = objectProto.hasOwnProperty;
11295
11296/**
11297 * A specialized version of `baseIsEqual` for arrays and objects which performs
11298 * deep comparisons and tracks traversed objects enabling objects with circular
11299 * references to be compared.
11300 *
11301 * @private
11302 * @param {Object} object The object to compare.
11303 * @param {Object} other The other object to compare.
11304 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
11305 * @param {Function} customizer The function to customize comparisons.
11306 * @param {Function} equalFunc The function to determine equivalents of values.
11307 * @param {Object} [stack] Tracks traversed `object` and `other` objects.
11308 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
11309 */
11310function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {
11311  var objIsArr = isArray(object),
11312      othIsArr = isArray(other),
11313      objTag = objIsArr ? arrayTag : getTag(object),
11314      othTag = othIsArr ? arrayTag : getTag(other);
11315
11316  objTag = objTag == argsTag ? objectTag : objTag;
11317  othTag = othTag == argsTag ? objectTag : othTag;
11318
11319  var objIsObj = objTag == objectTag,
11320      othIsObj = othTag == objectTag,
11321      isSameTag = objTag == othTag;
11322
11323  if (isSameTag && isBuffer(object)) {
11324    if (!isBuffer(other)) {
11325      return false;
11326    }
11327    objIsArr = true;
11328    objIsObj = false;
11329  }
11330  if (isSameTag && !objIsObj) {
11331    stack || (stack = new Stack);
11332    return (objIsArr || isTypedArray(object))
11333      ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)
11334      : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);
11335  }
11336  if (!(bitmask & COMPARE_PARTIAL_FLAG)) {
11337    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
11338        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
11339
11340    if (objIsWrapped || othIsWrapped) {
11341      var objUnwrapped = objIsWrapped ? object.value() : object,
11342          othUnwrapped = othIsWrapped ? other.value() : other;
11343
11344      stack || (stack = new Stack);
11345      return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);
11346    }
11347  }
11348  if (!isSameTag) {
11349    return false;
11350  }
11351  stack || (stack = new Stack);
11352  return equalObjects(object, other, bitmask, customizer, equalFunc, stack);
11353}
11354
11355module.exports = baseIsEqualDeep;
11356
11357
11358/***/ }),
11359/* 208 */
11360/***/ (function(module, exports, __webpack_require__) {
11361
11362var MapCache = __webpack_require__(49),
11363    setCacheAdd = __webpack_require__(209),
11364    setCacheHas = __webpack_require__(210);
11365
11366/**
11367 *
11368 * Creates an array cache object to store unique values.
11369 *
11370 * @private
11371 * @constructor
11372 * @param {Array} [values] The values to cache.
11373 */
11374function SetCache(values) {
11375  var index = -1,
11376      length = values == null ? 0 : values.length;
11377
11378  this.__data__ = new MapCache;
11379  while (++index < length) {
11380    this.add(values[index]);
11381  }
11382}
11383
11384// Add methods to `SetCache`.
11385SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
11386SetCache.prototype.has = setCacheHas;
11387
11388module.exports = SetCache;
11389
11390
11391/***/ }),
11392/* 209 */
11393/***/ (function(module, exports) {
11394
11395/** Used to stand-in for `undefined` hash values. */
11396var HASH_UNDEFINED = '__lodash_hash_undefined__';
11397
11398/**
11399 * Adds `value` to the array cache.
11400 *
11401 * @private
11402 * @name add
11403 * @memberOf SetCache
11404 * @alias push
11405 * @param {*} value The value to cache.
11406 * @returns {Object} Returns the cache instance.
11407 */
11408function setCacheAdd(value) {
11409  this.__data__.set(value, HASH_UNDEFINED);
11410  return this;
11411}
11412
11413module.exports = setCacheAdd;
11414
11415
11416/***/ }),
11417/* 210 */
11418/***/ (function(module, exports) {
11419
11420/**
11421 * Checks if `value` is in the array cache.
11422 *
11423 * @private
11424 * @name has
11425 * @memberOf SetCache
11426 * @param {*} value The value to search for.
11427 * @returns {number} Returns `true` if `value` is found, else `false`.
11428 */
11429function setCacheHas(value) {
11430  return this.__data__.has(value);
11431}
11432
11433module.exports = setCacheHas;
11434
11435
11436/***/ }),
11437/* 211 */
11438/***/ (function(module, exports) {
11439
11440/**
11441 * A specialized version of `_.some` for arrays without support for iteratee
11442 * shorthands.
11443 *
11444 * @private
11445 * @param {Array} [array] The array to iterate over.
11446 * @param {Function} predicate The function invoked per iteration.
11447 * @returns {boolean} Returns `true` if any element passes the predicate check,
11448 *  else `false`.
11449 */
11450function arraySome(array, predicate) {
11451  var index = -1,
11452      length = array == null ? 0 : array.length;
11453
11454  while (++index < length) {
11455    if (predicate(array[index], index, array)) {
11456      return true;
11457    }
11458  }
11459  return false;
11460}
11461
11462module.exports = arraySome;
11463
11464
11465/***/ }),
11466/* 212 */
11467/***/ (function(module, exports) {
11468
11469/**
11470 * Checks if a `cache` value for `key` exists.
11471 *
11472 * @private
11473 * @param {Object} cache The cache to query.
11474 * @param {string} key The key of the entry to check.
11475 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
11476 */
11477function cacheHas(cache, key) {
11478  return cache.has(key);
11479}
11480
11481module.exports = cacheHas;
11482
11483
11484/***/ }),
11485/* 213 */
11486/***/ (function(module, exports, __webpack_require__) {
11487
11488var Symbol = __webpack_require__(19),
11489    Uint8Array = __webpack_require__(214),
11490    eq = __webpack_require__(47),
11491    equalArrays = __webpack_require__(93),
11492    mapToArray = __webpack_require__(215),
11493    setToArray = __webpack_require__(216);
11494
11495/** Used to compose bitmasks for value comparisons. */
11496var COMPARE_PARTIAL_FLAG = 1,
11497    COMPARE_UNORDERED_FLAG = 2;
11498
11499/** `Object#toString` result references. */
11500var boolTag = '[object Boolean]',
11501    dateTag = '[object Date]',
11502    errorTag = '[object Error]',
11503    mapTag = '[object Map]',
11504    numberTag = '[object Number]',
11505    regexpTag = '[object RegExp]',
11506    setTag = '[object Set]',
11507    stringTag = '[object String]',
11508    symbolTag = '[object Symbol]';
11509
11510var arrayBufferTag = '[object ArrayBuffer]',
11511    dataViewTag = '[object DataView]';
11512
11513/** Used to convert symbols to primitives and strings. */
11514var symbolProto = Symbol ? Symbol.prototype : undefined,
11515    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;
11516
11517/**
11518 * A specialized version of `baseIsEqualDeep` for comparing objects of
11519 * the same `toStringTag`.
11520 *
11521 * **Note:** This function only supports comparing values with tags of
11522 * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
11523 *
11524 * @private
11525 * @param {Object} object The object to compare.
11526 * @param {Object} other The other object to compare.
11527 * @param {string} tag The `toStringTag` of the objects to compare.
11528 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
11529 * @param {Function} customizer The function to customize comparisons.
11530 * @param {Function} equalFunc The function to determine equivalents of values.
11531 * @param {Object} stack Tracks traversed `object` and `other` objects.
11532 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
11533 */
11534function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {
11535  switch (tag) {
11536    case dataViewTag:
11537      if ((object.byteLength != other.byteLength) ||
11538          (object.byteOffset != other.byteOffset)) {
11539        return false;
11540      }
11541      object = object.buffer;
11542      other = other.buffer;
11543
11544    case arrayBufferTag:
11545      if ((object.byteLength != other.byteLength) ||
11546          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
11547        return false;
11548      }
11549      return true;
11550
11551    case boolTag:
11552    case dateTag:
11553    case numberTag:
11554      // Coerce booleans to `1` or `0` and dates to milliseconds.
11555      // Invalid dates are coerced to `NaN`.
11556      return eq(+object, +other);
11557
11558    case errorTag:
11559      return object.name == other.name && object.message == other.message;
11560
11561    case regexpTag:
11562    case stringTag:
11563      // Coerce regexes to strings and treat strings, primitives and objects,
11564      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
11565      // for more details.
11566      return object == (other + '');
11567
11568    case mapTag:
11569      var convert = mapToArray;
11570
11571    case setTag:
11572      var isPartial = bitmask & COMPARE_PARTIAL_FLAG;
11573      convert || (convert = setToArray);
11574
11575      if (object.size != other.size && !isPartial) {
11576        return false;
11577      }
11578      // Assume cyclic values are equal.
11579      var stacked = stack.get(object);
11580      if (stacked) {
11581        return stacked == other;
11582      }
11583      bitmask |= COMPARE_UNORDERED_FLAG;
11584
11585      // Recursively compare objects (susceptible to call stack limits).
11586      stack.set(object, other);
11587      var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);
11588      stack['delete'](object);
11589      return result;
11590
11591    case symbolTag:
11592      if (symbolValueOf) {
11593        return symbolValueOf.call(object) == symbolValueOf.call(other);
11594      }
11595  }
11596  return false;
11597}
11598
11599module.exports = equalByTag;
11600
11601
11602/***/ }),
11603/* 214 */
11604/***/ (function(module, exports, __webpack_require__) {
11605
11606var root = __webpack_require__(4);
11607
11608/** Built-in value references. */
11609var Uint8Array = root.Uint8Array;
11610
11611module.exports = Uint8Array;
11612
11613
11614/***/ }),
11615/* 215 */
11616/***/ (function(module, exports) {
11617
11618/**
11619 * Converts `map` to its key-value pairs.
11620 *
11621 * @private
11622 * @param {Object} map The map to convert.
11623 * @returns {Array} Returns the key-value pairs.
11624 */
11625function mapToArray(map) {
11626  var index = -1,
11627      result = Array(map.size);
11628
11629  map.forEach(function(value, key) {
11630    result[++index] = [key, value];
11631  });
11632  return result;
11633}
11634
11635module.exports = mapToArray;
11636
11637
11638/***/ }),
11639/* 216 */
11640/***/ (function(module, exports) {
11641
11642/**
11643 * Converts `set` to an array of its values.
11644 *
11645 * @private
11646 * @param {Object} set The set to convert.
11647 * @returns {Array} Returns the values.
11648 */
11649function setToArray(set) {
11650  var index = -1,
11651      result = Array(set.size);
11652
11653  set.forEach(function(value) {
11654    result[++index] = value;
11655  });
11656  return result;
11657}
11658
11659module.exports = setToArray;
11660
11661
11662/***/ }),
11663/* 217 */
11664/***/ (function(module, exports, __webpack_require__) {
11665
11666var getAllKeys = __webpack_require__(218);
11667
11668/** Used to compose bitmasks for value comparisons. */
11669var COMPARE_PARTIAL_FLAG = 1;
11670
11671/** Used for built-in method references. */
11672var objectProto = Object.prototype;
11673
11674/** Used to check objects for own properties. */
11675var hasOwnProperty = objectProto.hasOwnProperty;
11676
11677/**
11678 * A specialized version of `baseIsEqualDeep` for objects with support for
11679 * partial deep comparisons.
11680 *
11681 * @private
11682 * @param {Object} object The object to compare.
11683 * @param {Object} other The other object to compare.
11684 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.
11685 * @param {Function} customizer The function to customize comparisons.
11686 * @param {Function} equalFunc The function to determine equivalents of values.
11687 * @param {Object} stack Tracks traversed `object` and `other` objects.
11688 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
11689 */
11690function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {
11691  var isPartial = bitmask & COMPARE_PARTIAL_FLAG,
11692      objProps = getAllKeys(object),
11693      objLength = objProps.length,
11694      othProps = getAllKeys(other),
11695      othLength = othProps.length;
11696
11697  if (objLength != othLength && !isPartial) {
11698    return false;
vendor: 1,526 bytes, lines 11699-11746
11699  }
11700  var index = objLength;
11701  while (index--) {
11702    var key = objProps[index];
11703    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
11704      return false;
11705    }
11706  }
11707  // Assume cyclic values are equal.
11708  var stacked = stack.get(object);
11709  if (stacked && stack.get(other)) {
11710    return stacked == other;
11711  }
11712  var result = true;
11713  stack.set(object, other);
11714  stack.set(other, object);
11715
11716  var skipCtor = isPartial;
11717  while (++index < objLength) {
11718    key = objProps[index];
11719    var objValue = object[key],
11720        othValue = other[key];
11721
11722    if (customizer) {
11723      var compared = isPartial
11724        ? customizer(othValue, objValue, key, other, object, stack)
11725        : customizer(objValue, othValue, key, object, other, stack);
11726    }
11727    // Recursively compare objects (susceptible to call stack limits).
11728    if (!(compared === undefined
11729          ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))
11730          : compared
11731        )) {
11732      result = false;
11733      break;
11734    }
11735    skipCtor || (skipCtor = key == 'constructor');
11736  }
11737  if (result && !skipCtor) {
11738    var objCtor = object.constructor,
11739        othCtor = other.constructor;
11740
11741    // Non `Object` object instances with different constructors are not equal.
11742    if (objCtor != othCtor &&
11743        ('constructor' in object && 'constructor' in other) &&
11744        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&
11745          typeof othCtor == 'function' && othCtor instanceof othCtor)) {
11746      result = false;
vendor: 4,399 bytes, lines 11747-11927
11747    }
11748  }
11749  stack['delete'](object);
11750  stack['delete'](other);
11751  return result;
11752}
11753
11754module.exports = equalObjects;
11755
11756
11757/***/ }),
11758/* 218 */
11759/***/ (function(module, exports, __webpack_require__) {
11760
11761var baseGetAllKeys = __webpack_require__(94),
11762    getSymbols = __webpack_require__(95),
11763    keys = __webpack_require__(32);
11764
11765/**
11766 * Creates an array of own enumerable property names and symbols of `object`.
11767 *
11768 * @private
11769 * @param {Object} object The object to query.
11770 * @returns {Array} Returns the array of property names and symbols.
11771 */
11772function getAllKeys(object) {
11773  return baseGetAllKeys(object, keys, getSymbols);
11774}
11775
11776module.exports = getAllKeys;
11777
11778
11779/***/ }),
11780/* 219 */
11781/***/ (function(module, exports) {
11782
11783/**
11784 * A specialized version of `_.filter` for arrays without support for
11785 * iteratee shorthands.
11786 *
11787 * @private
11788 * @param {Array} [array] The array to iterate over.
11789 * @param {Function} predicate The function invoked per iteration.
11790 * @returns {Array} Returns the new filtered array.
11791 */
11792function arrayFilter(array, predicate) {
11793  var index = -1,
11794      length = array == null ? 0 : array.length,
11795      resIndex = 0,
11796      result = [];
11797
11798  while (++index < length) {
11799    var value = array[index];
11800    if (predicate(value, index, array)) {
11801      result[resIndex++] = value;
11802    }
11803  }
11804  return result;
11805}
11806
11807module.exports = arrayFilter;
11808
11809
11810/***/ }),
11811/* 220 */
11812/***/ (function(module, exports) {
11813
11814/**
11815 * The base implementation of `_.times` without support for iteratee shorthands
11816 * or max array length checks.
11817 *
11818 * @private
11819 * @param {number} n The number of times to invoke `iteratee`.
11820 * @param {Function} iteratee The function invoked per iteration.
11821 * @returns {Array} Returns the array of results.
11822 */
11823function baseTimes(n, iteratee) {
11824  var index = -1,
11825      result = Array(n);
11826
11827  while (++index < n) {
11828    result[index] = iteratee(index);
11829  }
11830  return result;
11831}
11832
11833module.exports = baseTimes;
11834
11835
11836/***/ }),
11837/* 221 */
11838/***/ (function(module, exports, __webpack_require__) {
11839
11840var baseGetTag = __webpack_require__(11),
11841    isObjectLike = __webpack_require__(9);
11842
11843/** `Object#toString` result references. */
11844var argsTag = '[object Arguments]';
11845
11846/**
11847 * The base implementation of `_.isArguments`.
11848 *
11849 * @private
11850 * @param {*} value The value to check.
11851 * @returns {boolean} Returns `true` if `value` is an `arguments` object,
11852 */
11853function baseIsArguments(value) {
11854  return isObjectLike(value) && baseGetTag(value) == argsTag;
11855}
11856
11857module.exports = baseIsArguments;
11858
11859
11860/***/ }),
11861/* 222 */
11862/***/ (function(module, exports) {
11863
11864/**
11865 * This method returns `false`.
11866 *
11867 * @static
11868 * @memberOf _
11869 * @since 4.13.0
11870 * @category Util
11871 * @returns {boolean} Returns `false`.
11872 * @example
11873 *
11874 * _.times(2, _.stubFalse);
11875 * // => [false, false]
11876 */
11877function stubFalse() {
11878  return false;
11879}
11880
11881module.exports = stubFalse;
11882
11883
11884/***/ }),
11885/* 223 */
11886/***/ (function(module, exports, __webpack_require__) {
11887
11888var baseGetTag = __webpack_require__(11),
11889    isLength = __webpack_require__(54),
11890    isObjectLike = __webpack_require__(9);
11891
11892/** `Object#toString` result references. */
11893var argsTag = '[object Arguments]',
11894    arrayTag = '[object Array]',
11895    boolTag = '[object Boolean]',
11896    dateTag = '[object Date]',
11897    errorTag = '[object Error]',
11898    funcTag = '[object Function]',
11899    mapTag = '[object Map]',
11900    numberTag = '[object Number]',
11901    objectTag = '[object Object]',
11902    regexpTag = '[object RegExp]',
11903    setTag = '[object Set]',
11904    stringTag = '[object String]',
11905    weakMapTag = '[object WeakMap]';
11906
11907var arrayBufferTag = '[object ArrayBuffer]',
11908    dataViewTag = '[object DataView]',
11909    float32Tag = '[object Float32Array]',
11910    float64Tag = '[object Float64Array]',
11911    int8Tag = '[object Int8Array]',
11912    int16Tag = '[object Int16Array]',
11913    int32Tag = '[object Int32Array]',
11914    uint8Tag = '[object Uint8Array]',
11915    uint8ClampedTag = '[object Uint8ClampedArray]',
11916    uint16Tag = '[object Uint16Array]',
11917    uint32Tag = '[object Uint32Array]';
11918
11919/** Used to identify `toStringTag` values of typed arrays. */
11920var typedArrayTags = {};
11921typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
11922typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
11923typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
11924typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
11925typedArrayTags[uint32Tag] = true;
11926typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
11927typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
vendor: 5,700 bytes, lines 11928-12140
11928typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
11929typedArrayTags[errorTag] = typedArrayTags[funcTag] =
11930typedArrayTags[mapTag] = typedArrayTags[numberTag] =
11931typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
11932typedArrayTags[setTag] = typedArrayTags[stringTag] =
11933typedArrayTags[weakMapTag] = false;
11934
11935/**
11936 * The base implementation of `_.isTypedArray` without Node.js optimizations.
11937 *
11938 * @private
11939 * @param {*} value The value to check.
11940 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
11941 */
11942function baseIsTypedArray(value) {
11943  return isObjectLike(value) &&
11944    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
11945}
11946
11947module.exports = baseIsTypedArray;
11948
11949
11950/***/ }),
11951/* 224 */
11952/***/ (function(module, exports) {
11953
11954/**
11955 * The base implementation of `_.unary` without support for storing metadata.
11956 *
11957 * @private
11958 * @param {Function} func The function to cap arguments for.
11959 * @returns {Function} Returns the new capped function.
11960 */
11961function baseUnary(func) {
11962  return function(value) {
11963    return func(value);
11964  };
11965}
11966
11967module.exports = baseUnary;
11968
11969
11970/***/ }),
11971/* 225 */
11972/***/ (function(module, exports, __webpack_require__) {
11973
11974/* WEBPACK VAR INJECTION */(function(module) {var freeGlobal = __webpack_require__(90);
11975
11976/** Detect free variable `exports`. */
11977var freeExports =  true && exports && !exports.nodeType && exports;
11978
11979/** Detect free variable `module`. */
11980var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;
11981
11982/** Detect the popular CommonJS extension `module.exports`. */
11983var moduleExports = freeModule && freeModule.exports === freeExports;
11984
11985/** Detect free variable `process` from Node.js. */
11986var freeProcess = moduleExports && freeGlobal.process;
11987
11988/** Used to access faster Node.js helpers. */
11989var nodeUtil = (function() {
11990  try {
11991    // Use `util.types` for Node.js 10+.
11992    var types = freeModule && freeModule.require && freeModule.require('util').types;
11993
11994    if (types) {
11995      return types;
11996    }
11997
11998    // Legacy `process.binding('util')` for Node.js < 10.
11999    return freeProcess && freeProcess.binding && freeProcess.binding('util');
12000  } catch (e) {}
12001}());
12002
12003module.exports = nodeUtil;
12004
12005/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(98)(module)))
12006
12007/***/ }),
12008/* 226 */
12009/***/ (function(module, exports, __webpack_require__) {
12010
12011var overArg = __webpack_require__(99);
12012
12013/* Built-in method references for those with the same name as other `lodash` methods. */
12014var nativeKeys = overArg(Object.keys, Object);
12015
12016module.exports = nativeKeys;
12017
12018
12019/***/ }),
12020/* 227 */
12021/***/ (function(module, exports, __webpack_require__) {
12022
12023var getNative = __webpack_require__(8),
12024    root = __webpack_require__(4);
12025
12026/* Built-in method references that are verified to be native. */
12027var DataView = getNative(root, 'DataView');
12028
12029module.exports = DataView;
12030
12031
12032/***/ }),
12033/* 228 */
12034/***/ (function(module, exports, __webpack_require__) {
12035
12036var getNative = __webpack_require__(8),
12037    root = __webpack_require__(4);
12038
12039/* Built-in method references that are verified to be native. */
12040var Promise = getNative(root, 'Promise');
12041
12042module.exports = Promise;
12043
12044
12045/***/ }),
12046/* 229 */
12047/***/ (function(module, exports, __webpack_require__) {
12048
12049var getNative = __webpack_require__(8),
12050    root = __webpack_require__(4);
12051
12052/* Built-in method references that are verified to be native. */
12053var Set = getNative(root, 'Set');
12054
12055module.exports = Set;
12056
12057
12058/***/ }),
12059/* 230 */
12060/***/ (function(module, exports, __webpack_require__) {
12061
12062var isStrictComparable = __webpack_require__(101),
12063    keys = __webpack_require__(32);
12064
12065/**
12066 * Gets the property names, values, and compare flags of `object`.
12067 *
12068 * @private
12069 * @param {Object} object The object to query.
12070 * @returns {Array} Returns the match data of `object`.
12071 */
12072function getMatchData(object) {
12073  var result = keys(object),
12074      length = result.length;
12075
12076  while (length--) {
12077    var key = result[length],
12078        value = object[key];
12079
12080    result[length] = [key, value, isStrictComparable(value)];
12081  }
12082  return result;
12083}
12084
12085module.exports = getMatchData;
12086
12087
12088/***/ }),
12089/* 231 */
12090/***/ (function(module, exports, __webpack_require__) {
12091
12092var baseIsEqual = __webpack_require__(92),
12093    get = __webpack_require__(34),
12094    hasIn = __webpack_require__(237),
12095    isKey = __webpack_require__(59),
12096    isStrictComparable = __webpack_require__(101),
12097    matchesStrictComparable = __webpack_require__(102),
12098    toKey = __webpack_require__(20);
12099
12100/** Used to compose bitmasks for value comparisons. */
12101var COMPARE_PARTIAL_FLAG = 1,
12102    COMPARE_UNORDERED_FLAG = 2;
12103
12104/**
12105 * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
12106 *
12107 * @private
12108 * @param {string} path The path of the property to get.
12109 * @param {*} srcValue The value to match.
12110 * @returns {Function} Returns the new spec function.
12111 */
12112function baseMatchesProperty(path, srcValue) {
12113  if (isKey(path) && isStrictComparable(srcValue)) {
12114    return matchesStrictComparable(toKey(path), srcValue);
12115  }
12116  return function(object) {
12117    var objValue = get(object, path);
12118    return (objValue === undefined && objValue === srcValue)
12119      ? hasIn(object, path)
12120      : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);
12121  };
12122}
12123
12124module.exports = baseMatchesProperty;
12125
12126
12127/***/ }),
12128/* 232 */
12129/***/ (function(module, exports, __webpack_require__) {
12130
12131var memoizeCapped = __webpack_require__(233);
12132
12133/** Used to match property names within property paths. */
12134var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
12135
12136/** Used to match backslashes in property paths. */
12137var reEscapeChar = /\\(\\)?/g;
12138
12139/**
12140 * Converts `string` to a property path array.
vendor: 5,053 bytes, lines 12141-12334
12141 *
12142 * @private
12143 * @param {string} string The string to convert.
12144 * @returns {Array} Returns the property path array.
12145 */
12146var stringToPath = memoizeCapped(function(string) {
12147  var result = [];
12148  if (string.charCodeAt(0) === 46 /* . */) {
12149    result.push('');
12150  }
12151  string.replace(rePropName, function(match, number, quote, subString) {
12152    result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));
12153  });
12154  return result;
12155});
12156
12157module.exports = stringToPath;
12158
12159
12160/***/ }),
12161/* 233 */
12162/***/ (function(module, exports, __webpack_require__) {
12163
12164var memoize = __webpack_require__(234);
12165
12166/** Used as the maximum memoize cache size. */
12167var MAX_MEMOIZE_SIZE = 500;
12168
12169/**
12170 * A specialized version of `_.memoize` which clears the memoized function's
12171 * cache when it exceeds `MAX_MEMOIZE_SIZE`.
12172 *
12173 * @private
12174 * @param {Function} func The function to have its output memoized.
12175 * @returns {Function} Returns the new memoized function.
12176 */
12177function memoizeCapped(func) {
12178  var result = memoize(func, function(key) {
12179    if (cache.size === MAX_MEMOIZE_SIZE) {
12180      cache.clear();
12181    }
12182    return key;
12183  });
12184
12185  var cache = result.cache;
12186  return result;
12187}
12188
12189module.exports = memoizeCapped;
12190
12191
12192/***/ }),
12193/* 234 */
12194/***/ (function(module, exports, __webpack_require__) {
12195
12196var MapCache = __webpack_require__(49);
12197
12198/** Error message constants. */
12199var FUNC_ERROR_TEXT = 'Expected a function';
12200
12201/**
12202 * Creates a function that memoizes the result of `func`. If `resolver` is
12203 * provided, it determines the cache key for storing the result based on the
12204 * arguments provided to the memoized function. By default, the first argument
12205 * provided to the memoized function is used as the map cache key. The `func`
12206 * is invoked with the `this` binding of the memoized function.
12207 *
12208 * **Note:** The cache is exposed as the `cache` property on the memoized
12209 * function. Its creation may be customized by replacing the `_.memoize.Cache`
12210 * constructor with one whose instances implement the
12211 * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
12212 * method interface of `clear`, `delete`, `get`, `has`, and `set`.
12213 *
12214 * @static
12215 * @memberOf _
12216 * @since 0.1.0
12217 * @category Function
12218 * @param {Function} func The function to have its output memoized.
12219 * @param {Function} [resolver] The function to resolve the cache key.
12220 * @returns {Function} Returns the new memoized function.
12221 * @example
12222 *
12223 * var object = { 'a': 1, 'b': 2 };
12224 * var other = { 'c': 3, 'd': 4 };
12225 *
12226 * var values = _.memoize(_.values);
12227 * values(object);
12228 * // => [1, 2]
12229 *
12230 * values(other);
12231 * // => [3, 4]
12232 *
12233 * object.a = 2;
12234 * values(object);
12235 * // => [1, 2]
12236 *
12237 * // Modify the result cache.
12238 * values.cache.set(object, ['a', 'b']);
12239 * values(object);
12240 * // => ['a', 'b']
12241 *
12242 * // Replace `_.memoize.Cache`.
12243 * _.memoize.Cache = WeakMap;
12244 */
12245function memoize(func, resolver) {
12246  if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {
12247    throw new TypeError(FUNC_ERROR_TEXT);
12248  }
12249  var memoized = function() {
12250    var args = arguments,
12251        key = resolver ? resolver.apply(this, args) : args[0],
12252        cache = memoized.cache;
12253
12254    if (cache.has(key)) {
12255      return cache.get(key);
12256    }
12257    var result = func.apply(this, args);
12258    memoized.cache = cache.set(key, result) || cache;
12259    return result;
12260  };
12261  memoized.cache = new (memoize.Cache || MapCache);
12262  return memoized;
12263}
12264
12265// Expose `MapCache`.
12266memoize.Cache = MapCache;
12267
12268module.exports = memoize;
12269
12270
12271/***/ }),
12272/* 235 */
12273/***/ (function(module, exports, __webpack_require__) {
12274
12275var baseToString = __webpack_require__(236);
12276
12277/**
12278 * Converts `value` to a string. An empty string is returned for `null`
12279 * and `undefined` values. The sign of `-0` is preserved.
12280 *
12281 * @static
12282 * @memberOf _
12283 * @since 4.0.0
12284 * @category Lang
12285 * @param {*} value The value to convert.
12286 * @returns {string} Returns the converted string.
12287 * @example
12288 *
12289 * _.toString(null);
12290 * // => ''
12291 *
12292 * _.toString(-0);
12293 * // => '-0'
12294 *
12295 * _.toString([1, 2, 3]);
12296 * // => '1,2,3'
12297 */
12298function toString(value) {
12299  return value == null ? '' : baseToString(value);
12300}
12301
12302module.exports = toString;
12303
12304
12305/***/ }),
12306/* 236 */
12307/***/ (function(module, exports, __webpack_require__) {
12308
12309var Symbol = __webpack_require__(19),
12310    arrayMap = __webpack_require__(103),
12311    isArray = __webpack_require__(1),
12312    isSymbol = __webpack_require__(36);
12313
12314/** Used as references for various `Number` constants. */
12315var INFINITY = 1 / 0;
12316
12317/** Used to convert symbols to primitives and strings. */
12318var symbolProto = Symbol ? Symbol.prototype : undefined,
12319    symbolToString = symbolProto ? symbolProto.toString : undefined;
12320
12321/**
12322 * The base implementation of `_.toString` which doesn't convert nullish
12323 * values to empty strings.
12324 *
12325 * @private
12326 * @param {*} value The value to process.
12327 * @returns {string} Returns the string.
12328 */
12329function baseToString(value) {
12330  // Exit early for strings to avoid a performance hit in some environments.
12331  if (typeof value == 'string') {
12332    return value;
12333  }
12334  if (isArray(value)) {
vendor: 2,364 bytes, lines 12335-12432
12335    // Recursively convert values (susceptible to call stack limits).
12336    return arrayMap(value, baseToString) + '';
12337  }
12338  if (isSymbol(value)) {
12339    return symbolToString ? symbolToString.call(value) : '';
12340  }
12341  var result = (value + '');
12342  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;
12343}
12344
12345module.exports = baseToString;
12346
12347
12348/***/ }),
12349/* 237 */
12350/***/ (function(module, exports, __webpack_require__) {
12351
12352var baseHasIn = __webpack_require__(238),
12353    hasPath = __webpack_require__(239);
12354
12355/**
12356 * Checks if `path` is a direct or inherited property of `object`.
12357 *
12358 * @static
12359 * @memberOf _
12360 * @since 4.0.0
12361 * @category Object
12362 * @param {Object} object The object to query.
12363 * @param {Array|string} path The path to check.
12364 * @returns {boolean} Returns `true` if `path` exists, else `false`.
12365 * @example
12366 *
12367 * var object = _.create({ 'a': _.create({ 'b': 2 }) });
12368 *
12369 * _.hasIn(object, 'a');
12370 * // => true
12371 *
12372 * _.hasIn(object, 'a.b');
12373 * // => true
12374 *
12375 * _.hasIn(object, ['a', 'b']);
12376 * // => true
12377 *
12378 * _.hasIn(object, 'b');
12379 * // => false
12380 */
12381function hasIn(object, path) {
12382  return object != null && hasPath(object, path, baseHasIn);
12383}
12384
12385module.exports = hasIn;
12386
12387
12388/***/ }),
12389/* 238 */
12390/***/ (function(module, exports) {
12391
12392/**
12393 * The base implementation of `_.hasIn` without support for deep paths.
12394 *
12395 * @private
12396 * @param {Object} [object] The object to query.
12397 * @param {Array|string} key The key to check.
12398 * @returns {boolean} Returns `true` if `key` exists, else `false`.
12399 */
12400function baseHasIn(object, key) {
12401  return object != null && key in Object(object);
12402}
12403
12404module.exports = baseHasIn;
12405
12406
12407/***/ }),
12408/* 239 */
12409/***/ (function(module, exports, __webpack_require__) {
12410
12411var castPath = __webpack_require__(35),
12412    isArguments = __webpack_require__(33),
12413    isArray = __webpack_require__(1),
12414    isIndex = __webpack_require__(52),
12415    isLength = __webpack_require__(54),
12416    toKey = __webpack_require__(20);
12417
12418/**
12419 * Checks if `path` exists on `object`.
12420 *
12421 * @private
12422 * @param {Object} object The object to query.
12423 * @param {Array|string} path The path to check.
12424 * @param {Function} hasFunc The function to check properties.
12425 * @returns {boolean} Returns `true` if `path` exists, else `false`.
12426 */
12427function hasPath(object, path, hasFunc) {
12428  path = castPath(path, object);
12429
12430  var index = -1,
12431      length = path.length,
12432      result = false;
vendor: 4,465 bytes, lines 12433-12622
12433
12434  while (++index < length) {
12435    var key = toKey(path[index]);
12436    if (!(result = object != null && hasFunc(object, key))) {
12437      break;
12438    }
12439    object = object[key];
12440  }
12441  if (result || ++index != length) {
12442    return result;
12443  }
12444  length = object == null ? 0 : object.length;
12445  return !!length && isLength(length) && isIndex(key, length) &&
12446    (isArray(object) || isArguments(object));
12447}
12448
12449module.exports = hasPath;
12450
12451
12452/***/ }),
12453/* 240 */
12454/***/ (function(module, exports, __webpack_require__) {
12455
12456var baseProperty = __webpack_require__(104),
12457    basePropertyDeep = __webpack_require__(241),
12458    isKey = __webpack_require__(59),
12459    toKey = __webpack_require__(20);
12460
12461/**
12462 * Creates a function that returns the value at `path` of a given object.
12463 *
12464 * @static
12465 * @memberOf _
12466 * @since 2.4.0
12467 * @category Util
12468 * @param {Array|string} path The path of the property to get.
12469 * @returns {Function} Returns the new accessor function.
12470 * @example
12471 *
12472 * var objects = [
12473 *   { 'a': { 'b': 2 } },
12474 *   { 'a': { 'b': 1 } }
12475 * ];
12476 *
12477 * _.map(objects, _.property('a.b'));
12478 * // => [2, 1]
12479 *
12480 * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
12481 * // => [1, 2]
12482 */
12483function property(path) {
12484  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
12485}
12486
12487module.exports = property;
12488
12489
12490/***/ }),
12491/* 241 */
12492/***/ (function(module, exports, __webpack_require__) {
12493
12494var baseGet = __webpack_require__(58);
12495
12496/**
12497 * A specialized version of `baseProperty` which supports deep paths.
12498 *
12499 * @private
12500 * @param {Array|string} path The path of the property to get.
12501 * @returns {Function} Returns the new accessor function.
12502 */
12503function basePropertyDeep(path) {
12504  return function(object) {
12505    return baseGet(object, path);
12506  };
12507}
12508
12509module.exports = basePropertyDeep;
12510
12511
12512/***/ }),
12513/* 242 */
12514/***/ (function(module, exports, __webpack_require__) {
12515
12516var baseFindIndex = __webpack_require__(105),
12517    baseIteratee = __webpack_require__(7),
12518    toInteger = __webpack_require__(106);
12519
12520/* Built-in method references for those with the same name as other `lodash` methods. */
12521var nativeMax = Math.max;
12522
12523/**
12524 * This method is like `_.find` except that it returns the index of the first
12525 * element `predicate` returns truthy for instead of the element itself.
12526 *
12527 * @static
12528 * @memberOf _
12529 * @since 1.1.0
12530 * @category Array
12531 * @param {Array} array The array to inspect.
12532 * @param {Function} [predicate=_.identity] The function invoked per iteration.
12533 * @param {number} [fromIndex=0] The index to search from.
12534 * @returns {number} Returns the index of the found element, else `-1`.
12535 * @example
12536 *
12537 * var users = [
12538 *   { 'user': 'barney',  'active': false },
12539 *   { 'user': 'fred',    'active': false },
12540 *   { 'user': 'pebbles', 'active': true }
12541 * ];
12542 *
12543 * _.findIndex(users, function(o) { return o.user == 'barney'; });
12544 * // => 0
12545 *
12546 * // The `_.matches` iteratee shorthand.
12547 * _.findIndex(users, { 'user': 'fred', 'active': false });
12548 * // => 1
12549 *
12550 * // The `_.matchesProperty` iteratee shorthand.
12551 * _.findIndex(users, ['active', false]);
12552 * // => 0
12553 *
12554 * // The `_.property` iteratee shorthand.
12555 * _.findIndex(users, 'active');
12556 * // => 2
12557 */
12558function findIndex(array, predicate, fromIndex) {
12559  var length = array == null ? 0 : array.length;
12560  if (!length) {
12561    return -1;
12562  }
12563  var index = fromIndex == null ? 0 : toInteger(fromIndex);
12564  if (index < 0) {
12565    index = nativeMax(length + index, 0);
12566  }
12567  return baseFindIndex(array, baseIteratee(predicate, 3), index);
12568}
12569
12570module.exports = findIndex;
12571
12572
12573/***/ }),
12574/* 243 */
12575/***/ (function(module, exports, __webpack_require__) {
12576
12577var toNumber = __webpack_require__(61);
12578
12579/** Used as references for various `Number` constants. */
12580var INFINITY = 1 / 0,
12581    MAX_INTEGER = 1.7976931348623157e+308;
12582
12583/**
12584 * Converts `value` to a finite number.
12585 *
12586 * @static
12587 * @memberOf _
12588 * @since 4.12.0
12589 * @category Lang
12590 * @param {*} value The value to convert.
12591 * @returns {number} Returns the converted number.
12592 * @example
12593 *
12594 * _.toFinite(3.2);
12595 * // => 3.2
12596 *
12597 * _.toFinite(Number.MIN_VALUE);
12598 * // => 5e-324
12599 *
12600 * _.toFinite(Infinity);
12601 * // => 1.7976931348623157e+308
12602 *
12603 * _.toFinite('3.2');
12604 * // => 3.2
12605 */
12606function toFinite(value) {
12607  if (!value) {
12608    return value === 0 ? value : 0;
12609  }
12610  value = toNumber(value);
12611  if (value === INFINITY || value === -INFINITY) {
12612    var sign = (value < 0 ? -1 : 1);
12613    return sign * MAX_INTEGER;
12614  }
12615  return value === value ? value : 0;
12616}
12617
12618module.exports = toFinite;
12619
12620
12621/***/ }),
12622/* 244 */
12623/***/ (function(module, exports) {
12624
12625function _arrayWithoutHoles(arr) {
12626  if (Array.isArray(arr)) {
12627    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {
12628      arr2[i] = arr[i];
12629    }
12630
12631    return arr2;
12632  }
12633}
12634
12635module.exports = _arrayWithoutHoles;
12636
12637/***/ }),
12638/* 245 */
12639/***/ (function(module, exports) {
12640
12641function _iterableToArray(iter) {
12642  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
12643}
12644
12645module.exports = _iterableToArray;
12646
12647/***/ }),
12648/* 246 */
12649/***/ (function(module, exports) {
12650
12651function _nonIterableSpread() {
12652  throw new TypeError("Invalid attempt to spread non-iterable instance");
12653}
12654
12655module.exports = _nonIterableSpread;
12656
12657/***/ }),
12658/* 247 */
12659/***/ (function(module, exports, __webpack_require__) {
12660
12661"use strict";
12662
12663
12664Object.defineProperty(exports, "__esModule", {
12665  value: true
12666});
12667exports.createElementState = createElementState;
12668exports.mergeActionState = mergeActionState;
12669exports.ixElements = void 0;
12670
12671var _timm = __webpack_require__(18);
12672
12673var _constants = __webpack_require__(2);
12674
12675var _constants$IX2EngineC = _constants.IX2EngineConstants,
12676    HTML_ELEMENT = _constants$IX2EngineC.HTML_ELEMENT,
12677    PLAIN_OBJECT = _constants$IX2EngineC.PLAIN_OBJECT,
12678    ABSTRACT_NODE = _constants$IX2EngineC.ABSTRACT_NODE,
12679    CONFIG_X_VALUE = _constants$IX2EngineC.CONFIG_X_VALUE,
12680    CONFIG_Y_VALUE = _constants$IX2EngineC.CONFIG_Y_VALUE,
12681    CONFIG_Z_VALUE = _constants$IX2EngineC.CONFIG_Z_VALUE,
12682    CONFIG_VALUE = _constants$IX2EngineC.CONFIG_VALUE,
12683    CONFIG_X_UNIT = _constants$IX2EngineC.CONFIG_X_UNIT,
12684    CONFIG_Y_UNIT = _constants$IX2EngineC.CONFIG_Y_UNIT,
12685    CONFIG_Z_UNIT = _constants$IX2EngineC.CONFIG_Z_UNIT,
12686    CONFIG_UNIT = _constants$IX2EngineC.CONFIG_UNIT;
12687var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
12688    IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED,
12689    IX2_INSTANCE_ADDED = _constants$IX2EngineA.IX2_INSTANCE_ADDED,
12690    IX2_ELEMENT_STATE_CHANGED = _constants$IX2EngineA.IX2_ELEMENT_STATE_CHANGED;
12691var initialState = {};
12692var refState = 'refState';
12693
12694var ixElements = function ixElements() {
12695  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
12696  var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
12697
12698  switch (action.type) {
12699    case IX2_SESSION_STOPPED:
12700      {
12701        return initialState;
12702      }
12703
12704    case IX2_INSTANCE_ADDED:
12705      {
12706        var _action$payload = action.payload,
12707            elementId = _action$payload.elementId,
12708            ref = _action$payload.element,
12709            origin = _action$payload.origin,
12710            actionItem = _action$payload.actionItem,
12711            refType = _action$payload.refType;
12712        var actionTypeId = actionItem.actionTypeId;
12713        var newState = state; // Create new ref entry if it doesn't exist
12714
12715        if ((0, _timm.getIn)(newState, [elementId, ref]) !== ref) {
12716          newState = createElementState(newState, ref, refType, elementId, actionItem);
12717        } // Merge origin values into ref state
12718
12719
12720        return mergeActionState(newState, elementId, actionTypeId, origin, actionItem);
12721      }
12722
12723    case IX2_ELEMENT_STATE_CHANGED:
12724      {
12725        var _action$payload2 = action.payload,
12726            _elementId = _action$payload2.elementId,
12727            _actionTypeId = _action$payload2.actionTypeId,
12728            current = _action$payload2.current,
12729            _actionItem = _action$payload2.actionItem;
12730        return mergeActionState(state, _elementId, _actionTypeId, current, _actionItem);
12731      }
12732
12733    default:
12734      {
12735        return state;
12736      }
12737  }
12738};
12739
12740exports.ixElements = ixElements;
12741
12742function createElementState(state, ref, refType, elementId, actionItem) {
12743  var refId = refType === PLAIN_OBJECT ? (0, _timm.getIn)(actionItem, ['config', 'target', 'objectId']) : null;
12744  return (0, _timm.mergeIn)(state, [elementId], {
12745    id: elementId,
12746    ref: ref,
12747    refId: refId,
12748    refType: refType
12749  });
12750}
12751
12752function mergeActionState(state, elementId, actionTypeId, actionState, // FIXME: weak type is used
12753actionItem) {
12754  var units = pickUnits(actionItem);
12755  var mergePath = [elementId, refState, actionTypeId];
12756  return (0, _timm.mergeIn)(state, mergePath, actionState, units);
12757}
12758
12759var 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
12760// eslint-disable-next-line flowtype/no-weak-types
12761
12762function pickUnits(actionItem) {
12763  var config = actionItem.config;
12764  return valueUnitPairs.reduce(function (result, pair) {
12765    var valueKey = pair[0];
12766    var unitKey = pair[1];
12767    var configValue = config[valueKey];
12768    var configUnit = config[unitKey];
12769
12770    if (configValue != null && configUnit != null) {
12771      result[unitKey] = configUnit;
12772    }
12773
12774    return result;
12775  }, {});
12776}
12777
12778/***/ }),
12779/* 248 */
12780/***/ (function(module, exports, __webpack_require__) {
12781
12782"use strict";
12783
12784
12785Object.defineProperty(exports, "__esModule", {
12786  value: true
12787});
12788exports.clearPlugin = exports.renderPlugin = exports.createPluginInstance = exports.getPluginDestination = exports.getPluginOrigin = exports.getPluginDuration = exports.getPluginConfig = void 0;
12789/* eslint-env browser */
12790// $FlowFixMe
12791
12792var getPluginConfig = function getPluginConfig(actionItemConfig) {
12793  return actionItemConfig.value;
12794}; // $FlowFixMe
12795
12796
12797exports.getPluginConfig = getPluginConfig;
12798
12799var getPluginDuration = function getPluginDuration(element, actionItem) {
12800  if (actionItem.config.duration !== 'auto') {
12801    return null;
12802  }
12803
12804  var duration = parseFloat(element.getAttribute('data-duration'));
12805
12806  if (duration > 0) {
12807    return duration * 1000;
12808  }
12809
12810  return parseFloat(element.getAttribute('data-default-duration')) * 1000;
12811}; // $FlowFixMe
12812
12813
12814exports.getPluginDuration = getPluginDuration;
12815
12816var getPluginOrigin = function getPluginOrigin(refState) {
12817  return refState || {
12818    value: 0
12819  };
12820}; // $FlowFixMe
12821
12822
12823exports.getPluginOrigin = getPluginOrigin;
12824
12825var getPluginDestination = function getPluginDestination(actionItemConfig) {
12826  return {
12827    value: actionItemConfig.value
12828  };
12829}; // $FlowFixMe
12830
12831
12832exports.getPluginDestination = getPluginDestination;
12833
12834var createPluginInstance = function createPluginInstance(element) {
12835  var instance = window.Webflow.require('lottie').createInstance(element);
12836
12837  instance.stop();
12838  instance.setSubframe(true);
12839  return instance;
12840}; // $FlowFixMe
12841
12842
12843exports.createPluginInstance = createPluginInstance;
12844
12845var renderPlugin = function renderPlugin(pluginInstance, refState, actionItem) {
12846  if (!pluginInstance) {
12847    return;
12848  }
12849
12850  var percent = refState[actionItem.actionTypeId].value / 100;
12851  pluginInstance.goToFrame(pluginInstance.frames * percent);
12852}; // $FlowFixMe
12853
12854
12855exports.renderPlugin = renderPlugin;
12856
12857var clearPlugin = function clearPlugin(element) {
12858  var instance = window.Webflow.require('lottie').createInstance(element);
12859
12860  instance.stop();
12861};
12862
12863exports.clearPlugin = clearPlugin;
12864
12865/***/ }),
12866/* 249 */
12867/***/ (function(module, exports, __webpack_require__) {
12868
12869"use strict";
12870
12871
12872var _interopRequireDefault2 = __webpack_require__(0);
12873
12874var _typeof2 = _interopRequireDefault2(__webpack_require__(21));
12875
12876var _defineProperty2 = _interopRequireDefault2(__webpack_require__(26));
12877
12878var _Object$freeze, _Object$freeze2, _transformDefaults;
12879
12880var _interopRequireDefault = __webpack_require__(0);
12881
12882Object.defineProperty(exports, "__esModule", {
12883  value: true
12884});
12885exports.getInstanceId = getInstanceId;
12886exports.getElementId = getElementId;
12887exports.reifyState = reifyState;
12888exports.observeStore = observeStore;
12889exports.getAffectedElements = getAffectedElements;
12890exports.getComputedStyle = getComputedStyle;
12891exports.getInstanceOrigin = getInstanceOrigin;
12892exports.getDestinationValues = getDestinationValues;
12893exports.getRenderType = getRenderType;
12894exports.getStyleProp = getStyleProp;
12895exports.renderHTMLElement = renderHTMLElement;
12896exports.clearAllStyles = clearAllStyles;
12897exports.cleanupHTMLElement = cleanupHTMLElement;
12898exports.getMaxDurationItemIndex = getMaxDurationItemIndex;
12899exports.getActionListProgress = getActionListProgress;
12900exports.reduceListToGroup = reduceListToGroup;
12901exports.shouldNamespaceEventParameter = shouldNamespaceEventParameter;
12902exports.getNamespacedParameterId = getNamespacedParameterId;
12903exports.shouldAllowMediaQuery = shouldAllowMediaQuery;
12904exports.mediaQueriesEqual = mediaQueriesEqual;
12905exports.stringifyTarget = stringifyTarget;
12906exports.getItemConfigByKey = void 0;
12907
12908var _defaultTo = _interopRequireDefault(__webpack_require__(250));
12909
12910var _reduce = _interopRequireDefault(__webpack_require__(251));
12911
12912var _findLast = _interopRequireDefault(__webpack_require__(257));
12913
12914var _get = _interopRequireDefault(__webpack_require__(34));
12915
12916var _timm = __webpack_require__(18);
12917
12918var _shallowEqual = _interopRequireDefault(__webpack_require__(114));
12919
12920var _constants = __webpack_require__(2);
12921
12922var _IX2EasingUtils = __webpack_require__(109);
12923
12924var _IX2VanillaPlugins = __webpack_require__(111);
12925
12926var _IX2BrowserSupport = __webpack_require__(46);
12927/* eslint-env browser */
12928
12929
12930var _constants$IX2EngineC = _constants.IX2EngineConstants,
12931    BACKGROUND = _constants$IX2EngineC.BACKGROUND,
12932    TRANSFORM = _constants$IX2EngineC.TRANSFORM,
12933    TRANSLATE_3D = _constants$IX2EngineC.TRANSLATE_3D,
12934    SCALE_3D = _constants$IX2EngineC.SCALE_3D,
12935    ROTATE_X = _constants$IX2EngineC.ROTATE_X,
12936    ROTATE_Y = _constants$IX2EngineC.ROTATE_Y,
12937    ROTATE_Z = _constants$IX2EngineC.ROTATE_Z,
12938    SKEW = _constants$IX2EngineC.SKEW,
12939    PRESERVE_3D = _constants$IX2EngineC.PRESERVE_3D,
12940    FLEX = _constants$IX2EngineC.FLEX,
12941    OPACITY = _constants$IX2EngineC.OPACITY,
12942    FILTER = _constants$IX2EngineC.FILTER,
12943    WIDTH = _constants$IX2EngineC.WIDTH,
12944    HEIGHT = _constants$IX2EngineC.HEIGHT,
12945    BACKGROUND_COLOR = _constants$IX2EngineC.BACKGROUND_COLOR,
12946    BORDER_COLOR = _constants$IX2EngineC.BORDER_COLOR,
12947    COLOR = _constants$IX2EngineC.COLOR,
12948    CHILDREN = _constants$IX2EngineC.CHILDREN,
12949    IMMEDIATE_CHILDREN = _constants$IX2EngineC.IMMEDIATE_CHILDREN,
12950    SIBLINGS = _constants$IX2EngineC.SIBLINGS,
12951    PARENT = _constants$IX2EngineC.PARENT,
12952    DISPLAY = _constants$IX2EngineC.DISPLAY,
12953    WILL_CHANGE = _constants$IX2EngineC.WILL_CHANGE,
12954    AUTO = _constants$IX2EngineC.AUTO,
12955    COMMA_DELIMITER = _constants$IX2EngineC.COMMA_DELIMITER,
12956    COLON_DELIMITER = _constants$IX2EngineC.COLON_DELIMITER,
12957    BAR_DELIMITER = _constants$IX2EngineC.BAR_DELIMITER,
12958    RENDER_TRANSFORM = _constants$IX2EngineC.RENDER_TRANSFORM,
12959    RENDER_GENERAL = _constants$IX2EngineC.RENDER_GENERAL,
12960    RENDER_STYLE = _constants$IX2EngineC.RENDER_STYLE,
12961    RENDER_PLUGIN = _constants$IX2EngineC.RENDER_PLUGIN;
12962var _constants$ActionType = _constants.ActionTypeConsts,
12963    TRANSFORM_MOVE = _constants$ActionType.TRANSFORM_MOVE,
12964    TRANSFORM_SCALE = _constants$ActionType.TRANSFORM_SCALE,
12965    TRANSFORM_ROTATE = _constants$ActionType.TRANSFORM_ROTATE,
12966    TRANSFORM_SKEW = _constants$ActionType.TRANSFORM_SKEW,
12967    STYLE_OPACITY = _constants$ActionType.STYLE_OPACITY,
12968    STYLE_FILTER = _constants$ActionType.STYLE_FILTER,
12969    STYLE_SIZE = _constants$ActionType.STYLE_SIZE,
12970    STYLE_BACKGROUND_COLOR = _constants$ActionType.STYLE_BACKGROUND_COLOR,
12971    STYLE_BORDER = _constants$ActionType.STYLE_BORDER,
12972    STYLE_TEXT_COLOR = _constants$ActionType.STYLE_TEXT_COLOR,
12973    GENERAL_DISPLAY = _constants$ActionType.GENERAL_DISPLAY;
12974var OBJECT_VALUE = 'OBJECT_VALUE';
12975
12976var trim = function trim(v) {
12977  return v.trim();
12978};
12979
12980var 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));
12981var 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));
12982var objectCache = {};
12983var instanceCount = 1;
12984
12985function getInstanceId() {
12986  return 'i' + instanceCount++;
12987}
12988
12989var elementCount = 1; // $FlowFixMe
12990
12991function getElementId(ixElements, ref) {
12992  // TODO: optimize element lookup
12993  for (var key in ixElements) {
12994    var ixEl = ixElements[key];
12995
12996    if (ixEl && ixEl.ref === ref) {
12997      return ixEl.id;
12998    }
12999  }
13000
13001  return 'e' + elementCount++;
13002} // $FlowFixMe
13003
13004
13005function reifyState() {
13006  var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
13007      events = _ref.events,
13008      actionLists = _ref.actionLists,
13009      site = _ref.site;
13010
13011  var eventTypeMap = (0, _reduce["default"])(events, function (result, event) {
13012    var eventTypeId = event.eventTypeId;
13013
13014    if (!result[eventTypeId]) {
13015      result[eventTypeId] = {};
13016    }
13017
13018    result[eventTypeId][event.id] = event;
13019    return result;
13020  }, {});
13021  var mediaQueries = site && site.mediaQueries;
13022  var mediaQueryKeys = [];
13023
13024  if (mediaQueries) {
13025    mediaQueryKeys = mediaQueries.map(function (mq) {
13026      return mq.key;
13027    });
13028  } else {
13029    mediaQueries = [];
13030    console.warn("IX2 missing mediaQueries in site data");
13031  }
13032
13033  return {
13034    ixData: {
13035      events: events,
13036      actionLists: actionLists,
13037      eventTypeMap: eventTypeMap,
13038      mediaQueries: mediaQueries,
13039      mediaQueryKeys: mediaQueryKeys
13040    }
13041  };
13042}
13043
13044var strictEqual = function strictEqual(a, b) {
13045  return a === b;
13046}; // $FlowFixMe
13047
13048
13049function observeStore(_ref2) {
13050  var store = _ref2.store,
13051      select = _ref2.select,
13052      onChange = _ref2.onChange,
13053      _ref2$comparator = _ref2.comparator,
13054      comparator = _ref2$comparator === void 0 ? strictEqual : _ref2$comparator;
13055  var getState = store.getState,
13056      subscribe = store.subscribe;
13057  var unsubscribe = subscribe(handleChange);
13058  var currentState = select(getState());
13059
13060  function handleChange() {
13061    var nextState = select(getState());
13062
13063    if (nextState == null) {
13064      unsubscribe();
13065      return;
13066    }
13067
13068    if (!comparator(nextState, currentState)) {
13069      currentState = nextState;
13070      onChange(currentState, store);
13071    }
13072  }
13073
13074  return unsubscribe;
13075}
13076
13077function normalizeTarget(target) {
13078  var type = (0, _typeof2["default"])(target);
13079
13080  if (type === 'string') {
13081    return {
13082      id: target
13083    };
13084  } else if (target != null && type === 'object') {
13085    var id = target.id,
13086        objectId = target.objectId,
13087        selector = target.selector,
13088        selectorGuids = target.selectorGuids,
13089        appliesTo = target.appliesTo,
13090        useEventTarget = target.useEventTarget;
13091    return {
13092      id: id,
13093      objectId: objectId,
13094      selector: selector,
13095      selectorGuids: selectorGuids,
13096      appliesTo: appliesTo,
13097      useEventTarget: useEventTarget
13098    };
13099  }
13100
13101  return {};
13102} // $FlowFixMe
13103
13104
13105function getAffectedElements(_ref3) {
13106  var config = _ref3.config,
13107      event = _ref3.event,
13108      eventTarget = _ref3.eventTarget,
13109      elementRoot = _ref3.elementRoot,
13110      elementApi = _ref3.elementApi;
13111
13112  if (!elementApi) {
13113    throw new Error('IX2 missing elementApi');
13114  }
13115
13116  var getValidDocument = elementApi.getValidDocument,
13117      getQuerySelector = elementApi.getQuerySelector,
13118      queryDocument = elementApi.queryDocument,
13119      getChildElements = elementApi.getChildElements,
13120      getSiblingElements = elementApi.getSiblingElements,
13121      matchSelector = elementApi.matchSelector,
13122      elementContains = elementApi.elementContains,
13123      isSiblingNode = elementApi.isSiblingNode;
13124  var target = config.target;
13125
13126  if (!target) {
13127    return [];
13128  }
13129
13130  var _normalizeTarget = normalizeTarget(target),
13131      id = _normalizeTarget.id,
13132      objectId = _normalizeTarget.objectId,
13133      selector = _normalizeTarget.selector,
13134      selectorGuids = _normalizeTarget.selectorGuids,
13135      appliesTo = _normalizeTarget.appliesTo,
13136      useEventTarget = _normalizeTarget.useEventTarget;
13137
13138  if (objectId) {
13139    var ref = objectCache[objectId] || (objectCache[objectId] = {});
13140    return [ref];
13141  }
13142
13143  if (appliesTo === _constants.EventAppliesTo.PAGE) {
13144    var doc = getValidDocument(id);
13145    return doc ? [doc] : [];
13146  }
13147
13148  var overrides = (0, _get["default"])(event, 'action.config.affectedElements', {});
13149  var override = overrides[id || selector] || {};
13150  var validOverride = Boolean(override.id || override.selector);
13151  var limitAffectedElements;
13152  var baseSelector;
13153  var finalSelector;
13154  var eventTargetSelector = event && getQuerySelector(normalizeTarget(event.target));
13155
13156  if (validOverride) {
13157    limitAffectedElements = override.limitAffectedElements;
13158    baseSelector = eventTargetSelector;
13159    finalSelector = getQuerySelector(override);
13160  } else {
13161    // pass in selectorGuids as well for server-side rendering.
13162    baseSelector = finalSelector = getQuerySelector({
13163      id: id,
13164      selector: selector,
13165      selectorGuids: selectorGuids
13166    });
13167  }
13168
13169  if (event && useEventTarget) {
13170    // eventTarget is not defined when this function is called in a clear request, so find
13171    // all target elements associated with the event data, and return affected elements.
13172    var eventTargets = eventTarget && (finalSelector || useEventTarget === true) ? [eventTarget] : queryDocument(eventTargetSelector);
13173
13174    if (finalSelector) {
13175      if (useEventTarget === PARENT) {
13176        return queryDocument(finalSelector).filter(function (parentElement) {
13177          return eventTargets.some(function (targetElement) {
13178            return elementContains(parentElement, targetElement);
13179          });
13180        });
13181      }
13182
13183      if (useEventTarget === CHILDREN) {
13184        return queryDocument(finalSelector).filter(function (childElement) {
13185          return eventTargets.some(function (targetElement) {
13186            return elementContains(targetElement, childElement);
13187          });
13188        });
13189      }
13190
13191      if (useEventTarget === SIBLINGS) {
13192        return queryDocument(finalSelector).filter(function (siblingElement) {
13193          return eventTargets.some(function (targetElement) {
13194            return isSiblingNode(targetElement, siblingElement);
13195          });
13196        });
13197      }
13198    }
13199
13200    return eventTargets;
13201  }
13202
13203  if (baseSelector == null || finalSelector == null) {
13204    return [];
13205  }
13206
13207  if (_IX2BrowserSupport.IS_BROWSER_ENV && elementRoot) {
13208    return queryDocument(finalSelector).filter(function (element) {
13209      return elementRoot.contains(element);
13210    });
13211  }
13212
13213  if (limitAffectedElements === CHILDREN) {
13214    return queryDocument(baseSelector, finalSelector);
13215  } else if (limitAffectedElements === IMMEDIATE_CHILDREN) {
13216    return getChildElements(queryDocument(baseSelector)).filter(matchSelector(finalSelector));
13217  } else if (limitAffectedElements === SIBLINGS) {
13218    return getSiblingElements(queryDocument(baseSelector)).filter(matchSelector(finalSelector));
13219  } else {
13220    return queryDocument(finalSelector);
13221  }
13222} // $FlowFixMe
13223
13224
13225function getComputedStyle(_ref4) {
13226  var element = _ref4.element,
13227      actionItem = _ref4.actionItem;
13228
13229  if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
13230    return {};
13231  }
13232
13233  var actionTypeId = actionItem.actionTypeId;
13234
13235  switch (actionTypeId) {
13236    case STYLE_SIZE:
13237    case STYLE_BACKGROUND_COLOR:
13238    case STYLE_BORDER:
13239    case STYLE_TEXT_COLOR:
13240    case GENERAL_DISPLAY:
13241      return window.getComputedStyle(element);
13242
13243    default:
13244      return {};
13245  }
13246}
13247
13248var pxValueRegex = /px/;
13249
13250var getFilterDefaults = function getFilterDefaults(actionState, filters) {
13251  return filters.reduce(function (result, filter) {
13252    if (result[filter.type] == null) {
13253      result[filter.type] = filterDefaults[filter.type];
13254    }
13255
13256    return result;
13257  }, actionState || {});
13258};
13259
13260function getInstanceOrigin( // $FlowFixMe
13261element) {
13262  var refState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
13263  var computedStyle = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
13264  var // $FlowFixMe
13265  actionItem = arguments.length > 3 ? arguments[3] : undefined;
13266  var // $FlowFixMe
13267  elementApi = arguments.length > 4 ? arguments[4] : undefined;
13268  var getStyle = elementApi.getStyle;
13269  var actionTypeId = actionItem.actionTypeId,
13270      config = actionItem.config;
13271
13272  if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
13273    // $FlowFixMe
13274    return (0, _IX2VanillaPlugins.getPluginOrigin)(actionTypeId)(refState[actionTypeId]);
13275  }
13276
13277  switch (actionTypeId) {
13278    case TRANSFORM_MOVE:
13279    case TRANSFORM_SCALE:
13280    case TRANSFORM_ROTATE:
13281    case TRANSFORM_SKEW:
13282      return refState[actionTypeId] || transformDefaults[actionTypeId];
13283
13284    case STYLE_FILTER:
13285      return getFilterDefaults(refState[actionTypeId], actionItem.config.filters);
13286
13287    case STYLE_OPACITY:
13288      return {
13289        value: (0, _defaultTo["default"])(parseFloat(getStyle(element, OPACITY)), 1.0)
13290      };
13291
13292    case STYLE_SIZE:
13293      {
13294        var inlineWidth = getStyle(element, WIDTH);
13295        var inlineHeight = getStyle(element, HEIGHT);
13296        var widthValue;
13297        var heightValue; // When destination unit is 'AUTO', ensure origin values are in px
13298
13299        if (config.widthUnit === AUTO) {
13300          widthValue = pxValueRegex.test(inlineWidth) ? parseFloat(inlineWidth) : parseFloat(computedStyle.width);
13301        } else {
13302          widthValue = (0, _defaultTo["default"])(parseFloat(inlineWidth), parseFloat(computedStyle.width));
13303        }
13304
13305        if (config.heightUnit === AUTO) {
13306          heightValue = pxValueRegex.test(inlineHeight) ? parseFloat(inlineHeight) : parseFloat(computedStyle.height);
13307        } else {
13308          heightValue = (0, _defaultTo["default"])(parseFloat(inlineHeight), parseFloat(computedStyle.height));
13309        }
13310
13311        return {
13312          widthValue: widthValue,
13313          heightValue: heightValue
13314        };
13315      }
13316
13317    case STYLE_BACKGROUND_COLOR:
13318    case STYLE_BORDER:
13319    case STYLE_TEXT_COLOR:
13320      return parseColor({
13321        element: element,
13322        actionTypeId: actionTypeId,
13323        computedStyle: computedStyle,
13324        getStyle: getStyle
13325      });
13326
13327    case GENERAL_DISPLAY:
13328      return {
13329        value: (0, _defaultTo["default"])(getStyle(element, DISPLAY), computedStyle.display)
13330      };
13331
13332    case OBJECT_VALUE:
13333      return refState[actionTypeId] || {
13334        value: 0
13335      };
13336
13337    default:
13338      return;
13339  }
13340}
13341
13342var reduceFilters = function reduceFilters(result, filter) {
13343  if (filter) {
13344    result[filter.type] = filter.value || 0;
13345  }
13346
13347  return result;
13348}; // $FlowFixMe
13349
13350
13351var getItemConfigByKey = function getItemConfigByKey(actionTypeId, key, config) {
13352  if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
13353    // $FlowFixMe
13354    return (0, _IX2VanillaPlugins.getPluginConfig)(actionTypeId)(config, key);
13355  }
13356
13357  switch (actionTypeId) {
13358    case STYLE_FILTER:
13359      {
13360        var filter = (0, _findLast["default"])(config.filters, function (_ref5) {
13361          var type = _ref5.type;
13362          return type === key;
13363        });
13364        return filter ? filter.value : 0;
13365      }
13366
13367    default:
13368      return config[key];
13369  }
13370}; // $FlowFixMe
13371
13372
13373exports.getItemConfigByKey = getItemConfigByKey;
13374
13375function getDestinationValues(_ref6) {
13376  var element = _ref6.element,
13377      actionItem = _ref6.actionItem,
13378      elementApi = _ref6.elementApi;
13379  var actionTypeId = actionItem.actionTypeId;
13380
13381  if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
13382    // $FlowFixMe
13383    return (0, _IX2VanillaPlugins.getPluginDestination)(actionTypeId)(actionItem.config);
13384  }
13385
13386  switch (actionTypeId) {
13387    case TRANSFORM_MOVE:
13388    case TRANSFORM_SCALE:
13389    case TRANSFORM_ROTATE:
13390    case TRANSFORM_SKEW:
13391      {
13392        var _actionItem$config = actionItem.config,
13393            xValue = _actionItem$config.xValue,
13394            yValue = _actionItem$config.yValue,
13395            zValue = _actionItem$config.zValue;
13396        return {
13397          xValue: xValue,
13398          yValue: yValue,
13399          zValue: zValue
13400        };
13401      }
13402
13403    case STYLE_SIZE:
13404      {
13405        var getStyle = elementApi.getStyle,
13406            setStyle = elementApi.setStyle,
13407            getProperty = elementApi.getProperty;
13408        var _actionItem$config2 = actionItem.config,
13409            widthUnit = _actionItem$config2.widthUnit,
13410            heightUnit = _actionItem$config2.heightUnit;
13411        var _actionItem$config3 = actionItem.config,
13412            widthValue = _actionItem$config3.widthValue,
13413            heightValue = _actionItem$config3.heightValue;
13414
13415        if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
13416          return {
13417            widthValue: widthValue,
13418            heightValue: heightValue
13419          };
13420        }
13421
13422        if (widthUnit === AUTO) {
13423          var temp = getStyle(element, WIDTH);
13424          setStyle(element, WIDTH, '');
13425          widthValue = getProperty(element, 'offsetWidth');
13426          setStyle(element, WIDTH, temp);
13427        }
13428
13429        if (heightUnit === AUTO) {
13430          var _temp = getStyle(element, HEIGHT);
13431
13432          setStyle(element, HEIGHT, '');
13433          heightValue = getProperty(element, 'offsetHeight');
13434          setStyle(element, HEIGHT, _temp);
13435        }
13436
13437        return {
13438          widthValue: widthValue,
13439          heightValue: heightValue
13440        };
13441      }
13442
13443    case STYLE_BACKGROUND_COLOR:
13444    case STYLE_BORDER:
13445    case STYLE_TEXT_COLOR:
13446      {
13447        var _actionItem$config4 = actionItem.config,
13448            rValue = _actionItem$config4.rValue,
13449            gValue = _actionItem$config4.gValue,
13450            bValue = _actionItem$config4.bValue,
13451            aValue = _actionItem$config4.aValue;
13452        return {
13453          rValue: rValue,
13454          gValue: gValue,
13455          bValue: bValue,
13456          aValue: aValue
13457        };
13458      }
13459
13460    case STYLE_FILTER:
13461      {
13462        return actionItem.config.filters.reduce(reduceFilters, {});
13463      }
13464
13465    default:
13466      {
13467        var value = actionItem.config.value;
13468        return {
13469          value: value
13470        };
13471      }
13472  }
13473} // $FlowFixMe
13474
13475
13476function getRenderType(actionTypeId) {
13477  if (/^TRANSFORM_/.test(actionTypeId)) {
13478    return RENDER_TRANSFORM;
13479  }
13480
13481  if (/^STYLE_/.test(actionTypeId)) {
13482    return RENDER_STYLE;
13483  }
13484
13485  if (/^GENERAL_/.test(actionTypeId)) {
13486    return RENDER_GENERAL;
13487  }
13488
13489  if (/^PLUGIN_/.test(actionTypeId)) {
13490    return RENDER_PLUGIN;
13491  }
13492} // $FlowFixMe
13493
13494
13495function getStyleProp(renderType, actionTypeId) {
13496  return renderType === RENDER_STYLE ? actionTypeId.replace('STYLE_', '').toLowerCase() : null;
13497}
13498
13499function renderHTMLElement( // $FlowFixMe
13500element, // $FlowFixMe
13501refState, // $FlowFixMe
13502actionState, // $FlowFixMe
13503eventId, // $FlowFixMe
13504actionItem, // $FlowFixMe
13505styleProp, // $FlowFixMe
13506elementApi, // $FlowFixMe
13507renderType, // $FlowFixMe
13508pluginInstance) {
13509  switch (renderType) {
13510    case RENDER_TRANSFORM:
13511      {
13512        return renderTransform(element, refState, actionState, actionItem, elementApi);
13513      }
13514
13515    case RENDER_STYLE:
13516      {
13517        return renderStyle(element, refState, actionState, actionItem, styleProp, elementApi);
13518      }
13519
13520    case RENDER_GENERAL:
13521      {
13522        return renderGeneral(element, actionItem, elementApi);
13523      }
13524
13525    case RENDER_PLUGIN:
13526      {
13527        var actionTypeId = actionItem.actionTypeId;
13528
13529        if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
13530          // $FlowFixMe
13531          return (0, _IX2VanillaPlugins.renderPlugin)(actionTypeId)(pluginInstance, refState, actionItem);
13532        }
13533      }
13534  }
13535}
13536
13537var transformDefaults = (_transformDefaults = {}, (0, _defineProperty2["default"])(_transformDefaults, TRANSFORM_MOVE, Object.freeze({
13538  xValue: 0,
13539  yValue: 0,
13540  zValue: 0
13541})), (0, _defineProperty2["default"])(_transformDefaults, TRANSFORM_SCALE, Object.freeze({
13542  xValue: 1,
13543  yValue: 1,
13544  zValue: 1
13545})), (0, _defineProperty2["default"])(_transformDefaults, TRANSFORM_ROTATE, Object.freeze({
13546  xValue: 0,
13547  yValue: 0,
13548  zValue: 0
13549})), (0, _defineProperty2["default"])(_transformDefaults, TRANSFORM_SKEW, Object.freeze({
13550  xValue: 0,
13551  yValue: 0
13552})), _transformDefaults);
13553var filterDefaults = Object.freeze({
13554  blur: 0,
13555  'hue-rotate': 0,
13556  invert: 0,
13557  grayscale: 0,
13558  saturate: 100,
13559  sepia: 0,
13560  contrast: 100,
13561  brightness: 100
13562});
13563
13564var getFilterUnit = function getFilterUnit(filterType, actionItemConfig) {
13565  var filter = (0, _findLast["default"])(actionItemConfig.filters, function (_ref7) {
13566    var type = _ref7.type;
13567    return type === filterType;
13568  });
13569
13570  if (filter && filter.unit) {
13571    return filter.unit;
13572  }
13573
13574  switch (filterType) {
13575    case 'blur':
13576      return 'px';
13577
13578    case 'hue-rotate':
13579      return 'deg';
13580
13581    default:
13582      return '%';
13583  }
13584};
13585
13586var transformKeys = Object.keys(transformDefaults);
13587
13588function renderTransform(element, refState, actionState, actionItem, elementApi) {
13589  var newTransform = transformKeys.map(function (actionTypeId) {
13590    var defaults = transformDefaults[actionTypeId];
13591
13592    var _ref8 = refState[actionTypeId] || {},
13593        _ref8$xValue = _ref8.xValue,
13594        xValue = _ref8$xValue === void 0 ? defaults.xValue : _ref8$xValue,
13595        _ref8$yValue = _ref8.yValue,
13596        yValue = _ref8$yValue === void 0 ? defaults.yValue : _ref8$yValue,
13597        _ref8$zValue = _ref8.zValue,
13598        zValue = _ref8$zValue === void 0 ? defaults.zValue : _ref8$zValue,
13599        _ref8$xUnit = _ref8.xUnit,
13600        xUnit = _ref8$xUnit === void 0 ? '' : _ref8$xUnit,
13601        _ref8$yUnit = _ref8.yUnit,
13602        yUnit = _ref8$yUnit === void 0 ? '' : _ref8$yUnit,
13603        _ref8$zUnit = _ref8.zUnit,
13604        zUnit = _ref8$zUnit === void 0 ? '' : _ref8$zUnit;
13605
13606    switch (actionTypeId) {
13607      case TRANSFORM_MOVE:
13608        return "".concat(TRANSLATE_3D, "(").concat(xValue).concat(xUnit, ", ").concat(yValue).concat(yUnit, ", ").concat(zValue).concat(zUnit, ")");
13609
13610      case TRANSFORM_SCALE:
13611        return "".concat(SCALE_3D, "(").concat(xValue).concat(xUnit, ", ").concat(yValue).concat(yUnit, ", ").concat(zValue).concat(zUnit, ")");
13612
13613      case TRANSFORM_ROTATE:
13614        return "".concat(ROTATE_X, "(").concat(xValue).concat(xUnit, ") ").concat(ROTATE_Y, "(").concat(yValue).concat(yUnit, ") ").concat(ROTATE_Z, "(").concat(zValue).concat(zUnit, ")");
13615
13616      case TRANSFORM_SKEW:
13617        return "".concat(SKEW, "(").concat(xValue).concat(xUnit, ", ").concat(yValue).concat(yUnit, ")");
13618
13619      default:
13620        return '';
13621    }
13622  }).join(' ');
13623  var setStyle = elementApi.setStyle;
13624  addWillChange(element, _IX2BrowserSupport.TRANSFORM_PREFIXED, elementApi);
13625  setStyle(element, _IX2BrowserSupport.TRANSFORM_PREFIXED, newTransform); // Set transform-style: preserve-3d
13626
13627  if (hasDefined3dTransform(actionItem, actionState)) {
13628    setStyle(element, _IX2BrowserSupport.TRANSFORM_STYLE_PREFIXED, PRESERVE_3D);
13629  }
13630}
13631
13632function renderFilter(element, actionState, actionItemConfig, elementApi) {
13633  var filterValue = (0, _reduce["default"])(actionState, function (result, value, type) {
13634    return "".concat(result, " ").concat(type, "(").concat(value).concat(getFilterUnit(type, actionItemConfig), ")");
13635  }, '');
13636  var setStyle = elementApi.setStyle;
13637  addWillChange(element, FILTER, elementApi);
13638  setStyle(element, FILTER, filterValue);
13639}
13640
13641function hasDefined3dTransform(_ref9, _ref10) {
13642  var actionTypeId = _ref9.actionTypeId;
13643  var xValue = _ref10.xValue,
13644      yValue = _ref10.yValue,
13645      zValue = _ref10.zValue;
13646  // TRANSLATE_Z
13647  return actionTypeId === TRANSFORM_MOVE && zValue !== undefined || // SCALE_Z
13648  actionTypeId === TRANSFORM_SCALE && zValue !== undefined || // ROTATE_X or ROTATE_Y
13649  actionTypeId === TRANSFORM_ROTATE && (xValue !== undefined || yValue !== undefined);
13650}
13651
13652var paramCapture = '\\(([^)]+)\\)';
13653var rgbValidRegex = /^rgb/;
13654var rgbMatchRegex = RegExp("rgba?".concat(paramCapture));
13655
13656function getFirstMatch(regex, value) {
13657  var match = regex.exec(value);
13658  return match ? match[1] : '';
13659}
13660
13661function parseColor(_ref11) {
13662  var element = _ref11.element,
13663      actionTypeId = _ref11.actionTypeId,
13664      computedStyle = _ref11.computedStyle,
13665      getStyle = _ref11.getStyle;
13666  var prop = colorStyleProps[actionTypeId];
13667  var inlineValue = getStyle(element, prop);
13668  var value = rgbValidRegex.test(inlineValue) ? inlineValue : computedStyle[prop];
13669  var matches = getFirstMatch(rgbMatchRegex, value).split(COMMA_DELIMITER);
13670  return {
13671    rValue: (0, _defaultTo["default"])(parseInt(matches[0], 10), 255),
13672    gValue: (0, _defaultTo["default"])(parseInt(matches[1], 10), 255),
13673    bValue: (0, _defaultTo["default"])(parseInt(matches[2], 10), 255),
13674    aValue: (0, _defaultTo["default"])(parseFloat(matches[3]), 1)
13675  };
13676}
13677
13678function renderStyle(element, refState, actionState, actionItem, styleProp, elementApi) {
13679  var setStyle = elementApi.setStyle;
13680  var actionTypeId = actionItem.actionTypeId,
13681      config = actionItem.config;
13682
13683  switch (actionTypeId) {
13684    case STYLE_SIZE:
13685      {
13686        var _actionItem$config5 = actionItem.config,
13687            _actionItem$config5$w = _actionItem$config5.widthUnit,
13688            widthUnit = _actionItem$config5$w === void 0 ? '' : _actionItem$config5$w,
13689            _actionItem$config5$h = _actionItem$config5.heightUnit,
13690            heightUnit = _actionItem$config5$h === void 0 ? '' : _actionItem$config5$h;
13691        var widthValue = actionState.widthValue,
13692            heightValue = actionState.heightValue;
13693
13694        if (widthValue !== undefined) {
13695          if (widthUnit === AUTO) {
13696            widthUnit = 'px';
13697          }
13698
13699          addWillChange(element, WIDTH, elementApi);
13700          setStyle(element, WIDTH, widthValue + widthUnit);
13701        }
13702
13703        if (heightValue !== undefined) {
13704          if (heightUnit === AUTO) {
13705            heightUnit = 'px';
13706          }
13707
13708          addWillChange(element, HEIGHT, elementApi);
13709          setStyle(element, HEIGHT, heightValue + heightUnit);
13710        }
13711
13712        break;
13713      }
13714
13715    case STYLE_FILTER:
13716      {
13717        renderFilter(element, actionState, config, elementApi);
13718        break;
13719      }
13720
13721    case STYLE_BACKGROUND_COLOR:
13722    case STYLE_BORDER:
13723    case STYLE_TEXT_COLOR:
13724      {
13725        var prop = colorStyleProps[actionTypeId];
13726        var rValue = Math.round(actionState.rValue);
13727        var gValue = Math.round(actionState.gValue);
13728        var bValue = Math.round(actionState.bValue);
13729        var aValue = actionState.aValue;
13730        addWillChange(element, prop, elementApi);
13731        setStyle(element, prop, aValue >= 1 ? "rgb(".concat(rValue, ",").concat(gValue, ",").concat(bValue, ")") : "rgba(".concat(rValue, ",").concat(gValue, ",").concat(bValue, ",").concat(aValue, ")"));
13732        break;
13733      }
13734
13735    default:
13736      {
13737        var _config$unit = config.unit,
13738            unit = _config$unit === void 0 ? '' : _config$unit;
13739        addWillChange(element, styleProp, elementApi);
13740        setStyle(element, styleProp, actionState.value + unit);
13741        break;
13742      }
13743  }
13744}
13745
13746function renderGeneral(element, actionItem, elementApi) {
13747  var setStyle = elementApi.setStyle;
13748
13749  switch (actionItem.actionTypeId) {
13750    case GENERAL_DISPLAY:
13751      {
13752        var value = actionItem.config.value;
13753
13754        if (value === FLEX && _IX2BrowserSupport.IS_BROWSER_ENV) {
13755          setStyle(element, DISPLAY, _IX2BrowserSupport.FLEX_PREFIXED);
13756        } else {
13757          setStyle(element, DISPLAY, value);
13758        }
13759
13760        return;
13761      }
13762  }
13763}
13764
13765function addWillChange(element, prop, elementApi) {
13766  if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
13767    return;
13768  } // $FlowFixMe
13769
13770
13771  var validProp = willChangeProps[prop];
13772
13773  if (!validProp) {
13774    return;
13775  }
13776
13777  var getStyle = elementApi.getStyle,
13778      setStyle = elementApi.setStyle;
13779  var value = getStyle(element, WILL_CHANGE);
13780
13781  if (!value) {
13782    setStyle(element, WILL_CHANGE, validProp);
13783    return;
13784  }
13785
13786  var values = value.split(COMMA_DELIMITER).map(trim);
13787
13788  if (values.indexOf(validProp) === -1) {
13789    setStyle(element, WILL_CHANGE, values.concat(validProp).join(COMMA_DELIMITER));
13790  }
13791}
13792
13793function removeWillChange(element, prop, elementApi) {
13794  if (!_IX2BrowserSupport.IS_BROWSER_ENV) {
13795    return;
13796  } // $FlowFixMe
13797
13798
13799  var validProp = willChangeProps[prop];
13800
13801  if (!validProp) {
13802    return;
13803  }
13804
13805  var getStyle = elementApi.getStyle,
13806      setStyle = elementApi.setStyle;
13807  var value = getStyle(element, WILL_CHANGE);
13808
13809  if (!value || value.indexOf(validProp) === -1) {
13810    return;
13811  }
13812
13813  setStyle(element, WILL_CHANGE, value.split(COMMA_DELIMITER).map(trim).filter(function (v) {
13814    return v !== validProp;
13815  }).join(COMMA_DELIMITER));
13816} // $FlowFixMe
13817
13818
13819function clearAllStyles(_ref12) {
13820  var store = _ref12.store,
13821      elementApi = _ref12.elementApi;
13822
13823  var _store$getState = store.getState(),
13824      ixData = _store$getState.ixData;
13825
13826  var _ixData$events = ixData.events,
13827      events = _ixData$events === void 0 ? {} : _ixData$events,
13828      _ixData$actionLists = ixData.actionLists,
13829      actionLists = _ixData$actionLists === void 0 ? {} : _ixData$actionLists;
13830  Object.keys(events).forEach(function (eventId) {
13831    var event = events[eventId];
13832    var config = event.action.config;
13833    var actionListId = config.actionListId;
13834    var actionList = actionLists[actionListId];
13835
13836    if (actionList) {
13837      clearActionListStyles({
13838        actionList: actionList,
13839        event: event,
13840        elementApi: elementApi
13841      });
13842    }
13843  });
13844  Object.keys(actionLists).forEach(function (actionListId) {
13845    clearActionListStyles({
13846      actionList: actionLists[actionListId],
13847      elementApi: elementApi
13848    });
13849  });
13850} // $FlowFixMe
13851
13852
13853function clearActionListStyles(_ref13) {
13854  var _ref13$actionList = _ref13.actionList,
13855      actionList = _ref13$actionList === void 0 ? {} : _ref13$actionList,
13856      event = _ref13.event,
13857      elementApi = _ref13.elementApi;
13858  var actionItemGroups = actionList.actionItemGroups,
13859      continuousParameterGroups = actionList.continuousParameterGroups;
13860  actionItemGroups && actionItemGroups.forEach(function (actionGroup) {
13861    clearActionGroupStyles({
13862      actionGroup: actionGroup,
13863      event: event,
13864      elementApi: elementApi
13865    });
13866  });
13867  continuousParameterGroups && continuousParameterGroups.forEach(function (paramGroup) {
13868    var continuousActionGroups = paramGroup.continuousActionGroups;
13869    continuousActionGroups.forEach(function (actionGroup) {
13870      clearActionGroupStyles({
13871        actionGroup: actionGroup,
13872        event: event,
13873        elementApi: elementApi
13874      });
13875    });
13876  });
13877}
13878
13879function clearActionGroupStyles(_ref14) {
13880  var actionGroup = _ref14.actionGroup,
13881      event = _ref14.event,
13882      elementApi = _ref14.elementApi;
13883  var actionItems = actionGroup.actionItems;
13884  actionItems.forEach(function (_ref15) {
13885    var actionTypeId = _ref15.actionTypeId,
13886        config = _ref15.config;
13887    var clearElement;
13888
13889    if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) {
13890      clearElement = (0, _IX2VanillaPlugins.clearPlugin)(actionTypeId);
13891    } else {
13892      clearElement = processElementByType({
13893        effect: clearStyleProp,
13894        actionTypeId: actionTypeId,
13895        elementApi: elementApi
13896      });
13897    }
13898
13899    getAffectedElements({
13900      config: config,
13901      event: event,
13902      elementApi: elementApi
13903    }
13903).forEach(clearElement);
13904  });
13905} // $FlowFixMe
13906
13907
13908function cleanupHTMLElement(element, actionItem, elementApi) {
13909  var setStyle = elementApi.setStyle,
13910      getStyle = elementApi.getStyle;
13911  var actionTypeId = actionItem.actionTypeId;
13912
13913  if (actionTypeId === STYLE_SIZE) {
13914    var config = actionItem.config;
13915
13916    if (config.widthUnit === AUTO) {
13917      setStyle(element, WIDTH, '');
13918    }
13919
13920    if (config.heightUnit === AUTO) {
13921      setStyle(element, HEIGHT, '');
13922    }
13923  }
13924
13925  if (getStyle(element, WILL_CHANGE)) {
13926    processElementByType({
13927      effect: removeWillChange,
13928      actionTypeId: actionTypeId,
13929      elementApi: elementApi
13930    })(element);
13931  }
13932}
13933
13934var processElementByType = function processElementByType(_ref16) {
13935  var effect = _ref16.effect,
13936      actionTypeId = _ref16.actionTypeId,
13937      elementApi = _ref16.elementApi;
13938  return function (element) {
13939    switch (actionTypeId) {
13940      case TRANSFORM_MOVE:
13941      case TRANSFORM_SCALE:
13942      case TRANSFORM_ROTATE:
13943      case TRANSFORM_SKEW:
13944        effect(element, _IX2BrowserSupport.TRANSFORM_PREFIXED, elementApi);
13945        break;
13946
13947      case STYLE_FILTER:
13948        effect(element, FILTER, elementApi);
13949        break;
13950
13951      case STYLE_OPACITY:
13952        effect(element, OPACITY, elementApi);
13953        break;
13954
13955      case STYLE_SIZE:
13956        effect(element, WIDTH, elementApi);
13957        effect(element, HEIGHT, elementApi);
13958        break;
13959
13960      case STYLE_BACKGROUND_COLOR:
13961      case STYLE_BORDER:
13962      case STYLE_TEXT_COLOR:
13963        effect(element, colorStyleProps[actionTypeId], elementApi);
13964        break;
13965
13966      case GENERAL_DISPLAY:
13967        effect(element, DISPLAY, elementApi);
13968        break;
13969    }
13970  };
13971};
13972
13973function clearStyleProp(element, prop, elementApi) {
13974  var setStyle = elementApi.setStyle;
13975  removeWillChange(element, prop, elementApi);
13976  setStyle(element, prop, ''); // Clear transform-style: preserve-3d
13977
13978  if (prop === _IX2BrowserSupport.TRANSFORM_PREFIXED) {
13979    setStyle(element, _IX2BrowserSupport.TRANSFORM_STYLE_PREFIXED, '');
13980  }
13981} // $FlowFixMe
13982
13983
13984function getMaxDurationItemIndex(actionItems) {
13985  var maxDuration = 0;
13986  var resultIndex = 0;
13987  actionItems.forEach(function (actionItem, index) {
13988    var config = actionItem.config;
13989    var total = config.delay + config.duration;
13990
13991    if (total >= maxDuration) {
13992      maxDuration = total;
13993      resultIndex = index;
13994    }
13995  });
13996  return resultIndex;
13997} // $FlowFixMe
13998
13999
14000function getActionListProgress(actionList, instance) {
14001  var actionItemGroups = actionList.actionItemGroups,
14002      useFirstGroupAsInitialState = actionList.useFirstGroupAsInitialState;
14003  var instanceItem = instance.actionItem,
14004      _instance$verboseTime = instance.verboseTimeElapsed,
14005      verboseTimeElapsed = _instance$verboseTime === void 0 ? 0 : _instance$verboseTime;
14006  var totalDuration = 0;
14007  var elapsedDuration = 0;
14008  actionItemGroups.forEach(function (group, index) {
14009    if (useFirstGroupAsInitialState && index === 0) {
14010      return;
14011    }
14012
14013    var actionItems = group.actionItems;
14014    var carrierItem = actionItems[getMaxDurationItemIndex(actionItems)];
14015    var config = carrierItem.config,
14016        actionTypeId = carrierItem.actionTypeId;
14017
14018    if (instanceItem.id === carrierItem.id) {
14019      elapsedDuration = totalDuration + verboseTimeElapsed;
14020    }
14021
14022    var duration = getRenderType(actionTypeId) === RENDER_GENERAL ? 0 : config.duration;
14023    totalDuration += config.delay + duration;
14024  });
14025  return totalDuration > 0 ? (0, _IX2EasingUtils.optimizeFloat)(elapsedDuration / totalDuration) : 0;
14026} // $FlowFixMe
14027
14028
14029function reduceListToGroup(_ref17) {
14030  var actionList = _ref17.actionList,
14031      actionItemId = _ref17.actionItemId,
14032      rawData = _ref17.rawData;
14033  var actionItemGroups = actionList.actionItemGroups,
14034      continuousParameterGroups = actionList.continuousParameterGroups;
14035  var newActionItems = [];
14036
14037  var takeItemUntilMatch = function takeItemUntilMatch(actionItem) {
14038    newActionItems.push((0, _timm.mergeIn)(actionItem, ['config'], {
14039      delay: 0,
14040      duration: 0
14041    }));
14042    return actionItem.id === actionItemId;
14043  };
14044
14045  actionItemGroups && actionItemGroups.some(function (_ref18) {
14046    var actionItems = _ref18.actionItems;
14047    return actionItems.some(takeItemUntilMatch);
14048  });
14049  continuousParameterGroups && continuousParameterGroups.some(function (paramGroup) {
14050    var continuousActionGroups = paramGroup.continuousActionGroups;
14051    return continuousActionGroups.some(function (_ref19) {
14052      var actionItems = _ref19.actionItems;
14053      return actionItems.some(takeItemUntilMatch);
14054    });
14055  });
14056  return (0, _timm.setIn)(rawData, ['actionLists'], (0, _defineProperty2["default"])({}, actionList.id, {
14057    id: actionList.id,
14058    actionItemGroups: [{
14059      actionItems: newActionItems
14060    }]
14061  }));
14062} // $FlowFixMe
14063
14064
14065function shouldNamespaceEventParameter(eventTypeId, _ref21) {
14066  var basedOn = _ref21.basedOn;
14067  return eventTypeId === _constants.EventTypeConsts.SCROLLING_IN_VIEW && (basedOn === _constants.EventBasedOn.ELEMENT || basedOn == null) || eventTypeId === _constants.EventTypeConsts.MOUSE_MOVE && basedOn === _constants.EventBasedOn.ELEMENT;
14068}
14069
14070function getNamespacedParameterId(eventStateKey, continuousParameterGroupId) {
14071  var namespacedParameterId = eventStateKey + COLON_DELIMITER + continuousParameterGroupId;
14072  return namespacedParameterId;
14073} // $FlowFixMe
14074
14075
14076function shouldAllowMediaQuery(mediaQueries, mediaQueryKey) {
14077  // During design mode, current media query key does not exist
14078  if (mediaQueryKey == null) {
14079    return true;
14080  }
14081
14082  return mediaQueries.indexOf(mediaQueryKey) !== -1;
14083} // $FlowFixMe
14084
14085
14086function mediaQueriesEqual(listA, listB) {
14087  return (0, _shallowEqual["default"])(listA && listA.sort(), listB && listB.sort());
14088} // $FlowFixMe
14089
14090
14091function stringifyTarget(target) {
14092  if (typeof target === 'string') {
14093    return target;
14094  }
14095
14096  var _target$id = target.id,
14097      id = _target$id === void 0 ? '' : _target$id,
14098      _target$selector = target.selector,
14099      selector = _target$selector === void 0 ? '' : _target$selector,
14100      _target$useEventTarge = target.useEventTarget,
14101      useEventTarget = _target$useEventTarge === void 0 ? '' : _target$useEventTarge;
14102  return id + BAR_DELIMITER + selector + BAR_DELIMITER + useEventTarget;
14103}
14104
14105/***/ }),
14106/* 250 */
vendor: 5,734 bytes, lines 14107-14317
14107/***/ (function(module, exports) {
14108
14109/**
14110 * Checks `value` to determine whether a default value should be returned in
14111 * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,
14112 * or `undefined`.
14113 *
14114 * @static
14115 * @memberOf _
14116 * @since 4.14.0
14117 * @category Util
14118 * @param {*} value The value to check.
14119 * @param {*} defaultValue The default value.
14120 * @returns {*} Returns the resolved value.
14121 * @example
14122 *
14123 * _.defaultTo(1, 10);
14124 * // => 1
14125 *
14126 * _.defaultTo(undefined, 10);
14127 * // => 10
14128 */
14129function defaultTo(value, defaultValue) {
14130  return (value == null || value !== value) ? defaultValue : value;
14131}
14132
14133module.exports = defaultTo;
14134
14135
14136/***/ }),
14137/* 251 */
14138/***/ (function(module, exports, __webpack_require__) {
14139
14140var arrayReduce = __webpack_require__(252),
14141    baseEach = __webpack_require__(112),
14142    baseIteratee = __webpack_require__(7),
14143    baseReduce = __webpack_require__(256),
14144    isArray = __webpack_require__(1);
14145
14146/**
14147 * Reduces `collection` to a value which is the accumulated result of running
14148 * each element in `collection` thru `iteratee`, where each successive
14149 * invocation is supplied the return value of the previous. If `accumulator`
14150 * is not given, the first element of `collection` is used as the initial
14151 * value. The iteratee is invoked with four arguments:
14152 * (accumulator, value, index|key, collection).
14153 *
14154 * Many lodash methods are guarded to work as iteratees for methods like
14155 * `_.reduce`, `_.reduceRight`, and `_.transform`.
14156 *
14157 * The guarded methods are:
14158 * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,
14159 * and `sortBy`
14160 *
14161 * @static
14162 * @memberOf _
14163 * @since 0.1.0
14164 * @category Collection
14165 * @param {Array|Object} collection The collection to iterate over.
14166 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
14167 * @param {*} [accumulator] The initial value.
14168 * @returns {*} Returns the accumulated value.
14169 * @see _.reduceRight
14170 * @example
14171 *
14172 * _.reduce([1, 2], function(sum, n) {
14173 *   return sum + n;
14174 * }, 0);
14175 * // => 3
14176 *
14177 * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
14178 *   (result[value] || (result[value] = [])).push(key);
14179 *   return result;
14180 * }, {});
14181 * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)
14182 */
14183function reduce(collection, iteratee, accumulator) {
14184  var func = isArray(collection) ? arrayReduce : baseReduce,
14185      initAccum = arguments.length < 3;
14186
14187  return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach);
14188}
14189
14190module.exports = reduce;
14191
14192
14193/***/ }),
14194/* 252 */
14195/***/ (function(module, exports) {
14196
14197/**
14198 * A specialized version of `_.reduce` for arrays without support for
14199 * iteratee shorthands.
14200 *
14201 * @private
14202 * @param {Array} [array] The array to iterate over.
14203 * @param {Function} iteratee The function invoked per iteration.
14204 * @param {*} [accumulator] The initial value.
14205 * @param {boolean} [initAccum] Specify using the first element of `array` as
14206 *  the initial value.
14207 * @returns {*} Returns the accumulated value.
14208 */
14209function arrayReduce(array, iteratee, accumulator, initAccum) {
14210  var index = -1,
14211      length = array == null ? 0 : array.length;
14212
14213  if (initAccum && length) {
14214    accumulator = array[++index];
14215  }
14216  while (++index < length) {
14217    accumulator = iteratee(accumulator, array[index], index, array);
14218  }
14219  return accumulator;
14220}
14221
14222module.exports = arrayReduce;
14223
14224
14225/***/ }),
14226/* 253 */
14227/***/ (function(module, exports, __webpack_require__) {
14228
14229var createBaseFor = __webpack_require__(254);
14230
14231/**
14232 * The base implementation of `baseForOwn` which iterates over `object`
14233 * properties returned by `keysFunc` and invokes `iteratee` for each property.
14234 * Iteratee functions may exit iteration early by explicitly returning `false`.
14235 *
14236 * @private
14237 * @param {Object} object The object to iterate over.
14238 * @param {Function} iteratee The function invoked per iteration.
14239 * @param {Function} keysFunc The function to get the keys of `object`.
14240 * @returns {Object} Returns `object`.
14241 */
14242var baseFor = createBaseFor();
14243
14244module.exports = baseFor;
14245
14246
14247/***/ }),
14248/* 254 */
14249/***/ (function(module, exports) {
14250
14251/**
14252 * Creates a base function for methods like `_.forIn` and `_.forOwn`.
14253 *
14254 * @private
14255 * @param {boolean} [fromRight] Specify iterating from right to left.
14256 * @returns {Function} Returns the new base function.
14257 */
14258function createBaseFor(fromRight) {
14259  return function(object, iteratee, keysFunc) {
14260    var index = -1,
14261        iterable = Object(object),
14262        props = keysFunc(object),
14263        length = props.length;
14264
14265    while (length--) {
14266      var key = props[fromRight ? length : ++index];
14267      if (iteratee(iterable[key], key, iterable) === false) {
14268        break;
14269      }
14270    }
14271    return object;
14272  };
14273}
14274
14275module.exports = createBaseFor;
14276
14277
14278/***/ }),
14279/* 255 */
14280/***/ (function(module, exports, __webpack_require__) {
14281
14282var isArrayLike = __webpack_require__(12);
14283
14284/**
14285 * Creates a `baseEach` or `baseEachRight` function.
14286 *
14287 * @private
14288 * @param {Function} eachFunc The function to iterate over a collection.
14289 * @param {boolean} [fromRight] Specify iterating from right to left.
14290 * @returns {Function} Returns the new base function.
14291 */
14292function createBaseEach(eachFunc, fromRight) {
14293  return function(collection, iteratee) {
14294    if (collection == null) {
14295      return collection;
14296    }
14297    if (!isArrayLike(collection)) {
14298      return eachFunc(collection, iteratee);
14299    }
14300    var length = collection.length,
14301        index = fromRight ? length : -1,
14302        iterable = Object(collection);
14303
14304    while ((fromRight ? index-- : ++index < length)) {
14305      if (iteratee(iterable[index], index, iterable) === false) {
14306        break;
14307      }
14308    }
14309    return collection;
14310  };
14311}
14312
14313module.exports = createBaseEach;
14314
14315
14316/***/ }),
14317/* 256 */
14318/***/ (function(module, exports) {
14319
14320/**
14321 * The base implementation of `_.reduce` and `_.reduceRight`, without support
14322 * for iteratee shorthands, which iterates over `collection` using `eachFunc`.
14323 *
14324 * @private
14325 * @param {Array|Object} collection The collection to iterate over.
14326 * @param {Function} iteratee The function invoked per iteration.
14327 * @param {*} accumulator The initial value.
14328 * @param {boolean} initAccum Specify using the first or last element of
14329 *  `collection` as the initial value.
14330 * @param {Function} eachFunc The function to iterate over `collection`.
14331 * @returns {*} Returns the accumulated value.
14332 */
14333function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {
14334  eachFunc(collection, function(value, index, collection) {
14335    accumulator = initAccum
14336      ? (initAccum = false, value)
14337      : iteratee(accumulator, value, index, collection);
14338  });
14339  return accumulator;
14340}
14341
14342module.exports = baseReduce;
14343
14344
14345/***/ }),
14346/* 257 */
14347/***/ (function(module, exports, __webpack_require__) {
14348
14349var createFind = __webpack_require__(87),
14350    findLastIndex = __webpack_require__(258);
14351
14352/**
14353 * This method is like `_.find` except that it iterates over elements of
14354 * `collection` from right to left.
14355 *
14356 * @static
14357 * @memberOf _
14358 * @since 2.0.0
14359 * @category Collection
14360 * @param {Array|Object} collection The collection to inspect.
14361 * @param {Function} [predicate=_.identity] The function invoked per iteration.
14362 * @param {number} [fromIndex=collection.length-1] The index to search from.
14363 * @returns {*} Returns the matched element, else `undefined`.
14364 * @example
14365 *
14366 * _.findLast([1, 2, 3, 4], function(n) {
14367 *   return n % 2 == 1;
14368 * });
14369 * // => 3
14370 */
14371var findLast = createFind(findLastIndex);
14372
14373module.exports = findLast;
14374
14375
14376/***/ }),
14377/* 258 */
14378/***/ (function(module, exports, __webpack_require__) {
14379
14380var baseFindIndex = __webpack_require__(105),
14381    baseIteratee = __webpack_require__(7),
14382    toInteger = __webpack_require__(106);
14383
14384/* Built-in method references for those with the same name as other `lodash` methods. */
14385var nativeMax = Math.max,
14386    nativeMin = Math.min;
14387
14388/**
14389 * This method is like `_.findIndex` except that it iterates over elements
14390 * of `collection` from right to left.
14391 *
14392 * @static
14393 * @memberOf _
14394 * @since 2.0.0
14395 * @category Array
14396 * @param {Array} array The array to inspect.
14397 * @param {Function} [predicate=_.identity] The function invoked per iteration.
14398 * @param {number} [fromIndex=array.length-1] The index to search from.
14399 * @returns {number} Returns the index of the found element, else `-1`.
14400 * @example
14401 *
14402 * var users = [
14403 *   { 'user': 'barney',  'active': true },
14404 *   { 'user': 'fred',    'active': false },
14405 *   { 'user': 'pebbles', 'active': false }
14406 * ];
14407 *
14408 * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });
14409 * // => 2
14410 *
14411 * // The `_.matches` iteratee shorthand.
14412 * _.findLastIndex(users, { 'user': 'barney', 'active': true });
14413 * // => 0
14414 *
14415 * // The `_.matchesProperty` iteratee shorthand.
14416 * _.findLastIndex(users, ['active', false]);
14417 * // => 2
14418 *
14419 * // The `_.property` iteratee shorthand.
14420 * _.findLastIndex(users, 'active');
14421 * // => 0
14422 */
14423function findLastIndex(array, predicate, fromIndex) {
14424  var length = array == null ? 0 : array.length;
14425  if (!length) {
14426    return -1;
14427  }
14428  var index = length - 1;
14429  if (fromIndex !== undefined) {
14430    index = toInteger(fromIndex);
14431    index = fromIndex < 0
14432      ? nativeMax(length + index, 0)
14433      : nativeMin(index, length - 1);
14434  }
14435  return baseFindIndex(array, baseIteratee(predicate, 3), index, true);
14436}
14437
14438module.exports = findLastIndex;
14439
14440
14441/***/ }),
14442/* 259 */
14443/***/ (function(module, exports) {
14444
14445function _interopRequireDefault(obj) {
14446  return obj && obj.__esModule ? obj : {
14447    default: obj
14448  };
14449}
14450
14451module.exports = _interopRequireDefault;
14452
14453/***/ }),
14454/* 260 */
14455/***/ (function(module, exports, __webpack_require__) {
14456
14457"use strict";
14458/**
14459 * Copyright (c) 2013-present, Facebook, Inc.
14460 *
14461 * This source code is licensed under the MIT license found in the
14462 * LICENSE file in the root directory of this source tree.
14463 *
14464 * @typechecks
14465 * 
14466 */
14467
14468/*eslint-disable no-self-compare */
14469
14470
14471
14472var hasOwnProperty = Object.prototype.hasOwnProperty;
14473
14474/**
14475 * inlined Object.is polyfill to avoid requiring consumers ship their own
14476 * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
14477 */
14478function is(x, y) {
14479  // SameValue algorithm
14480  if (x === y) {
14481    // Steps 1-5, 7-10
14482    // Steps 6.b-6.e: +0 != -0
14483    // Added the nonzero y check to make Flow happy, but it is redundant
14484    return x !== 0 || y !== 0 || 1 / x === 1 / y;
14485  } else {
14486    // Step 6.a: NaN == NaN
14487    return x !== x && y !== y;
14488  }
14489}
14490
14491/**
14492 * Performs equality by iterating through keys on an object and returning false
14493 * when any key has values which are not strictly equal between the arguments.
14494 * Returns true when the values of all keys are strictly equal.
14495 */
14496function shallowEqual(objA, objB) {
14497  if (is(objA, objB)) {
14498    return true;
14499  }
14500
14501  if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {
14502    return false;
14503  }
14504
14505  var keysA = Object.keys(objA);
14506  var keysB = Object.keys(objB);
14507
14508  if (keysA.length !== keysB.length) {
14509    return false;
14510  }
14511
14512  // Test for A's keys different from B.
14513  for (var i = 0; i < keysA.length; i++) {
14514    if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {
14515      return false;
14516    }
14517  }
14518
14519  return true;
14520}
14521
14522module.exports = shallowEqual;
14523
14524/***/ }),
14525/* 261 */
14526/***/ (function(module, exports, __webpack_require__) {
14527
14528"use strict";
14529
14530
14531Object.defineProperty(exports, "__esModule", {
14532  value: true
14533});
14534exports.ixInstances = void 0;
14535
14536var _constants = __webpack_require__(2);
14537
14538var _shared = __webpack_require__(10);
14539
14540var _timm = __webpack_require__(18);
14541/* eslint-env browser */
14542
14543
14544var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
14545    IX2_RAW_DATA_IMPORTED = _constants$IX2EngineA.IX2_RAW_DATA_IMPORTED,
14546    IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED,
14547    IX2_INSTANCE_ADDED = _constants$IX2EngineA.IX2_INSTANCE_ADDED,
14548    IX2_INSTANCE_STARTED = _constants$IX2EngineA.IX2_INSTANCE_STARTED,
14549    IX2_INSTANCE_REMOVED = _constants$IX2EngineA.IX2_INSTANCE_REMOVED,
14550    IX2_ANIMATION_FRAME_CHANGED = _constants$IX2EngineA.IX2_ANIMATION_FRAME_CHANGED;
14551var _shared$IX2EasingUtil = _shared.IX2EasingUtils,
14552    optimizeFloat = _shared$IX2EasingUtil.optimizeFloat,
14553    applyEasing = _shared$IX2EasingUtil.applyEasing,
14554    createBezierEasing = _shared$IX2EasingUtil.createBezierEasing;
14555var RENDER_GENERAL = _constants.IX2EngineConstants.RENDER_GENERAL;
14556var _shared$IX2VanillaUti = _shared.IX2VanillaUtils,
14557    getItemConfigByKey = _shared$IX2VanillaUti.getItemConfigByKey,
14558    getRenderType = _shared$IX2VanillaUti.getRenderType,
14559    getStyleProp = _shared$IX2VanillaUti.getStyleProp;
14560
14561var continuousInstance = function continuousInstance(state, action) {
14562  var lastPosition = state.position,
14563      parameterId = state.parameterId,
14564      actionGroups = state.actionGroups,
14565      destinationKeys = state.destinationKeys,
14566      smoothing = state.smoothing,
14567      restingValue = state.restingValue,
14568      actionTypeId = state.actionTypeId,
14569      customEasingFn = state.customEasingFn;
14570  var parameters = action.payload.parameters;
14571  var velocity = Math.max(1 - smoothing, 0.01);
14572  var paramValue = parameters[parameterId];
14573
14574  if (paramValue == null) {
14575    velocity = 1;
14576    paramValue = restingValue;
14577  }
14578
14579  var nextPosition = Math.max(paramValue, 0) || 0;
14580  var positionDiff = optimizeFloat(nextPosition - lastPosition);
14581  var position = optimizeFloat(lastPosition + positionDiff * velocity);
14582  var keyframePosition = position * 100;
14583
14584  if (position === lastPosition && state.current) {
14585    return state;
14586  }
14587
14588  var fromActionItem;
14589  var toActionItem;
14590  var positionOffset;
14591  var positionRange;
14592
14593  for (var i = 0, length = actionGroups.length; i < length; i++) {
14594    var _actionGroups$i = actionGroups[i],
14595        keyframe = _actionGroups$i.keyframe,
14596        actionItems = _actionGroups$i.actionItems;
14597
14598    if (i === 0) {
14599      fromActionItem = actionItems[0];
14600    }
14601
14602    if (keyframePosition >= keyframe) {
14603      fromActionItem = actionItems[0];
14604      var nextGroup = actionGroups[i + 1];
14605      var hasNextItem = nextGroup && keyframePosition !== keyframe;
14606      toActionItem = hasNextItem ? nextGroup.actionItems[0] : null;
14607
14608      if (hasNextItem) {
14609        positionOffset = keyframe / 100;
14610        positionRange = (nextGroup.keyframe - keyframe) / 100;
14611      }
14612    }
14613  }
14614
14615  var current = {};
14616
14617  if (fromActionItem && !toActionItem) {
14618    for (var _i = 0, _length = destinationKeys.length; _i < _length; _i++) {
14619      var key = destinationKeys[_i];
14620      current[key] = getItemConfigByKey(actionTypeId, key, fromActionItem.config);
14621    }
14622  } else if (fromActionItem && toActionItem && positionOffset !== undefined && positionRange !== undefined) {
14623    var localPosition = (position - positionOffset) / positionRange;
14624    var easing = fromActionItem.config.easing;
14625    var eased = applyEasing(easing, localPosition, customEasingFn);
14626
14627    for (var _i2 = 0, _length2 = destinationKeys.length; _i2 < _length2; _i2++) {
14628      var _key = destinationKeys[_i2];
14629      var fromVal = getItemConfigByKey(actionTypeId, _key, fromActionItem.config);
14630      var toVal = getItemConfigByKey(actionTypeId, _key, toActionItem.config); // $FlowFixMe — toVal and fromVal could potentially be null, need to update type higher to determine number
14631
14632      var diff = toVal - fromVal; // $FlowFixMe
14633
14634      var value = diff * eased + fromVal;
14635      current[_key] = value;
14636    }
14637  }
14638
14639  return (0, _timm.merge)(state, {
14640    position: position,
14641    current: current
14642  });
14643};
14644
14645var timedInstance = function timedInstance(state, action) {
14646  var _state = state,
14647      active = _state.active,
14648      origin = _state.origin,
14649      start = _state.start,
14650      immediate = _state.immediate,
14651      renderType = _state.renderType,
14652      verbose = _state.verbose,
14653      actionItem = _state.actionItem,
14654      destination = _state.destination,
14655      destinationKeys = _state.destinationKeys,
14656      pluginDuration = _state.pluginDuration,
14657      instanceDelay = _state.instanceDelay,
14658      customEasingFn = _state.customEasingFn;
14659  var easing = actionItem.config.easing;
14660  var _actionItem$config = actionItem.config,
14661      duration = _actionItem$config.duration,
14662      delay = _actionItem$config.delay;
14663
14664  if (pluginDuration != null) {
14665    duration = pluginDuration;
14666  }
14667
14668  delay = instanceDelay != null ? instanceDelay : delay;
14669
14670  if (renderType === RENDER_GENERAL) {
14671    duration = 0;
14672  } else if (immediate) {
14673    duration = delay = 0;
14674  }
14675
14676  var now = action.payload.now;
14677
14678  if (active && origin) {
14679    var delta = now - (start + delay);
14680
14681    if (verbose) {
14682      var verboseDelta = now - start;
14683      var verboseDuration = duration + delay;
14684      var verbosePosition = optimizeFloat(Math.min(Math.max(0, verboseDelta / verboseDuration), 1));
14685      state = (0, _timm.set)(state, 'verboseTimeElapsed', verboseDuration * verbosePosition);
14686    }
14687
14688    if (delta < 0) {
14689      return state;
14690    }
14691
14692    var position = optimizeFloat(Math.min(Math.max(0, delta / duration), 1));
14693    var eased = applyEasing(easing, position, customEasingFn);
14694    var newProps = {};
14695    var current = null;
14696
14697    if (destinationKeys.length) {
14698      current = destinationKeys.reduce(function (result, key) {
14699        var destValue = destination[key];
14700        var originVal = parseFloat(origin[key]) || 0;
14701        var diff = parseFloat(destValue) - originVal;
14702        var value = diff * eased + originVal;
14703        result[key] = value;
14704        return result;
14705      }, {});
14706    }
14707
14708    newProps.current = current;
14709    newProps.position = position;
14710
14711    if (position === 1) {
14712      newProps.active = false;
14713      newProps.complete = true;
14714    }
14715
14716    return (0, _timm.merge)(state, newProps);
14717  }
14718
14719  return state;
14720};
14721
14722var ixInstances = function ixInstances() {
14723  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Object.freeze({});
14724  var action = arguments.length > 1 ? arguments[1] : undefined;
14725
14726  switch (action.type) {
14727    case IX2_RAW_DATA_IMPORTED:
14728      {
14729        return action.payload.ixInstances || Object.freeze({});
14730      }
14731
14732    case IX2_SESSION_STOPPED:
14733      {
14734        return Object.freeze({});
14735      }
14736
14737    case IX2_INSTANCE_ADDED:
14738      {
14739        var _action$payload = action.payload,
14740            instanceId = _action$payload.instanceId,
14741            elementId = _action$payload.elementId,
14742            actionItem = _action$payload.actionItem,
14743            eventId = _action$payload.eventId,
14744            eventTarget = _action$payload.eventTarget,
14745            eventStateKey = _action$payload.eventStateKey,
14746            actionListId = _action$payload.actionListId,
14747            groupIndex = _action$payload.groupIndex,
14748            isCarrier = _action$payload.isCarrier,
14749            origin = _action$payload.origin,
14750            destination = _action$payload.destination,
14751            immediate = _action$payload.immediate,
14752            verbose = _action$payload.verbose,
14753            continuous = _action$payload.continuous,
14754            parameterId = _action$payload.parameterId,
14755            actionGroups = _action$payload.actionGroups,
14756            smoothing = _action$payload.smoothing,
14757            restingValue = _action$payload.restingValue,
14758            pluginInstance = _action$payload.pluginInstance,
14759            pluginDuration = _action$payload.pluginDuration,
14760            instanceDelay = _action$payload.instanceDelay;
14761        var actionTypeId = actionItem.actionTypeId;
14762        var renderType = getRenderType(actionTypeId);
14763        var styleProp = getStyleProp(renderType, actionTypeId);
14764        var destinationKeys = Object.keys(destination).filter(function (key) {
14765          return destination[key] != null;
14766        });
14767        var easing = actionItem.config.easing;
14768        return (0, _timm.set)(state, instanceId, {
14769          id: instanceId,
14770          elementId: elementId,
14771          active: false,
14772          position: 0,
14773          start: 0,
14774          origin: origin,
14775          destination: destination,
14776          destinationKeys: destinationKeys,
14777          immediate: immediate,
14778          verbose: verbose,
14779          current: null,
14780          actionItem: actionItem,
14781          actionTypeId: actionTypeId,
14782          eventId: eventId,
14783          eventTarget: eventTarget,
14784          eventStateKey: eventStateKey,
14785          actionListId: actionListId,
14786          groupIndex: groupIndex,
14787          renderType: renderType,
14788          isCarrier: isCarrier,
14789          styleProp: styleProp,
14790          continuous: continuous,
14791          parameterId: parameterId,
14792          actionGroups: actionGroups,
14793          smoothing: smoothing,
14794          restingValue: restingValue,
14795          pluginInstance: pluginInstance,
14796          pluginDuration: pluginDuration,
14797          instanceDelay: instanceDelay,
14798          customEasingFn: Array.isArray(easing) && easing.length === 4 ? createBezierEasing(easing) : undefined
14799        });
14800      }
14801
14802    case IX2_INSTANCE_STARTED:
14803      {
14804        var _action$payload2 = action.payload,
14805            _instanceId = _action$payload2.instanceId,
14806            time = _action$payload2.time;
14807        return (0, _timm.mergeIn)(state, [_instanceId], {
14808          active: true,
14809          complete: false,
14810          start: time
14811        });
14812      }
14813
14814    case IX2_INSTANCE_REMOVED:
14815      {
14816        var _instanceId2 = action.payload.instanceId;
14817
14818        if (!state[_instanceId2]) {
14819          return state;
14820        }
14821
14822        var newState = {};
14823        var keys = Object.keys(state);
14824        var length = keys.length;
14825
14826        for (var i = 0; i < length; i++) {
14827          var key = keys[i];
14828
14829          if (key !== _instanceId2) {
14830            newState[key] = state[key];
14831          }
14832        }
14833
14834        return newState;
14835      }
14836
14837    case IX2_ANIMATION_FRAME_CHANGED:
14838      {
14839        var _newState = state;
14840
14841        var _keys = Object.keys(state);
14842
14843        var _length3 = _keys.length;
14844
14845        for (var _i3 = 0; _i3 < _length3; _i3++) {
14846          var _key2 = _keys[_i3];
14847          var instance = state[_key2];
14848          var reducer = instance.continuous ? continuousInstance : timedInstance;
14849          _newState = (0, _timm.set)(_newState, _key2, reducer(instance, action));
14850        }
14851
14852        return _newState;
14853      }
14854
14855    default:
14856      {
14857        return state;
14858      }
14859  }
14860};
14861
14862exports.ixInstances = ixInstances;
14863
14864/***/ }),
14865/* 262 */
14866/***/ (function(module, exports, __webpack_require__) {
14867
14868"use strict";
14869
14870
14871Object.defineProperty(exports, "__esModule", {
14872  value: true
14873});
14874exports.ixParameters = void 0;
14875
14876var _constants = __webpack_require__(2);
14877
14878var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
14879    IX2_RAW_DATA_IMPORTED = _constants$IX2EngineA.IX2_RAW_DATA_IMPORTED,
14880    IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED,
14881    IX2_PARAMETER_CHANGED = _constants$IX2EngineA.IX2_PARAMETER_CHANGED; // prettier-ignore
14882
14883var ixParameters = function ixParameters() {
14884  var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
14885    /*mutable flat state*/
14886  };
14887  var action = arguments.length > 1 ? arguments[1] : undefined;
14888
14889  switch (action.type) {
14890    case IX2_RAW_DATA_IMPORTED:
14891      {
14892        return action.payload.ixParameters || {
14893          /*mutable flat state*/
14894        };
14895      }
14896
14897    case IX2_SESSION_STOPPED:
14898      {
14899        return {
14900          /*mutable flat state*/
14901        };
14902      }
14903
14904    case IX2_PARAMETER_CHANGED:
14905      {
14906        var _action$payload = action.payload,
14907            key = _action$payload.key,
14908            value = _action$payload.value;
14909        state[key] = value;
14910        return state;
14911      }
14912
14913    default:
14914      {
14915        return state;
14916      }
14917  }
14918};
14919
14920exports.ixParameters = ixParameters;
14921
14922/***/ }),
14923/* 263 */
14924/***/ (function(module, exports) {
14925
14926function _objectWithoutPropertiesLoose(source, excluded) {
14927  if (source == null) return {};
14928  var target = {};
14929  var sourceKeys = Object.keys(source);
14930  var key, i;
14931
14932  for (i = 0; i < sourceKeys.length; i++) {
14933    key = sourceKeys[i];
14934    if (excluded.indexOf(key) >= 0) continue;
14935    target[key] = source[key];
14936  }
14937
14938  return target;
14939}
14940
14941module.exports = _objectWithoutPropertiesLoose;
14942
14943/***/ }),
14944/* 264 */
14945/***/ (function(module, exports, __webpack_require__) {
14946
14947var baseKeys = __webpack_require__(55),
14948    getTag = __webpack_require__(57),
14949    isArrayLike = __webpack_require__(12),
14950    isString = __webpack_require__(265),
14951    stringSize = __webpack_require__(266);
14952
14953/** `Object#toString` result references. */
14954var mapTag = '[object Map]',
14955    setTag = '[object Set]';
14956
14957/**
14958 * Gets the size of `collection` by returning its length for array-like
14959 * values or the number of own enumerable string keyed properties for objects.
14960 *
14961 * @static
14962 * @memberOf _
14963 * @since 0.1.0
14964 * @category Collection
14965 * @param {Array|Object|string} collection The collection to inspect.
14966 * @returns {number} Returns the collection size.
14967 * @example
14968 *
14969 * _.size([1, 2, 3]);
14970 * // => 3
14971 *
14972 * _.size({ 'a': 1, 'b': 2 });
14973 * // => 2
14974 *
14975 * _.size('pebbles');
14976 * // => 7
14977 */
14978function size(collection) {
14979  if (collection == null) {
14980    return 0;
14981  }
14982  if (isArrayLike(collection)) {
14983    return isString(collection) ? stringSize(collection) : collection.length;
14984  }
14985  var tag = getTag(collection);
14986  if (tag == mapTag || tag == setTag) {
14987    return collection.size;
14988  }
14989  return baseKeys(collection).length;
14990}
14991
14992module.exports = size;
14993
14994
14995/***/ }),
14996/* 265 */
14997/***/ (function(module, exports, __webpack_require__) {
14998
14999var baseGetTag = __webpack_require__(11),
15000    isArray = __webpack_require__(1),
15001    isObjectLike = __webpack_require__(9);
15002
15003/** `Object#toString` result references. */
15004var stringTag = '[object String]';
15005
15006/**
15007 * Checks if `value` is classified as a `String` primitive or object.
15008 *
15009 * @static
15010 * @since 0.1.0
15011 * @memberOf _
15012 * @category Lang
15013 * @param {*} value The value to check.
15014 * @returns {boolean} Returns `true` if `value` is a string, else `false`.
15015 * @example
15016 *
15017 * _.isString('abc');
15018 * // => true
15019 *
15020 * _.isString(1);
15021 * // => false
15022 */
15023function isString(value) {
15024  return typeof value == 'string' ||
15025    (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);
15026}
15027
15028module.exports = isString;
15029
15030
15031/***/ }),
15032/* 266 */
15033/***/ (function(module, exports, __webpack_require__) {
15034
15035var asciiSize = __webpack_require__(267),
15036    hasUnicode = __webpack_require__(268),
15037    unicodeSize = __webpack_require__(269);
15038
15039/**
15040 * Gets the number of symbols in `string`.
15041 *
15042 * @private
15043 * @param {string} string The string to inspect.
15044 * @returns {number} Returns the string size.
15045 */
15046function stringSize(string) {
15047  return hasUnicode(string)
15048    ? unicodeSize(string)
15049    : asciiSize(string);
15050}
15051
15052module.exports = stringSize;
15053
15054
15055/***/ }),
15056/* 267 */
15057/***/ (function(module, exports, __webpack_require__) {
15058
15059var baseProperty = __webpack_require__(104);
15060
15061/**
15062 * Gets the size of an ASCII `string`.
15063 *
15064 * @private
15065 * @param {string} string The string inspect.
15066 * @returns {number} Returns the string size.
15067 */
15068var asciiSize = baseProperty('length');
15069
15070module.exports = asciiSize;
15071
15072
15073/***/ }),
15074/* 268 */
vendor: 2,920 bytes, lines 15075-15164
15075/***/ (function(module, exports) {
15076
15077/** Used to compose unicode character classes. */
15078var rsAstralRange = '\\ud800-\\udfff',
15079    rsComboMarksRange = '\\u0300-\\u036f',
15080    reComboHalfMarksRange = '\\ufe20-\\ufe2f',
15081    rsComboSymbolsRange = '\\u20d0-\\u20ff',
15082    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
15083    rsVarRange = '\\ufe0e\\ufe0f';
15084
15085/** Used to compose unicode capture groups. */
15086var rsZWJ = '\\u200d';
15087
15088/** 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/). */
15089var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');
15090
15091/**
15092 * Checks if `string` contains Unicode symbols.
15093 *
15094 * @private
15095 * @param {string} string The string to inspect.
15096 * @returns {boolean} Returns `true` if a symbol is found, else `false`.
15097 */
15098function hasUnicode(string) {
15099  return reHasUnicode.test(string);
15100}
15101
15102module.exports = hasUnicode;
15103
15104
15105/***/ }),
15106/* 269 */
15107/***/ (function(module, exports) {
15108
15109/** Used to compose unicode character classes. */
15110var rsAstralRange = '\\ud800-\\udfff',
15111    rsComboMarksRange = '\\u0300-\\u036f',
15112    reComboHalfMarksRange = '\\ufe20-\\ufe2f',
15113    rsComboSymbolsRange = '\\u20d0-\\u20ff',
15114    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,
15115    rsVarRange = '\\ufe0e\\ufe0f';
15116
15117/** Used to compose unicode capture groups. */
15118var rsAstral = '[' + rsAstralRange + ']',
15119    rsCombo = '[' + rsComboRange + ']',
15120    rsFitz = '\\ud83c[\\udffb-\\udfff]',
15121    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
15122    rsNonAstral = '[^' + rsAstralRange + ']',
15123    rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
15124    rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
15125    rsZWJ = '\\u200d';
15126
15127/** Used to compose unicode regexes. */
15128var reOptMod = rsModifier + '?',
15129    rsOptVar = '[' + rsVarRange + ']?',
15130    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
15131    rsSeq = rsOptVar + reOptMod + rsOptJoin,
15132    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
15133
15134/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */
15135var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');
15136
15137/**
15138 * Gets the size of a Unicode `string`.
15139 *
15140 * @private
15141 * @param {string} string The string inspect.
15142 * @returns {number} Returns the string size.
15143 */
15144function unicodeSize(string) {
15145  var result = reUnicode.lastIndex = 0;
15146  while (reUnicode.test(string)) {
15147    ++result;
15148  }
15149  return result;
15150}
15151
15152module.exports = unicodeSize;
15153
15154
15155/***/ }),
15156/* 270 */
15157/***/ (function(module, exports, __webpack_require__) {
15158
15159var baseIteratee = __webpack_require__(7),
15160    negate = __webpack_require__(271),
15161    pickBy = __webpack_require__(272);
15162
15163/**
15164 * The opposite of `_.pickBy`;
15164 this method creates an object composed of
15165 * the own and inherited enumerable string keyed properties of `object` that
15166 * `predicate` doesn't return truthy for. The predicate is invoked with two
15167 * arguments: (value, key).
15168 *
15169 * @static
15170 * @memberOf _
15171 * @since 4.0.0
15172 * @category Object
15173 * @param {Object} object The source object.
15174 * @param {Function} [predicate=_.identity] The function invoked per property.
15175 * @returns {Object} Returns the new object.
15176 * @example
15177 *
15178 * var object = { 'a': 1, 'b': '2', 'c': 3 };
15179 *
15180 * _.omitBy(object, _.isNumber);
15181 * // => { 'b': '2' }
15182 */
15183function omitBy(object, predicate) {
15184  return pickBy(object, negate(baseIteratee(predicate)));
15185}
15186
15187module.exports = omitBy;
15188
15189
15190/***/ }),
15191/* 271 */
15192/***/ (function(module, exports) {
15193
15194/** Error message constants. */
15195var FUNC_ERROR_TEXT = 'Expected a function';
15196
15197/**
15198 * Creates a function that negates the result of the predicate `func`. The
15199 * `func` predicate is invoked with the `this` binding and arguments of the
15200 * created function.
15201 *
15202 * @static
15203 * @memberOf _
15204 * @since 3.0.0
15205 * @category Function
15206 * @param {Function} predicate The predicate to negate.
15207 * @returns {Function} Returns the new negated function.
15208 * @example
15209 *
15210 * function isEven(n) {
15211 *   return n % 2 == 0;
15212 * }
15213 *
15214 * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));
15215 * // => [1, 3, 5]
15216 */
15217function negate(predicate) {
15218  if (typeof predicate != 'function') {
15219    throw new TypeError(FUNC_ERROR_TEXT);
15220  }
15221  return function() {
15222    var args = arguments;
15223    switch (args.length) {
15224      case 0: return !predicate.call(this);
15225      case 1: return !predicate.call(this, args[0]);
15226      case 2: return !predicate.call(this, args[0], args[1]);
15227      case 3: return !predicate.call(this, args[0], args[1], args[2]);
15228    }
15229    return !predicate.apply(this, args);
15230  };
15231}
15232
15233module.exports = negate;
15234
15235
15236/***/ }),
15237/* 272 */
15238/***/ (function(module, exports, __webpack_require__) {
15239
15240var arrayMap = __webpack_require__(103),
15241    baseIteratee = __webpack_require__(7),
15242    basePickBy = __webpack_require__(273),
15243    getAllKeysIn = __webpack_require__(276);
15244
15245/**
15246 * Creates an object composed of the `object` properties `predicate` returns
15247 * truthy for. The predicate is invoked with two arguments: (value, key).
15248 *
15249 * @static
15250 * @memberOf _
15251 * @since 4.0.0
15252 * @category Object
15253 * @param {Object} object The source object.
15254 * @param {Function} [predicate=_.identity] The function invoked per property.
15255 * @returns {Object} Returns the new object.
15256 * @example
15257 *
15258 * var object = { 'a': 1, 'b': '2', 'c': 3 };
15259 *
15260 * _.pickBy(object, _.isNumber);
15261 * // => { 'a': 1, 'c': 3 }
15262 */
15263function pickBy(object, predicate) {
15264  if (object == null) {
15265    return {};
15266  }
15267  var props = arrayMap(getAllKeysIn(object), function(prop) {
15268    return [prop];
15269  });
15270  predicate = baseIteratee(predicate);
15271  return basePickBy(object, props, function(value, path) {
15272    return predicate(value, path[0]);
15273  });
15274}
15275
15276module.exports = pickBy;
15277
15278
15279/***/ }),
15280/* 273 */
15281/***/ (function(module, exports, __webpack_require__) {
15282
15283var baseGet = __webpack_require__(58),
15284    baseSet = __webpack_require__(274),
15285    castPath = __webpack_require__(35);
15286
15287/**
15288 * The base implementation of  `_.pickBy` without support for iteratee shorthands.
15289 *
15290 * @private
15291 * @param {Object} object The source object.
15292 * @param {string[]} paths The property paths to pick.
15293 * @param {Function} predicate The function invoked per property.
15294 * @returns {Object} Returns the new object.
15295 */
15296function basePickBy(object, paths, predicate) {
15297  var index = -1,
15298      length = paths.length,
15299      result = {};
15300
15301  while (++index < length) {
15302    var path = paths[index],
15303        value = baseGet(object, path);
15304
15305    if (predicate(value, path)) {
15306      baseSet(result, castPath(path, object), value);
15307    }
15308  }
15309  return result;
15310}
15311
15312module.exports = basePickBy;
15313
15314
15315/***/ }),
15316/* 274 */
15317/***/ (function(module, exports, __webpack_require__) {
15318
15319var assignValue = __webpack_require__(275),
15320    castPath = __webpack_require__(35),
15321    isIndex = __webpack_require__(52),
15322    isObject = __webpack_require__(6),
15323    toKey = __webpack_require__(20);
15324
15325/**
15326 * The base implementation of `_.set`.
15327 *
15328 * @private
15329 * @param {Object} object The object to modify.
15330 * @param {Array|string} path The path of the property to set.
15331 * @param {*} value The value to set.
15332 * @param {Function} [customizer] The function to customize path creation.
15333 * @returns {Object} Returns `object`.
15334 */
15335function baseSet(object, path, value, customizer) {
15336  if (!isObject(object)) {
15337    return object;
15338  }
15339  path = castPath(path, object);
15340
15341  var index = -1,
15342      length = path.length,
15343      lastIndex = length - 1,
15344      nested = object;
15345
15346  while (nested != null && ++index < length) {
15347    var key = toKey(path[index]),
15348        newValue = value;
15349
15350    if (index != lastIndex) {
15351      var objValue = nested[key];
15352      newValue = customizer ? customizer(objValue, key, nested) : undefined;
15353      if (newValue === undefined) {
15354        newValue = isObject(objValue)
15355          ? objValue
15356          : (isIndex(path[index + 1]) ? [] : {});
15357      }
15358    }
15359    assignValue(nested, key, newValue);
15360    nested = nested[key];
15361  }
15362  return object;
15363}
15364
15365module.exports = baseSet;
15366
15367
15368/***/ }),
15369/* 275 */
15370/***/ (function(module, exports, __webpack_require__) {
15371
15372var baseAssignValue = __webpack_require__(116),
15373    eq = __webpack_require__(47);
15374
15375/** Used for built-in method references. */
15376var objectProto = Object.prototype;
15377
15378/** Used to check objects for own properties. */
15379var hasOwnProperty = objectProto.hasOwnProperty;
15380
15381/**
15382 * Assigns `value` to `key` of `object` if the existing value is not equivalent
15383 * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
15384 * for equality comparisons.
15385 *
15386 * @private
15387 * @param {Object} object The object to modify.
15388 * @param {string} key The key of the property to assign.
15389 * @param {*} value The value to assign.
15390 */
15391function assignValue(object, key, value) {
15392  var objValue = object[key];
15393  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||
15394      (value === undefined && !(key in object))) {
15395    baseAssignValue(object, key, value);
15396  }
15397}
15398
15399module.exports = assignValue;
15400
15401
15402/***/ }),
15403/* 276 */
15404/***/ (function(module, exports, __webpack_require__) {
15405
15406var baseGetAllKeys = __webpack_require__(94),
15407    getSymbolsIn = __webpack_require__(277),
15408    keysIn = __webpack_require__(279);
15409
15410/**
15411 * Creates an array of own and inherited enumerable property names and
15412 * symbols of `object`.
15413 *
15414 * @private
15415 * @param {Object} object The object to query.
15416 * @returns {Array} Returns the array of property names and symbols.
15417 */
15418function getAllKeysIn(object) {
15419  return baseGetAllKeys(object, keysIn, getSymbolsIn);
15420}
15421
15422module.exports = getAllKeysIn;
15423
15424
15425/***/ }),
15426/* 277 */
15427/***/ (function(module, exports, __webpack_require__) {
15428
15429var arrayPush = __webpack_require__(50),
15430    getPrototype = __webpack_require__(278),
15431    getSymbols = __webpack_require__(95),
15432    stubArray = __webpack_require__(96);
15433
15434/* Built-in method references for those with the same name as other `lodash` methods. */
15435var nativeGetSymbols = Object.getOwnPropertySymbols;
15436
15437/**
15438 * Creates an array of the own and inherited enumerable symbols of `object`.
15439 *
15440 * @private
15441 * @param {Object} object The object to query.
15442 * @returns {Array} Returns the array of symbols.
15443 */
15444var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
15445  var result = [];
15446  while (object) {
vendor: 8,844 bytes, lines 15447-15805
15447    arrayPush(result, getSymbols(object));
15448    object = getPrototype(object);
15449  }
15450  return result;
15451};
15452
15453module.exports = getSymbolsIn;
15454
15455
15456/***/ }),
15457/* 278 */
15458/***/ (function(module, exports, __webpack_require__) {
15459
15460var overArg = __webpack_require__(99);
15461
15462/** Built-in value references. */
15463var getPrototype = overArg(Object.getPrototypeOf, Object);
15464
15465module.exports = getPrototype;
15466
15467
15468/***/ }),
15469/* 279 */
15470/***/ (function(module, exports, __webpack_require__) {
15471
15472var arrayLikeKeys = __webpack_require__(97),
15473    baseKeysIn = __webpack_require__(280),
15474    isArrayLike = __webpack_require__(12);
15475
15476/**
15477 * Creates an array of the own and inherited enumerable property names of `object`.
15478 *
15479 * **Note:** Non-object values are coerced to objects.
15480 *
15481 * @static
15482 * @memberOf _
15483 * @since 3.0.0
15484 * @category Object
15485 * @param {Object} object The object to query.
15486 * @returns {Array} Returns the array of property names.
15487 * @example
15488 *
15489 * function Foo() {
15490 *   this.a = 1;
15491 *   this.b = 2;
15492 * }
15493 *
15494 * Foo.prototype.c = 3;
15495 *
15496 * _.keysIn(new Foo);
15497 * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
15498 */
15499function keysIn(object) {
15500  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
15501}
15502
15503module.exports = keysIn;
15504
15505
15506/***/ }),
15507/* 280 */
15508/***/ (function(module, exports, __webpack_require__) {
15509
15510var isObject = __webpack_require__(6),
15511    isPrototype = __webpack_require__(56),
15512    nativeKeysIn = __webpack_require__(281);
15513
15514/** Used for built-in method references. */
15515var objectProto = Object.prototype;
15516
15517/** Used to check objects for own properties. */
15518var hasOwnProperty = objectProto.hasOwnProperty;
15519
15520/**
15521 * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.
15522 *
15523 * @private
15524 * @param {Object} object The object to query.
15525 * @returns {Array} Returns the array of property names.
15526 */
15527function baseKeysIn(object) {
15528  if (!isObject(object)) {
15529    return nativeKeysIn(object);
15530  }
15531  var isProto = isPrototype(object),
15532      result = [];
15533
15534  for (var key in object) {
15535    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
15536      result.push(key);
15537    }
15538  }
15539  return result;
15540}
15541
15542module.exports = baseKeysIn;
15543
15544
15545/***/ }),
15546/* 281 */
15547/***/ (function(module, exports) {
15548
15549/**
15550 * This function is like
15551 * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
15552 * except that it includes inherited enumerable properties.
15553 *
15554 * @private
15555 * @param {Object} object The object to query.
15556 * @returns {Array} Returns the array of property names.
15557 */
15558function nativeKeysIn(object) {
15559  var result = [];
15560  if (object != null) {
15561    for (var key in Object(object)) {
15562      result.push(key);
15563    }
15564  }
15565  return result;
15566}
15567
15568module.exports = nativeKeysIn;
15569
15570
15571/***/ }),
15572/* 282 */
15573/***/ (function(module, exports, __webpack_require__) {
15574
15575var baseKeys = __webpack_require__(55),
15576    getTag = __webpack_require__(57),
15577    isArguments = __webpack_require__(33),
15578    isArray = __webpack_require__(1),
15579    isArrayLike = __webpack_require__(12),
15580    isBuffer = __webpack_require__(51),
15581    isPrototype = __webpack_require__(56),
15582    isTypedArray = __webpack_require__(53);
15583
15584/** `Object#toString` result references. */
15585var mapTag = '[object Map]',
15586    setTag = '[object Set]';
15587
15588/** Used for built-in method references. */
15589var objectProto = Object.prototype;
15590
15591/** Used to check objects for own properties. */
15592var hasOwnProperty = objectProto.hasOwnProperty;
15593
15594/**
15595 * Checks if `value` is an empty object, collection, map, or set.
15596 *
15597 * Objects are considered empty if they have no own enumerable string keyed
15598 * properties.
15599 *
15600 * Array-like values such as `arguments` objects, arrays, buffers, strings, or
15601 * jQuery-like collections are considered empty if they have a `length` of `0`.
15602 * Similarly, maps and sets are considered empty if they have a `size` of `0`.
15603 *
15604 * @static
15605 * @memberOf _
15606 * @since 0.1.0
15607 * @category Lang
15608 * @param {*} value The value to check.
15609 * @returns {boolean} Returns `true` if `value` is empty, else `false`.
15610 * @example
15611 *
15612 * _.isEmpty(null);
15613 * // => true
15614 *
15615 * _.isEmpty(true);
15616 * // => true
15617 *
15618 * _.isEmpty(1);
15619 * // => true
15620 *
15621 * _.isEmpty([1, 2, 3]);
15622 * // => false
15623 *
15624 * _.isEmpty({ 'a': 1 });
15625 * // => false
15626 */
15627function isEmpty(value) {
15628  if (value == null) {
15629    return true;
15630  }
15631  if (isArrayLike(value) &&
15632      (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||
15633        isBuffer(value) || isTypedArray(value) || isArguments(value))) {
15634    return !value.length;
15635  }
15636  var tag = getTag(value);
15637  if (tag == mapTag || tag == setTag) {
15638    return !value.size;
15639  }
15640  if (isPrototype(value)) {
15641    return !baseKeys(value).length;
15642  }
15643  for (var key in value) {
15644    if (hasOwnProperty.call(value, key)) {
15645      return false;
15646    }
15647  }
15648  return true;
15649}
15650
15651module.exports = isEmpty;
15652
15653
15654/***/ }),
15655/* 283 */
15656/***/ (function(module, exports, __webpack_require__) {
15657
15658var baseAssignValue = __webpack_require__(116),
15659    baseForOwn = __webpack_require__(113),
15660    baseIteratee = __webpack_require__(7);
15661
15662/**
15663 * Creates an object with the same keys as `object` and values generated
15664 * by running each own enumerable string keyed property of `object` thru
15665 * `iteratee`. The iteratee is invoked with three arguments:
15666 * (value, key, object).
15667 *
15668 * @static
15669 * @memberOf _
15670 * @since 2.4.0
15671 * @category Object
15672 * @param {Object} object The object to iterate over.
15673 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
15674 * @returns {Object} Returns the new mapped object.
15675 * @see _.mapKeys
15676 * @example
15677 *
15678 * var users = {
15679 *   'fred':    { 'user': 'fred',    'age': 40 },
15680 *   'pebbles': { 'user': 'pebbles', 'age': 1 }
15681 * };
15682 *
15683 * _.mapValues(users, function(o) { return o.age; });
15684 * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
15685 *
15686 * // The `_.property` iteratee shorthand.
15687 * _.mapValues(users, 'age');
15688 * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)
15689 */
15690function mapValues(object, iteratee) {
15691  var result = {};
15692  iteratee = baseIteratee(iteratee, 3);
15693
15694  baseForOwn(object, function(value, key, object) {
15695    baseAssignValue(result, key, iteratee(value, key, object));
15696  });
15697  return result;
15698}
15699
15700module.exports = mapValues;
15701
15702
15703/***/ }),
15704/* 284 */
15705/***/ (function(module, exports, __webpack_require__) {
15706
15707var arrayEach = __webpack_require__(285),
15708    baseEach = __webpack_require__(112),
15709    castFunction = __webpack_require__(286),
15710    isArray = __webpack_require__(1);
15711
15712/**
15713 * Iterates over elements of `collection` and invokes `iteratee` for each element.
15714 * The iteratee is invoked with three arguments: (value, index|key, collection).
15715 * Iteratee functions may exit iteration early by explicitly returning `false`.
15716 *
15717 * **Note:** As with other "Collections" methods, objects with a "length"
15718 * property are iterated like arrays. To avoid this behavior use `_.forIn`
15719 * or `_.forOwn` for object iteration.
15720 *
15721 * @static
15722 * @memberOf _
15723 * @since 0.1.0
15724 * @alias each
15725 * @category Collection
15726 * @param {Array|Object} collection The collection to iterate over.
15727 * @param {Function} [iteratee=_.identity] The function invoked per iteration.
15728 * @returns {Array|Object} Returns `collection`.
15729 * @see _.forEachRight
15730 * @example
15731 *
15732 * _.forEach([1, 2], function(value) {
15733 *   console.log(value);
15734 * });
15735 * // => Logs `1` then `2`.
15736 *
15737 * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
15738 *   console.log(key);
15739 * });
15740 * // => Logs 'a' then 'b' (iteration order is not guaranteed).
15741 */
15742function forEach(collection, iteratee) {
15743  var func = isArray(collection) ? arrayEach : baseEach;
15744  return func(collection, castFunction(iteratee));
15745}
15746
15747module.exports = forEach;
15748
15749
15750/***/ }),
15751/* 285 */
15752/***/ (function(module, exports) {
15753
15754/**
15755 * A specialized version of `_.forEach` for arrays without support for
15756 * iteratee shorthands.
15757 *
15758 * @private
15759 * @param {Array} [array] The array to iterate over.
15760 * @param {Function} iteratee The function invoked per iteration.
15761 * @returns {Array} Returns `array`.
15762 */
15763function arrayEach(array, iteratee) {
15764  var index = -1,
15765      length = array == null ? 0 : array.length;
15766
15767  while (++index < length) {
15768    if (iteratee(array[index], index, array) === false) {
15769      break;
15770    }
15771  }
15772  return array;
15773}
15774
15775module.exports = arrayEach;
15776
15777
15778/***/ }),
15779/* 286 */
15780/***/ (function(module, exports, __webpack_require__) {
15781
15782var identity = __webpack_require__(60);
15783
15784/**
15785 * Casts `value` to `identity` if it's not a function.
15786 *
15787 * @private
15788 * @param {*} value The value to inspect.
15789 * @returns {Function} Returns cast function.
15790 */
15791function castFunction(value) {
15792  return typeof value == 'function' ? value : identity;
15793}
15794
15795module.exports = castFunction;
15796
15797
15798/***/ }),
15799/* 287 */
15800/***/ (function(module, exports, __webpack_require__) {
15801
15802var debounce = __webpack_require__(288),
15803    isObject = __webpack_require__(6);
15804
15805/** Error message constants. */
vendor: 4,867 bytes, lines 15806-15925
15806var FUNC_ERROR_TEXT = 'Expected a function';
15807
15808/**
15809 * Creates a throttled function that only invokes `func` at most once per
15810 * every `wait` milliseconds. The throttled function comes with a `cancel`
15811 * method to cancel delayed `func` invocations and a `flush` method to
15812 * immediately invoke them. Provide `options` to indicate whether `func`
15813 * should be invoked on the leading and/or trailing edge of the `wait`
15814 * timeout. The `func` is invoked with the last arguments provided to the
15815 * throttled function. Subsequent calls to the throttled function return the
15816 * result of the last `func` invocation.
15817 *
15818 * **Note:** If `leading` and `trailing` options are `true`, `func` is
15819 * invoked on the trailing edge of the timeout only if the throttled function
15820 * is invoked more than once during the `wait` timeout.
15821 *
15822 * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
15823 * until to the next tick, similar to `setTimeout` with a timeout of `0`.
15824 *
15825 * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
15826 * for details over the differences between `_.throttle` and `_.debounce`.
15827 *
15828 * @static
15829 * @memberOf _
15830 * @since 0.1.0
15831 * @category Function
15832 * @param {Function} func The function to throttle.
15833 * @param {number} [wait=0] The number of milliseconds to throttle invocations to.
15834 * @param {Object} [options={}] The options object.
15835 * @param {boolean} [options.leading=true]
15836 *  Specify invoking on the leading edge of the timeout.
15837 * @param {boolean} [options.trailing=true]
15838 *  Specify invoking on the trailing edge of the timeout.
15839 * @returns {Function} Returns the new throttled function.
15840 * @example
15841 *
15842 * // Avoid excessively updating the position while scrolling.
15843 * jQuery(window).on('scroll', _.throttle(updatePosition, 100));
15844 *
15845 * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.
15846 * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });
15847 * jQuery(element).on('click', throttled);
15848 *
15849 * // Cancel the trailing throttled invocation.
15850 * jQuery(window).on('popstate', throttled.cancel);
15851 */
15852function throttle(func, wait, options) {
15853  var leading = true,
15854      trailing = true;
15855
15856  if (typeof func != 'function') {
15857    throw new TypeError(FUNC_ERROR_TEXT);
15858  }
15859  if (isObject(options)) {
15860    leading = 'leading' in options ? !!options.leading : leading;
15861    trailing = 'trailing' in options ? !!options.trailing : trailing;
15862  }
15863  return debounce(func, wait, {
15864    'leading': leading,
15865    'maxWait': wait,
15866    'trailing': trailing
15867  });
15868}
15869
15870module.exports = throttle;
15871
15872
15873/***/ }),
15874/* 288 */
15875/***/ (function(module, exports, __webpack_require__) {
15876
15877var isObject = __webpack_require__(6),
15878    now = __webpack_require__(289),
15879    toNumber = __webpack_require__(61);
15880
15881/** Error message constants. */
15882var FUNC_ERROR_TEXT = 'Expected a function';
15883
15884/* Built-in method references for those with the same name as other `lodash` methods. */
15885var nativeMax = Math.max,
15886    nativeMin = Math.min;
15887
15888/**
15889 * Creates a debounced function that delays invoking `func` until after `wait`
15890 * milliseconds have elapsed since the last time the debounced function was
15891 * invoked. The debounced function comes with a `cancel` method to cancel
15892 * delayed `func` invocations and a `flush` method to immediately invoke them.
15893 * Provide `options` to indicate whether `func` should be invoked on the
15894 * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
15895 * with the last arguments provided to the debounced function. Subsequent
15896 * calls to the debounced function return the result of the last `func`
15897 * invocation.
15898 *
15899 * **Note:** If `leading` and `trailing` options are `true`, `func` is
15900 * invoked on the trailing edge of the timeout only if the debounced function
15901 * is invoked more than once during the `wait` timeout.
15902 *
15903 * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
15904 * until to the next tick, similar to `setTimeout` with a timeout of `0`.
15905 *
15906 * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
15907 * for details over the differences between `_.debounce` and `_.throttle`.
15908 *
15909 * @static
15910 * @memberOf _
15911 * @since 0.1.0
15912 * @category Function
15913 * @param {Function} func The function to debounce.
15914 * @param {number} [wait=0] The number of milliseconds to delay.
15915 * @param {Object} [options={}] The options object.
15916 * @param {boolean} [options.leading=false]
15917 *  Specify invoking on the leading edge of the timeout.
15918 * @param {number} [options.maxWait]
15919 *  The maximum time `func` is allowed to be delayed before it's invoked.
15920 * @param {boolean} [options.trailing=true]
15921 *  Specify invoking on the trailing edge of the timeout.
15922 * @returns {Function} Returns the new debounced function.
15923 * @example
15924 *
15925 * // Avoid costly calculations while the window size is in flux.
vendor: 4,734 bytes, lines 15926-16111
15926 * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
15927 *
15928 * // Invoke `sendMail` when clicked, debouncing subsequent calls.
15929 * jQuery(element).on('click', _.debounce(sendMail, 300, {
15930 *   'leading': true,
15931 *   'trailing': false
15932 * }));
15933 *
15934 * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
15935 * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
15936 * var source = new EventSource('/stream');
15937 * jQuery(source).on('message', debounced);
15938 *
15939 * // Cancel the trailing debounced invocation.
15940 * jQuery(window).on('popstate', debounced.cancel);
15941 */
15942function debounce(func, wait, options) {
15943  var lastArgs,
15944      lastThis,
15945      maxWait,
15946      result,
15947      timerId,
15948      lastCallTime,
15949      lastInvokeTime = 0,
15950      leading = false,
15951      maxing = false,
15952      trailing = true;
15953
15954  if (typeof func != 'function') {
15955    throw new TypeError(FUNC_ERROR_TEXT);
15956  }
15957  wait = toNumber(wait) || 0;
15958  if (isObject(options)) {
15959    leading = !!options.leading;
15960    maxing = 'maxWait' in options;
15961    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
15962    trailing = 'trailing' in options ? !!options.trailing : trailing;
15963  }
15964
15965  function invokeFunc(time) {
15966    var args = lastArgs,
15967        thisArg = lastThis;
15968
15969    lastArgs = lastThis = undefined;
15970    lastInvokeTime = time;
15971    result = func.apply(thisArg, args);
15972    return result;
15973  }
15974
15975  function leadingEdge(time) {
15976    // Reset any `maxWait` timer.
15977    lastInvokeTime = time;
15978    // Start the timer for the trailing edge.
15979    timerId = setTimeout(timerExpired, wait);
15980    // Invoke the leading edge.
15981    return leading ? invokeFunc(time) : result;
15982  }
15983
15984  function remainingWait(time) {
15985    var timeSinceLastCall = time - lastCallTime,
15986        timeSinceLastInvoke = time - lastInvokeTime,
15987        timeWaiting = wait - timeSinceLastCall;
15988
15989    return maxing
15990      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)
15991      : timeWaiting;
15992  }
15993
15994  function shouldInvoke(time) {
15995    var timeSinceLastCall = time - lastCallTime,
15996        timeSinceLastInvoke = time - lastInvokeTime;
15997
15998    // Either this is the first call, activity has stopped and we're at the
15999    // trailing edge, the system time has gone backwards and we're treating
16000    // it as the trailing edge, or we've hit the `maxWait` limit.
16001    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
16002      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
16003  }
16004
16005  function timerExpired() {
16006    var time = now();
16007    if (shouldInvoke(time)) {
16008      return trailingEdge(time);
16009    }
16010    // Restart the timer.
16011    timerId = setTimeout(timerExpired, remainingWait(time));
16012  }
16013
16014  function trailingEdge(time) {
16015    timerId = undefined;
16016
16017    // Only invoke if we have `lastArgs` which means `func` has been
16018    // debounced at least once.
16019    if (trailing && lastArgs) {
16020      return invokeFunc(time);
16021    }
16022    lastArgs = lastThis = undefined;
16023    return result;
16024  }
16025
16026  function cancel() {
16027    if (timerId !== undefined) {
16028      clearTimeout(timerId);
16029    }
16030    lastInvokeTime = 0;
16031    lastArgs = lastCallTime = lastThis = timerId = undefined;
16032  }
16033
16034  function flush() {
16035    return timerId === undefined ? result : trailingEdge(now());
16036  }
16037
16038  function debounced() {
16039    var time = now(),
16040        isInvoking = shouldInvoke(time);
16041
16042    lastArgs = arguments;
16043    lastThis = this;
16044    lastCallTime = time;
16045
16046    if (isInvoking) {
16047      if (timerId === undefined) {
16048        return leadingEdge(lastCallTime);
16049      }
16050      if (maxing) {
16051        // Handle invocations in a tight loop.
16052        clearTimeout(timerId);
16053        timerId = setTimeout(timerExpired, wait);
16054        return invokeFunc(lastCallTime);
16055      }
16056    }
16057    if (timerId === undefined) {
16058      timerId = setTimeout(timerExpired, wait);
16059    }
16060    return result;
16061  }
16062  debounced.cancel = cancel;
16063  debounced.flush = flush;
16064  return debounced;
16065}
16066
16067module.exports = debounce;
16068
16069
16070/***/ }),
16071/* 289 */
16072/***/ (function(module, exports, __webpack_require__) {
16073
16074var root = __webpack_require__(4);
16075
16076/**
16077 * Gets the timestamp of the number of milliseconds that have elapsed since
16078 * the Unix epoch (1 January 1970 00:00:00 UTC).
16079 *
16080 * @static
16081 * @memberOf _
16082 * @since 2.4.0
16083 * @category Date
16084 * @returns {number} Returns the timestamp.
16085 * @example
16086 *
16087 * _.defer(function(stamp) {
16088 *   console.log(_.now() - stamp);
16089 * }, _.now());
16090 * // => Logs the number of milliseconds it took for the deferred invocation.
16091 */
16092var now = function() {
16093  return root.Date.now();
16094};
16095
16096module.exports = now;
16097
16098
16099/***/ }),
16100/* 290 */
16101/***/ (function(module, exports, __webpack_require__) {
16102
16103"use strict";
16104
16105
16106Object.defineProperty(exports, "__esModule", {
16107  value: true
16108});
16109
16110var _quickEffects = __webpack_require__(291);
16111
16112Object.keys(_quickEffects).forEach(function (key) {
16113  if (key === "default" || key === "__esModule") return;
16114  Object.defineProperty(exports, key, {
16115    enumerable: true,
16116    get: function get() {
16117      return _quickEffects[key];
16118    }
16119  });
16120});
16121
16122/***/ }),
16123/* 291 */
16124/***/ (function(module, exports, __webpack_require__) {
16125
16126"use strict";
16127
16128
16129Object.defineProperty(exports, "__esModule", {
16130  value: true
16131});
16132exports.isQuickEffect = void 0;
16133
16134var _constants = __webpack_require__(2);
16135
16136var QuickEffectsIdList = Object.keys(_constants.QuickEffectIds);
16137
16138var isQuickEffect = function isQuickEffect(actionTypeId) {
16139  return QuickEffectsIdList.includes(actionTypeId);
16140};
16141
16142exports.isQuickEffect = isQuickEffect;
16143
16144/***/ }),
16145/* 292 */
16146/***/ (function(module, exports, __webpack_require__) {
16147
16148"use strict";
16149
16150
16151var _interopRequireDefault = __webpack_require__(0);
16152
16153var _typeof2 = _interopRequireDefault(__webpack_require__(21));
16154
16155Object.defineProperty(exports, "__esModule", {
16156  value: true
16157});
16158exports.setStyle = setStyle;
16159exports.getStyle = getStyle;
16160exports.getProperty = getProperty;
16161exports.matchSelector = matchSelector;
16162exports.getQuerySelector = getQuerySelector;
16163exports.getValidDocument = getValidDocument;
16164exports.queryDocument = queryDocument;
16165exports.elementContains = elementContains;
16166exports.isSiblingNode = isSiblingNode;
16167exports.getChildElements = getChildElements;
16168exports.getSiblingElements = getSiblingElements;
16169exports.getRefType = getRefType;
16170exports.getClosestElement = void 0;
16171
16172var _shared = __webpack_require__(10);
16173
16174var _constants = __webpack_require__(2);
16175/* eslint-env browser */
16176
16177
16178var ELEMENT_MATCHES = _shared.IX2BrowserSupport.ELEMENT_MATCHES;
16179var _constants$IX2EngineC = _constants.IX2EngineConstants,
16180    IX2_ID_DELIMITER = _constants$IX2EngineC.IX2_ID_DELIMITER,
16181    HTML_ELEMENT = _constants$IX2EngineC.HTML_ELEMENT,
16182    PLAIN_OBJECT = _constants$IX2EngineC.PLAIN_OBJECT,
16183    WF_PAGE = _constants$IX2EngineC.WF_PAGE;
16184
16185function setStyle(element, prop, value) {
16186  // $FlowIgnore — flow complains that prop should be a number. Will need to update upstream
16187  element.style[prop] = value;
16188}
16189
16190function getStyle(element, prop) {
16191  // $FlowIgnore — flow complains that prop should be a number. Will need to update upstream
16192  return element.style[prop];
16193}
16194
16195function getProperty(element, prop) {
16196  // $FlowIgnore — flow complains that prop should be a number. Will need to update upstream
16197  return element[prop];
16198}
16199
16200function matchSelector(selector) {
16201  // $FlowIgnore — ELEMENT_MATCHES is the name of the method on the element's prototype depending on browser
16202  return function (element) {
16203    return element[ELEMENT_MATCHES](selector);
16204  };
16205}
16206
16207function getQuerySelector(_ref) {
16208  var id = _ref.id,
16209      selector = _ref.selector;
16210
16211  if (id) {
16212    var nodeId = id;
16213
16214    if (id.indexOf(IX2_ID_DELIMITER) !== -1) {
16215      var pair = id.split(IX2_ID_DELIMITER);
16216      var pageId = pair[0];
16217      nodeId = pair[1]; // Short circuit query if we're on the wrong page
16218      // $FlowIgnore — if documentElement is null crash
16219
16220      if (pageId !== document.documentElement.getAttribute(WF_PAGE)) {
16221        return null;
16222      }
16223    }
16224
16225    return "[data-w-id^=\"".concat(nodeId, "\"]");
16226  }
16227
16228  return selector;
16229}
16230
16231function getValidDocument(pageId) {
16232  if (pageId == null || // $FlowIgnore — if documentElement is null crash
16233  pageId === document.documentElement.getAttribute(WF_PAGE)) {
16234    return document;
16235  }
16236
16237  return null;
16238}
16239
16240function queryDocument(baseSelector, descendantSelector) {
16241  return Array.prototype.slice.call(document.querySelectorAll(descendantSelector ? baseSelector + ' ' + descendantSelector : baseSelector));
16242}
16243
16244function elementContains(parent, child) {
16245  return parent.contains(child);
16246}
16247
16248function isSiblingNode(a, b) {
16249  return a !== b && a.parentNode === b.parentNode;
16250}
16251
16252function getChildElements(sourceElements) {
16253  var childElements = [];
16254
16255  for (var i = 0, _ref2 = sourceElements || [], length = _ref2.length; i < length; i++) {
16256    var children = sourceElements[i].children;
16257    var childCount = children.length;
16258
16259    if (!childCount) {
16260      continue;
16261    }
16262
16263    for (var j = 0; j < childCount; j++) {
16264      childElements.push(children[j]);
16265    }
16266  }
16267
16268  return childElements;
16269} // $FlowFixMe
16270
16271
16272function getSiblingElements() {
16273  var sourceElements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
16274  var elements = [];
16275  var parentCache = [];
16276
16277  for (var i = 0, length = sourceElements.length; i < length; i++) {
16278    var parentNode = sourceElements[i].parentNode;
16279
16280    if (!parentNode || !parentNode.children || !parentNode.children.length) {
16281      continue;
16282    }
16283
16284    if (parentCache.indexOf(parentNode) !== -1) {
16285      continue;
16286    }
16287
16288    parentCache.push(parentNode);
16289    var el = parentNode.firstElementChild;
16290
16291    while (el != null) {
16292      if (sourceElements.indexOf(el) === -1) {
16293        elements.push(el);
16294      }
16295
16296      el = el.nextElementSibling;
16297    }
16298  }
16299
16300  return elements;
16301}
16302
16303var getClosestElement = Element.prototype.closest ? function (element, selector) {
16304  // $FlowIgnore — ELEMENT_MATCHES is the name of the method on the element's prototype depending on browser
16305  if (!document.documentElement.contains(element)) {
16306    return null;
16307  }
16308
16309  return element.closest(selector);
16310} : function (element, selector) {
16311  // $FlowIgnore — if documentElement is null crash
16312  if (!document.documentElement.contains(element)) {
16313    return null;
16314  }
16315
16316  var el = element;
16317
16318  do {
16319    // $FlowIgnore — if documentElement is null crash
16320    if (el[ELEMENT_MATCHES] && el[ELEMENT_MATCHES](selector)) {
16321      return el;
16322    }
16323
16324    el = el.parentNode;
16325  } while (el != null);
16326
16327  return null;
16328};
16329exports.getClosestElement = getClosestElement;
16330
16331function getRefType(ref) {
16332  if (ref != null && (0, _typeof2["default"])(ref) == 'object') {
16333    return ref instanceof Element ? HTML_ELEMENT : PLAIN_OBJECT;
16334  }
16335
16336  return null;
16337}
16338
16339/***/ }),
16340/* 293 */
16341/***/ (function(module, exports, __webpack_require__) {
16342
16343"use strict";
16344
16345
16346var _interopRequireDefault2 = __webpack_require__(0);
16347
16348var _defineProperty2 = _interopRequireDefault2(__webpack_require__(26));
16349
16350var _typeof2 = _interopRequireDefault2(__webpack_require__(21));
16351
16352var _default2;
16353
16354var _interopRequireDefault = __webpack_require__(0);
16355
16356Object.defineProperty(exports, "__esModule", {
16357  value: true
16358});
16359exports["default"] = void 0;
16360
16361var _extends2 = _interopRequireDefault(__webpack_require__(27));
16362
16363var _flow = _interopRequireDefault(__webpack_require__(294));
16364
16365var _get = _interopRequireDefault(__webpack_require__(34));
16366
16367var _clamp = _interopRequireDefault(__webpack_require__(313));
16368
16369var _constants = __webpack_require__(2);
16370
16371var _IX2VanillaEngine = __webpack_require__(115);
16372
16373var _IX2EngineActions = __webpack_require__(62);
16374
16375var _shared = __webpack_require__(10);
16376/* eslint-env browser */
16377
16378
16379var _constants$EventTypeC = _constants.EventTypeConsts,
16380    MOUSE_CLICK = _constants$EventTypeC.MOUSE_CLICK,
16381    MOUSE_SECOND_CLICK = _constants$EventTypeC.MOUSE_SECOND_CLICK,
16382    MOUSE_DOWN = _constants$EventTypeC.MOUSE_DOWN,
16383    MOUSE_UP = _constants$EventTypeC.MOUSE_UP,
16384    MOUSE_OVER = _constants$EventTypeC.MOUSE_OVER,
16385    MOUSE_OUT = _constants$EventTypeC.MOUSE_OUT,
16386    DROPDOWN_CLOSE = _constants$EventTypeC.DROPDOWN_CLOSE,
16387    DROPDOWN_OPEN = _constants$EventTypeC.DROPDOWN_OPEN,
16388    SLIDER_ACTIVE = _constants$EventTypeC.SLIDER_ACTIVE,
16389    SLIDER_INACTIVE = _constants$EventTypeC.SLIDER_INACTIVE,
16390    TAB_ACTIVE = _constants$EventTypeC.TAB_ACTIVE,
16391    TAB_INACTIVE = _constants$EventTypeC.TAB_INACTIVE,
16392    NAVBAR_CLOSE = _constants$EventTypeC.NAVBAR_CLOSE,
16393    NAVBAR_OPEN = _constants$EventTypeC.NAVBAR_OPEN,
16394    MOUSE_MOVE = _constants$EventTypeC.MOUSE_MOVE,
16395    PAGE_SCROLL_DOWN = _constants$EventTypeC.PAGE_SCROLL_DOWN,
16396    SCROLL_INTO_VIEW = _constants$EventTypeC.SCROLL_INTO_VIEW,
16397    SCROLL_OUT_OF_VIEW = _constants$EventTypeC.SCROLL_OUT_OF_VIEW,
16398    PAGE_SCROLL_UP = _constants$EventTypeC.PAGE_SCROLL_UP,
16399    SCROLLING_IN_VIEW = _constants$EventTypeC.SCROLLING_IN_VIEW,
16400    PAGE_FINISH = _constants$EventTypeC.PAGE_FINISH,
16401    ECOMMERCE_CART_CLOSE = _constants$EventTypeC.ECOMMERCE_CART_CLOSE,
16402    ECOMMERCE_CART_OPEN = _constants$EventTypeC.ECOMMERCE_CART_OPEN,
16403    PAGE_START = _constants$EventTypeC.PAGE_START,
16404    PAGE_SCROLL = _constants$EventTypeC.PAGE_SCROLL;
16405var COMPONENT_ACTIVE = 'COMPONENT_ACTIVE';
16406var COMPONENT_INACTIVE = 'COMPONENT_INACTIVE';
16407var COLON_DELIMITER = _constants.IX2EngineConstants.COLON_DELIMITER;
16408var getNamespacedParameterId = _shared.IX2VanillaUtils.getNamespacedParameterId;
16409
16410var composableFilter = function composableFilter(predicate) {
16411  return function (options) {
16412    if ((0, _typeof2["default"])(options) === 'object' && predicate(options)) {
16413      return true;
16414    }
16415
16416    return options;
16417  };
16418};
16419
16420var isElement = composableFilter(function (_ref) {
16421  var element = _ref.element,
16422      nativeEvent = _ref.nativeEvent;
16423  return element === nativeEvent.target;
16424});
16425var containsElement = composableFilter(function (_ref2) {
16426  var element = _ref2.element,
16427      nativeEvent = _ref2.nativeEvent;
16428  return element.contains(nativeEvent.target);
16429});
16430var isOrContainsElement = (0, _flow["default"])([isElement, containsElement]);
16431
16432var getAutoStopEvent = function getAutoStopEvent(store, autoStopEventId) {
16433  if (autoStopEventId) {
16434    var _store$getState = store.getState(),
16435        ixData = _store$getState.ixData;
16436
16437    var events = ixData.events;
16438    var eventToStop = events[autoStopEventId];
16439
16440    if (eventToStop && !AUTO_STOP_DISABLED_EVENTS[eventToStop.eventTypeId]) {
16441      return eventToStop;
16442    }
16443  }
16444
16445  return null;
16446};
16447
16448var hasAutoStopEvent = function hasAutoStopEvent(_ref3) {
16449  var store = _ref3.store,
16450      event = _ref3.event;
16451  var eventAction = event.action;
16452  var autoStopEventId = eventAction.config.autoStopEventId;
16453  return Boolean(getAutoStopEvent(store, autoStopEventId));
16454};
16455
16456var actionGroupCreator = function actionGroupCreator(_ref4, state) {
16457  var store = _ref4.store,
16458      event = _ref4.event,
16459      element = _ref4.element,
16460      eventStateKey = _ref4.eventStateKey;
16461  var eventAction = event.action,
16462      eventId = event.id;
16463  var _eventAction$config = eventAction.config,
16464      actionListId = _eventAction$config.actionListId,
16465      autoStopEventId = _eventAction$config.autoStopEventId;
16466  var eventToStop = getAutoStopEvent(store, autoStopEventId);
16467
16468  if (eventToStop) {
16469    (0, _IX2VanillaEngine.stopActionGroup)({
16470      store: store,
16471      eventId: autoStopEventId,
16472      eventTarget: element,
16473      eventStateKey: autoStopEventId + COLON_DELIMITER + eventStateKey.split(COLON_DELIMITER)[1],
16474      actionListId: (0, _get["default"])(eventToStop, 'action.config.actionListId')
16475    });
16476  }
16477
16478  (0, _IX2VanillaEngine.stopActionGroup)({
16479    store: store,
16480    eventId: eventId,
16481    eventTarget: element,
16482    eventStateKey: eventStateKey,
16483    actionListId: actionListId
16484  });
16485  (0, _IX2VanillaEngine.startActionGroup)({
16486    store: store,
16487    eventId: eventId,
16488    eventTarget: element,
16489    eventStateKey: eventStateKey,
16490    actionListId: actionListId
16491  });
16492  return state;
16493}; // $FlowFixMe
16494
16495
16496var withFilter = function withFilter(filter, handler) {
16497  return function (options, state) {
16498    return (// $FlowFixMe
16499      filter(options, state) === true ? handler(options, state) : state
16500    );
16501  };
16502};
16503
16504var baseActionGroupOptions = {
16505  handler: withFilter(isOrContainsElement, actionGroupCreator)
16506};
16507var baseActivityActionGroupOptions = (0, _extends2["default"])({}, baseActionGroupOptions, {
16508  types: [COMPONENT_ACTIVE, COMPONENT_INACTIVE].join(' ')
16509});
16510var SCROLL_EVENT_TYPES = [{
16511  target: window,
16512  types: 'resize orientationchange',
16513  throttle: true
16514}, {
16515  target: document,
16516  types: 'scroll wheel readystatechange IX2_PAGE_UPDATE',
16517  throttle: true
16518}];
16519var MOUSE_OVER_OUT_TYPES = 'mouseover mouseout';
16520var baseScrollActionGroupOptions = {
16521  types: SCROLL_EVENT_TYPES
16522};
16523var AUTO_STOP_DISABLED_EVENTS = {
16524  PAGE_START: PAGE_START,
16525  PAGE_FINISH: PAGE_FINISH
16526};
16527
16528var getDocumentState = function () {
16529  var supportOffset = window.pageXOffset !== undefined;
16530  var isCSS1Compat = document.compatMode === 'CSS1Compat';
16531  var rootElement = isCSS1Compat ? document.documentElement : document.body;
16532  return function () {
16533    return {
16534      // $FlowFixMe
16535      scrollLeft: supportOffset ? window.pageXOffset : rootElement.scrollLeft,
16536      // $FlowFixMe
16537      scrollTop: supportOffset ? window.pageYOffset : rootElement.scrollTop,
16538      // required to remove elasticity in Safari scrolling.
16539      stiffScrollTop: (0, _clamp["default"])( // $FlowFixMe
16540      supportOffset ? window.pageYOffset : rootElement.scrollTop, 0, // $FlowFixMe
16541      rootElement.scrollHeight - window.innerHeight),
16542      // $FlowFixMe
16543      scrollWidth: rootElement.scrollWidth,
16544      // $FlowFixMe
16545      scrollHeight: rootElement.scrollHeight,
16546      // $FlowFixMe
16547      clientWidth: rootElement.clientWidth,
16548      // $FlowFixMe
16549      clientHeight: rootElement.clientHeight,
16550      innerWidth: window.innerWidth,
16551      innerHeight: window.innerHeight
16552    };
16553  };
16554}();
16555
16556var areBoxesIntersecting = function areBoxesIntersecting(a, b) {
16557  return !(a.left > b.right || a.right < b.left || a.top > b.bottom || a.bottom < b.top);
16558};
16559
16560var isElementHovered = function isElementHovered(_ref5) {
16561  var element = _ref5.element,
16562      nativeEvent = _ref5.nativeEvent;
16563  var type = nativeEvent.type,
16564      target = nativeEvent.target,
16565      relatedTarget = nativeEvent.relatedTarget;
16566  var containsTarget = element.contains(target);
16567
16568  if (type === 'mouseover' && containsTarget) {
16569    return true;
16570  }
16571
16572  var containsRelated = element.contains(relatedTarget);
16573
16574  if (type === 'mouseout' && containsTarget && containsRelated) {
16575    return true;
16576  }
16577
16578  return false;
16579};
16580
16581var isElementVisible = function isElementVisible(options) {
16582  var element = options.element,
16583      config = options.event.config;
16584
16585  var _getDocumentState = getDocumentState(),
16586      clientWidth = _getDocumentState.clientWidth,
16587      clientHeight = _getDocumentState.clientHeight;
16588
16589  var scrollOffsetValue = config.scrollOffsetValue;
16590  var scrollOffsetUnit = config.scrollOffsetUnit;
16591  var isPX = scrollOffsetUnit === 'PX';
16592  var offsetPadding = isPX ? scrollOffsetValue : clientHeight * (scrollOffsetValue || 0) / 100;
16593  return areBoxesIntersecting(element.getBoundingClientRect(), {
16594    left: 0,
16595    top: offsetPadding,
16596    right: clientWidth,
16597    bottom: clientHeight - offsetPadding
16598  });
16599};
16600
16601var whenComponentActiveChange = function whenComponentActiveChange(handler) {
16602  return function (options, oldState) {
16603    var type = options.nativeEvent.type; // prettier-ignore
16604
16605    var isActive = [COMPONENT_ACTIVE, COMPONENT_INACTIVE].indexOf(type) !== -1 ? type === COMPONENT_ACTIVE : oldState.isActive;
16606    var newState = (0, _extends2["default"])({}, oldState, {
16607      isActive: isActive
16608    });
16609
16610    if (!oldState || newState.isActive !== oldState.isActive) {
16611      return handler(options, newState) || newState;
16612    }
16613
16614    return newState;
16615  };
16616};
16617
16618var whenElementHoverChange = function whenElementHoverChange(handler) {
16619  return function (options, oldState) {
16620    var newState = {
16621      elementHovered: isElementHovered(options)
16622    };
16623
16624    if (oldState ? newState.elementHovered !== oldState.elementHovered : newState.elementHovered) {
16625      return handler(options, newState) || newState;
16626    }
16627
16628    return newState;
16629  };
16630}; // $FlowFixMe
16631
16632
16633var whenElementVisibiltyChange = function whenElementVisibiltyChange(handler) {
16634  return function (options, oldState) {
16635    var newState = (0, _extends2["default"])({}, oldState, {
16636      elementVisible: isElementVisible(options)
16637    });
16638
16639    if (oldState ? newState.elementVisible !== oldState.elementVisible : newState.elementVisible) {
16640      return handler(options, newState) || newState;
16641    }
16642
16643    return newState;
16644  };
16645}; // $FlowFixMe
16646
16647
16648var whenScrollDirectionChange = function whenScrollDirectionChange(handler) {
16649  return function (options) {
16650    var oldState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
16651
16652    var _getDocumentState2 = getDocumentState(),
16653        scrollTop = _getDocumentState2.stiffScrollTop,
16654        scrollHeight = _getDocumentState2.scrollHeight,
16655        innerHeight = _getDocumentState2.innerHeight;
16656
16657    var _options$event = options.event,
16658        config = _options$event.config,
16659        eventTypeId = _options$event.eventTypeId;
16660    var scrollOffsetValue = config.scrollOffsetValue,
16661        scrollOffsetUnit = config.scrollOffsetUnit;
16662    var isPX = scrollOffsetUnit === 'PX';
16663    var scrollHeightBounds = scrollHeight - innerHeight; // percent top since innerHeight may change for mobile devices which also changes the scrollTop value.
16664
16665    var percentTop = Number((scrollTop / scrollHeightBounds).toFixed(2)); // no state change
16666
16667    if (oldState && oldState.percentTop === percentTop) {
16668      return oldState;
16669    }
16670
16671    var scrollTopPadding = (isPX ? scrollOffsetValue : innerHeight * (scrollOffsetValue || 0) / 100) / scrollHeightBounds;
16672    var scrollingDown;
16673    var scrollDirectionChanged;
16674    var anchorTop = 0;
16675
16676    if (oldState) {
16677      scrollingDown = percentTop > oldState.percentTop;
16678      scrollDirectionChanged = oldState.scrollingDown !== scrollingDown;
16679      anchorTop = scrollDirectionChanged ? percentTop : oldState.anchorTop;
16680    }
16681
16682    var inBounds = eventTypeId === PAGE_SCROLL_DOWN ? percentTop >= anchorTop + scrollTopPadding : percentTop <= anchorTop - scrollTopPadding;
16683    var newState = (0, _extends2["default"])({}, oldState, {
16684      percentTop: percentTop,
16685      inBounds: inBounds,
16686      anchorTop: anchorTop,
16687      scrollingDown: scrollingDown
16688    });
16689
16690    if (oldState && inBounds && (scrollDirectionChanged || newState.inBounds !== oldState.inBounds)) {
16691      return handler(options, newState) || newState;
16692    }
16693
16694    return newState;
16695  };
16696};
16697
16698var pointIntersects = function pointIntersects(point, rect) {
16699  return point.left > rect.left && point.left < rect.right && point.top > rect.top && point.top < rect.bottom;
16700};
16701
16702var whenPageLoadFinish = function whenPageLoadFinish(handler) {
16703  return function (options, oldState) {
16704    var newState = {
16705      finished: document.readyState === 'complete'
16706    };
16707
16708    if (newState.finished && !(oldState && oldState.finshed)) {
16709      handler(options);
16710    }
16711
16712    return newState;
16713  };
16714};
16715
16716var whenPageLoadStart = function whenPageLoadStart(handler) {
16717  return function (options, oldState) {
16718    var newState = {
16719      started: true
16720    };
16721
16722    if (!oldState) {
16723      handler(options);
16724    }
16725
16726    return newState;
16727  };
16728};
16729
16730var whenClickCountChange = function whenClickCountChange(handler) {
16731  return function (options) {
16732    var oldState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
16733      clickCount: 0
16734    };
16735    var newState = {
16736      clickCount: oldState.clickCount % 2 + 1
16737    };
16738
16739    if (newState.clickCount !== oldState.clickCount) {
16740      return handler(options, newState) || newState;
16741    }
16742
16743    return newState;
16744  };
16745};
16746
16747var getComponentActiveOptions = function getComponentActiveOptions() {
16748  var allowNestedChildrenEvents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
16749  return (0, _extends2["default"])({}, baseActivityActionGroupOptions, {
16750    handler: withFilter(allowNestedChildrenEvents ? isOrContainsElement : isElement, whenComponentActiveChange(function (options, state) {
16751      return state.isActive ? baseActionGroupOptions.handler(options, state) : state;
16752    }))
16753  });
16754};
16755
16756var getComponentInactiveOptions = function getComponentInactiveOptions() {
16757  var allowNestedChildrenEvents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
16758  return (0, _extends2["default"])({}, baseActivityActionGroupOptions, {
16759    handler: withFilter(allowNestedChildrenEvents ? isOrContainsElement : isElement, whenComponentActiveChange(function (options, state) {
16760      return !state.isActive ? baseActionGroupOptions.handler(options, state) : state;
16761    }))
16762  });
16763};
16764
16765var scrollIntoOutOfViewOptions = (0, _extends2["default"])({}, baseScrollActionGroupOptions, {
16766  handler: whenElementVisibiltyChange(function (options, state) {
16767    var elementVisible = state.elementVisible;
16768    var event = options.event,
16769        store = options.store;
16770
16771    var _store$getState2 = store.getState(),
16772        ixData = _store$getState2.ixData;
16773
16774    var events = ixData.events; // trigger the handler only once if only one of SCROLL_INTO or SCROLL_OUT_OF event types
16775    // are registered.
16776
16777    if (!events[event.action.config.autoStopEventId] && state.triggered) {
16778      return state;
16779    }
16780
16781    if (event.eventTypeId === SCROLL_INTO_VIEW === elementVisible) {
16782      actionGroupCreator(options);
16783      return (0, _extends2["default"])({}, state, {
16784        triggered: true
16785      });
16786    } else {
16787      return state;
16788    }
16789  })
16790});
16791var MOUSE_OUT_ROUND_THRESHOLD = 0.05;
16792
16793var _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, {
16794  types: 'ecommerce-cart-open',
16795  handler: withFilter(isOrContainsElement, actionGroupCreator)
16796}), (0, _defineProperty2["default"])(_default2, ECOMMERCE_CART_CLOSE, {
16797  types: 'ecommerce-cart-close',
16798  handler: withFilter(isOrContainsElement, actionGroupCreator)
16799}), (0, _defineProperty2["default"])(_default2, MOUSE_CLICK, {
16800  types: 'click',
16801  handler: withFilter(isOrContainsElement, whenClickCountChange(function (options, _ref6) {
16802    var clickCount = _ref6.clickCount;
16803
16804    if (hasAutoStopEvent(options)) {
16805      clickCount === 1 && actionGroupCreator(options);
16806    } else {
16807      actionGroupCreator(options);
16808    }
16809  }))
16810}), (0, _defineProperty2["default"])(_default2, MOUSE_SECOND_CLICK, {
16811  types: 'click',
16812  handler: withFilter(isOrContainsElement, whenClickCountChange(function (options, _ref7) {
16813    var clickCount = _ref7.clickCount;
16814
16815    if (clickCount === 2) {
16816      actionGroupCreator(options);
16817    }
16818  }))
16819}), (0, _defineProperty2["default"])(_default2, MOUSE_DOWN, (0, _extends2["default"])({}, baseActionGroupOptions, {
16820  types: 'mousedown'
16821})), (0, _defineProperty2["default"])(_default2, MOUSE_UP, (0, _extends2["default"])({}, baseActionGroupOptions, {
16822  types: 'mouseup'
16823})), (0, _defineProperty2["default"])(_default2, MOUSE_OVER, {
16824  types: MOUSE_OVER_OUT_TYPES,
16825  handler: withFilter(isOrContainsElement, whenElementHoverChange(function (options, state) {
16826    if (state.elementHovered) {
16827      actionGroupCreator(options);
16828    }
16829  }))
16830}), (0, _defineProperty2["default"])(_default2, MOUSE_OUT, {
16831  types: MOUSE_OVER_OUT_TYPES,
16832  handler: withFilter(isOrContainsElement, whenElementHoverChange(function (options, state) {
16833    if (!state.elementHovered) {
16834      actionGroupCreator(options);
16835    }
16836  }))
16837}), (0, _defineProperty2["default"])(_default2, MOUSE_MOVE, {
16838  types: 'mousemove mouseout scroll',
16839  handler: function handler( // $FlowFixMe
16840  _ref8) {
16841    var store = _ref8.store,
16842        element = _ref8.element,
16843        eventConfig = _ref8.eventConfig,
16844        nativeEvent = _ref8.nativeEvent,
16845        eventStateKey = _ref8.eventStateKey;
16846    var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
16847      clientX: 0,
16848      clientY: 0,
16849      pageX: 0,
16850      pageY: 0
16851    };
16852    var basedOn = eventConfig.basedOn,
16853        selectedAxis = eventConfig.selectedAxis,
16854        continuousParameterGroupId = eventConfig.continuousParameterGroupId,
16855        reverse = eventConfig.reverse,
16856        _eventConfig$restingS = eventConfig.restingState,
16857        restingState = _eventConfig$restingS === void 0 ? 0 : _eventConfig$restingS;
16858    var _nativeEvent$clientX = nativeEvent.clientX,
16859        clientX = _nativeEvent$clientX === void 0 ? state.clientX : _nativeEvent$clientX,
16860        _nativeEvent$clientY = nativeEvent.clientY,
16861        clientY = _nativeEvent$clientY === void 0 ? state.clientY : _nativeEvent$clientY,
16862        _nativeEvent$pageX = nativeEvent.pageX,
16863        pageX = _nativeEvent$pageX === void 0 ? state.pageX : _nativeEvent$pageX,
16864        _nativeEvent$pageY = nativeEvent.pageY,
16865        pageY = _nativeEvent$pageY === void 0 ? state.pageY : _nativeEvent$pageY;
16866    var isXAxis = selectedAxis === 'X_AXIS';
16867    var isMouseOut = nativeEvent.type === 'mouseout';
16868    var value = restingState / 100;
16869    var namespacedParameterId = continuousParameterGroupId;
16870    var elementHovered = false;
16871
16872    switch (basedOn) {
16873      case _constants.EventBasedOn.VIEWPORT:
16874        {
16875          value = isXAxis ? Math.min(clientX, window.innerWidth) / window.innerWidth : Math.min(clientY, window.innerHeight) / window.innerHeight;
16876          break;
16877        }
16878
16879      case _constants.EventBasedOn.PAGE:
16880        {
16881          var _getDocumentState3 = getDocumentState(),
16882              scrollLeft = _getDocumentState3.scrollLeft,
16883              scrollTop = _getDocumentState3.scrollTop,
16884              scrollWidth = _getDocumentState3.scrollWidth,
16885              scrollHeight = _getDocumentState3.scrollHeight;
16886
16887          value = isXAxis ? Math.min(scrollLeft + pageX, scrollWidth) / scrollWidth : Math.min(scrollTop + pageY, scrollHeight) / scrollHeight;
16888          break;
16889        }
16890
16891      case _constants.EventBasedOn.ELEMENT:
16892      default:
16893        {
16894          namespacedParameterId = getNamespacedParameterId(eventStateKey, continuousParameterGroupId);
16895          var isMouseEvent = nativeEvent.type.indexOf('mouse') === 0; // Use isOrContainsElement for mouse events since they are fired from the target
16896
16897          if (isMouseEvent && isOrContainsElement({
16898            element: element,
16899            nativeEvent: nativeEvent
16900          }) !== true) {
16901            break;
16902          }
16903
16904          var rect = element.getBoundingClientRect();
16905          var left = rect.left,
16906              top = rect.top,
16907              width = rect.width,
16908              height = rect.height; // Otherwise we'll need to calculate the mouse position from the previous handler state
16909          // against the target element's rect
16910
16911          if (!isMouseEvent && !pointIntersects({
16912            left: clientX,
16913            top: clientY
16914          }, rect)) {
16915            break;
16916          }
16917
16918          elementHovered = true;
16919          value = isXAxis ? (clientX - left) / width : (clientY - top) / height;
16920          break;
16921        }
16922    } // cover case where the event is a mouse out, but the value is not quite at 100%
16923
16924
16925    if (isMouseOut && (value > 1 - MOUSE_OUT_ROUND_THRESHOLD || value < MOUSE_OUT_ROUND_THRESHOLD)) {
16926      value = Math.round(value);
16927    } // Only update based on element if the mouse is moving over or has just left the element
16928
16929
16930    if (basedOn !== _constants.EventBasedOn.ELEMENT || elementHovered || // $FlowFixMe
16931    elementHovered !== state.elementHovered) {
16932      value = reverse ? 1 - value : value;
16933      store.dispatch((0, _IX2EngineActions.parameterChanged)(namespacedParameterId, value));
16934    }
16935
16936    return {
16937      elementHovered: elementHovered,
16938      clientX: clientX,
16939      clientY: clientY,
16940      pageX: pageX,
16941      pageY: pageY
16942    };
16943  }
16944}), (0, _defineProperty2["default"])(_default2, PAGE_SCROLL, {
16945  types: SCROLL_EVENT_TYPES,
16946  // $FlowFixMe
16947  handler: function handler(_ref9) {
16948    var store = _ref9.store,
16949        eventConfig = _ref9.eventConfig;
16950    var continuousParameterGroupId = eventConfig.continuousParameterGroupId,
16951        reverse = eventConfig.reverse;
16952
16953    var _getDocumentState4 = getDocumentState(),
16954        scrollTop = _getDocumentState4.scrollTop,
16955        scrollHeight = _getDocumentState4.scrollHeight,
16956        clientHeight = _getDocumentState4.clientHeight;
16957
16958    var value = scrollTop / (scrollHeight - clientHeight);
16959    value = reverse ? 1 - value : value;
16960    store.dispatch((0, _IX2EngineActions.parameterChanged)(continuousParameterGroupId, value));
16961  }
16962}), (0, _defineProperty2["default"])(_default2, SCROLLING_IN_VIEW, {
16963  types: SCROLL_EVENT_TYPES,
16964  handler: function handler( // $FlowFixMe
16965  _ref10) {
16966    var element = _ref10.element,
16967        store = _ref10.store,
16968        eventConfig = _ref10.eventConfig,
16969        eventStateKey = _ref10.eventStateKey;
16970    var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
16971      scrollPercent: 0
16972    };
16973
16974    var _getDocumentState5 = getDocumentState(),
16975        scrollLeft = _getDocumentState5.scrollLeft,
16976        scrollTop = _getDocumentState5.scrollTop,
16977        scrollWidth = _getDocumentState5.scrollWidth,
16978        scrollHeight = _getDocumentState5.scrollHeight,
16979        visibleHeight = _getDocumentState5.clientHeight;
16980
16981    var basedOn = eventConfig.basedOn,
16982        selectedAxis = eventConfig.selectedAxis,
16983        continuousParameterGroupId = eventConfig.continuousParameterGroupId,
16984        startsEntering = eventConfig.startsEntering,
16985        startsExiting = eventConfig.startsExiting,
16986        addEndOffset = eventConfig.addEndOffset,
16987        addStartOffset = eventConfig.addStartOffset,
16988        _eventConfig$addOffse = eventConfig.addOffsetValue,
16989        addOffsetValue = _eventConfig$addOffse === void 0 ? 0 : _eventConfig$addOffse,
16990        _eventConfig$endOffse = eventConfig.endOffsetValue,
16991        endOffsetValue = _eventConfig$endOffse === void 0 ? 0 : _eventConfig$endOffse;
16992    var isXAxis = selectedAxis === 'X_AXIS';
16993
16994    if (basedOn === _constants.EventBasedOn.VIEWPORT) {
16995      var value = isXAxis ? scrollLeft / scrollWidth : scrollTop / scrollHeight;
16996
16997      if (value !== state.scrollPercent) {
16998        store.dispatch((0, _IX2EngineActions.parameterChanged)(continuousParameterGroupId, value));
16999      }
17000
17001      return {
17002        scrollPercent: value
17003      };
17004    } else {
17005      var namespacedParameterId = getNamespacedParameterId(eventStateKey, continuousParameterGroupId);
17006      var elementRect = element.getBoundingClientRect();
17007      var offsetStartPerc = (addStartOffset ? addOffsetValue : 0) / 100;
17008      var offsetEndPerc = (addEndOffset ? endOffsetValue : 0) / 100; // flip the offset percentages depending on start / exit type
17009
17010      offsetStartPerc = startsEntering ? offsetStartPerc : 1 - offsetStartPerc;
17011      offsetEndPerc = startsExiting ? offsetEndPerc : 1 - offsetEndPerc;
17012      var offsetElementTop = elementRect.top + Math.min(elementRect.height * offsetStartPerc, visibleHeight);
17013      var offsetElementBottom = elementRect.top + elementRect.height * offsetEndPerc;
17014      var offsetHeight = offsetElementBottom - offsetElementTop;
17015      var fixedScrollHeight = Math.min(visibleHeight + offsetHeight, scrollHeight);
17016      var fixedScrollTop = Math.min(Math.max(0, visibleHeight - offsetElementTop), fixedScrollHeight);
17017      var fixedScrollPerc = fixedScrollTop / fixedScrollHeight;
17018
17019      if (fixedScrollPerc !== state.scrollPercent) {
17020        store.dispatch((0, _IX2EngineActions.parameterChanged)(namespacedParameterId, fixedScrollPerc));
17021      }
17022
17023      return {
17024        scrollPercent: fixedScrollPerc
17025      };
17026    }
17027  }
17028}), (0, _defineProperty2["default"])(_default2, SCROLL_INTO_VIEW, scrollIntoOutOfViewOptions), (0, _defineProperty2["default"])(_default2, SCROLL_OUT_OF_V
17028IEW, scrollIntoOutOfViewOptions), (0, _defineProperty2["default"])(_default2, PAGE_SCROLL_DOWN, (0, _extends2["default"])({}, baseScrollActionGroupOptions, {
17029  handler: whenScrollDirectionChange(function (options, state) {
17030    if (state.scrollingDown) {
17031      actionGroupCreator(options);
17032    }
17033  })
17034})), (0, _defineProperty2["default"])(_default2, PAGE_SCROLL_UP, (0, _extends2["default"])({}, baseScrollActionGroupOptions, {
17035  handler: whenScrollDirectionChange(function (options, state) {
17036    if (!state.scrollingDown) {
17037      actionGroupCreator(options);
17038    }
17039  })
17040})), (0, _defineProperty2["default"])(_default2, PAGE_FINISH, {
17041  types: 'readystatechange IX2_PAGE_UPDATE',
17042  handler: withFilter(isElement, whenPageLoadFinish(actionGroupCreator))
17043}), (0, _defineProperty2["default"])(_default2, PAGE_START, {
17044  types: 'readystatechange IX2_PAGE_UPDATE',
17045  handler: withFilter(isElement, whenPageLoadStart(actionGroupCreator))
17046}), _default2);
17047
17048exports["default"] = _default;
17049
17050/***/ }),
17051/* 294 */
17052/***/ (function(module, exports, __webpack_require__) {
17053
vendor: 4,744 bytes, lines 17054-17233
17054var createFlow = __webpack_require__(295);
17055
17056/**
17057 * Creates a function that returns the result of invoking the given functions
17058 * with the `this` binding of the created function, where each successive
17059 * invocation is supplied the return value of the previous.
17060 *
17061 * @static
17062 * @memberOf _
17063 * @since 3.0.0
17064 * @category Util
17065 * @param {...(Function|Function[])} [funcs] The functions to invoke.
17066 * @returns {Function} Returns the new composite function.
17067 * @see _.flowRight
17068 * @example
17069 *
17070 * function square(n) {
17071 *   return n * n;
17072 * }
17073 *
17074 * var addSquare = _.flow([_.add, square]);
17075 * addSquare(1, 2);
17076 * // => 9
17077 */
17078var flow = createFlow();
17079
17080module.exports = flow;
17081
17082
17083/***/ }),
17084/* 295 */
17085/***/ (function(module, exports, __webpack_require__) {
17086
17087var LodashWrapper = __webpack_require__(63),
17088    flatRest = __webpack_require__(296),
17089    getData = __webpack_require__(119),
17090    getFuncName = __webpack_require__(120),
17091    isArray = __webpack_require__(1),
17092    isLaziable = __webpack_require__(309);
17093
17094/** Error message constants. */
17095var FUNC_ERROR_TEXT = 'Expected a function';
17096
17097/** Used to compose bitmasks for function metadata. */
17098var WRAP_CURRY_FLAG = 8,
17099    WRAP_PARTIAL_FLAG = 32,
17100    WRAP_ARY_FLAG = 128,
17101    WRAP_REARG_FLAG = 256;
17102
17103/**
17104 * Creates a `_.flow` or `_.flowRight` function.
17105 *
17106 * @private
17107 * @param {boolean} [fromRight] Specify iterating from right to left.
17108 * @returns {Function} Returns the new flow function.
17109 */
17110function createFlow(fromRight) {
17111  return flatRest(function(funcs) {
17112    var length = funcs.length,
17113        index = length,
17114        prereq = LodashWrapper.prototype.thru;
17115
17116    if (fromRight) {
17117      funcs.reverse();
17118    }
17119    while (index--) {
17120      var func = funcs[index];
17121      if (typeof func != 'function') {
17122        throw new TypeError(FUNC_ERROR_TEXT);
17123      }
17124      if (prereq && !wrapper && getFuncName(func) == 'wrapper') {
17125        var wrapper = new LodashWrapper([], true);
17126      }
17127    }
17128    index = wrapper ? index : length;
17129    while (++index < length) {
17130      func = funcs[index];
17131
17132      var funcName = getFuncName(func),
17133          data = funcName == 'wrapper' ? getData(func) : undefined;
17134
17135      if (data && isLaziable(data[0]) &&
17136            data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&
17137            !data[4].length && data[9] == 1
17138          ) {
17139        wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);
17140      } else {
17141        wrapper = (func.length == 1 && isLaziable(func))
17142          ? wrapper[funcName]()
17143          : wrapper.thru(func);
17144      }
17145    }
17146    return function() {
17147      var args = arguments,
17148          value = args[0];
17149
17150      if (wrapper && args.length == 1 && isArray(value)) {
17151        return wrapper.plant(value).value();
17152      }
17153      var index = 0,
17154          result = length ? funcs[index].apply(this, args) : value;
17155
17156      while (++index < length) {
17157        result = funcs[index].call(this, result);
17158      }
17159      return result;
17160    };
17161  });
17162}
17163
17164module.exports = createFlow;
17165
17166
17167/***/ }),
17168/* 296 */
17169/***/ (function(module, exports, __webpack_require__) {
17170
17171var flatten = __webpack_require__(297),
17172    overRest = __webpack_require__(300),
17173    setToString = __webpack_require__(302);
17174
17175/**
17176 * A specialized version of `baseRest` which flattens the rest array.
17177 *
17178 * @private
17179 * @param {Function} func The function to apply a rest parameter to.
17180 * @returns {Function} Returns the new function.
17181 */
17182function flatRest(func) {
17183  return setToString(overRest(func, undefined, flatten), func + '');
17184}
17185
17186module.exports = flatRest;
17187
17188
17189/***/ }),
17190/* 297 */
17191/***/ (function(module, exports, __webpack_require__) {
17192
17193var baseFlatten = __webpack_require__(298);
17194
17195/**
17196 * Flattens `array` a single level deep.
17197 *
17198 * @static
17199 * @memberOf _
17200 * @since 0.1.0
17201 * @category Array
17202 * @param {Array} array The array to flatten.
17203 * @returns {Array} Returns the new flattened array.
17204 * @example
17205 *
17206 * _.flatten([1, [2, [3, [4]], 5]]);
17207 * // => [1, 2, [3, [4]], 5]
17208 */
17209function flatten(array) {
17210  var length = array == null ? 0 : array.length;
17211  return length ? baseFlatten(array, 1) : [];
17212}
17213
17214module.exports = flatten;
17215
17216
17217/***/ }),
17218/* 298 */
17219/***/ (function(module, exports, __webpack_require__) {
17220
17221var arrayPush = __webpack_require__(50),
17222    isFlattenable = __webpack_require__(299);
17223
17224/**
17225 * The base implementation of `_.flatten` with support for restricting flattening.
17226 *
17227 * @private
17228 * @param {Array} array The array to flatten.
17229 * @param {number} depth The maximum recursion depth.
17230 * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.
17231 * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.
17232 * @param {Array} [result=[]] The initial result value.
17233 * @returns {Array} Returns the new flattened array.
vendor: 4,491 bytes, lines 17234-17405
17234 */
17235function baseFlatten(array, depth, predicate, isStrict, result) {
17236  var index = -1,
17237      length = array.length;
17238
17239  predicate || (predicate = isFlattenable);
17240  result || (result = []);
17241
17242  while (++index < length) {
17243    var value = array[index];
17244    if (depth > 0 && predicate(value)) {
17245      if (depth > 1) {
17246        // Recursively flatten arrays (susceptible to call stack limits).
17247        baseFlatten(value, depth - 1, predicate, isStrict, result);
17248      } else {
17249        arrayPush(result, value);
17250      }
17251    } else if (!isStrict) {
17252      result[result.length] = value;
17253    }
17254  }
17255  return result;
17256}
17257
17258module.exports = baseFlatten;
17259
17260
17261/***/ }),
17262/* 299 */
17263/***/ (function(module, exports, __webpack_require__) {
17264
17265var Symbol = __webpack_require__(19),
17266    isArguments = __webpack_require__(33),
17267    isArray = __webpack_require__(1);
17268
17269/** Built-in value references. */
17270var spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;
17271
17272/**
17273 * Checks if `value` is a flattenable `arguments` object or array.
17274 *
17275 * @private
17276 * @param {*} value The value to check.
17277 * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.
17278 */
17279function isFlattenable(value) {
17280  return isArray(value) || isArguments(value) ||
17281    !!(spreadableSymbol && value && value[spreadableSymbol]);
17282}
17283
17284module.exports = isFlattenable;
17285
17286
17287/***/ }),
17288/* 300 */
17289/***/ (function(module, exports, __webpack_require__) {
17290
17291var apply = __webpack_require__(301);
17292
17293/* Built-in method references for those with the same name as other `lodash` methods. */
17294var nativeMax = Math.max;
17295
17296/**
17297 * A specialized version of `baseRest` which transforms the rest array.
17298 *
17299 * @private
17300 * @param {Function} func The function to apply a rest parameter to.
17301 * @param {number} [start=func.length-1] The start position of the rest parameter.
17302 * @param {Function} transform The rest array transform.
17303 * @returns {Function} Returns the new function.
17304 */
17305function overRest(func, start, transform) {
17306  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
17307  return function() {
17308    var args = arguments,
17309        index = -1,
17310        length = nativeMax(args.length - start, 0),
17311        array = Array(length);
17312
17313    while (++index < length) {
17314      array[index] = args[start + index];
17315    }
17316    index = -1;
17317    var otherArgs = Array(start + 1);
17318    while (++index < start) {
17319      otherArgs[index] = args[index];
17320    }
17321    otherArgs[start] = transform(array);
17322    return apply(func, this, otherArgs);
17323  };
17324}
17325
17326module.exports = overRest;
17327
17328
17329/***/ }),
17330/* 301 */
17331/***/ (function(module, exports) {
17332
17333/**
17334 * A faster alternative to `Function#apply`, this function invokes `func`
17335 * with the `this` binding of `thisArg` and the arguments of `args`.
17336 *
17337 * @private
17338 * @param {Function} func The function to invoke.
17339 * @param {*} thisArg The `this` binding of `func`.
17340 * @param {Array} args The arguments to invoke `func` with.
17341 * @returns {*} Returns the result of `func`.
17342 */
17343function apply(func, thisArg, args) {
17344  switch (args.length) {
17345    case 0: return func.call(thisArg);
17346    case 1: return func.call(thisArg, args[0]);
17347    case 2: return func.call(thisArg, args[0], args[1]);
17348    case 3: return func.call(thisArg, args[0], args[1], args[2]);
17349  }
17350  return func.apply(thisArg, args);
17351}
17352
17353module.exports = apply;
17354
17355
17356/***/ }),
17357/* 302 */
17358/***/ (function(module, exports, __webpack_require__) {
17359
17360var baseSetToString = __webpack_require__(303),
17361    shortOut = __webpack_require__(305);
17362
17363/**
17364 * Sets the `toString` method of `func` to return `string`.
17365 *
17366 * @private
17367 * @param {Function} func The function to modify.
17368 * @param {Function} string The `toString` result.
17369 * @returns {Function} Returns `func`.
17370 */
17371var setToString = shortOut(baseSetToString);
17372
17373module.exports = setToString;
17374
17375
17376/***/ }),
17377/* 303 */
17378/***/ (function(module, exports, __webpack_require__) {
17379
17380var constant = __webpack_require__(304),
17381    defineProperty = __webpack_require__(117),
17382    identity = __webpack_require__(60);
17383
17384/**
17385 * The base implementation of `setToString` without support for hot loop shorting.
17386 *
17387 * @private
17388 * @param {Function} func The function to modify.
17389 * @param {Function} string The `toString` result.
17390 * @returns {Function} Returns `func`.
17391 */
17392var baseSetToString = !defineProperty ? identity : function(func, string) {
17393  return defineProperty(func, 'toString', {
17394    'configurable': true,
17395    'enumerable': false,
17396    'value': constant(string),
17397    'writable': true
17398  });
17399};
17400
17401module.exports = baseSetToString;
17402
17403
17404/***/ }),
17405/* 304 */
vendor: 7,234 bytes, lines 17406-17639
17406/***/ (function(module, exports) {
17407
17408/**
17409 * Creates a function that returns `value`.
17410 *
17411 * @static
17412 * @memberOf _
17413 * @since 2.4.0
17414 * @category Util
17415 * @param {*} value The value to return from the new function.
17416 * @returns {Function} Returns the new constant function.
17417 * @example
17418 *
17419 * var objects = _.times(2, _.constant({ 'a': 1 }));
17420 *
17421 * console.log(objects);
17422 * // => [{ 'a': 1 }, { 'a': 1 }]
17423 *
17424 * console.log(objects[0] === objects[1]);
17425 * // => true
17426 */
17427function constant(value) {
17428  return function() {
17429    return value;
17430  };
17431}
17432
17433module.exports = constant;
17434
17435
17436/***/ }),
17437/* 305 */
17438/***/ (function(module, exports) {
17439
17440/** Used to detect hot functions by number of calls within a span of milliseconds. */
17441var HOT_COUNT = 800,
17442    HOT_SPAN = 16;
17443
17444/* Built-in method references for those with the same name as other `lodash` methods. */
17445var nativeNow = Date.now;
17446
17447/**
17448 * Creates a function that'll short out and invoke `identity` instead
17449 * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
17450 * milliseconds.
17451 *
17452 * @private
17453 * @param {Function} func The function to restrict.
17454 * @returns {Function} Returns the new shortable function.
17455 */
17456function shortOut(func) {
17457  var count = 0,
17458      lastCalled = 0;
17459
17460  return function() {
17461    var stamp = nativeNow(),
17462        remaining = HOT_SPAN - (stamp - lastCalled);
17463
17464    lastCalled = stamp;
17465    if (remaining > 0) {
17466      if (++count >= HOT_COUNT) {
17467        return arguments[0];
17468      }
17469    } else {
17470      count = 0;
17471    }
17472    return func.apply(undefined, arguments);
17473  };
17474}
17475
17476module.exports = shortOut;
17477
17478
17479/***/ }),
17480/* 306 */
17481/***/ (function(module, exports, __webpack_require__) {
17482
17483var WeakMap = __webpack_require__(100);
17484
17485/** Used to store function metadata. */
17486var metaMap = WeakMap && new WeakMap;
17487
17488module.exports = metaMap;
17489
17490
17491/***/ }),
17492/* 307 */
17493/***/ (function(module, exports) {
17494
17495/**
17496 * This method returns `undefined`.
17497 *
17498 * @static
17499 * @memberOf _
17500 * @since 2.3.0
17501 * @category Util
17502 * @example
17503 *
17504 * _.times(2, _.noop);
17505 * // => [undefined, undefined]
17506 */
17507function noop() {
17508  // No operation performed.
17509}
17510
17511module.exports = noop;
17512
17513
17514/***/ }),
17515/* 308 */
17516/***/ (function(module, exports) {
17517
17518/** Used to lookup unminified function names. */
17519var realNames = {};
17520
17521module.exports = realNames;
17522
17523
17524/***/ }),
17525/* 309 */
17526/***/ (function(module, exports, __webpack_require__) {
17527
17528var LazyWrapper = __webpack_require__(65),
17529    getData = __webpack_require__(119),
17530    getFuncName = __webpack_require__(120),
17531    lodash = __webpack_require__(310);
17532
17533/**
17534 * Checks if `func` has a lazy counterpart.
17535 *
17536 * @private
17537 * @param {Function} func The function to check.
17538 * @returns {boolean} Returns `true` if `func` has a lazy counterpart,
17539 *  else `false`.
17540 */
17541function isLaziable(func) {
17542  var funcName = getFuncName(func),
17543      other = lodash[funcName];
17544
17545  if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {
17546    return false;
17547  }
17548  if (func === other) {
17549    return true;
17550  }
17551  var data = getData(other);
17552  return !!data && func === data[0];
17553}
17554
17555module.exports = isLaziable;
17556
17557
17558/***/ }),
17559/* 310 */
17560/***/ (function(module, exports, __webpack_require__) {
17561
17562var LazyWrapper = __webpack_require__(65),
17563    LodashWrapper = __webpack_require__(63),
17564    baseLodash = __webpack_require__(64),
17565    isArray = __webpack_require__(1),
17566    isObjectLike = __webpack_require__(9),
17567    wrapperClone = __webpack_require__(311);
17568
17569/** Used for built-in method references. */
17570var objectProto = Object.prototype;
17571
17572/** Used to check objects for own properties. */
17573var hasOwnProperty = objectProto.hasOwnProperty;
17574
17575/**
17576 * Creates a `lodash` object which wraps `value` to enable implicit method
17577 * chain sequences. Methods that operate on and return arrays, collections,
17578 * and functions can be chained together. Methods that retrieve a single value
17579 * or may return a primitive value will automatically end the chain sequence
17580 * and return the unwrapped value. Otherwise, the value must be unwrapped
17581 * with `_#value`.
17582 *
17583 * Explicit chain sequences, which must be unwrapped with `_#value`, may be
17584 * enabled using `_.chain`.
17585 *
17586 * The execution of chained methods is lazy, that is, it's deferred until
17587 * `_#value` is implicitly or explicitly called.
17588 *
17589 * Lazy evaluation allows several methods to support shortcut fusion.
17590 * Shortcut fusion is an optimization to merge iteratee calls; this avoids
17591 * the creation of intermediate arrays and can greatly reduce the number of
17592 * iteratee executions. Sections of a chain sequence qualify for shortcut
17593 * fusion if the section is applied to an array and iteratees accept only
17594 * one argument. The heuristic for whether a section qualifies for shortcut
17595 * fusion is subject to change.
17596 *
17597 * Chaining is supported in custom builds as long as the `_#value` method is
17598 * directly or indirectly included in the build.
17599 *
17600 * In addition to lodash methods, wrappers have `Array` and `String` methods.
17601 *
17602 * The wrapper `Array` methods are:
17603 * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`
17604 *
17605 * The wrapper `String` methods are:
17606 * `replace` and `split`
17607 *
17608 * The wrapper methods that support shortcut fusion are:
17609 * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,
17610 * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,
17611 * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`
17612 *
17613 * The chainable wrapper methods are:
17614 * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,
17615 * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,
17616 * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,
17617 * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,
17618 * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,
17619 * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,
17620 * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,
17621 * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,
17622 * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,
17623 * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,
17624 * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,
17625 * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,
17626 * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,
17627 * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,
17628 * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,
17629 * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,
17630 * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,
17631 * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,
17632 * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,
17633 * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,
17634 * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,
17635 * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,
17636 * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,
17637 * `zipObject`, `zipObjectDeep`, and `zipWith`
17638 *
17639 * The wrapper methods that are **not** chainable by default are:
17640 * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,
17641 * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,
17642 * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,
17643 * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,
17644 * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,
17645 * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,
17646 * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,
17647 * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,
17648 * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,
17649 * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,
17650 * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,
17651 * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,
17652 * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,
17653 * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,
17654 * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,
17655 * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,
17656 * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,
17657 * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,
17658 * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,
17659 * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,
17660 * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,
17661 * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,
17662 * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,
17663 * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,
17664 * `upperFirst`, `value`, and `words`
17665 *
17666 * @name _
17667 * @constructor
17668 * @category Seq
17669 * @param {*} value The value to wrap in a `lodash` instance.
17670 * @returns {Object} Returns the new `lodash` wrapper instance.
17671 * @example
17672 *
17673 * function square(n) {
17674 *   return n * n;
17675 * }
17676 *
17677 * var wrapped = _([1, 2, 3]);
17678 *
17679 * // Returns an unwrapped value.
17680 * wrapped.reduce(_.add);
17681 * // => 6
17682 *
17683 * // Returns a wrapped value.
17684 * var squares = wrapped.map(square);
17685 *
17686 * _.isArray(squares);
17687 * // => false
17688 *
17689 * _.isArray(squares.value());
17690 * // => true
17691 */
17692function lodash(value) {
17693  if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {
17694    if (value instanceof LodashWrapper) {
17695      return value;
17696    }
17697    if (hasOwnProperty.call(value, '__wrapped__')) {
17698      return wrapperClone(value);
17699    }
17700  }
17701  return new LodashWrapper(value);
17702}
17703
17704// Ensure wrappers are instances of `baseLodash`.
17705lodash.prototype = baseLodash.prototype;
17706lodash.prototype.constructor = lodash;
17707
17708module.exports = lodash;
17709
17710
17711/***/ }),
17712/* 311 */
17713/***/ (function(module, exports, __webpack_require__) {
17714
17715var LazyWrapper = __webpack_require__(65),
17716    LodashWrapper = __webpack_require__(63),
17717    copyArray = __webpack_require__(312);
17718
17719/**
17720 * Creates a clone of `wrapper`.
17721 *
17722 * @private
17723 * @param {Object} wrapper The wrapper to clone.
17724 * @returns {Object} Returns the cloned wrapper.
17725 */
17726function wrapperClone(wrapper) {
17727  if (wrapper instanceof LazyWrapper) {
17728    return wrapper.clone();
17729  }
17730  var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);
17731  result.__actions__ = copyArray(wrapper.__actions__);
17732  result.__index__  = wrapper.__index__;
17733  result.__values__ = wrapper.__values__;
17734  return result;
17735}
17736
17737module.exports = wrapperClone;
17738
17739
17740/***/ }),
17741/* 312 */
17742/***/ (function(module, exports) {
17743
17744/**
17745 * Copies the values of `source` to `array`.
17746 *
17747 * @private
17748 * @param {Array} source The array to copy values from.
17749 * @param {Array} [array=[]] The array to copy values to.
17750 * @returns {Array} Returns `array`.
17751 */
17752function copyArray(source, array) {
17753  var index = -1,
17754      length = source.length;
17755
17756  array || (array = Array(length));
17757  while (++index < length) {
17758    array[index] = source[index];
17759  }
17760  return array;
17761}
17762
17763module.exports = copyArray;
17764
17765
17766/***/ }),
17767/* 313 */
17768/***/ (function(module, exports, __webpack_require__) {
17769
17770var baseClamp = __webpack_require__(314),
17771    toNumber = __webpack_require__(61);
17772
17773/**
17774 * Clamps `number` within the inclusive `lower` and `upper` bounds.
17775 *
17776 * @static
17777 * @memberOf _
17778 * @since 4.0.0
17779 * @category Number
17780 * @param {number} number The number to clamp.
17781 * @param {number} [lower] The lower bound.
17782 * @param {number} upper The upper bound.
17783 * @returns {number} Returns the clamped number.
17784 * @example
17785 *
17786 * _.clamp(-10, -5, 5);
17787 * // => -5
17788 *
17789 * _.clamp(10, -5, 5);
17790 * // => 5
17791 */
17792function clamp(number, lower, upper) {
17793  if (upper === undefined) {
17794    upper = lower;
17795    lower = undefined;
17796  }
17797  if (upper !== undefined) {
17798    upper = toNumber(upper);
17799    upper = upper === upper ? upper : 0;
17800  }
17801  if (lower !== undefined) {
17802    lower = toNumber(lower);
17803    lower = lower === lower ? lower : 0;
17804  }
17805  return baseClamp(toNumber(number), lower, upper);
17806}
17807
17808module.exports = clamp;
17809
17810
17811/***/ }),
17812/* 314 */
17813/***/ (function(module, exports) {
17814
17815/**
17816 * The base implementation of `_.clamp` which doesn't coerce arguments.
17817 *
17818 * @private
17819 * @param {number} number The number to clamp.
17820 * @param {number} [lower] The lower bound.
17821 * @param {number} upper The upper bound.
17822 * @returns {number} Returns the clamped number.
17823 */
17824function baseClamp(number, lower, upper) {
17825  if (number === number) {
17826    if (upper !== undefined) {
17827      number = number <= upper ? number : upper;
17828    }
17829    if (lower !== undefined) {
17830      number = number >= lower ? number : lower;
17831    }
17832  }
17833  return number;
17834}
17835
17836module.exports = baseClamp;
17837
17838
17839/***/ }),
17840/* 315 */
17841/***/ (function(module, exports, __webpack_require__) {
17842
17843"use strict";
17844 // @wf-will-never-add-flow-to-this-file
17845
17846/* globals window, document */
17847
17848/* eslint-disable no-var */
17849
17850/**
17851 * Webflow: Auto-select links to current page or section
17852 */
17853
17854var Webflow = __webpack_require__(5);
17855
17856Webflow.define('links', module.exports = function ($, _) {
17857  var api = {};
17858  var $win = $(window);
17859  var designer;
17860  var inApp = Webflow.env();
17861  var location = window.location;
17862  var tempLink = document.createElement('a');
17863  var linkCurrent = 'w--current';
17864  var indexPage = /index\.(html|php)$/;
17865  var dirList = /\/$/;
17866  var anchors;
17867  var slug; // -----------------------------------
17868  // Module methods
17869
17870  api.ready = api.design = api.preview = init; // -----------------------------------
17871  // Private methods
17872
17873  function init() {
17874    designer = inApp && Webflow.env('design');
17875    slug = Webflow.env('slug') || location.pathname || ''; // Reset scroll listener, init anchors
17876
17877    Webflow.scroll.off(scroll);
17878    anchors = []; // Test all links for a selectable href
17879
17880    var links = document.links;
17881
17882    for (var i = 0; i < links.length; ++i) {
17883      select(links[i]);
17884    } // Listen for scroll if any anchors exist
17885
17886
17887    if (anchors.length) {
17888      Webflow.scroll.on(scroll);
17889      scroll();
17890    }
17891  }
17892
17893  function select(link) {
17894    var href = designer && link.getAttribute('href-disabled') || link.getAttribute('href');
17895    tempLink.href = href; // Ignore any hrefs with a colon to safely avoid all uri schemes
17896
17897    if (href.indexOf(':') >= 0) {
17898      return;
17899    }
17900
17901    var $link = $(link); // Check for all links with hash (eg (this-host)(/this-path)#section) to this page
17902
17903    if (tempLink.hash.length > 1 && tempLink.host + tempLink.pathname === location.host + location.pathname) {
17904      // Ignore any hrefs with Google Translate type hash
17905      // Example: jQuery can't parse $('#googtrans(en|es)')
17906      // https://forum.webflow.com/t/dropdown-menus-not-working-on-site/87140
17907      if (!/^#[a-zA-Z0-9\-\_]+$/.test(tempLink.hash)) {
17908        return;
17909      }
17910
17911      var $section = $(tempLink.hash);
17912      $section.length && anchors.push({
17913        link: $link,
17914        sec: $section,
17915        active: false
17916      });
17917      return;
17918    } // Ignore empty # links
17919
17920
17921    if (href === '#' || href === '') {
17922      return;
17923    } // Determine whether the link should be selected
17924
17925
17926    var match = tempLink.href === location.href || href === slug || indexPage.test(href) && dirList.test(slug);
17927    setClass($link, linkCurrent, match);
17928  }
17929
17930  function scroll() {
17931    var viewTop = $win.scrollTop();
17932    var viewHeight = $win.height(); // Check each anchor for a section in view
17933
17934    _.each(anchors, function (anchor) {
17935      var $link = anchor.link;
17936      var $section = anchor.sec;
17937      var top = $section.offset().top;
17938      var height = $section.outerHeight();
17939      var offset = viewHeight * 0.5;
17940      var active = $section.is(':visible') && top + height - offset >= viewTop && top + offset <= viewTop + viewHeight;
17941
17942      if (anchor.active === active) {
17943        return;
17944      }
17945
17946      anchor.active = active;
17947      setClass($link, linkCurrent, active);
17948    });
17949  }
17950
17951  function setClass($elem, className, add) {
17952    var exists = $elem.hasClass(className);
17953
17954    if (add && exists) {
17955      return;
17956    }
17957
17958    if (!add && !exists) {
17959      return;
17960    }
17961
17962    add ? $elem.addClass(className) : $elem.removeClass(className);
17963  } // Export module
17964
17965
17966  return api;
17967});
17968
17969/***/ }),
17970/* 316 */
17971/***/ (function(module, exports, __webpack_require__) {
17972
17973"use strict";
17974 // @wf-will-never-add-flow-to-this-file
17975
17976/* globals window, document */
17977
17978/* eslint-disable no-var */
17979
17980/**
17981 * Webflow: Smooth scroll
17982 */
17983
17984var Webflow = __webpack_require__(5);
17985
17986Webflow.define('scroll', module.exports = function ($) {
17987  // Native browser events & namespaces used in this module
17988  var CLICK = 'click';
17989  var EMPTY_LINK_NS = '.wf-empty-link';
17990  var SCROLL_NS = '.wf-scroll';
17991  /**
17992   * A collection of namespaced events found in this module.
17993   * Namespaced events encapsulate our code, and make it safer and easier
17994   * for designers to apply custom code overrides.
17995   * @see https://api.jquery.com/on/#event-names
17996   * @typedef {Object.<string>} NamespacedEventsCollection
17997   */
17998
17999  var NS_EVENTS = {
18000    CLICK_EMPTY: CLICK + EMPTY_LINK_NS,
18001    CLICK_SCROLL: CLICK + SCROLL_NS
18002  };
18003  var $doc = $(document);
18004  var win = window;
18005  var loc = win.location;
18006  var history = inIframe() ? null : win.history;
18007  var validHash = /^[a-zA-Z0-9][\w:.-]*$/;
18008  var emptyHrefSelector = 'a[href="#"]';
18009  /**
18010   * Select only links whose href:
18011   * - contains a #
18012   * - is not one of our namespaced TabLink elements
18013   * - is not _only_ a #
18014   */
18015
18016  var localHrefSelector = 'a[href*="#"]:not(.w-tab-link):not(' + emptyHrefSelector + ')';
18017  /**
18018   * The current page url, minus the hash.
18019   * Will be set in the `ready` function
18020   */
18021
18022  var locHref;
18023
18024  function inIframe() {
18025    try {
18026      return Boolean(win.frameElement);
18027    } catch (e) {
18028      return true;
18029    }
18030  }
18031  /**
18032   * Determine if we should execute custom scroll
18033   */
18034
18035
18036  function validateScroll(e) {
18037    if (Webflow.env('design')) {
18038      return;
18039    } // Ignore links being used by jQuery mobile
18040
18041
18042    if (window.$.mobile && $(e.currentTarget).hasClass('ui-link')) {
18043      return;
18044    } // The href property always contains the full url so we can compare
18045    // with the document’s location to only target links on this page.
18046
18047
18048    var parts = this.href.split('#');
18049    var hash = parts[0] === locHref ? parts[1] : null;
18050
18051    if (hash) {
18052      findEl(hash, e);
18053    }
18054  }
18055
18056  function findEl(hash, e) {
18057    if (!validHash.test(hash)) {
18058      return;
18059    }
18060
18061    var el = $('#' + hash);
18062
18063    if (!el.length) {
18064      return;
18065    }
18066
18067    if (e) {
18068      e.preventDefault();
18069      e.stopPropagation();
18070    } // Push new history state
18071
18072
18073    if (loc.hash !== hash && history && history.pushState && // Navigation breaks Chrome when the protocol is `file:`.
18074    !(Webflow.env.chrome && loc.protocol === 'file:')) {
18075      var oldHash = history.state && history.state.hash;
18076
18077      if (oldHash !== hash) {
18078        history.pushState({
18079          hash: hash
18080        }, '', '#' + hash);
18081      }
18082    } // If a fixed header exists, offset for the height
18083
18084
18085    var rootTag = Webflow.env('editor') ? '.w-editor-body' : 'body';
18086    var header = $('header, ' + rootTag + ' > .header, ' + rootTag + ' > .w-nav:not([data-no-scroll])');
18087    var offset = header.css('position') === 'fixed' ? header.outerHeight() : 0;
18088    win.setTimeout(function () {
18089      scroll(el, offset);
18090    }, e ? 0 : 300);
18091  }
18092
18093  function scroll(el, offset) {
18094    var start = $(win).scrollTop();
18095    var end = el.offset().top - offset; // If specified, scroll so that the element ends up in the middle of the viewport
18096
18097    if (el.data('scroll') === 'mid') {
18098      var available = $(win).height() - offset;
18099      var elHeight = el.outerHeight();
18100
18101      if (elHeight < available) {
18102        end -= Math.round((available - elHeight) / 2);
18103      }
18104    }
18105
18106    var mult = 1; // Check for custom time multiplier on the body and the element
18107
18108    $('body').add(el).each(function () {
18109      var time = parseFloat($(this).attr('data-scroll-time'), 10);
18110
18111      if (!isNaN(time) && (time === 0 || time > 0)) {
18112        mult = time;
18113      }
18114    }); // Shim for IE8 and below
18115
18116    if (!Date.now) {
18117      Date.now = function () {
18118        return new Date().getTime();
18119      };
18120    }
18121
18122    var clock = Date.now();
18123
18124    var animate = win.requestAnimationFrame || win.mozRequestAnimationFrame || win.webkitRequestAnimationFrame || function (fn) {
18125      win.setTimeout(fn, 15);
18126    };
18127
18128    var duration = (472.143 * Math.log(Math.abs(start - end) + 125) - 2000) * mult;
18129
18130    var step = function step() {
18131      var elapsed = Date.now() - clock;
18132      win.scroll(0, getY(start, end, elapsed, duration));
18133
18134      if (elapsed <= duration) {
18135        animate(step);
18136      }
18137    };
18138
18139    step();
18140  }
18141
18142  function getY(start, end, elapsed, duration) {
18143    if (elapsed > duration) {
18144      return end;
18145    }
18146
18147    return start + (end - start) * ease(elapsed / duration);
18148  }
18149
18150  function ease(t) {
18151    return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;
18152  }
18153
18154  function ready() {
18155    var CLICK_EMPTY = NS_EVENTS.CLICK_EMPTY,
18156        CLICK_SCROLL = NS_EVENTS.CLICK_SCROLL;
18157    locHref = loc.href.split('#')[0];
18158    $doc.on(CLICK_SCROLL, localHrefSelector, validateScroll);
18159    /**
18160     * Prevent empty hash links from triggering scroll.
18161     * Legacy feature to preserve: use the default "#" link
18162     * to trigger an interaction, and do not want the page
18163     * to scroll to the top.
18164     */
18165
18166    $doc.on(CLICK_EMPTY, emptyHrefSelector, function (e) {
18167      e.preventDefault();
18168    });
18169  } // Export module
18170
18171
18172  return {
18173    ready: ready
18174  };
18175});
18176
18177/***/ }),
18178/* 317 */
18179/***/ (function(module, exports, __webpack_require__) {
18180
18181"use strict";
18182 // @wf-will-never-add-flow-to-this-file
18183
18184/* globals document, window */
18185
18186/* eslint-disable no-var */
18187
18188/**
18189 * Webflow: Touch events
18190 * Supports legacy 'tap' event
18191 * Adds a 'swipe' event to desktop and mobile
18192 */
18193
18194var Webflow = __webpack_require__(5);
18195
18196Webflow.define('touch', module.exports = function ($) {
18197  var api = {};
18198  var getSelection = window.getSelection; // Delegate all legacy 'tap' events to 'click'
18199
18200  $.event.special.tap = {
18201    bindType: 'click',
18202    delegateType: 'click'
18203  };
18204
18205  api.init = function (el) {
18206    el = typeof el === 'string' ? $(el).get(0) : el;
18207    return el ? new Touch(el) : null;
18208  };
18209
18210  function Touch(el) {
18211    var active = false;
18212    var useTouch = false;
18213    var thresholdX = Math.min(Math.round(window.innerWidth * 0.04), 40);
18214    var startX;
18215    var lastX;
18216    el.addEventListener('touchstart', start, false);
18217    el.addEventListener('touchmove', move, false);
18218    el.addEventListener('touchend', end, false);
18219    el.addEventListener('touchcancel', cancel, false);
18220    el.addEventListener('mousedown', start, false);
18221    el.addEventListener('mousemove', move, false);
18222    el.addEventListener('mouseup', end, false);
18223    el.addEventListener('mouseout', cancel, false);
18224
18225    function start(evt) {
18226      // We don’t handle multi-touch events yet.
18227      var touches = evt.touches;
18228
18229      if (touches && touches.length > 1) {
18230        return;
18231      }
18232
18233      active = true;
18234
18235      if (touches) {
18236        useTouch = true;
18237        startX = touches[0].clientX;
18238      } else {
18239        startX = evt.clientX;
18240      }
18241
18242      lastX = startX;
18243    }
18244
18245    function move(evt) {
18246      if (!active) {
18247        return;
18248      }
18249
18250      if (useTouch && evt.type === 'mousemove') {
18251        evt.preventDefault();
18252        evt.stopPropagation();
18253        return;
18254      }
18255
18256      var touches = evt.touches;
18257      var x = touches ? touches[0].clientX : evt.clientX;
18258      var velocityX = x - lastX;
18259      lastX = x; // Allow swipes while pointer is down, but prevent them during text selection
18260
18261      if (Math.abs(velocityX) > thresholdX && getSelection && String(getSelection()) === '') {
18262        triggerEvent('swipe', evt, {
18263          direction: velocityX > 0 ? 'right' : 'left'
18264        });
18265        cancel();
18266      }
18267    }
18268
18269    function end(evt) {
18270      if (!active) {
18271        return;
18272      }
18273
18274      active = false;
18275
18276      if (useTouch && evt.type === 'mouseup') {
18277        evt.preventDefault();
18278        evt.stopPropagation();
18279        useTouch = false;
18280        return;
18281      }
18282    }
18283
18284    function cancel() {
18285      active = false;
18286    }
18287
18288    function destroy() {
18289      el.removeEventListener('touchstart', start, false);
18290      el.removeEventListener('touchmove', move, false);
18291      el.removeEventListener('touchend', end, false);
18292      el.removeEventListener('touchcancel', cancel, false);
18293      el.removeEventListener('mousedown', start, false);
18294      el.removeEventListener('mousemove', move, false);
18295      el.removeEventListener('mouseup', end, false);
18296      el.removeEventListener('mouseout', cancel, false);
18297      el = null;
18298    } // Public instance methods
18299
18300
18301    this.destroy = destroy;
18302  } // Wrap native event to supoprt preventdefault + stopPropagation
18303
18304
18305  function triggerEvent(type, evt, data) {
18306    var newEvent = $.Event(type, {
18307      originalEvent: evt
18308    });
18309    $(evt.target).trigger(newEvent, data);
18310  } // Listen for touch events on all nodes by default.
18311
18312
18313  api.instance = api.init(document); // Export module
18314
18315  return api;
18316});
18317
18318/***/ }),
18319/* 318 */
18320/***/ (function(module, exports, __webpack_require__) {
18321
18322"use strict";
18323 // @wf-will-never-add-flow-to-this-file
18324
18325/* globals window, document */
18326
18327/* eslint-disable no-var */
18328
18329/**
18330 * Webflow: Dropdown component
18331 */
18332
18333var Webflow = __webpack_require__(5);
18334
18335var IXEvents = __webpack_require__(38);
18336
18337var KEY_CODES = {
18338  ARROW_LEFT: 37,
18339  ARROW_UP: 38,
18340  ARROW_RIGHT: 39,
18341  ARROW_DOWN: 40,
18342  ESCAPE: 27,
18343  SPACE: 32,
18344  ENTER: 13,
18345  HOME: 36,
18346  END: 35
18347};
18348var FORCE_CLOSE = true;
18349Webflow.define('dropdown', module.exports = function ($, _) {
18350  var debounce = _.debounce;
18351  var api = {};
18352  var inApp = Webflow.env();
18353  var inPreview = false;
18354  var inDesigner;
18355  var touch = Webflow.env.touch;
18356  var namespace = '.w-dropdown';
18357  var openStateClassName = 'w--open';
18358  var ix = IXEvents.triggers;
18359  var defaultZIndex = 900; // @dropdown-depth
18360
18361  var focusOutEvent = 'focusout' + namespace;
18362  var keydownEvent = 'keydown' + namespace;
18363  var mouseEnterEvent = 'mouseenter' + namespace;
18364  var mouseMoveEvent = 'mousemove' + namespace;
18365  var mouseLeaveEvent = 'mouseleave' + namespace;
18366  var mouseUpEvent = (touch ? 'click' : 'mouseup') + namespace;
18367  var closeEvent = 'w-close' + namespace;
18368  var settingEvent = 'setting' + namespace;
18369  var $doc = $(document);
18370  var $dropdowns; // -----------------------------------
18371  // Module methods
18372
18373  api.ready = init;
18374
18375  api.design = function () {
18376    // Close all when returning from preview
18377    if (inPreview) {
18378      closeAll();
18379    }
18380
18381    inPreview = false;
18382    init();
18383  };
18384
18385  api.preview = function () {
18386    inPreview = true;
18387    init();
18388  }; // -----------------------------------
18389  // Private methods
18390
18391
18392  function init() {
18393    inDesigner = inApp && Webflow.env('design'); // Find all instances on the page
18394
18395    $dropdowns = $doc.find(namespace);
18396    $dropdowns.each(build);
18397  }
18398
18399  function build(i, el) {
18400    var $el = $(el); // Store state in data
18401
18402    var data = $.data(el, namespace);
18403
18404    if (!data) {
18405      data = $.data(el, namespace, {
18406        open: false,
18407        el: $el,
18408        config: {},
18409        selectedIdx: -1
18410      });
18411    }
18412
18413    data.toggle = data.el.children('.w-dropdown-toggle');
18414    data.list = data.el.children('.w-dropdown-list');
18415    data.links = data.list.find('a:not(.w-dropdown .w-dropdown a)');
18416    data.complete = complete(data);
18417    data.mouseLeave = makeMouseLeaveHandler(data);
18418    data.mouseUpOutside = outside(data);
18419    data.mouseMoveOutside = moveOutside(data); // Set config from data attributes
18420
18421    configure(data); // Store the IDs of the toggle button & list
18422
18423    var toggleId = data.toggle.attr('id');
18424    var listId = data.list.attr('id'); // If user did not provide toggle ID, set it
18425
18426    if (!toggleId) {
18427      toggleId = 'w-dropdown-toggle-' + i;
18428    } // If user did not provide list ID, set it
18429
18430
18431    if (!listId) {
18432      listId = 'w-dropdown-list-' + i;
18433    } // Add attributes to toggle element
18434
18435
18436    data.toggle.attr('id', toggleId);
18437    data.toggle.attr('aria-controls', listId);
18438    data.toggle.attr('aria-haspopup', 'menu');
18439    data.toggle.attr('aria-expanded', 'false'); // If toggle element is not a button
18440
18441    if (data.toggle.prop('tagName') !== 'BUTTON') {
18442      // Give it an appropriate role
18443      data.toggle.attr('role', 'button'); // And give it a tabindex if user has not provided one
18444
18445      if (!data.toggle.attr('tabindex')) {
18446        data.toggle.attr('tabindex', '0');
18447      }
18448    } // Add attributes to list element
18449
18450
18451    data.list.attr('id', listId);
18452    data.list.attr('aria-labelledby', toggleId);
18453    /**
18454     * In macOS Safari, links don't take focus on click unless they have
18455     * a tabindex. Without this, the dropdown will break.
18456     * @see https://gist.github.com/cvrebert/68659d0333a578d75372
18457     */
18458
18459    data.links.each(function (idx, link) {
18460      if (!link.hasAttribute('tabindex')) link.setAttribute('tabindex', '0');
18461    }); // Remove old events
18462
18463    data.el.off(namespace);
18464    data.toggle.off(namespace);
18465
18466    if (data.nav) {
18467      data.nav.off(namespace);
18468    }
18469
18470    var initialToggler = makeToggler(data, FORCE_CLOSE);
18471
18472    if (inDesigner) {
18473      data.el.on(settingEvent, makeSettingEventHandler(data));
18474    }
18475
18476    if (!inDesigner) {
18477      // Close in preview mode and clean the data.hovering state
18478      if (inApp) {
18479        data.hovering = false;
18480        close(data);
18481      }
18482
18483      if (data.config.hover) {
18484        data.toggle.on(mouseEnterEvent, makeMouseEnterHandler(data));
18485      }
18486
18487      data.el.on(closeEvent, initialToggler);
18488      data.el.on(keydownEvent, makeDropdownKeydownHandler(data));
18489      data.el.on(focusOutEvent, makeDropdownFousoutHandler(data));
18490      data.toggle.on(mouseUpEvent, initialToggler);
18491      data.toggle.on(keydownEvent, makeToggleKeydownHandler(data));
18492      data.nav = data.el.closest('.w-nav');
18493      data.nav.on(closeEvent, initialToggler);
18494    }
18495  }
18496  /**
18497   * Mutate the data object with a new config property
18498   */
18499
18500
18501  function configure(data) {
18502    // Determine if z-index should be managed
18503    var zIndex = Number(data.el.css('z-index'));
18504    data.manageZ = zIndex === defaultZIndex || zIndex === defaultZIndex + 1;
18505    data.config = {
18506      hover: (data.el.attr('data-hover') === true || data.el.attr('data-hover') === '1') && !touch,
18507      delay: Number(data.el.attr('data-delay')) || 0
18508    };
18509  }
18510
18511  function makeSettingEventHandler(data) {
18512    return function (evt, options) {
18513      options = options || {};
18514      configure(data);
18515      options.open === true && open(data, true);
18516      options.open === false && close(data, {
18517        immediate: true
18518      });
18519    };
18520  }
18521
18522  function makeToggler(data, forceClose) {
18523    return debounce(function (evt) {
18524      if (data.open || evt && evt.type === 'w-close') {
18525        return close(data, {
18526          forceClose: forceClose
18527        });
18528      }
18529
18530      open(data);
18531    });
18532  }
18533
18534  function open(data) {
18535    if (data.open) {
18536      return;
18537    }
18538
18539    closeOthers(data);
18540    data.open = true;
18541    data.list.addClass(openStateClassName);
18542    data.toggle.addClass(openStateClassName);
18543    data.toggle.attr('aria-expanded', 'true'); // ARIA
18544
18545    ix.intro(0, data.el[0]);
18546    Webflow.redraw.up(); // Increase z-index to keep above other managed dropdowns
18547
18548    data.manageZ && data.el.css('z-index', defaultZIndex + 1); // Listen for click outside events
18549
18550    var isEditor = Webflow.env('editor');
18551
18552    if (!inDesigner) {
18553      $doc.on(mouseUpEvent, data.mouseUpOutside);
18554    }
18555
18556    if (data.hovering && !isEditor) {
18557      data.el.on(mouseLeaveEvent, data.mouseLeave);
18558    }
18559
18560    if (data.hovering && isEditor) {
18561      $doc.on(mouseMoveEvent, data.mouseMoveOutside);
18562    } // Clear previous delay
18563
18564
18565    window.clearTimeout(data.delayId);
18566  }
18567
18568  function close(data) {
18569    var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
18570        immediate = _ref.immediate,
18571        forceClose = _ref.forceClose;
18572
18573    if (!data.open) {
18574      return;
18575    } // Do not close hover-based menus if currently hovering
18576
18577
18578    if (data.config.hover && data.hovering && !forceClose) {
18579      return;
18580    }
18581
18582    data.toggle.attr('aria-expanded', 'false');
18583    data.open = false;
18584    var config = data.config;
18585    ix.outro(0, data.el[0]); // Stop listening for click outside events
18586
18587    $doc.off(mouseUpEvent, data.mouseUpOutside);
18588    $doc.off(mouseMoveEvent, data.mouseMoveOutside);
18589    data.el.off(mouseLeaveEvent, data.mouseLeave); // Clear previous delay
18590
18591    window.clearTimeout(data.delayId); // Skip delay during immediate
18592
18593    if (!config.delay || immediate) {
18594      return data.complete();
18595    } // Optionally wait for delay before close
18596
18597
18598    data.delayId = window.setTimeout(data.complete, config.delay);
18599  }
18600
18601  function closeAll() {
18602    $doc.find(namespace).each(function (i, el) {
18603      $(el).triggerHandler(closeEvent);
18604    });
18605  }
18606
18607  function closeOthers(data) {
18608    var self = data.el[0];
18609    $dropdowns.each(function (i, other) {
18610      var $other = $(other);
18611
18612      if ($other.is(self) || $other.has(self).length) {
18613        return;
18614      }
18615
18616      $other.triggerHandler(closeEvent);
18617    });
18618  }
18619
18620  function outside(data) {
18621    // Unbind previous click handler if it exists
18622    if (data.mouseUpOutside) {
18623      $doc.off(mouseUpEvent, data.mouseUpOutside);
18624    } // Close menu when clicked outside
18625
18626
18627    return debounce(function (evt) {
18628      if (!data.open) {
18629        return;
18630      }
18631
18632      var $target = $(evt.target);
18633
18634      if ($target.closest('.w-dropdown-toggle').length) {
18635        return;
18636      }
18637
18638      var isEventOutsideDropdowns = $.inArray(data.el[0], $target.parents(namespace)) === -1;
18639      var isEditor = Webflow.env('editor');
18640
18641      if (isEventOutsideDropdowns) {
18642        if (isEditor) {
18643          var isEventOnDetachedSvg = $target.parents().length === 1 && $target.parents('svg').length === 1;
18644          var isEventOnHoverControls = $target.parents('.w-editor-bem-EditorHoverControls').length;
18645
18646          if (isEventOnDetachedSvg || isEventOnHoverControls) {
18647            return;
18648          }
18649        }
18650
18651        close(data);
18652      }
18653    });
18654  }
18655
18656  function complete(data) {
18657    return function () {
18658      data.list.removeClass(openStateClassName);
18659      data.toggle.removeClass(openStateClassName); // Reset z-index for managed dropdowns
18660
18661      data.manageZ && data.el.css('z-index', '');
18662    };
18663  }
18664
18665  function makeMouseEnterHandler(data) {
18666    return function () {
18667      data.hovering = true;
18668      open(data);
18669    };
18670  }
18671
18672  function makeMouseLeaveHandler(data) {
18673    return function () {
18674      data.hovering = false; // We do not want the list to close upon mouseleave
18675      // if one of the links has focus
18676
18677      if (!data.links.is(':focus')) {
18678        close(data);
18679      }
18680    };
18681  }
18682
18683  function moveOutside(data) {
18684    return debounce(function (evt) {
18685      if (!data.open) {
18686        return;
18687      }
18688
18689      var $target = $(evt.target);
18690      var isEventOutsideDropdowns = $.inArray(data.el[0], $target.parents(namespace)) === -1;
18691
18692      if (isEventOutsideDropdowns) {
18693        var isEventOnHoverControls = $target.parents('.w-editor-bem-EditorHoverControls').length;
18694        var isEventOnHoverToolbar = $target.parents('.w-editor-bem-RTToolbar').length;
18695        var $editorOverlay = $('.w-editor-bem-EditorOverlay');
18696        var isDropdownInEdition = $editorOverlay.find('.w-editor-edit-outline').length || $editorOverlay.find('.w-editor-bem-RTToolbar').length;
18697
18698        if (isEventOnHoverControls || isEventOnHoverToolbar || isDropdownInEdition) {
18699          return;
18700        }
18701
18702        data.hovering = false;
18703        close(data);
18704      }
18705    });
18706  }
18707
18708  function makeDropdownKeydownHandler(data) {
18709    return function (evt) {
18710      // Do not respond to keyboard events in designer or preview mode,
18711      // or if the list is not open
18712      if (inDesigner || inPreview || !data.open) {
18713        return;
18714      } // Realign selectedIdx with the menu item that is currently in focus.
18715      // We need this because we do not track the `Tab` key activity!
18716
18717
18718      data.selectedIdx = data.links.index(document.activeElement); // Evaluate item-selection logic
18719
18720      switch (evt.keyCode) {
18721        case KEY_CODES.HOME:
18722          {
18723            if (!data.open) return;
18724            data.selectedIdx = 0;
18725            focusSelectedLink(data);
18726            return evt.preventDefault();
18727          }
18728
18729        case KEY_CODES.END:
18730          {
18731            if (!data.open) return;
18732            data.selectedIdx = data.links.length - 1;
18733            focusSelectedLink(data);
18734            return evt.preventDefault();
18735          }
18736
18737        case KEY_CODES.ESCAPE:
18738          {
18739            close(data);
18740            data.toggle.focus();
18741            return evt.stopPropagation();
18742          }
18743
18744        case KEY_CODES.ARROW_RIGHT:
18745        case KEY_CODES.ARROW_DOWN:
18746          {
18747            data.selectedIdx = Math.min(data.links.length - 1, data.selectedIdx + 1);
18748            focusSelectedLink(data);
18749            return evt.preventDefault();
18750          }
18751
18752        case KEY_CODES.ARROW_LEFT:
18753        case KEY_CODES.ARROW_UP:
18754          {
18755            data.selectedIdx = Math.max(-1, data.selectedIdx - 1);
18756            focusSelectedLink(data);
18757            return evt.preventDefault();
18758          }
18759      }
18760    };
18761  }
18762
18763  function focusSelectedLink(data) {
18764    if (data.links[data.selectedIdx]) {
18765      data.links[data.selectedIdx].focus();
18766    }
18767  }
18768
18769  function makeToggleKeydownHandler(data) {
18770    // We want to close immediately
18771    // if interacting via keyboard
18772    var toggler = makeToggler(data, FORCE_CLOSE);
18773    return function (evt) {
18774      // Do not respond to keyboard events in designer or preview
18775      if (inDesigner || inPreview) return; // If the menu is not open, we don't want
18776      // the up or Down arrows to do anything
18777
18778      if (!data.open) {
18779        switch (evt.keyCode) {
18780          case KEY_CODES.ARROW_UP:
18781          case KEY_CODES.ARROW_DOWN:
18782            {
18783              return evt.stopPropagation();
18784            }
18785        }
18786      }
18787
18788      switch (evt.keyCode) {
18789        case KEY_CODES.SPACE:
18790        case KEY_CODES.ENTER:
18791          {
18792            toggler();
18793            evt.stopPropagation();
18794            return evt.preventDefault();
18795          }
18796      }
18797    };
18798  }
18799
18800  function makeDropdownFousoutHandler(data) {
18801    return debounce(function (evt) {
18802      var relatedTarget = evt.relatedTarget,
18803          target = evt.target;
18804      var menuEl = data.el[0];
18805      /**
18806       * Close menu
18807       * With focusout events, the `relatedTarget` is the element that will next receive focus.
18808       * @see: https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent/relatedTarget
18809       */
18810
18811      var menuContainsFocus = menuEl.contains(relatedTarget) || menuEl.contains(target);
18812
18813      if (!menuContainsFocus) {
18814        close(data);
18815      }
18816
18817      return evt.stopPropagation();
18818    });
18819  } // Export module
18820
18821
18822  return api;
18823});
18824
18825/***/ }),
18826/* 319 */
18827/***/ (function(module, exports, __webpack_require__) {
18828
18829"use strict";
18830 // @wf-will-never-add-flow-to-this-file
18831
18832/* globals
18833  window,
18834  document,
18835  FormData,
18836  WEBFLOW_FORM_API_HOST,
18837  WEBFLOW_FORM_OLDIE_HOST
18838*/
18839
18840/* eslint-disable no-var */
18841
18842/**
18843 * Webflow: Forms
18844 */
18845
18846var _interopRequireDefault = __webpack_require__(0);
18847
18848var _slicedToArray2 = _interopRequireDefault(__webpack_require__(320));
18849
18850var Webflow = __webpack_require__(5);
18851
18852Webflow.define('forms', module.exports = function ($, _) {
18853  var api = {};
18854  var $doc = $(document);
18855  var $forms;
18856  var loc = window.location;
18857  var retro = window.XDomainRequest && !window.atob;
18858  var namespace = '.w-form';
18859  var siteId;
18860  var emailField = /e(-)?mail/i;
18861  var emailValue = /^\S+@\S+$/;
18862  var alert = window.alert;
18863  var inApp = Webflow.env();
18864  var listening;
18865  var formUrl;
18866  var signFileUrl; // MailChimp domains: list-manage.com + mirrors
18867
18868  var chimpRegex = /list-manage[1-9]?.com/i;
18869
18870  var disconnected = _.debounce(function () {
18871    alert('Oops! This page has improperly configured forms. Please contact your website administrator to fix this issue.');
18872  }, 100);
18873
18874  api.ready = api.design = api.preview = function () {
18875    // Init forms
18876    init(); // Wire document events on published site only once
18877
18878    if (!inApp && !listening) {
18879      addListeners();
18880    }
18881  };
18882
18883  function init() {
18884    siteId = $('html').attr('data-wf-site');
18885    formUrl = "https://webflow.com" + '/api/v1/form/' + siteId; // Work around same-protocol IE XDR limitation - without this IE9 and below forms won't submit
18886
18887    if (retro && formUrl.indexOf("https://webflow.com") >= 0) {
18888      formUrl = formUrl.replace("https://webflow.com", "http://formdata.webflow.com");
18889    }
18890
18891    signFileUrl = "".concat(formUrl, "/signFile");
18892    $forms = $(namespace + ' form');
18893
18894    if (!$forms.length) {
18895      return;
18896    }
18897
18898    $forms.each(build);
18899  }
18900
18901  function build(i, el) {
18902    // Store form state using namespace
18903    var $el = $(el);
18904    var data = $.data(el, namespace);
18905
18906    if (!data) {
18907      data = $.data(el, namespace, {
18908        form: $el
18909      });
18910    } // data.form
18911
18912
18913    reset(data);
18914    var wrap = $el.closest('div.w-form');
18915    data.done = wrap.find('> .w-form-done');
18916    data.fail = wrap.find('> .w-form-fail');
18917    data.fileUploads = wrap.find('.w-file-upload');
18918    data.fileUploads.each(function (j) {
18919      initFileUpload(j, data);
18920    });
18921    var action = data.action = $el.attr('action');
18922    data.handler = null;
18923    data.redirect = $el.attr('data-redirect'); // MailChimp form
18924
18925    if (chimpRegex.test(action)) {
18926      data.handler = submitMailChimp;
18927      return;
18928    } // Custom form action
18929
18930
18931    if (action) {
18932      return;
18933    } // Webflow forms for hosting accounts
18934
18935
18936    if (siteId) {
18937      data.handler = typeof hostedSubmitWebflow === 'function' ? hostedSubmitWebflow : exportedSubmitWebflow;
18938      return;
18939    } // Alert for disconnected Webflow forms
18940
18941
18942    disconnected();
18943  }
18944
18945  function addListeners() {
18946    listening = true; // Handle form submission for Webflow forms
18947
18948    $doc.on('submit', namespace + ' form', function (evt) {
18949      var data = $.data(this, namespace);
18950
18951      if (data.handler) {
18952        data.evt = evt;
18953        data.handler(data);
18954      }
18955    }); // handle checked ui for custom checkbox and radio button
18956
18957    var CHECKBOX_CLASS_NAME = '.w-checkbox-input';
18958    var RADIO_INPUT_CLASS_NAME = '.w-radio-input';
18959    var CHECKED_CLASS = 'w--redirected-checked';
18960    var FOCUSED_CLASS = 'w--redirected-focus';
18961    var CUSTOM_CONTROLS = [['checkbox', CHECKBOX_CLASS_NAME], ['radio', RADIO_INPUT_CLASS_NAME]];
18962    $doc.on('change', namespace + " form input[type=\"checkbox\"]:not(" + CHECKBOX_CLASS_NAME + ')', function (evt) {
18963      $(evt.target).siblings(CHECKBOX_CLASS_NAME).toggleClass(CHECKED_CLASS);
18964    });
18965    $doc.on('change', namespace + " form input[type=\"radio\"]", function (evt) {
18966      $("input[name=\"".concat(evt.target.name, "\"]:not(").concat(CHECKBOX_CLASS_NAME, ")")).map(function (i, el) {
18967        return $(el).siblings(RADIO_INPUT_CLASS_NAME).removeClass(CHECKED_CLASS);
18968      });
18969      var $target = $(evt.target);
18970
18971      if (!$target.hasClass('w-radio-input')) {
18972        $target.siblings(RADIO_INPUT_CLASS_NAME).addClass(CHECKED_CLASS);
18973      }
18974    });
18975    CUSTOM_CONTROLS.forEach(function (_ref) {
18976      var _ref2 = (0, _slicedToArray2["default"])(_ref, 2),
18977          controlType = _ref2[0],
18978          customControlClassName = _ref2[1];
18979
18980      $doc.on('focus', namespace + " form input[type=\"".concat(controlType, "\"]:not(") + customControlClassName + ')', function (evt) {
18981        $(evt.target).siblings(customControlClassName).addClass(FOCUSED_CLASS);
18982      });
18983      $doc.on('blur', namespace + " form input[type=\"".concat(controlType, "\"]:not(") + customControlClassName + ')', function (evt) {
18984        $(evt.target).siblings(customControlClassName).removeClass(FOCUSED_CLASS);
18985      });
18986    });
18987  } // Reset data common to all submit handlers
18988
18989
18990  function reset(data) {
18991    var btn = data.btn = data.form.find(':input[type="submit"]');
18992    data.wait = data.btn.attr('data-wait') || null;
18993    data.success = false;
18994    btn.prop('disabled', false);
18995    data.label && btn.val(data.label);
18996  } // Disable submit button
18997
18998
18999  function disableBtn(data) {
19000    var btn = data.btn;
19001    var wait = data.wait;
19002    btn.prop('disabled', true); // Show wait text and store previous label
19003
19004    if (wait) {
19005      data.label = btn.val();
19006      btn.val(wait);
19007    }
19008  } // Find form fields, validate, and set value pairs
19009
19010
19011  function findFields(form, result) {
19012    var status = null;
19013    result = result || {}; // The ":input" selector is a jQuery shortcut to select all inputs, selects, textareas
19014
19015    form.find(':input:not([type="submit"]):not([type="file"])').each(function (i, el) {
19016      var field = $(el);
19017      var type = field.attr('type');
19018      var name = field.attr('data-name') || field.attr('name') || 'Field ' + (i + 1);
19019      var value = field.val();
19020
19021      if (type === 'checkbox') {
19022        value = field.is(':checked');
19023      } else if (type === 'radio') {
19024        // Radio group value already processed
19025        if (result[name] === null || typeof result[name] === 'string') {
19026          return;
19027        }
19028
19029        value = form.find('input[name="' + field.attr('name') + '"]:checked').val() || null;
19030      }
19031
19032      if (typeof value === 'string') {
19033        value = $.trim(value);
19034      }
19035
19036      result[name] = value;
19037      status = status || getStatus(field, type, name, value);
19038    });
19039    return status;
19040  }
19041
19042  function findFileUploads(form) {
19043    var result = {};
19044    form.find(':input[type="file"]').each(function (i, el) {
19045      var field = $(el);
19046      var name = field.attr('data-name') || field.attr('name') || 'File ' + (i + 1);
19047      var value = field.attr('data-value');
19048
19049      if (typeof value === 'string') {
19050        value = $.trim(value);
19051      }
19052
19053      result[name] = value;
19054    });
19055    return result;
19056  }
19057
19058  function getStatus(field, type, name, value) {
19059    var status = null;
19060
19061    if (type === 'password') {
19062      status = 'Passwords cannot be submitted.';
19063    } else if (field.attr('required')) {
19064      if (!value) {
19065        status = 'Please fill out the required field: ' + name;
19066      } else if (emailField.test(field.attr('type'))) {
19067        if (!emailValue.test(value)) {
19068          status = 'Please enter a valid email address for: ' + name;
19069        }
19070      }
19071    } else if (name === 'g-recaptcha-response' && !value) {
19072      status = 'Please confirm you’re not a robot.';
19073    }
19074
19075    return status;
19076  }
19077
19078  function exportedSubmitWebflow(data) {
19079    preventDefault(data);
19080    afterSubmit(data);
19081  } // Submit form to MailChimp
19082
19083
19084  function submitMailChimp(data) {
19085    reset(data);
19086    var form = data.form;
19087    var payload = {}; // Skip Ajax submission if http/s mismatch, fallback to POST instead
19088
19089    if (/^https/.test(loc.href) && !/^https/.test(data.action)) {
19090      form.attr('method', 'post');
19091      return;
19092    }
19093
19094    preventDefault(data); // Find & populate all fields
19095
19096    var status = findFields(form, payload);
19097
19098    if (status) {
19099      return alert(status);
19100    } // Disable submit button
19101
19102
19103    disableBtn(data); // Use special format for MailChimp params
19104
19105    var fullName;
19106
19107    _.each(payload, function (value, key) {
19108      if (emailField.test(key)) {
19109        payload.EMAIL = value;
19110      }
19111
19112      if (/^((full[ _-]?)?name)$/i.test(key)) {
19113        fullName = value;
19114      }
19115
19116      if (/^(first[ _-]?name)$/i.test(key)) {
19117        payload.FNAME = value;
19118      }
19119
19120      if (/^(last[ _-]?name)$/i.test(key)) {
19121        payload.LNAME = value;
19122      }
19123    });
19124
19125    if (fullName && !payload.FNAME) {
19126      fullName = fullName.split(' ');
19127      payload.FNAME = fullName[0];
19128      payload.LNAME = payload.LNAME || fullName[1];
19129    } // Use the (undocumented) MailChimp jsonp api
19130
19131
19132    var url = data.action.replace('/post?', '/post-json?') + '&c=?'; // Add special param to prevent bot signups
19133
19134    var userId = url.indexOf('u=') + 2;
19135    userId = url.substring(userId, url.indexOf('&', userId));
19136    var listId = url.indexOf('id=') + 3;
19137    listId = url.substring(listId, url.indexOf('&', listId));
19138    payload['b_' + userId + '_' + listId] = '';
19139    $.ajax({
19140      url: url,
19141      data: payload,
19142      dataType: 'jsonp'
19143    }).done(function (resp) {
19144      data.success = resp.result === 'success' || /already/.test(resp.msg);
19145
19146      if (!data.success) {
19147        console.info('MailChimp error: ' + resp.msg);
19148      }
19149
19150      afterSubmit(data);
19151    }).fail(function () {
19152      afterSubmit(data);
19153    });
19154  } // Common callback which runs after all Ajax submissions
19155
19156
19157  function afterSubmit(data) {
19158    var form = data.form;
19159    var redirect = data.redirect;
19160    var success = data.success; // Redirect to a success url if defined
19161
19162    if (success && redirect) {
19163      Webflow.location(redirect);
19164      return;
19165    } // Show or hide status divs
19166
19167
19168    data.done.toggle(success);
19169    data.fail.toggle(!success); // Hide form on success
19170
19171    form.toggle(!success); // Reset data and enable submit button
19172
19173    reset(data);
19174  }
19175
19176  function preventDefault(data) {
19177    data.evt && data.evt.preventDefault();
19178    data.evt = null;
19179  }
19180
19181  function initFileUpload(i, form) {
19182    if (!form.fileUploads || !form.fileUploads[i]) {
19183      return;
19184    }
19185
19186    var file;
19187    var $el = $(form.fileUploads[i]);
19188    var $defaultWrap = $el.find('> .w-file-upload-default');
19189    var $uploadingWrap = $el.find('> .w-file-upload-uploading');
19190    var $successWrap = $el.find('> .w-file-upload-success');
19191    var $errorWrap = $el.find('> .w-file-upload-error');
19192    var $input = $defaultWrap.find('.w-file-upload-input');
19193    var $label = $defaultWrap.find('.w-file-upload-label');
19194    var $labelChildren = $label.children();
19195    var $errorMsgEl = $errorWrap.find('.w-file-upload-error-msg');
19196    var $fileEl = $successWrap.find('.w-file-upload-file');
19197    var $removeEl = $successWrap.find('.w-file-remove-link');
19198    var $fileNameEl = $fileEl.find('.w-file-upload-file-name');
19199    var sizeErrMsg = $errorMsgEl.attr('data-w-size-error');
19200    var typeErrMsg = $errorMsgEl.attr('data-w-type-error');
19201    var genericErrMsg = $errorMsgEl.attr('data-w-generic-error');
19202
19203    if (!inApp) {
19204      $removeEl.on('click', function () {
19205        $input.removeAttr('data-value');
19206        $input.val('');
19207        $fileNameEl.html('');
19208        $defaultWrap.toggle(true);
19209        $successWrap.toggle(false);
19210      });
19211      $input.on('change', function (e) {
19212        file = e.target && e.target.files && e.target.files[0];
19213
19214        if (!file) {
19215          return;
19216        } // Show uploading
19217
19218
19219        $defaultWrap.toggle(false);
19220        $errorWrap.toggle(false);
19221        $uploadingWrap.toggle(true); // Set filename
19222
19223        $fileNameEl.text(file.name); // Disable submit button
19224
19225        if (!isUploading()) {
19226          disableBtn(form);
19227        }
19228
19229        form.fileUploads[i].uploading = true;
19230        signFile(file, afterSign);
19231      }); // Setting input width 1px and height equal label
19232      // This is so the browser required error will show up
19233
19234      var height = $label.outerHeight();
19235      $input.height(height);
19236      $input.width(1);
19237    } else {
19238      $input.on('click', function (e) {
19239        e.preventDefault();
19240      });
19241      $label.on('click', function (e) {
19242        e.preventDefault();
19243      });
19244      $labelChildren.on('click', function (e) {
19245        e.preventDefault();
19246      });
19247    }
19248
19249    function parseError(err) {
19250      var errorMsg = err.responseJSON && err.responseJSON.msg;
19251      var userError = genericErrMsg;
19252
19253      if (typeof errorMsg === 'string' && errorMsg.indexOf('InvalidFileTypeError') === 0) {
19254        userError = typeErrMsg;
19255      } else if (typeof errorMsg === 'string' && errorMsg.indexOf('MaxFileSizeError') === 0) {
19256        userError = sizeErrMsg;
19257      }
19258
19259      $errorMsgEl.text(userError);
19260      $input.removeAttr('data-value');
19261      $input.val('');
19262      $uploadingWrap.toggle(false);
19263      $defaultWrap.toggle(true);
19264      $errorWrap.toggle(true);
19265      form.fileUploads[i].uploading = false;
19266
19267      if (!isUploading()) {
19268        reset(form);
19269      }
19270    }
19271
19272    function afterSign(err, data) {
19273      if (err) {
19274        return parseError(err);
19275      }
19276
19277      var fileName = data.fileName;
19278      var postData = data.postData;
19279      var fileId = data.fileId;
19280      var s3Url = data.s3Url;
19281      $input.attr('data-value', fileId);
19282      uploadS3(s3Url, postData, file, fileName, afterUpload);
19283    }
19284
19285    function afterUpload(err) {
19286      if (err) {
19287        return parseError(err);
19288      } // Show success
19289
19290
19291      $uploadingWrap.toggle(false);
19292      $successWrap.css('display', 'inline-block');
19293      form.fileUploads[i].uploading = false;
19294
19295      if (!isUploading()) {
19296        reset(form);
19297      }
19298    }
19299
19300    function isUploading() {
19301      var uploads = form.fileUploads && form.fileUploads.toArray() || [];
19302      return uploads.some(function (value) {
19303        return value.uploading;
19304      });
19305    }
19306  }
19307
19308  function signFile(file, cb) {
19309    var payload = {
19310      name: file.name,
19311      size: file.size
19312    };
19313    $.ajax({
19314      type: 'POST',
19315      url: signFileUrl,
19316      data: payload,
19317      dataType: 'json',
19318      crossDomain: true
19319    }).done(function (data) {
19320      cb(null, data);
19321    }).fail(function (err) {
19322      cb(err);
19323    });
19324  }
19325
19326  function uploadS3(url, data, file, fileName, cb) {
19327    var formData = new FormData();
19328
19329    for (var k in data) {
19330      formData.append(k, data[k]);
19331    }
19332
19333    formData.append('file', file, fileName);
19334    $.ajax({
19335      type: 'POST',
19336      url: url,
19337      data: formData,
19338      processData: false,
19339      contentType: false
19340    }).done(function () {
19341      cb(null);
19342    }).fail(function (err) {
19343      cb(err);
19344    });
19345  } // Export module
19346
19347
19348  return api;
19349});
19350
19351/***/ }),
19352/* 320 */
19353/***/ (function(module, exports, __webpack_require__) {
19354
19355var arrayWithHoles = __webpack_require__(321);
19356
19357var iterableToArrayLimit = __webpack_require__(322);
19358
19359var nonIterableRest = __webpack_require__(323);
19360
19361function _slicedToArray(arr, i) {
19362  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();
19363}
19364
19365module.exports = _slicedToArray;
19366
19367/***/ }),
19368/* 321 */
19369/***/ (function(module, exports) {
19370
19371function _arrayWithHoles(arr) {
19372  if (Array.isArray(arr)) return arr;
19373}
19374
19375module.exports = _arrayWithHoles;
19376
19377/***/ }),
19378/* 322 */
19379/***/ (function(module, exports) {
19380
19381function _iterableToArrayLimit(arr, i) {
19382  var _arr = [];
19383  var _n = true;
19384  var _d = false;
19385  var _e = undefined;
19386
19387  try {
19388    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
19389      _arr.push(_s.value);
19390
19391      if (i && _arr.length === i) break;
19392    }
19393  } catch (err) {
19394    _d = true;
19395    _e = err;
19396  } finally {
19397    try {
19398      if (!_n && _i["return"] != null) _i["return"]();
19399    } finally {
19400      if (_d) throw _e;
19401    }
19402  }
19403
19404  return _arr;
19405}
19406
19407module.exports = _iterableToArrayLimit;
19408
19409/***/ }),
19410/* 323 */
19411/***/ (function(module, exports) {
19412
19413function _nonIterableRest() {
19414  throw new TypeError("Invalid attempt to destructure non-iterable instance");
19415}
19416
19417module.exports = _nonIterableRest;
19418
19419/***/ }),
19420/* 324 */
19421/***/ (function(module, exports, __webpack_require__) {
19422
19423"use strict";
19424 // @wf-will-never-add-flow-to-this-file
19425
19426/* global document window */
19427
19428/* eslint-disable no-var */
19429
19430/**
19431 * Webflow: Tabs component
19432 */
19433
19434var Webflow = __webpack_require__(5);
19435
19436var IXEvents = __webpack_require__(38);
19437
19438Webflow.define('tabs', module.exports = function ($) {
19439  var api = {};
19440  var tram = $.tram;
19441  var $doc = $(document);
19442  var $tabs;
19443  var design;
19444  var env = Webflow.env;
19445  var safari = env.safari;
19446  var inApp = env();
19447  var tabAttr = 'data-w-tab';
19448  var paneAttr = 'data-w-pane';
19449  var namespace = '.w-tabs';
19450  var linkCurrent = 'w--current';
19451  var tabActive = 'w--tab-active';
19452  var ix = IXEvents.triggers;
19453  var inRedraw = false; // -----------------------------------
19454  // Module methods
19455
19456  api.ready = api.design = api.preview = init;
19457
19458  api.redraw = function () {
19459    inRedraw = true;
19460    init();
19461    inRedraw = false;
19462  };
19463
19464  api.destroy = function () {
19465    $tabs = $doc.find(namespace);
19466
19467    if (!$tabs.length) {
19468      return;
19469    }
19470
19471    $tabs.each(resetIX);
19472    removeListeners();
19473  }; // -----------------------------------
19474  // Private methods
19475
19476
19477  function init() {
19478    design = inApp && Webflow.env('design'); // Find all instances on the page
19479
19480    $tabs = $doc.find(namespace);
19481
19482    if (!$tabs.length) {
19483      return;
19484    }
19485
19486    $tabs.each(build);
19487
19488    if (Webflow.env('preview') && !inRedraw) {
19489      $tabs.each(resetIX);
19490    }
19491
19492    removeListeners();
19493    addListeners();
19494  }
19495
19496  function removeListeners() {
19497    Webflow.redraw.off(api.redraw);
19498  }
19499
19500  function addListeners() {
19501    Webflow.redraw.on(api.redraw);
19502  }
19503
19504  function resetIX(i, el) {
19505    var data = $.data(el, namespace);
19506
19507    if (!data) {
19508      return;
19509    }
19510
19511    data.links && data.links.each(ix.reset);
19512    data.panes && data.panes.each(ix.reset);
19513  }
19514
19515  function build(i, el) {
19516    var widgetHash = namespace.substr(1) + '-' + i;
19517    var $el = $(el); // Store state in data
19518
19519    var data = $.data(el, namespace);
19520
19521    if (!data) {
19522      data = $.data(el, namespace, {
19523        el: $el,
19524        config: {}
19525      });
19526    }
19527
19528    data.current = null;
19529    data.tabIdentifier = widgetHash + '-' + tabAttr;
19530    data.paneIdentifier = widgetHash + '-' + paneAttr;
19531    data.menu = $el.children('.w-tab-menu');
19532    data.links = data.menu.children('.w-tab-link');
19533    data.content = $el.children('.w-tab-content');
19534    data.panes = data.content.children('.w-tab-pane'); // Remove old events
19535
19536    data.el.off(namespace);
19537    data.links.off(namespace); // This role is necessary in the ARIA spec
19538
19539    data.menu.attr('role', 'tablist'); // Set all tabs unfocusable
19540
19541    data.links.attr('tabindex', '-1'); // Set config from data attributes
19542
19543    configure(data); // Wire up events when not in design mode
19544
19545    if (!design) {
19546      data.links.on('click' + namespace, linkSelect(data));
19547      data.links.on('keydown' + namespace, handleLinkKeydown(data)); // Trigger first intro event from current tab
19548
19549      var $link = data.links.filter('.' + linkCurrent);
19550      var tab = $link.attr(tabAttr);
19551      tab && changeTab(data, {
19552        tab: tab,
19553        immediate: true
19554      });
19555    }
19556  }
19557
19558  function configure(data) {
19559    var config = {}; // Set config options from data attributes
19560
19561    config.easing = data.el.attr('data-easing') || 'ease';
19562    var intro = parseInt(data.el.attr('data-duration-in'), 10); // eslint-disable-next-line no-self-compare
19563
19564    intro = config.intro = intro === intro ? intro : 0;
19565    var outro = parseInt(data.el.attr('data-duration-out'), 10); // eslint-disable-next-line no-self-compare
19566
19567    outro = config.outro = outro === outro ? outro : 0;
19568    config.immediate = !intro && !outro; // Store config in data
19569
19570    data.config = config;
19571  }
19572
19573  function getActiveTabIdx(data) {
19574    var tab = data.current;
19575    return Array.prototype.findIndex.call(data.links, function (t) {
19576      return t.getAttribute(tabAttr) === tab;
19577    }, null);
19578  }
19579
19580  function linkSelect(data) {
19581    return function (evt) {
19582      evt.preventDefault();
19583      var tab = evt.currentTarget.getAttribute(tabAttr);
19584      tab && changeTab(data, {
19585        tab: tab
19586      });
19587    };
19588  }
19589
19590  function handleLinkKeydown(data) {
19591    return function (evt) {
19592      var currentIdx = getActiveTabIdx(data);
19593      var keyName = evt.key;
19594      var keyMap = {
19595        ArrowLeft: currentIdx - 1,
19596        ArrowUp: currentIdx - 1,
19597        ArrowRight: currentIdx + 1,
19598        ArrowDown: currentIdx + 1,
19599        End: data.links.length - 1,
19600        Home: 0
19601      }; // Bail out of function if this key is not
19602      // involved in tab management
19603
19604      if (!(keyName in keyMap)) return;
19605      evt.preventDefault();
19606      var nextIdx = keyMap[keyName]; // go back to end of tabs if we wrap past the start
19607
19608      if (nextIdx === -1) {
19609        nextIdx = data.links.length - 1;
19610      } // go back to start if we wrap past the last tab
19611
19612
19613      if (nextIdx === data.links.length) {
19614        nextIdx = 0;
19615      }
19616
19617      var tabEl = data.links[nextIdx];
19618      var tab = tabEl.getAttribute(tabAttr);
19619      tab && changeTab(data, {
19620        tab: tab
19621      });
19622    };
19623  }
19624
19625  function changeTab(data, options) {
19626    options = options || {};
19627    var config = data.config;
19628    var easing = config.easing;
19629    var tab = options.tab; // Don't select the same tab twice
19630
19631    if (tab === data.current) {
19632      return;
19633    }
19634
19635    data.current = tab;
19636    /**
19637     * The currently active tab.
19638     * Will be referenced to manage focus after
19639     * TabLink attributes are changed
19640     * @type {HTMLAnchorElement}
19641     */
19642
19643    var currentTab; // Select the current link
19644
19645    data.links.each(function (i, el) {
19646      var $el = $(el); // Add important attributes at build time.
19647
19648      if (options.immediate || config.immediate) {
19649        // Store corresponding pane for reference.
19650        var pane = data.panes[i]; // IDs are necessary for ARIA relationships,
19651        // so if the user did not create one, we create one
19652        // using our generated identifier
19653
19654        if (!el.id) {
19655          el.id = data.tabIdentifier + '-' + i;
19656        }
19657
19658        if (!pane.id) {
19659          pane.id = data.paneIdentifier + '-' + i;
19660        }
19661
19662        el.href = '#' + pane.id; // Tab elements must take this role
19663
19664        el.setAttribute('role', 'tab'); // Tab elements must reference the unique ID of the panel
19665        // that they control
19666
19667        el.setAttribute('aria-controls', pane.id); // Tab elements must report that they are not selected
19668        // by default
19669
19670        el.setAttribute('aria-selected', 'false'); // Panes must take on the `Tabpanel` role
19671
19672        pane.setAttribute('role', 'tabpanel'); // Elements with tabpanel role must be labelled by
19673        // their controlling tab
19674
19675        pane.setAttribute('aria-labelledby', el.id);
19676      }
19677
19678      if (el.getAttribute(tabAttr) === tab) {
19679        // This is the current tab. Store it.
19680        currentTab = el;
19681        $el.addClass(linkCurrent).removeAttr('tabindex').attr({
19682          'aria-selected': 'true'
19683        }).each(ix.intro);
19684      } else if ($el.hasClass(linkCurrent)) {
19685        $el.removeClass(linkCurrent).attr({
19686          tabindex: '-1',
19687          'aria-selected': 'false'
19688        }).each(ix.outro);
19689      }
19690    }); // Find the new tab panes and keep track of previous
19691
19692    var targets = [];
19693    var previous = [];
19694    data.panes.each(function (i, el) {
19695      var $el = $(el);
19696
19697      if (el.getAttribute(tabAttr) === tab) {
19698        targets.push(el);
19699      } else if ($el.hasClass(tabActive)) {
19700        previous.push(el);
19701      }
19702    });
19703    var $targets = $(targets);
19704    var $previous = $(previous); // Switch tabs immediately and bypass transitions
19705
19706    if (options.immediate || config.immediate) {
19707      $targets.addClass(tabActive).each(ix.intro);
19708      $previous.removeClass(tabActive); // Redraw to benefit components in the hidden tab pane
19709      // But only if not currently in the middle of a redraw
19710
19711      if (!inRedraw) {
19712        Webflow.redraw.up();
19713      }
19714
19715      return;
19716    } // Focus if this is not the on-page-load call to `changeTab`
19717    else {
19718        // Backwards compatible hack to prevent focus from scrolling
19719        var x = window.scrollX;
19720        var y = window.scrollY;
19721        currentTab.focus();
19722        window.scrollTo(x, y);
19723      } // Fade out the currently active tab before intro
19724
19725
19726    if ($previous.length && config.outro) {
19727      $previous.each(ix.outro);
19728      tram($previous).add('opacity ' + config.outro + 'ms ' + easing, {
19729        fallback: safari
19730      }).start({
19731        opacity: 0
19732      }).then(function () {
19733        return fadeIn(config, $previous, $targets);
19734      });
19735    } else {
19736      // Skip the outro and play intro
19737      fadeIn(config, $previous, $targets);
19738    }
19739  } // Fade in the new target
19740
19741
19742  function fadeIn(config, $previous, $targets) {
19743    // Clear previous active class + styles touched by tram
19744    // We cannot remove the whole inline style because it could be dynamically bound
19745    $previous.removeClass(tabActive).css({
19746      opacity: '',
19747      transition: '',
19748      transform: '',
19749      width: '',
19750      height: ''
19751    }); // Add active class to new target
19752
19753    $targets.addClass(tabActive).each(ix.intro);
19754    Webflow.redraw.up(); // Set opacity immediately if intro is zero
19755
19756    if (!config.intro) {
19757      return tram($targets).set({
19758        opacity: 1
19759      });
19760    } // Otherwise fade in opacity
19761
19762
19763    tram($targets).set({
19764      opacity: 0
19765    }).redraw().add('opacity ' + config.intro + 'ms ' + config.easing, {
19766      fallback: safari
19767    }).start({
19768      opacity: 1
19769    });
19770  } // Export module
19771
19772
19773  return api;
19774});
19775
19776/***/ })
19777/******/ ]);/**
19778 * ----------------------------------------------------------------------
19779 * Webflow: Interactions: Init
19780 */
19781Webflow.require('ix').init([
19782  {"slug":"new-interaction","name":"New Interaction","value":{"style":{},"triggers":[]}},
19783  {"slug":"new-interaction-2","name":"New Interaction 2","value":{"style":{"x":"0px","y":"0px","z":"0px"},"triggers":[]}}
19784]);
19785/**
19786 * ----------------------------------------------------------------------
19787 * Webflow: Interactions 2.0: Init
19788 */
19789Webflow.require('ix2').init(
19790{"events":{"e-19":{"id":"e-19","name":"","eventTypeId":"MOUSE_CLICK","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-6","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-20"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"bde30dfc-a349-bf24-bdaf-6a4ced02f0de"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1546785751025},"e-31":{"id":"e-31","name":"","eventTypeId":"MOUSE_CLICK","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-2","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-32"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"44d2a0f4-1dff-e5f1-f39e-a04fe0fcd3dd"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1546953678750},"e-33":{"id":"e-33","name":"","eventTypeId":"MOUSE_CLICK","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-10","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-34"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"44d2a0f4-1dff-e5f1-f39e-a04fe0fcd3e5"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1546954278207},"e-51":{"id":"e-51","name":"","eventTypeId":"MOUSE_CLICK","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-17","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-52"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f64bf66be3bc976122f9b02|c3987383-3f43-2b43-4b39-6ba0585f9bd7"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1548171773377},"e-53":{"id":"e-53","name":"","eventTypeId":"MOUSE_CLICK","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-17","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-54"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f64bf66be3bc976122f9b02|6b657b53-e30e-36ad-4112-2fa50313e5d8"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1548172098507},"e-67":{"id":"e-67","name":"","eventTypeId":"MOUSE_CLICK","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-25","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-68"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f64bf66be3bc976122f9b02|c51e394f-630e-98ae-078c-178d45f89eec"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1555587691255},"e-69":{"id":"e-69","name":"","eventTypeId":"MOUSE_CLICK","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-26","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-70"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f64bf66be3bc976122f9b02|21a2fd8c-2113-f193-cd07-953c91073a5e"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1555595959129},"e-81":{"id":"e-81","name":"","eventTypeId":"MOUSE_CLICK","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-27","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-82"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f64bf66be3bc976122f9b02|dfcb1b98-886f-4450-079d-2aa23d0070eb"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1559446698754},"e-83":{"id":"e-83","name":"","eventTypeId":"MOUSE_CLICK","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-10","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-84"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"44d2a0f4-1dff-e5f1-f39e-a04fe0fcd3e6"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1563548644622},"e-87":{"id":"e-87","name":"","eventTypeId":"MOUSE_CLICK","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-23","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-88"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f64bf66be3bc9f4772f9b0a|bb3b63e6-b36d-9b29-f234-8def5b24b78d"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1565620814675},"e-97":{"id":"e-97","name":"","eventTypeId":"PAGE_START","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-6","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-98"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f64bf66be3bc939842f9b05"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1565625467869},"e-131":{"id":"e-131","name":"","eventTypeId":"PAGE_START","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-6","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-132"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"PAGE","styleBlockIds":[],"id":"5f64bf66be3bc968202f9b06"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1578922389151},"e-155":{"id":"e-155","name":"","eventTypeId":"MOUSE_CLICK","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-44","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-156"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f64bf66be3bc9e1072f9afe|c3987383-3f43-2b43-4b39-6ba0585f9bd7"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1584106687903},"e-157":{"id":"e-157","name":"","eventTypeId":"MOUSE_CLICK","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-44","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-158"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f64bf66be3bc9e1072f9afe|6b657b53-e30e-36ad-4112-2fa50313e5d8"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1584106687903},"e-169":{"id":"e-169","name":"","eventTypeId":"MOUSE_CLICK","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-48","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-170"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"
197901309fcd0-e371-ad54-af8e-b623990be159"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1584106687903},"e-171":{"id":"e-171","name":"","eventTypeId":"MOUSE_CLICK","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-49","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-172"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"1309fcd0-e371-ad54-af8e-b623990be157"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1584106687903},"e-173":{"id":"e-173","name":"","eventTypeId":"MOUSE_CLICK","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-50","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-174"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"1309fcd0-e371-ad54-af8e-b623990be15b"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1584106687903},"e-174":{"id":"e-174","name":"","eventTypeId":"MOUSE_SECOND_CLICK","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-51","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-173"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"1309fcd0-e371-ad54-af8e-b623990be15b"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1584106687903},"e-183":{"id":"e-183","name":"","eventTypeId":"MOUSE_CLICK","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-55","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-184"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f64bf66be3bc9fb372f9b07|c3987383-3f43-2b43-4b39-6ba0585f9bd7"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1584623981250},"e-185":{"id":"e-185","name":"","eventTypeId":"MOUSE_CLICK","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-55","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-186"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f64bf66be3bc9fb372f9b07|6b657b53-e30e-36ad-4112-2fa50313e5d8"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1584623981250},"e-195":{"id":"e-195","name":"","eventTypeId":"MOUSE_CLICK","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-61","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-196"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"c59c2c63-8431-81f4-4d9e-d92a60ab3e5c"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1587869259339},"e-205":{"id":"e-205","name":"","eventTypeId":"MOUSE_CLICK","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-6","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-206"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f64bf66be3bc976122f9b02|fce87dfc-d8ba-c1b7-681b-a4f7f0876c40"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1587875923426},"e-207":{"id":"e-207","name":"","eventTypeId":"MOUSE_CLICK","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-6","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-208"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f64bf66be3bc968202f9b06|579c2665-a1d5-8c6c-1e74-8e181f35ef32"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1587876338604},"e-211":{"id":"e-211","name":"","eventTypeId":"MOUSE_CLICK","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-62","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-212"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f64bf66be3bc976122f9b02|4e355f9b-0f4a-1d20-6b50-c2b760bc5471"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1589086148759},"e-213":{"id":"e-213","name":"","eventTypeId":"MOUSE_CLICK","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-62","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-214"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f64bf66be3bc968202f9b06|5e324415-b977-7964-f4cf-d32487cba0e1"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1589086735717},"e-217":{"id":"e-217","name":"","eventTypeId":"MOUSE_CLICK","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-6","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-218"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f64bf66be3bc939842f9b05|414083b0-e66a-55d1-c166-6a6038d5561e"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1593746853091},"e-219":{"id":"e-219","name":"","eventTypeId":"MOUSE_CLICK","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-62","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-220"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5f64bf66be3bc939842f9b05|414083b0-e66a-55d1-c166-6a6038d55620"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1593746853091},"e-221":{"id":"e-221","name":"","eventTypeId":"MOUSE_CLICK","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-63","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-222"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"
197901309fcd0-e371-ad54-af8e-b623990be131"},"targets":[],"config":{"loop":false,"playInReverse":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1600436043381}},"actionLists":{"a-6":{"id":"a-6","title":"select steem","actionItemGroups":[{"actionItems":[{"id":"a-6-n-5","actionTypeId":"STYLE_BORDER","config":{"delay":0,"easing":"ease","duration":200,"globalSwatchId":"9bddd589","target":{"selector":".currency.currency-btn.currency-btn-steem","selectorGuids":["9fed0c9f-0546-c14e-e929-883f236e4e3a","30af9d1d-ea06-6272-7b96-fb221910285e","317d7394-e4a1-b966-51c6-55c339476c80"]},"rValue":249,"gValue":170,"bValue":51,"aValue":1}},{"id":"a-6-n-4","actionTypeId":"STYLE_TEXT_COLOR","config":{"delay":0,"easing":"ease","duration":200,"globalSwatchId":"9bddd589","target":{"selector":".currency.currency-btn.currency-btn-steem","selectorGuids":["9fed0c9f-0546-c14e-e929-883f236e4e3a","30af9d1d-ea06-6272-7b96-fb221910285e","317d7394-e4a1-b966-51c6-55c339476c80"]},"rValue":249,"gValue":170,"bValue":51,"aValue":1}}]},{"actionItems":[{"id":"a-6-n-11","actionTypeId":"STYLE_BORDER","config":{"delay":0,"easing":"","duration":0,"target":{"selector":".currency.currency-btn.currency-btn-hive","selectorGuids":["9fed0c9f-0546-c14e-e929-883f236e4e3a","30af9d1d-ea06-6272-7b96-fb221910285e","259acdb2-fbe8-fc63-67e8-2dd9cb14de59"]},"rValue":0,"gValue":0,"bValue":0,"aValue":0}},{"id":"a-6-n-12","actionTypeId":"STYLE_TEXT_COLOR","config":{"delay":0,"easing":"","duration":0,"globalSwatchId":"7c8cf347","target":{"selector":".currency.currency-btn.currency-btn-hive","selectorGuids":["9fed0c9f-0546-c14e-e929-883f236e4e3a","30af9d1d-ea06-6272-7b96-fb221910285e","259acdb2-fbe8-fc63-67e8-2dd9cb14de59"]},"rValue":207,"gValue":207,"bValue":207,"aValue":0.85}}]},{"actionItems":[{"id":"a-6-n-10","actionTypeId":"STYLE_BORDER","config":{"delay":0,"easing":"","duration":0,"target":{"selector":".currency.currency-btn.currency-btn-epc","selectorGuids":["9fed0c9f-0546-c14e-e929-883f236e4e3a","30af9d1d-ea06-6272-7b96-fb221910285e","cc488ebf-c976-4f4c-7f48-f14e5cb9056f"]},"rValue":0,"gValue":0,"bValue":0,"aValue":0}},{"id":"a-6-n-9","actionTypeId":"STYLE_TEXT_COLOR","config":{"delay":0,"easing":"","duration":0,"globalSwatchId":"8ebed8c7","target":{"selector":".currency.currency-btn.currency-btn-epc","selectorGuids":["9fed0c9f-0546-c14e-e929-883f236e4e3a","30af9d1d-ea06-6272-7b96-fb221910285e","cc488ebf-c976-4f4c-7f48-f14e5cb9056f"]},"rValue":207,"gValue":207,"bValue":207,"aValue":0.7}}]}],"createdOn":1546707675882,"useFirstGroupAsInitialState":false},"a-2":{"id":"a-2","title":"close login","actionItemGroups":[{"actionItems":[{"id":"a-2-n-10","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"ease","duration":200,"target":{"id":"44d2a0f4-1dff-e5f1-f39e-a04fe0fcd3dc"},"value":0,"unit":""}},{"id":"a-2-n-11","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"ease","duration":250,"target":{"id":"44d2a0f4-1dff-e5f1-f39e-a04fe0fcd3db"},"value":1,"unit":""}}]},{"actionItems":[{"id":"a-2-n-9","actionTypeId":"GENERAL_DISPLAY","config":{"delay":0,"easing":"","duration":0,"value":"none","target":{"id":"44d2a0f4-1dff-e5f1-f39e-a04fe0fcd3db"}}},{"id":"a-2-n-8","actionTypeId":"GENERAL_DISPLAY","config":{"delay":0,"easing":"","duration":0,"value":"none","target":{"id":"44d2a0f4-1dff-e5f1-f39e-a04fe0fcd3dc"}}}]}],"createdOn":1542620358636,"useFirstGroupAsInitialState":false},"a-10":{"id":"a-10","title":"close login - success","actionItemGroups":[{"actionItems":[{"id":"a-10-n","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"easeOut","duration":100,"target":{"id":"44d2a0f4-1dff-e5f1-f39e-a04fe0fcd3db"},"value":0,"unit":""}},{"id":"a-10-n-2","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"easeOut","duration":100,"target":{"id":"44d2a0f4-1dff-e5f1-f39e-a04fe0fcd3dc"},"yValue":15,"xUnit":"PX","yUnit":"PX","zUnit":"PX"}},{"id":"a-10-n-3","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"easeOut","duration":100,"target":{"id":"44d2a0f4-1dff-e5f1-f39e-a04fe0fcd3dc"},"value":0,"unit":""}}]},{"actionItems":[{"id":"a-10-n-4","actionTypeId":"GENERAL_DISPLAY","config":{"delay":0,"easing":"","duration":0,"value":"none","target":{"id":"44d2a0f4-1dff-e5f1-f39e-a04fe0fcd3dc"}}},{"id":"a-10-n-5","actionTypeId":"GENERAL_DISPLAY","config":{"delay":0,"easing":"","duration":0,"value":"none","target":{"id":"44d2a0f4-1dff-e5f1-f39e-a04fe0fcd3db"}}},{"id":"a-10-n-9","actionTypeId":"GENERAL_DISPLAY","config":{"delay":0,"easing":"","duration":0,"value":"none","target":{"id":"1309fcd0-e371-ad54-af8e-b623990be159"}}},{"id":"a-10-n-10","actionTypeId":"GENERAL_DISPLAY","config":{"delay":0,"easing":"","duration":0,"value":"flex","target":{"id":"1309fcd0-e371-ad54-af8e-b623990be150"}}}]}],"createdOn":1542620358636,"useFirstGroupAsInitialState":false},"a-17":{"id":"a-17","title":"close keychain popup","actionItemGroups":[{"actionItems":[{"id":"a-17-n-2","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"ease","duration":200,"target":{"id":"5f64bf66be3bc976122f9b02|7b04eca5-b9f5-2e1a-2526-954877b9b637"},"value":0,"unit":""}}]},{"actionItems":[{"id":"a-17-n","actionTypeId":"GENERAL_DISPLAY","config":{"delay":0,"easing":"","duration":0,"value":"none","target":{"id":"5f64bf66be3bc976122f9b02|7b04eca5-b9f5-2e1a-2526-954877b9b637"}}}]}],"createdOn":1548171784580,"useFirstGroupAsInitialState":false},"a-25":{"id":"a-25","title":"select below","actionItemGroups":[{"actionItems":[{"id":"a-25-n-2","actionTypeId":"STYLE_TEXT_COLOR","config":{"delay":0,"easing":"ease","duration":200,"globalSwatchId":"873765ac","target":{"id":"5f64bf66be3bc976122f9b02|c51e394f-630e-98ae-078c-178d45f89eec"},"rValue":35,"gValue":47,"bValue":52,"aValue":1}},{"id":"a-25-n-5","actionTypeId":"STYLE_BACKGROUND_COLOR","config":{"delay":0,"easing":"ease","duration":200,"globalSwatchId":"9bddd589","target":{"id":"5f64bf66be3bc976122f9b02|c51e394f-630e-98ae-078c-178d45f89eec"},"rValue":249,"gValue":170,"bValue":51,"aValue":1}}]},{"actionItems":[{"id":"a-25-n-4","actionTypeId":"STYLE_TEXT_COLOR","config":{"delay":0,"easing":"ease","duration":200,"globalSwatchId":"8ebed8c7","target":{"useEventTarget":"SIBLINGS","selector":".below-above-btn","selectorGuids":["4ca69a7f-6256-cd55-359e-53ae3753a9c9"]},"rValue":207,"gValue":207,"bValue":207,"aValue":0.7000000000000003}},{"id":"a-25-n-6","actionTypeId":"STYLE_BACKGROUND_COLOR","config":{"delay":0,"easing":"ease","duration":200,"globalSwatchId":"873765ac","target":{"useEventTarget":"SIBLINGS","selector":".below-above-btn","selectorGuids":["4ca69a7f-6256-cd55-359e-53ae3753a9c9"]},"rValue":35,"gValue":47,"bValue":52,"aValue":1}}]}],"createdOn":1555587711991,"useFirstGroupAsInitialState":false},"a-26":{"id":"a-26","title":"select above","actionItemGroups":[{"actionItems":[{"id":"a-26-n-2","actionTypeId":"STYLE_TEXT_COLOR","config":{"delay":0,"easing":"ease","duration":200,"globalSwatchId":"873765ac","target":{"id":"5f64bf66be3bc976122f9b02|21a2fd8c-2113-f193-cd07-953c91073a5e"},"rValue":35,"gValue":47,"bValue":52,"aValue":1}},{"id":"a-26-n-5","actionTypeId":"STYLE_BACKGROUND_COLOR","config":{"delay":0,"easing":"ease","duration":200,"globalSwatchId":"9bddd589","target":{"id":"5f64bf66be3bc976122f9b02|21a2fd8c-2113-f193-cd07-953c91073a5e"},"rValue":249,"gValue":170,"bValue":51,"aValue":1}}]},{"actionItems":[{"id":"a-26-n-4","actionTypeId":"STYLE_TEXT_COLOR","config":{"delay":0,"easing":"ease","duration":200,"globalSwatchId":"8ebed8c7","target":{"useEventTarget":"SIBLINGS","selector":".below-above-btn","selectorGuids":["4ca69a7f-6256-cd55-359e-53ae3753a9c9"]},"rValue":207,"gValue":207,"bValue":207,"aValue":0.7000000000000003}},{"id":"a-26-n-6","actionTypeId":"STYLE_BACKGROUND_COLOR","config":{"delay":0,"easing":"ease","duration":200,"globalSwatchId":"873765ac","target":{"useEventTarget":"SIBLINGS","selector":".below-above-btn","selectorGuids":["4ca69a7f-6256-cd55-359e-53ae3753a9c9"]},"rValue":35,"gValue":47,"bValue":52,"aValue":1}}]}],"createdOn":1555595963499,"useFirstGroupAsInitialState":false},"a-27":{"id":"a-27","title":"select token","actionItemGroups":[{"actionItems":[{"id":"a-27-n-5","actionTypeId":"STYLE_BORDER","config":{"delay":0,"easing":"","duration":200,"globalSwatchId":"9bddd589","target":{"selector":".currency.currency-btn.currency-btn-epc","selectorGuids":["9fed0c9f-0546-c14e-e929-883f236e4e3a","30af9d1d-ea06-6272-7b96-fb221910285e","cc488ebf-c976-4f4c-7f48-f14e5cb9056f"]},"rValue":249,"gValue":170,"bValue":51,"aValue":1}},{"id":"a-27-n-6","actionTypeId":"STYLE_TEXT_COLOR","config":{"delay":0,"easing":"","duration":200,"globalSwatchId":"9bddd589","target":{"selector":".currency.currency-btn.currency-btn-epc","selectorGuids":["9fed0c9f-0546-c14e-e929-883f236e4e3a","30af9d1d-ea06-6272-7b96-fb221910285e","cc488ebf-c976-4f4c-7f48-f14e5cb9056f"]},"rValue":249,"gValue":170,"bValue":51,"aValue":1}}]},{"actionItems":[{"id":"a-27-n-4","actionTypeId":"STYLE_BORDER","config":{"delay":0,"easing":"","duration":0,"target":{"selector":".currency.currency-btn.currency-btn-steem","selectorGuids":["9fed0c9f-0546-c14e-e929-883f236e4e3a","30af9d1d-ea06-6272-7b96-fb221910285e","317d7394-e4a1-b966-51c6-55c339476c80"]},"rValue":0,"gValue":0,"bValue":0,"aValue":0}},{"id":"a-27-n-3","actionTypeId":"STYLE_TEXT_COLOR","config":{"delay":0,"easing":"","duration":0,"globalSwatchId":"8ebed8c7","target":{"selector":".currency.currency-btn.currency-btn-steem","selectorGuids":["9fed0c9f-0546-c14e-e929-883f236e4e3a","30af9d1d-ea06-6272-7b96-fb221910285e","317d7394-e4a1-b966-51c6-55c339476c80"]},"rValue":207,"gValue":207,"bValue":207,"aValue":0.7000000000000003}}]},{"actionItems":[{"id":"a-27-n-7","actionTypeId":"STYLE_BORDER","config":{"delay":0,"easing":"","duration":0,"target":{"selector":".currency.currency-btn.currency-btn-hive","selectorGuids":["9fed0c9f-0546-c14e-e929-883f236e4e3a","30af9d1d-ea06-6272-7b96-fb221910285e","259acdb2-fbe8-fc63-67e8-2dd9cb14de59"]},"rValue":0,"gValue":0,"bValue":0,"aValue":0}},{"id":"a-27-n-8","actionTypeId":"STYLE_TEXT_COLOR","config":{"delay":0,"easing":"","duration":0,"globalSwatchId":"8ebed8c7","target":{"selector":".currency.currency-btn.currency-btn-hive","selectorGuids":["9fed0c9f-0546-c14e-e929-883f236e4e3a","30af9d1d-ea06-6272-7b96-fb221910285e","259acdb2-fbe8-fc63-67e8-2dd9cb14de59"]},"rValue":207,"gValue":207,"bValue":207,"aValue":0.7}}]}],"createdOn":1558325481759,"useFirstGroupAsInitialState":false},"a-23":{"id":"a-23","title":"switch token page","actionItemGroups":[{"actionItems":[{"id":"a-23-n","actionTypeId":"GENERAL_DISPLAY","config":{"delay":0,"easing":"","duration":0,"value":"none","target":{"id":"5f64bf66be3bc976122f9b02|43f32b0e-9df7-34e1-b639-a12daee63a44"}}},{"id":"a-23-n-8","actionTypeId":"GENERAL_DISPLAY","config":{"delay":0,"easing":"","duration":0,"value":"flex","target":{"id":"5f64bf66be3bc976122f9b02|85c00715-c67f-d835-7022-a88fe6d9b2ff"}}},{"id":"a-23-n-7","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"id":"5f64bf66be3bc976122f9b02|43f32b0e-9df7-34e1-b639-a12daee63a44"},"value":0,"unit":""}},{"id":"a-23-n-3","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"id":"5f64bf66be3bc976122f9b02|85c00715-c67f-d835-7022-a88fe6d9b2ff"},"value":1,"unit":""}}]},{"actionItems":[{"id":"a-23-n-5","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":200,"target":{"id":"5f64bf66be3bc976122f9b02|85c00715-c67f-d835-7022-a88fe6d9b2ff"},"value":0,"unit":""}}]},{"actionItems":[{"id":"a-23-n-2","actionTypeId":"GENERAL_DISPLAY","config":{"delay":0,"easing":"","duration":0,"value":"flex","target":{"id":"5f64bf66be3bc976122f9b02|43f32b0e-9df7-34e1-b639-a12daee63a44"}}},{"id":"a-23-n-6","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":200,"target":{"id":"5f64bf66be3bc976122f9b02|43f32b0e-9df7-34e1-b639-a12daee63a44"},"value":1,"unit":""}},{"id":"a-23-n-9","actionTypeId":"GENERAL_DISPLAY","config":{"delay":0,"easing":"","duration":0,"value":"none","target":{"id":"5f64bf66be3bc976122f9b02|85c00715-c67f-d835-7022-a88fe6d9b2ff"}}}]}],"createdOn":1554873590151,"useFirstGroupAsInitialState":true}
19790,"a-44":{"id":"a-44","title":"close keychain popup 2","actionItemGroups":[{"actionItems":[{"id":"a-44-n","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"ease","duration":200,"target":{"id":"5f64bf66be3bc9e1072f9afe|7b04eca5-b9f5-2e1a-2526-954877b9b637"},"value":0,"unit":""}}]},{"actionItems":[{"id":"a-44-n-2","actionTypeId":"GENERAL_DISPLAY","config":{"delay":0,"easing":"","duration":0,"value":"none","target":{"id":"5f64bf66be3bc9e1072f9afe|7b04eca5-b9f5-2e1a-2526-954877b9b637"}}}]}],"createdOn":1548171784580,"useFirstGroupAsInitialState":false},"a-48":{"id":"a-48","title":"open login 4","actionItemGroups":[{"actionItems":[{"id":"a-48-n","actionTypeId":"GENERAL_DISPLAY","config":{"delay":0,"easing":"","duration":0,"value":"none","target":{"selector":".popup-wrapper.popup-login","selectorGuids":["6c4cad4c-28d5-fc6f-547d-3a05ccfc8181","45d41dc4-238c-a983-77b5-3a59e05682a6"]}}},{"id":"a-48-n-2","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":0,"target":{"selector":".popup-wrapper.popup-login","selectorGuids":["6c4cad4c-28d5-fc6f-547d-3a05ccfc8181","45d41dc4-238c-a983-77b5-3a59e05682a6"]},"value":0,"unit":""}},{"id":"a-48-n-3","actionTypeId":"GENERAL_DISPLAY","config":{"delay":0,"easing":"","duration":0,"value":"none","target":{"selector":".popup.popup-login","selectorGuids":["e2a3fb33-9ead-baf9-ec01-b716d7aecdbb","0dcae6fa-8060-6933-db1e-916de8af37f4"]}}},{"id":"a-48-n-4","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"selector":".popup.popup-login","selectorGuids":["e2a3fb33-9ead-baf9-ec01-b716d7aecdbb","0dcae6fa-8060-6933-db1e-916de8af37f4"]},"value":0,"unit":""}}]},{"actionItems":[{"id":"a-48-n-5","actionTypeId":"GENERAL_DISPLAY","config":{"delay":0,"easing":"","duration":0,"value":"flex","target":{"selector":".popup-wrapper.popup-login","selectorGuids":["6c4cad4c-28d5-fc6f-547d-3a05ccfc8181","45d41dc4-238c-a983-77b5-3a59e05682a6"]}}},{"id":"a-48-n-6","actionTypeId":"GENERAL_DISPLAY","config":{"delay":0,"easing":"","duration":0,"value":"flex","target":{"selector":".popup.popup-login","selectorGuids":["e2a3fb33-9ead-baf9-ec01-b716d7aecdbb","0dcae6fa-8060-6933-db1e-916de8af37f4"]}}}]},{"actionItems":[{"id":"a-48-n-7","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"selector":".popup-wrapper.popup-login","selectorGuids":["6c4cad4c-28d5-fc6f-547d-3a05ccfc8181","45d41dc4-238c-a983-77b5-3a59e05682a6"]},"value":1,"unit":""}},{"id":"a-48-n-8","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":400,"target":{"selector":".popup.popup-login","selectorGuids":["e2a3fb33-9ead-baf9-ec01-b716d7aecdbb","0dcae6fa-8060-6933-db1e-916de8af37f4"]},"value":1,"unit":""}}]}],"createdOn":1546790608799,"useFirstGroupAsInitialState":true},"a-49":{"id":"a-49","title":"logout 4","actionItemGroups":[{"actionItems":[{"id":"a-49-n","actionTypeId":"GENERAL_DISPLAY","config":{"delay":0,"easing":"","duration":0,"value":"flex","target":{"id":"1309fcd0-e371-ad54-af8e-b623990be159"}}},{"id":"a-49-n-2","actionTypeId":"GENERAL_DISPLAY","config":{"delay":0,"easing":"","duration":0,"value":"none","target":{"id":"1309fcd0-e371-ad54-af8e-b623990be150"}}}]}],"createdOn":1546956617595,"useFirstGroupAsInitialState":false},"a-50":{"id":"a-50","title":"open menu 4","actionItemGroups":[{"actionItems":[{"id":"a-50-n","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":500,"target":{"selector":".menu-wrapper","selectorGuids":["af84950e-ca0b-743f-7ac9-5f0b405f2283"]},"value":0,"unit":""}},{"id":"a-50-n-2","actionTypeId":"GENERAL_DISPLAY","config":{"delay":0,"easing":"","duration":0,"value":"none","target":{"selector":".menu-wrapper","selectorGuids":["af84950e-ca0b-743f-7ac9-5f0b405f2283"]}}}]},{"actionItems":[{"id":"a-50-n-3","actionTypeId":"TRANSFORM_ROTATE","config":{"delay":0,"easing":"ease","duration":200,"target":{"selector":".line-top","selectorGuids":["acaaec6a-8de1-362e-b0f2-b74f68466634"]},"zValue":-45,"xUnit":"DEG","yUnit":"DEG","zUnit":"DEG"}},{"id":"a-50-n-4","actionTypeId":"TRANSFORM_ROTATE","config":{"delay":0,"easing":"ease","duration":200,"target":{"selector":".line-bottom","selectorGuids":["03044cf9-92ad-5829-1610-aa7e79628b8b"]}
19790,"zValue":45,"xUnit":"DEG","yUnit":"DEG","zUnit":"DEG"}},{"id":"a-50-n-5","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"ease","duration":200,"target":{"selector":".line-top","selectorGuids":["acaaec6a-8de1-362e-b0f2-b74f68466634"]},"yValue":8,"xUnit":"PX","yUnit":"PX","zUnit":"PX"}},{"id":"a-50-n-6","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"ease","duration":200,"target":{"selector":".line-bottom","selectorGuids":["03044cf9-92ad-5829-1610-aa7e79628b8b"]},"yValue":-7,"xUnit":"PX","yUnit":"PX","zUnit":"PX"}}]},{"actionItems":[{"id":"a-50-n-7","actionTypeId":"GENERAL_DISPLAY","config":{"delay":0,"easing":"","duration":0,"value":"flex","target":{"selector":".menu-wrapper","selectorGuids":["af84950e-ca0b-743f-7ac9-5f0b405f2283"]}}},{"id":"a-50-n-8","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"ease","duration":500,"target":{"selector":".menu-wrapper","selectorGuids":["af84950e-ca0b-743f-7ac9-5f0b405f2283"]},"value":1,"unit":""}},{"id":"a-50-n-9","actionTypeId":"STYLE_BACKGROUND_COLOR","config":{"delay":0,"easing":"ease","duration":500,"globalSwatchId":"6e095db6","target":{"selector":".header-sec","selectorGuids":["536a5876-244a-2555-c3ce-83b45dc8847b"]},"rValue":22,"gValue":31,"bValue":36,"aValue":1}}]}],"createdOn":1547356067710,"useFirstGroupAsInitialState":true},"a-51":{"id":"a-51","title":"close menu 4","actionItemGroups":[{"actionItems":[{"id":"a-51-n","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"ease","duration":200,"target":{"selector":".line-top","selectorGuids":["acaaec6a-8de1-362e-b0f2-b74f68466634"]},"yValue":0,"xUnit":"PX","yUnit":"PX","zUnit":"PX"}},{"id":"a-51-n-2","actionTypeId":"TRANSFORM_ROTATE","config":{"delay":0,"easing":"ease","duration":200,"target":{"selector":".line-bottom","selectorGuids":["03044cf9-92ad-5829-1610-aa7e79628b8b"]},"zValue":0,"xUnit":"DEG","yUnit":"DEG","zUnit":"DEG"}},{"id":"a-51-n-3","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"ease","duration":200,"target":{"selector":".line-bottom","selectorGuids":["03044cf9-92ad-5829-1610-aa7e79628b8b"]},"yValue":0,"xUnit":"PX","yUnit":"PX","zUnit":"PX"}},{"id":"a-51-n-4","actionTypeId":"TRANSFORM_ROTATE","config":{"delay":0,"easing":"ease","duration":200,"target":{"selector":".line-top","selectorGuids":["acaaec6a-8de1-362e-b0f2-b74f68466634"]},"zValue":0,"xUnit":"DEG","yUnit":"DEG","zUnit":"DEG"}},{"id":"a-51-n-5","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"ease","duration":500,"target":{"selector":".menu-wrapper","selectorGuids":["af84950e-ca0b-743f-7ac9-5f0b405f2283"]},"value":0,"unit":""}},{"id":"a-51-n-6","actionTypeId":"STYLE_BACKGROUND_COLOR","config":{"delay":0,"easing":"ease","duration":500,"globalSwatchId":"0897c9c9","target":{"selector":".header-sec","selectorGuids":["536a5876-244a-2555-c3ce-83b45dc8847b"]},"rValue":37,"gValue":52,"bValue":61,"aValue":1}}]},{"actionItems":[{"id":"a-51-n-7","actionTypeId":"GENERAL_DISPLAY","config":{"delay":0,"easing":"","duration":0,"value":"none","target":{"selector":".menu-wrapper","selectorGuids":["af84950e-ca0b-743f-7ac9-5f0b405f2283"]}}}]}],"createdOn":1547356899607,"useFirstGroupAsInitialState":false},"a-55":{"id":"a-55","title":"close keychain popup 3","actionItemGroups":[{"actionItems":[{"id":"a-55-n","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"ease","duration":200,"target":{"id":"5f64bf66be3bc9fb372f9b07|7b04eca5-b9f5-2e1a-2526-954877b9b637"},"value":0,"unit":""}}]},{"actionItems":[{"id":"a-55-n-2","actionTypeId":"GENERAL_DISPLAY","config":{"delay":0,"easing":"","duration":0,"value":"none","target":{"id":"5f64bf66be3bc9fb372f9b07|7b04eca5-b9f5-2e1a-2526-954877b9b637"}}}]}],"createdOn":1548171784580,"useFirstGroupAsInitialState":false},"a-61":{"id":"a-61","title":"close announcement bar on click","actionItemGroups":[{"actionItems":[{"id":"a-61-n","actionTypeId":"STYLE_SIZE","config":{"delay":0,"easing":"","duration":500,"locked":false,"target":{"useEventTarget":"PARENT","selector":".announcement-bar","selectorGuids":["b276a990-1494-15fb-fc3e-49179d6e9dd3"]},"heightValue":36,"widthUnit":"PX","heightUnit":"PX"}}]},{"actionItems":[{"id":"a-61-n-2","actionTypeId":"STYLE_SIZE","config":{"delay":0,"easing":"","duration":300,"locked":false,"target":{"useEventTarget":"PARENT","selector":".announcement-bar","selectorGuids":["b276a990-1494-15fb-fc3e-49179d6e9dd3"]},"heightValue":0,"widthUnit":"PX","heightUnit":"PX"}}]}],"createdOn":1587869319130,"useFirstGroupAsInitialState":true},"a-62":{"id":"a-62","title":"select hive","actionItemGroups":[{"actionItems":[{"id":"a-62-n","actionTypeId":"STYLE_BORDER","config":{"delay":0,"easing":"","duration":200,"globalSwatchId":"9bddd589","target":{"selector":".currency.currency-btn.currency-btn-hive","selectorGuids":["9fed0c9f-0546-c14e-e929-883f236e4e3a","30af9d1d-ea06-6272-7b96-fb221910285e","259acdb2-fbe8-fc63-67e8-2dd9cb14de59"]},"rValue":249,"gValue":170,"bValue":51,"aValue":1}},{"id":"a-62-n-2","actionTypeId":"STYLE_TEXT_COLOR","config":{"delay":0,"easing":"","duration":200,"globalSwatchId":"9bddd589","target":{"selector":".currency.currency-btn.currency-btn-hive","selectorGuids":["9fed0c9f-0546-c14e-e929-883f236e4e3a","30af9d1d-ea06-6272-7b96-fb221910285e","259acdb2-fbe8-fc63-67e8-2dd9cb14de59"]},"rValue":249,"gValue":170,"bValue":51,"aValue":1}}]},{"actionItems":[{"id":"a-62-n-3","actionTypeId":"STYLE_BORDER","config":{"delay":0,"easing":"","duration":0,"target":{"useEventTarget":"SIBLINGS","selector":".currency.currency-btn.currency-btn-steem","selectorGuids":["9fed0c9f-0546-c14e-e929-883f236e4e3a","30af9d1d-ea06-6272-7b96-fb221910285e","317d7394-e4a1-b966-51c6-55c339476c80"]},"rValue":0,"gValue":0,"bValue":0,"aValue":0}},{"id":"a-62-n-4","actionTypeId":"STYLE_TEXT_COLOR","config":{"delay":0,"easing":"","duration":0,"globalSwatchId":"8ebed8c7","target":{"useEventTarget":"SIBLINGS","selector":".currency.currency-btn.currency-btn-steem","selectorGuids":["9fed0c9f-0546-c14e-e929-883f236e4e3a","30af9d1d-ea06-6272-7b96-fb221910285e","317d7394-e4a1-b966-51c6-55c339476c80"]},"rValue":207,"gValue":207,"bValue":207,"aValue":0.7}}]},{"actionItems":[{"id":"a-62-n-5","actionTypeId":"STYLE_BORDER","config":{"delay":0,"easing":"","duration":0,"target":{"selector":".currency.currency-btn.currency-btn-epc","selectorGuids":["9fed0c9f-0546-c14e-e929-883f236e4e3a","30af9d1d-ea06-6272-7b96-fb221910285e","cc488ebf-c976-4f4c-7f48-f14e5cb9056f"]},"rValue":0,"gValue":0,"bValue":0,"aValue":0}},{"id":"a-62-n-6","actionTypeId":"STYLE_TEXT_COLOR","config":{"delay":0,"easing":"","duration":0,"globalSwatchId":"8ebed8c7","target":{"selector":".currency.currency-btn.currency-btn-epc","selectorGuids":["9fed0c9f-0546-c14e-e929-883f236e4e3a","30af9d1d-ea06-6272-7b96-fb221910285e","cc488ebf-c976-4f4c-7f48-f14e5cb9056f"]},"rValue":207,"gValue":207,"bValue":207,"aValue":0.7}}]}],"createdOn":1589086178247,"useFirstGroupAsInitialState":false},"a-63":{"id":"a-63","title":"close announcement bar on click 2","actionItemGroups":[{"actionItems":[{"id":"a-63-n","actionTypeId":"STYLE_SIZE","config":{"delay":0,"easing":"","duration":500,"locked":false,"target":{"useEventTarget":"PARENT","selector":".announcement-bar","selectorGuids":["b276a990-1494-15fb-fc3e-49179d6e9dd3"]},"heightValue":36,"widthUnit":"PX","heightUnit":"PX"}}]},{"actionItems":[{"id":"a-63-n-2","actionTypeId":"STYLE_SIZE","config":{"delay":0,"easing":"","duration":300,"locked":false,"target":{"useEventTarget":"PARENT","selector":".announcement-bar","selectorGuids":["b276a990-1494-15fb-fc3e-49179d6e9dd3"]},"heightValue":0,"widthUnit":"PX","heightUnit":"PX"}}]}],"createdOn":1587869319130,"useFirstGroupAsInitialState":true}},"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}]}}
19791);

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.