{"version":3,"file":"scripts/application.min.js","mappings":"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","sources":["webpack:///webpack/runtime/load script","webpack:///../node_modules/array.prototype.foreach/implementation.js","webpack:///../node_modules/array.prototype.foreach/index.js","webpack:///../node_modules/array.prototype.foreach/polyfill.js","webpack:///../node_modules/array.prototype.foreach/shim.js","webpack:///../node_modules/call-bind/callBound.js","webpack:///../node_modules/call-bind/index.js","webpack:///../node_modules/define-properties/index.js","webpack:///../node_modules/es-array-method-boxes-properly/index.js","webpack:///../node_modules/es-to-primitive/es2015.js","webpack:///../node_modules/es-to-primitive/helpers/isPrimitive.js","webpack:///../node_modules/flowli.web.common.client/dist/CookieControl/Civikuk/CivikukCookieControlService.js","webpack:///../node_modules/flowli.web.common.client/dist/CookieControl/CookieControlService.js","webpack:///../node_modules/flowli.web.common.client/dist/CookieControl/CookiePurpose.js","webpack:///../node_modules/flowli.web.common.client/dist/CookieControl/CookieUtil.js","webpack:///../node_modules/flowli.web.common.client/dist/CookieControl/DefaultCookieControlManager.js","webpack:///../node_modules/flowli.web.common.client/dist/FeedbackManager.js","webpack:///../node_modules/flowli.web.common.client/dist/LazyEmbed.js","webpack:///../node_modules/flowli.web.common.client/dist/RecaptchaManager.js","webpack:///../node_modules/flowli.web.common.client/dist/UI/BreakPoint.js","webpack:///../node_modules/flowli.web.common.client/dist/UI/Notification.js","webpack:///../node_modules/flowli.web.common.client/dist/Util.js","webpack:///../node_modules/flowli.web.common.client/dist/WebApplicationHelper.js","webpack:///../node_modules/function-bind/implementation.js","webpack:///../node_modules/function-bind/index.js","webpack:///../node_modules/get-intrinsic/index.js","webpack:///../node_modules/has-property-descriptors/index.js","webpack:///../node_modules/has-symbols/index.js","webpack:///../node_modules/has-symbols/shams.js","webpack:///../node_modules/has-tostringtag/shams.js","webpack:///../node_modules/has/src/index.js","webpack:///../node_modules/is-callable/index.js","webpack:///../node_modules/is-date-object/index.js","webpack:///../node_modules/is-regex/index.js","webpack:///../node_modules/is-string/index.js","webpack:///../node_modules/is-symbol/index.js","webpack:///../node_modules/jquery-validation/dist/jquery.validate.js","webpack:///../node_modules/node-polyglot/index.js","webpack:///../node_modules/noty/lib/noty.js","webpack:///../node_modules/object-inspect/index.js","webpack:///../node_modules/object-keys/implementation.js","webpack:///../node_modules/object-keys/index.js","webpack:///../node_modules/object-keys/isArguments.js","webpack:///../node_modules/object.entries/implementation.js","webpack:///../node_modules/object.entries/index.js","webpack:///../node_modules/object.entries/polyfill.js","webpack:///../node_modules/object.entries/shim.js","webpack:///../node_modules/safe-regex-test/index.js","webpack:///../node_modules/string.prototype.trim/implementation.js","webpack:///../node_modules/string.prototype.trim/index.js","webpack:///../node_modules/string.prototype.trim/polyfill.js","webpack:///../node_modules/string.prototype.trim/shim.js","webpack:///../node_modules/warning/warning.js","webpack:///external var \"jQuery\"","webpack:///../node_modules/es-abstract/2022/Call.js","webpack:///../node_modules/es-abstract/2022/Get.js","webpack:///../node_modules/es-abstract/2022/HasProperty.js","webpack:///../node_modules/es-abstract/2022/IsArray.js","webpack:///../node_modules/es-abstract/2022/IsCallable.js","webpack:///../node_modules/es-abstract/2022/IsPropertyKey.js","webpack:///../node_modules/es-abstract/2022/LengthOfArrayLike.js","webpack:///../node_modules/es-abstract/2022/RequireObjectCoercible.js","webpack:///../node_modules/es-abstract/2022/StringToNumber.js","webpack:///../node_modules/es-abstract/2022/ToIntegerOrInfinity.js","webpack:///../node_modules/es-abstract/2022/ToLength.js","webpack:///../node_modules/es-abstract/2022/ToNumber.js","webpack:///../node_modules/es-abstract/2022/ToObject.js","webpack:///../node_modules/es-abstract/2022/ToPrimitive.js","webpack:///../node_modules/es-abstract/2022/ToString.js","webpack:///../node_modules/es-abstract/2022/Type.js","webpack:///../node_modules/es-abstract/2022/abs.js","webpack:///../node_modules/es-abstract/2022/floor.js","webpack:///../node_modules/es-abstract/5/CheckObjectCoercible.js","webpack:///../node_modules/es-abstract/5/Type.js","webpack:///../node_modules/es-abstract/helpers/IsArray.js","webpack:///../node_modules/es-abstract/helpers/isFinite.js","webpack:///../node_modules/es-abstract/helpers/isNaN.js","webpack:///../node_modules/es-abstract/helpers/isPrimitive.js","webpack:///../node_modules/es-abstract/helpers/maxSafeInteger.js","webpack:///../node_modules/es-abstract/helpers/sign.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/ensure chunk","webpack:///webpack/runtime/get javascript chunk filename","webpack:///webpack/runtime/get mini-css chunk filename","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/publicPath","webpack:///webpack/runtime/jsonp chunk loading","webpack:///../node_modules/tiny-slider/src/helpers/raf.js","webpack:///../node_modules/tiny-slider/src/helpers/caf.js","webpack:///../node_modules/tiny-slider/src/helpers/extend.js","webpack:///../node_modules/tiny-slider/src/helpers/checkStorageValue.js","webpack:///../node_modules/tiny-slider/src/helpers/setLocalStorage.js","webpack:///../node_modules/tiny-slider/src/helpers/getBody.js","webpack:///../node_modules/tiny-slider/src/helpers/docElement.js","webpack:///../node_modules/tiny-slider/src/helpers/setFakeBody.js","webpack:///../node_modules/tiny-slider/src/helpers/resetFakeBody.js","webpack:///../node_modules/tiny-slider/src/helpers/addCSSRule.js","webpack:///../node_modules/tiny-slider/src/helpers/getCssRulesLength.js","webpack:///../node_modules/tiny-slider/src/helpers/forEach.js","webpack:///../node_modules/tiny-slider/src/helpers/classListSupport.js","webpack:///../node_modules/tiny-slider/src/helpers/hasClass.js","webpack:///../node_modules/tiny-slider/src/helpers/addClass.js","webpack:///../node_modules/tiny-slider/src/helpers/removeClass.js","webpack:///../node_modules/tiny-slider/src/helpers/hasAttr.js","webpack:///../node_modules/tiny-slider/src/helpers/getAttr.js","webpack:///../node_modules/tiny-slider/src/helpers/isNodeList.js","webpack:///../node_modules/tiny-slider/src/helpers/setAttrs.js","webpack:///../node_modules/tiny-slider/src/helpers/removeAttrs.js","webpack:///../node_modules/tiny-slider/src/helpers/arrayFromNodeList.js","webpack:///../node_modules/tiny-slider/src/helpers/hideElement.js","webpack:///../node_modules/tiny-slider/src/helpers/showElement.js","webpack:///../node_modules/tiny-slider/src/helpers/isVisible.js","webpack:///../node_modules/tiny-slider/src/helpers/whichProperty.js","webpack:///../node_modules/tiny-slider/src/helpers/getEndProperty.js","webpack:///../node_modules/tiny-slider/src/helpers/passiveOption.js","webpack:///../node_modules/tiny-slider/src/helpers/addEvents.js","webpack:///../node_modules/tiny-slider/src/helpers/removeEvents.js","webpack:///../node_modules/tiny-slider/src/helpers/events.js","webpack:///../node_modules/tiny-slider/src/tiny-slider.js","webpack:///../node_modules/tiny-slider/src/helpers/calc.js","webpack:///../node_modules/tiny-slider/src/helpers/percentageLayout.js","webpack:///../node_modules/tiny-slider/src/helpers/mediaquerySupport.js","webpack:///../node_modules/tiny-slider/src/helpers/has3DTransforms.js","webpack:///../node_modules/tiny-slider/src/helpers/getSlideId.js","webpack:///../node_modules/tiny-slider/src/helpers/createStyleSheet.js","webpack:///../node_modules/tiny-slider/src/helpers/jsTransform.js","webpack:///../node_modules/tiny-slider/src/helpers/removeCSSRule.js","webpack:///../node_modules/tiny-slider/src/helpers/toDegree.js","webpack:///../node_modules/tiny-slider/src/helpers/getTouchDirection.js","webpack:///./scripts/Application.ts"],"sourcesContent":["var inProgress = {};\n// data-webpack is not used as build has no uniqueName\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar Call = require('es-abstract/2022/Call');\nvar Get = require('es-abstract/2022/Get');\nvar HasProperty = require('es-abstract/2022/HasProperty');\nvar IsCallable = require('es-abstract/2022/IsCallable');\nvar LengthOfArrayLike = require('es-abstract/2022/LengthOfArrayLike');\nvar ToObject = require('es-abstract/2022/ToObject');\nvar ToString = require('es-abstract/2022/ToString');\n\nvar isString = require('is-string');\n\nvar $split = callBound('String.prototype.split');\n\n// Check failure of by-index access of string characters (IE < 9) and failure of `0 in boxedString` (Rhino)\nvar boxedString = Object('a');\nvar splitString = boxedString[0] !== 'a' || !(0 in boxedString);\n\nmodule.exports = function forEach(callbackfn) {\n\tvar thisO = ToObject(this);\n\tvar O = splitString && isString(this) ? $split(this, '') : thisO;\n\n\tvar len = LengthOfArrayLike(O);\n\n\tif (!IsCallable(callbackfn)) {\n\t\tthrow new $TypeError('Array.prototype.forEach callback must be a function');\n\t}\n\n\tvar thisArg;\n\tif (arguments.length > 1) {\n\t\tthisArg = arguments[1];\n\t}\n\n\tvar k = 0;\n\twhile (k < len) {\n\t\tvar Pk = ToString(k);\n\t\tvar kPresent = HasProperty(O, Pk);\n\t\tif (kPresent) {\n\t\t\tvar kValue = Get(O, Pk);\n\t\t\tCall(callbackfn, thisArg, [kValue, k, O]);\n\t\t}\n\t\tk += 1;\n\t}\n\n\treturn void undefined;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\nvar callBound = require('call-bind/callBound');\nvar RequireObjectCoercible = require('es-abstract/2022/RequireObjectCoercible');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar polyfill = getPolyfill();\nvar shim = require('./shim');\n\nvar $slice = callBound('Array.prototype.slice');\n\nvar bound = callBind.apply(polyfill);\n// eslint-disable-next-line no-unused-vars\nvar boundCoercible = function forEach(array, callbackfn) {\n\tRequireObjectCoercible(array);\n\treturn bound(array, $slice(arguments, 1));\n};\n\ndefine(boundCoercible, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = boundCoercible;\n","'use strict';\n\nvar arrayMethodBoxesProperly = require('es-array-method-boxes-properly');\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\tvar method = Array.prototype.forEach;\n\treturn arrayMethodBoxesProperly(method) ? method : implementation;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimForEach() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tArray.prototype,\n\t\t{ forEach: polyfill },\n\t\t{ forEach: function () { return Array.prototype.forEach !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar hasPropertyDescriptors = require('has-property-descriptors')();\n\nvar supportsDescriptors = origDefineProperty && hasPropertyDescriptors;\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value; // eslint-disable-line no-param-reassign\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","module.exports = function properlyBoxed(method) {\n\t// Check node 0.6.21 bug where third parameter is not boxed\n\tvar properlyBoxesNonStrict = true;\n\tvar properlyBoxesStrict = true;\n\tvar threwException = false;\n\tif (typeof method === 'function') {\n\t\ttry {\n\t\t\t// eslint-disable-next-line max-params\n\t\t\tmethod.call('f', function (_, __, O) {\n\t\t\t\tif (typeof O !== 'object') {\n\t\t\t\t\tproperlyBoxesNonStrict = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tmethod.call(\n\t\t\t\t[null],\n\t\t\t\tfunction () {\n\t\t\t\t\t'use strict';\n\n\t\t\t\t\tproperlyBoxesStrict = typeof this === 'string'; // eslint-disable-line no-invalid-this\n\t\t\t\t},\n\t\t\t\t'x'\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tthrewException = true;\n\t\t}\n\t\treturn !threwException && properlyBoxesNonStrict && properlyBoxesStrict;\n\t}\n\treturn false;\n};\n","'use strict';\n\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol';\n\nvar isPrimitive = require('./helpers/isPrimitive');\nvar isCallable = require('is-callable');\nvar isDate = require('is-date-object');\nvar isSymbol = require('is-symbol');\n\nvar ordinaryToPrimitive = function OrdinaryToPrimitive(O, hint) {\n\tif (typeof O === 'undefined' || O === null) {\n\t\tthrow new TypeError('Cannot call method on ' + O);\n\t}\n\tif (typeof hint !== 'string' || (hint !== 'number' && hint !== 'string')) {\n\t\tthrow new TypeError('hint must be \"string\" or \"number\"');\n\t}\n\tvar methodNames = hint === 'string' ? ['toString', 'valueOf'] : ['valueOf', 'toString'];\n\tvar method, result, i;\n\tfor (i = 0; i < methodNames.length; ++i) {\n\t\tmethod = O[methodNames[i]];\n\t\tif (isCallable(method)) {\n\t\t\tresult = method.call(O);\n\t\t\tif (isPrimitive(result)) {\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\t}\n\tthrow new TypeError('No default value');\n};\n\nvar GetMethod = function GetMethod(O, P) {\n\tvar func = O[P];\n\tif (func !== null && typeof func !== 'undefined') {\n\t\tif (!isCallable(func)) {\n\t\t\tthrow new TypeError(func + ' returned for property ' + P + ' of object ' + O + ' is not a function');\n\t\t}\n\t\treturn func;\n\t}\n\treturn void 0;\n};\n\n// http://www.ecma-international.org/ecma-262/6.0/#sec-toprimitive\nmodule.exports = function ToPrimitive(input) {\n\tif (isPrimitive(input)) {\n\t\treturn input;\n\t}\n\tvar hint = 'default';\n\tif (arguments.length > 1) {\n\t\tif (arguments[1] === String) {\n\t\t\thint = 'string';\n\t\t} else if (arguments[1] === Number) {\n\t\t\thint = 'number';\n\t\t}\n\t}\n\n\tvar exoticToPrim;\n\tif (hasSymbols) {\n\t\tif (Symbol.toPrimitive) {\n\t\t\texoticToPrim = GetMethod(input, Symbol.toPrimitive);\n\t\t} else if (isSymbol(input)) {\n\t\t\texoticToPrim = Symbol.prototype.valueOf;\n\t\t}\n\t}\n\tif (typeof exoticToPrim !== 'undefined') {\n\t\tvar result = exoticToPrim.call(input, hint);\n\t\tif (isPrimitive(result)) {\n\t\t\treturn result;\n\t\t}\n\t\tthrow new TypeError('unable to convert exotic object to primitive');\n\t}\n\tif (hint === 'default' && (isDate(input) || isSymbol(input))) {\n\t\thint = 'string';\n\t}\n\treturn ordinaryToPrimitive(input, hint === 'default' ? 'number' : hint);\n};\n","'use strict';\n\nmodule.exports = function isPrimitive(value) {\n\treturn value === null || (typeof value !== 'function' && typeof value !== 'object');\n};\n","import { CookiePurpose } from \"../../Index\";\r\nimport { loadDynamicScript } from \"../../Util\";\r\nexport class CivikukCookieControlService {\r\n Load(options, baseOnAcceptCallback, baseOnRevokeCallback) {\r\n if (typeof CookieControl !== 'object') {\r\n loadDynamicScript(\"cookieControl\", \"https://cc.cdn.civiccomputing.com/9/cookieControl-9.x.min.js\", () => this.Load(options, baseOnAcceptCallback, baseOnRevokeCallback), \"head\");\r\n return;\r\n }\r\n const civikukOptions = options;\r\n civikukOptions.apiKey = options.apiKey;\r\n civikukOptions.product = options.product || 'PRO';\r\n civikukOptions.optionalCookies = options.optionalCookieList;\r\n if (civikukOptions.optionalCookies) {\r\n civikukOptions.optionalCookies.forEach((option) => {\r\n if (option.name != CookiePurpose.Analytics && option.name != CookiePurpose.Social && option.name != CookiePurpose.Preferences) {\r\n console.log(`Optional cookie name \"${option.name}\" is not supported`);\r\n return;\r\n }\r\n option.onAccept = () => {\r\n option.onAcceptCallback();\r\n baseOnAcceptCallback(option.name);\r\n };\r\n option.onRevoke = () => {\r\n option.onRevokeCallback();\r\n baseOnRevokeCallback(option.name);\r\n };\r\n });\r\n }\r\n CookieControl.load(options);\r\n }\r\n Open() {\r\n CookieControl.open();\r\n }\r\n UpdateConsent(purpose, accept) {\r\n const config = CookieControl.config();\r\n let category = -1;\r\n config.optionalCookieList.forEach((value, index) => {\r\n if (value.name === purpose) {\r\n category = index;\r\n return;\r\n }\r\n });\r\n if (category != -1) {\r\n CookieControl.changeCategory(category, accept);\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=CivikukCookieControlService.js.map","import { CivikukCookieControlService } from \"./Civikuk/CivikukCookieControlService\";\r\nimport { SetCookie, GetCookie, EraseCookie } from \"./CookieUtil\";\r\nexport class CookieControlService {\r\n constructor() {\r\n this.cookieControlService = new CivikukCookieControlService();\r\n }\r\n Init(options) {\r\n this.SetupCookieControlOptions(options);\r\n const onAcceptCallback = this.GetAcceptCallback();\r\n const onRevokeCallback = this.GetRevokeCallback();\r\n this.cookieControlService.Load(options, onAcceptCallback, onRevokeCallback);\r\n }\r\n Open() {\r\n this.cookieControlService.Open();\r\n }\r\n UpdateConsent(purpose, accept) {\r\n this.cookieControlService.UpdateConsent(purpose, accept);\r\n }\r\n SetupCookieControlOptions(options) {\r\n options.position = options.position || 'RIGHT';\r\n options.theme = options.theme || 'DARK';\r\n options.branding = options.branding || {\r\n fontColor: \"#FFF\",\r\n fontSizeTitle: \"1.2em\",\r\n fontSizeIntro: \"1em\",\r\n fontSizeHeaders: \"1em\",\r\n fontSize: \"0.8em\",\r\n backgroundColor: \"#313147\",\r\n toggleText: \"#fff\",\r\n toggleColor: \"#2f2f5f\",\r\n toggleBackground: \"#111125\",\r\n buttonIcon: null,\r\n buttonIconWidth: 64,\r\n buttonIconHeight: 64,\r\n removeIcon: true,\r\n removeAbout: false\r\n };\r\n options.initialState = options.initialState || \"notify\";\r\n options.notifyDismissButton = options.notifyDismissButton == undefined ? false : options.notifyDismissButton;\r\n options.necessaryCookies = options.necessaryCookies || [];\r\n options.necessaryCookies.push(\"FlowliConsentCookie\", \"AntiForgery.*\", \"XSRF-TOKEN\", \"CorrelationId\", \"flowliVersion\", \"referral\");\r\n }\r\n GetAcceptCallback() {\r\n return (purpose) => {\r\n let purposes = GetCookie(\"FlowliConsentCookie\");\r\n const purposesArray = purposes ? purposes.split(\",\") : [];\r\n if (purposesArray.indexOf(purpose) == -1) {\r\n purposesArray.push(purpose);\r\n }\r\n purposes = purposesArray.length == 1 ? purposesArray[0] : purposesArray.join(\",\");\r\n SetCookie(\"FlowliConsentCookie\", purposes, 60);\r\n };\r\n }\r\n GetRevokeCallback() {\r\n return (purpose) => {\r\n let purposes = GetCookie(\"FlowliConsentCookie\");\r\n const purposesArray = purposes ? purposes.split(\",\") : [];\r\n const purposeIndex = purposesArray.indexOf(purpose);\r\n if (purposeIndex > -1) {\r\n purposesArray.splice(purposeIndex, 1);\r\n }\r\n if (purposesArray.length > 0) {\r\n purposes = purposesArray.length == 1 ? purposesArray[0] : purposesArray.join(\",\");\r\n SetCookie(\"FlowliConsentCookie\", purposes, 60);\r\n }\r\n else {\r\n EraseCookie(\"FlowliConsentCookie\");\r\n }\r\n };\r\n }\r\n}\r\n//# sourceMappingURL=CookieControlService.js.map","export class CookiePurpose {\r\n}\r\nCookiePurpose.Analytics = \"analytics\";\r\nCookiePurpose.Social = \"socialsharing\";\r\nCookiePurpose.Preferences = \"preferences\";\r\n//# sourceMappingURL=CookiePurpose.js.map","export const SetCookie = (name, value, days, secure = true, sameSite = 'Lax') => {\r\n let attributes = \"; path=/\";\r\n if (days) {\r\n const date = new Date();\r\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\r\n attributes += \"; expires=\" + date.toUTCString();\r\n }\r\n if (secure) {\r\n attributes += \"; Secure\";\r\n }\r\n attributes += `; SameSite=${sameSite}`;\r\n document.cookie = name + \"=\" + (value || \"\") + attributes;\r\n};\r\nexport const GetCookie = (name) => {\r\n var nameEQ = name + \"=\";\r\n var ca = document.cookie.split(';');\r\n for (var i = 0; i < ca.length; i++) {\r\n var c = ca[i];\r\n while (c.charAt(0) == ' ')\r\n c = c.substring(1, c.length);\r\n if (c.indexOf(nameEQ) == 0)\r\n return c.substring(nameEQ.length, c.length);\r\n }\r\n return null;\r\n};\r\nexport const EraseCookie = (name) => {\r\n document.cookie = name + \"=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/\";\r\n};\r\nexport const HasGdprConsent = (purpose) => {\r\n const consentCookieValue = GetCookie(\"FlowliConsentCookie\");\r\n if (!consentCookieValue) {\r\n return false;\r\n }\r\n const purposes = consentCookieValue.split(\",\");\r\n return purposes.indexOf(purpose) != -1;\r\n};\r\n//# sourceMappingURL=CookieUtil.js.map","import Polyglot from \"node-polyglot\";\r\nimport { CookieControlService } from \"./CookieControlService\";\r\nimport { CookiePurpose } from \"./CookiePurpose\";\r\nexport class DefaultCookieControlManager {\r\n constructor(polyglotPhrases, necessaryCookies, optionalCookies, socialCookies, preferenceCookies) {\r\n this.polyglotPhrases = polyglotPhrases;\r\n this.necessaryCookies = necessaryCookies;\r\n this.optionalCookies = optionalCookies;\r\n this.socialCookies = socialCookies;\r\n this.preferenceCookies = preferenceCookies;\r\n this.translator = new Polyglot({ phrases: polyglotPhrases });\r\n }\r\n Init(onAcceptOptionalCookies, onRejectOptionalCookies, onAcceptSocialCookies, onRejectSocialCookies, onAcceptPreferenceCookies, onRejectPreferenceCookies) {\r\n const config = this.GetCookieControlConfiguration();\r\n this.cookieControlService = new CookieControlService();\r\n this.cookieControlService.Init(config);\r\n this.acceptOptionalCookiesCallBack = onAcceptOptionalCookies;\r\n this.rejectOptionalCookiesCallBack = onRejectOptionalCookies;\r\n this.acceptSocialCookiesCallBack = onAcceptSocialCookies;\r\n this.rejectSocialCookiesCallBack = onRejectSocialCookies;\r\n this.acceptPreferenceCookiesCallBack = onAcceptPreferenceCookies;\r\n this.rejectPreferenceCookiesCallBack = onRejectPreferenceCookies;\r\n $(\"#cookie-settings\").on(\"click\", () => {\r\n this.cookieControlService.Open();\r\n });\r\n }\r\n GetCookieControlConfiguration() {\r\n const self = this;\r\n return {\r\n apiKey: $(\"#cookieControlApiKey\").val(),\r\n product: 'PRO_MULTISITE',\r\n necessaryCookies: this.necessaryCookies || [],\r\n statement: {\r\n description: this.translator.t(\"statement_description\"),\r\n name: this.translator.t(\"statement_name\"),\r\n url: this.translator.t(\"statement_url\"),\r\n updated: this.translator.t(\"statement_date\")\r\n },\r\n rejectButton: false,\r\n closeStyle: \"button\",\r\n text: {\r\n notifyDescription: this.translator.t(\"notify_description\"),\r\n notifyTitle: this.translator.t(\"notify_title\"),\r\n thirdPartyTitle: this.translator.t(\"third_party_cookies_title\"),\r\n thirdPartyDescription: this.translator.t(\"third_party_cookies_description\"),\r\n closeLabel: this.translator.t(\"close_label\"),\r\n accept: this.translator.t(\"notification_bar_accept\"),\r\n intro: this.translator.t(\"panel_intro\"),\r\n title: this.translator.t(\"panel_title\"),\r\n acceptSettings: this.translator.t(\"panel_accept_all\"),\r\n },\r\n branding: {\r\n fontFamily: \"Noto Sans, sans-serif\",\r\n fontColor: \"#fcfcfc\",\r\n fontSizeTitle: \"1.0625rem\",\r\n fontSizeIntro: \".9375rem\",\r\n fontSizeHeaders: \"1rem\",\r\n fontSize: \".75rem\",\r\n backgroundColor: \"#333\",\r\n toggleText: \"#fcfcfc\",\r\n toggleColor: \"#fcfcfc\",\r\n toggleBackground: \"#333\",\r\n acceptBackground: \"#c60c30\",\r\n acceptText: \"#fcfcfc\",\r\n rejectBackground: \"#c60c30\",\r\n rejectText: \"#fcfcfc\",\r\n buttonIcon: \"\",\r\n buttonIconWidth: 120,\r\n buttonIconHeight: 120,\r\n removeIcon: true,\r\n removeAbout: true\r\n },\r\n optionalCookieList: [\r\n {\r\n name: CookiePurpose.Analytics,\r\n label: this.translator.t(\"analytics_label\"),\r\n description: this.translator.t(\"analytics_description\"),\r\n cookies: this.optionalCookies || [],\r\n vendors: [{\r\n name: this.translator.t(\"google_name\"),\r\n url: this.translator.t(\"google_url\"),\r\n description: this.translator.t(\"google_description\")\r\n },\r\n {\r\n name: this.translator.t(\"piwik_name\"),\r\n url: this.translator.t(\"piwik_url\"),\r\n description: this.translator.t(\"piwik_description\")\r\n },\r\n {\r\n name: this.translator.t(\"mather_name\"),\r\n url: this.translator.t(\"mather_url\"),\r\n description: this.translator.t(\"mather_description\")\r\n }\r\n ],\r\n onAcceptCallback: function () {\r\n if (self.acceptOptionalCookiesCallBack) {\r\n self.acceptOptionalCookiesCallBack();\r\n }\r\n },\r\n onRevokeCallback: function () {\r\n if (self.rejectOptionalCookiesCallBack) {\r\n self.rejectOptionalCookiesCallBack();\r\n }\r\n }\r\n },\r\n {\r\n name: CookiePurpose.Social,\r\n label: this.translator.t(\"social_name\"),\r\n description: this.translator.t(\"social_description\"),\r\n cookies: this.socialCookies || [],\r\n onAcceptCallback: function () {\r\n if (self.acceptSocialCookiesCallBack) {\r\n self.acceptSocialCookiesCallBack();\r\n }\r\n },\r\n onRevokeCallback: function () {\r\n if (self.rejectSocialCookiesCallBack) {\r\n self.rejectSocialCookiesCallBack();\r\n }\r\n }\r\n },\r\n {\r\n name: CookiePurpose.Preferences,\r\n label: this.translator.t(\"preferences_name\"),\r\n description: this.translator.t(\"preferences_description\"),\r\n cookies: this.preferenceCookies || [],\r\n onAcceptCallback: function () {\r\n if (self.acceptPreferenceCookiesCallBack) {\r\n self.acceptPreferenceCookiesCallBack();\r\n }\r\n },\r\n onRevokeCallback: function () {\r\n if (self.rejectPreferenceCookiesCallBack) {\r\n self.rejectPreferenceCookiesCallBack();\r\n }\r\n }\r\n }\r\n ]\r\n };\r\n }\r\n UpdateConsent(purpose, consent) {\r\n this.cookieControlService.UpdateConsent(purpose, consent);\r\n }\r\n}\r\n//# sourceMappingURL=DefaultCookieControlManager.js.map","import { getCaptchaResponse, resetCaptcha } from \"./RecaptchaManager\";\r\nimport { Notification } from \"./UI/Notification\";\r\nexport class FeedbackManager {\r\n constructor(authenticated = false) {\r\n this.authenticated = authenticated;\r\n }\r\n Init() {\r\n $(\"form[data-feedbackkey]\").each((idx, el) => {\r\n this.SetupEvents($(el));\r\n });\r\n }\r\n SetFeedbackCallback(callback) {\r\n this.feedbackCallback = callback;\r\n }\r\n SetupEvents(formContainer) {\r\n const feedbackTypeKey = formContainer.data(\"feedbackkey\");\r\n formContainer.on(\"click\", \"input[type=submit]\", (ev) => {\r\n ev.stopImmediatePropagation();\r\n ev.preventDefault();\r\n this.SubmitFeedback(formContainer, feedbackTypeKey);\r\n });\r\n formContainer.on(\"click\", \"input[type=reset]\", (ev) => {\r\n ev.preventDefault();\r\n if ($(ev.target).attr(\"id\").match(feedbackTypeKey + \"$\")) {\r\n this.Reset(formContainer);\r\n }\r\n });\r\n }\r\n Reset($targetForm) {\r\n if ($targetForm.length > 0) {\r\n $targetForm.get()[0].reset();\r\n $targetForm.validate().resetForm();\r\n this.ResetRecaptcha($targetForm);\r\n this.SubmitResetLabels($targetForm);\r\n }\r\n }\r\n SubmitResetLabels($targetform) {\r\n const $targetSubmitLabel = $(\"#feedback-submit-label\");\r\n if ($targetSubmitLabel.length) {\r\n const $submitButton = $(\"#submit_\" + $targetform.attr(\"id\"));\r\n $targetSubmitLabel.attr(\"for\", $submitButton.attr(\"id\"));\r\n const $targetCancelLabel = $(\"#feedback-reset-label\");\r\n const $cancelButton = $(\"#reset_\" + $targetform.attr(\"id\"));\r\n $targetCancelLabel.attr(\"for\", $cancelButton.attr(\"id\"));\r\n $targetform.find(\".form__controls\").hide();\r\n $targetform.find(\".feedback__error\").hide();\r\n $targetform.find(\"input\").first().trigger(\"focus\");\r\n }\r\n }\r\n SubmitFeedback($form, feedbackTypeKey) {\r\n const $target = $form.find(\"input[type=submit]\");\r\n const $progress = $form.find(\".progress\");\r\n const $fileUpload = $form.find(\".has-file\");\r\n $form.validate();\r\n if (!$form.valid()) {\r\n return;\r\n }\r\n if ($form.find(\"label.has-error\").length > 0) {\r\n this.Notify(\"Your form contains invalid/big file. Please replace or reset the form\", true);\r\n return;\r\n }\r\n const formElement = $form.get()[0];\r\n const formData = new FormData(formElement);\r\n if (!this.authenticated) {\r\n const recaptchaWidgetId = parseInt($form.find(\"div.g-recaptcha\").attr(\"data-RecaptchaWidgetId\"));\r\n const captchaResponse = getCaptchaResponse(recaptchaWidgetId);\r\n if (captchaResponse.length === 0) {\r\n this.Notify(\"Please fill in the recaptcha.\", true);\r\n return;\r\n }\r\n formData.append(\"captchaResponse\", captchaResponse);\r\n }\r\n let submittedFromUrl = $(\"link[itemprop='mainEntityOfPage']\").attr(\"href\");\r\n if (!submittedFromUrl) {\r\n submittedFromUrl = $(\"link[rel='canonical']\").attr(\"href\");\r\n }\r\n let submittedFromTitle = $(\"h1[itemprop='headline']\").text();\r\n if (!submittedFromTitle) {\r\n submittedFromTitle = $(\"meta[itemprop='name']\").attr(\"content\");\r\n }\r\n formData.append(\"feedbackTypeKey\", feedbackTypeKey);\r\n formData.append(\"submittedFromUrl\", submittedFromUrl);\r\n formData.append(\"submittedFromTitle\", submittedFromTitle);\r\n $form.addClass(\"u-loading\");\r\n $target.addClass(\"submitting\");\r\n $.ajax({\r\n url: \"/feedback/create\",\r\n type: \"POST\",\r\n data: formData,\r\n cache: false,\r\n contentType: false,\r\n processData: false,\r\n xhr: () => {\r\n var myXhr = $.ajaxSettings.xhr();\r\n if (myXhr.upload && $fileUpload.length) {\r\n myXhr.upload.addEventListener('progress', (e) => {\r\n if (e.lengthComputable) {\r\n var p = e.loaded / e.total * 100;\r\n this.OnFileUploadProgress(p, $progress);\r\n }\r\n }, false);\r\n }\r\n return myXhr;\r\n }\r\n }).done((data) => {\r\n $form.removeClass(\"u-loading\");\r\n $target.removeClass(\"submitting\");\r\n if (data.Success) {\r\n this.Notify(data.Message, false);\r\n setTimeout(() => {\r\n this.Reset($form);\r\n $form.removeClass(\"u-hidden\");\r\n $target.removeClass(\"submitting\");\r\n Notification.RemoveNotyElements();\r\n }, 2000);\r\n $progress.addClass(\"u-hidden\");\r\n }\r\n else {\r\n this.Notify(data.Message, true);\r\n }\r\n if (this.feedbackCallback) {\r\n this.feedbackCallback(true, data.Message, feedbackTypeKey, {\r\n url: window.location.href,\r\n title: document.title\r\n });\r\n }\r\n }).fail(() => {\r\n $form.removeClass(\"u-loading\");\r\n $target.removeClass(\"submitting\");\r\n this.Notify(\"An error occurred while trying to submit feedback\", true);\r\n $progress.addClass(\"u-hidden\");\r\n if (this.feedbackCallback) {\r\n this.feedbackCallback(false, \"An error occurred while trying to submit feedback\", feedbackTypeKey, {\r\n url: window.location.href,\r\n title: document.title\r\n });\r\n }\r\n });\r\n }\r\n OnFileUploadProgress(progress, $progress) {\r\n const $progressBar = $(\".file__progress\");\r\n $progress.removeClass(\"u-hidden\");\r\n if ($progressBar.length > 0) {\r\n let uploadMessage = progress < 100 ? \"Uploading...\" : \"Upload completed successfully\";\r\n $(\".upload--progress .message\").html(uploadMessage);\r\n $progressBar.val(progress);\r\n $progressBar.html(progress + \"%\");\r\n $progressBar.attr('aria-valuenow', progress);\r\n }\r\n }\r\n ResetRecaptcha(formContainer) {\r\n try {\r\n if (!window.grecaptcha) {\r\n return;\r\n }\r\n const recaptchaWidgetId = parseInt(formContainer.find(\"div.g-recaptcha\").attr(\"data-RecaptchaWidgetId\"));\r\n resetCaptcha(recaptchaWidgetId);\r\n }\r\n catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n Notify(message, error) {\r\n if (error) {\r\n Notification.Notify(message, \"error\", \"bottomRight\");\r\n }\r\n else {\r\n Notification.Notify(message, \"success\", \"bottomRight\");\r\n }\r\n }\r\n}\r\n//# sourceMappingURL=FeedbackManager.js.map","function addPrefetch(kind, url, as) {\r\n const linkEl = document.createElement('link');\r\n linkEl.rel = kind;\r\n linkEl.href = url;\r\n if (as) {\r\n linkEl.as = as;\r\n }\r\n document.head.append(linkEl);\r\n}\r\n;\r\nfunction getPlayLabel($container) {\r\n return $container.attr('label') || 'Play';\r\n}\r\nfunction addPlayButton($container, btnClass) {\r\n const playBtnEl = document.createElement('button');\r\n playBtnEl.type = 'button';\r\n playBtnEl.title = 'play';\r\n playBtnEl.classList.add(btnClass);\r\n playBtnEl.classList.add(\"u-tos\");\r\n $container.append(playBtnEl);\r\n}\r\nfunction createIframe($container, src, title) {\r\n const iframeEl = document.createElement('iframe');\r\n iframeEl.width = \"100%\";\r\n iframeEl.height = \"100%\";\r\n iframeEl.title = title;\r\n iframeEl.allow = 'autoplay';\r\n iframeEl.src = src;\r\n iframeEl.allowFullscreen = true;\r\n $container.append(iframeEl);\r\n $container.find('iframe').focus();\r\n return iframeEl;\r\n}\r\nfunction handleYoutubeEmbed($container) {\r\n let preconnected = false;\r\n const warmConnections = () => {\r\n if (preconnected)\r\n return;\r\n addPrefetch('preconnect', 'https://www.youtube-nocookie.com');\r\n addPrefetch('preconnect', 'https://www.google.com');\r\n addPrefetch('preconnect', 'https://googleads.g.doubleclick.net');\r\n addPrefetch('preconnect', 'https://static.doubleclick.net');\r\n preconnected = true;\r\n };\r\n const addIframe = (videoId) => {\r\n const params = new URLSearchParams($container.attr('params') || []);\r\n params.append('autoplay', '1');\r\n const iframeEl = createIframe($container, `https://www.youtube-nocookie.com/embed/${encodeURIComponent(videoId)}?${params.toString()}`, getPlayLabel($container));\r\n iframeEl.allow = 'accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture';\r\n $container.addClass('lyt-activated');\r\n };\r\n const youTubeIdFromLink = (url) => url.match(/(?:https?:\\/\\/)?(?:www\\.)?youtu(?:be)?\\.(?:com|be)(?:\\/watch\\/?\\?v=|\\/embed\\/|\\/)([^\\s&]+)/)[1];\r\n addPlayButton($container, \"lty-playbtn\");\r\n $container.on('hover', () => {\r\n $container.off('hover');\r\n warmConnections();\r\n });\r\n $container.on('click', () => {\r\n $container.off('click');\r\n addIframe(youTubeIdFromLink($container.attr('src')));\r\n });\r\n}\r\nfunction handleSoundCloudEmbed($container) {\r\n let preconnected = false;\r\n const warmConnections = () => {\r\n if (preconnected)\r\n return;\r\n addPrefetch('preconnect', 'https://widget.sndcdn.com');\r\n addPrefetch('preconnect', 'https://w.soundcloud.com');\r\n preconnected = true;\r\n };\r\n const addIframe = (label, src) => {\r\n if (src.indexOf(\"autoplay\") < -1) {\r\n src += \";auto_play=true\";\r\n }\r\n else {\r\n src = src.replace(\"auto_play=false\", \"auto_play=true\");\r\n }\r\n createIframe($container, src, label);\r\n $container.addClass('scld-activated');\r\n };\r\n addPlayButton($container, \"scld-playbtn\");\r\n $container.on('hover', () => {\r\n $container.off('hover');\r\n warmConnections();\r\n });\r\n $container.on('click', () => {\r\n $container.off('click');\r\n addIframe(getPlayLabel($container), $container.attr(\"src\"));\r\n });\r\n}\r\nfunction handleACastEmbed($container) {\r\n let preconnected = false;\r\n const warmConnections = () => {\r\n if (preconnected)\r\n return;\r\n addPrefetch('preconnect', 'https://embed.acast.com');\r\n preconnected = true;\r\n };\r\n const addIframe = () => {\r\n const src = $container.attr(\"src\");\r\n const iframe = createIframe($container, src, getPlayLabel($container));\r\n iframe.scrolling = \"no\";\r\n iframe.frameBorder = \"0\";\r\n iframe.allow = \"autoplay\";\r\n window.addEventListener('message', event => {\r\n if (typeof event.data === \"string\") {\r\n try {\r\n const parsedEvent = JSON.parse(event.data);\r\n if (parsedEvent.event === \"ready\") {\r\n const srcSplit = src.split(\"/\");\r\n const componentsLength = srcSplit.length;\r\n if (componentsLength > 2) {\r\n const message = {\r\n eventName: 'postmessage:do:play',\r\n data: { show: srcSplit[componentsLength - 2], episode: srcSplit[componentsLength - 1] }\r\n };\r\n iframe.contentWindow.postMessage(JSON.stringify(message), '*');\r\n }\r\n }\r\n }\r\n catch (e) {\r\n }\r\n }\r\n }, false);\r\n };\r\n $container.on('hover', () => {\r\n $container.off('hover');\r\n warmConnections();\r\n });\r\n $container.on('click', () => {\r\n $container.off('click');\r\n addIframe();\r\n });\r\n}\r\nfunction handleDefaultIframe($container) {\r\n $container.on('click', () => {\r\n $container.off('click');\r\n const iframe = createIframe($container, $container.attr(\"src\"), getPlayLabel($container));\r\n iframe.scrolling = \"no\";\r\n iframe.frameBorder = \"0\";\r\n iframe.allow = \"autoplay\";\r\n });\r\n}\r\nexport const InitLazyEmbed = () => {\r\n $(document).ready(() => {\r\n $(\"lazy-embed\").each((idx, elem) => {\r\n const $container = $(elem);\r\n const src = $container.attr(\"src\");\r\n if ($container.attr(\"placeholder\")) {\r\n $container.css(\"backgroundImage\", `url(\"${$container.attr(\"placeholder\")}\")`);\r\n }\r\n if (src.indexOf(\"youtube\") > -1) {\r\n handleYoutubeEmbed($container);\r\n }\r\n else if (src.indexOf(\"soundcloud\") > -1) {\r\n handleSoundCloudEmbed($container);\r\n }\r\n else if (src.indexOf(\"acast\") > -1) {\r\n handleACastEmbed($container);\r\n }\r\n else {\r\n handleDefaultIframe($container);\r\n }\r\n });\r\n });\r\n};\r\n//# sourceMappingURL=LazyEmbed.js.map","import { loadDynamicScript } from \"./Util\";\r\nexport class RecaptchaManager {\r\n init(loadScript = true, userIsAuthenticated = false) {\r\n if (!userIsAuthenticated) {\r\n $(\".g-recaptcha\").each((idx, elem) => {\r\n const $captchaWrapper = $(elem);\r\n $captchaWrapper.append(\"Loading captcha...\");\r\n });\r\n if (loadScript) {\r\n this.LoadScript();\r\n }\r\n }\r\n }\r\n LoadScript() {\r\n loadDynamicScript(\"recaptcha\", \"https://www.google.com/recaptcha/api.js?onload=grecaptchaOnLoad&render=explicit\");\r\n }\r\n}\r\nglobal[\"grecaptchaOnLoad\"] = function () {\r\n try {\r\n const siteKey = document.getElementById(\"recaptchaSiteKey\").value;\r\n const captchas = document.getElementsByClassName(\"g-recaptcha\");\r\n for (let i = 0; i < captchas.length; i++) {\r\n const element = captchas[i];\r\n if (!element.getAttribute(\"data-RecaptchaWidgetId\")) {\r\n const params = { \"sitekey\": siteKey };\r\n const recaptchaWidgetId = window.grecaptcha.render(element, params);\r\n element.setAttribute(\"data-RecaptchaWidgetId\", recaptchaWidgetId.toString());\r\n }\r\n }\r\n }\r\n catch (e) {\r\n console.log(e);\r\n }\r\n};\r\nexport const getCaptchaResponse = (recaptchaWidgetId) => {\r\n if (!window.grecaptcha) {\r\n return;\r\n }\r\n return window.grecaptcha.getResponse(recaptchaWidgetId);\r\n};\r\nexport const resetCaptcha = (recaptchaWidgetId) => {\r\n if (!window.grecaptcha) {\r\n return;\r\n }\r\n try {\r\n window.grecaptcha.reset(recaptchaWidgetId);\r\n }\r\n catch (e) {\r\n }\r\n};\r\n//# sourceMappingURL=RecaptchaManager.js.map","export class BreakPoint {\r\n constructor() {\r\n this.RefreshValue();\r\n }\r\n RefreshValue() {\r\n this.Value = window.getComputedStyle(document.querySelector('body'), ':before').getPropertyValue('content').replace(/\\\"/g, '');\r\n }\r\n}\r\n//# sourceMappingURL=BreakPoint.js.map","import Noty from \"noty\";\r\nexport class Notification {\r\n static RemoveNotyElements() {\r\n $(\".noty_bar\").remove();\r\n }\r\n static Notify(text, type, layout, container, timeout = 3000, onClose = null) {\r\n this.RemoveNotyElements();\r\n const noty = new Noty({\r\n text,\r\n theme: \"relax\",\r\n type,\r\n layout,\r\n timeout: timeout || false,\r\n closeWith: [\"button\"],\r\n container,\r\n force: container ? true : false\r\n });\r\n if (onClose) {\r\n noty.on(\"afterClose\", function () {\r\n onClose();\r\n });\r\n }\r\n noty.show();\r\n return noty;\r\n }\r\n static NotifyUI(element, message, error, dismiss) {\r\n element.html(message);\r\n element.removeClass(\"alert alert--error\");\r\n element.removeClass(\"alert alert--info\");\r\n if (error) {\r\n element.addClass(\"alert alert--error\");\r\n }\r\n else if (!error && message.length > 0) {\r\n element.addClass(\"alert alert--info\");\r\n }\r\n if (dismiss) {\r\n window.setTimeout(() => {\r\n element.removeClass(\"alert alert--error\");\r\n element.removeClass(\"alert alert--info\");\r\n element.html(\"\");\r\n }, 5000);\r\n }\r\n }\r\n static NotifyModal(text, buttons) {\r\n const noty = new Noty({\r\n text,\r\n layout: \"center\",\r\n closeWith: [\"button\"],\r\n buttons,\r\n modal: true\r\n });\r\n noty.show();\r\n return noty;\r\n }\r\n}\r\n//# sourceMappingURL=Notification.js.map","export const copyToClipboard = (containerId) => {\r\n const element = document.getElementById(containerId);\r\n if (element) {\r\n const text = element.innerText || element.textContent;\r\n navigator.clipboard.writeText(text).then(() => {\r\n console.log('Content successfully copied to clipboard');\r\n }).catch(err => {\r\n console.error('Failed to copy content: ', err);\r\n });\r\n }\r\n else {\r\n console.error('Element not found: ', containerId);\r\n }\r\n};\r\nexport const copyTextToClipboard = (text) => {\r\n navigator.clipboard.writeText(text).then(() => {\r\n console.log('Text successfully copied to clipboard');\r\n }).catch(err => {\r\n console.error('Failed to copy text: ', err);\r\n });\r\n};\r\nexport const loadDynamicScript = (scriptId, url, callback, tagNameToAppendScript) => {\r\n const existingScript = document.getElementById(scriptId);\r\n if (!existingScript) {\r\n const script = document.createElement('script');\r\n script.src = url;\r\n script.id = scriptId;\r\n tagNameToAppendScript = tagNameToAppendScript || \"body\";\r\n document.getElementsByTagName(tagNameToAppendScript)[0].appendChild(script);\r\n script.onload = () => {\r\n if (callback)\r\n callback();\r\n };\r\n }\r\n if (existingScript && callback)\r\n callback();\r\n};\r\nexport const debounce = (func, timeout = 300) => {\r\n let timer;\r\n return (...args) => {\r\n clearTimeout(timer);\r\n timer = setTimeout(() => { func.apply(this, args); }, timeout);\r\n };\r\n};\r\n//# sourceMappingURL=Util.js.map","import { GetCookie } from \"./CookieControl/CookieUtil\";\r\nimport { InitLazyEmbed } from \"./LazyEmbed\";\r\nimport { debounce } from \"./Util\";\r\nimport { BreakPoint } from \"./UI/BreakPoint\";\r\nclass WebUtils {\r\n InitGlobalUtils() {\r\n this.breakPoint = new BreakPoint();\r\n $.ajaxSetup({\r\n cache: false,\r\n beforeSend: function (xhr) {\r\n const token = GetCookie(\"XSRF-TOKEN\");\r\n xhr.setRequestHeader(\"RequestVerificationToken\", token);\r\n }\r\n });\r\n InitLazyEmbed();\r\n }\r\n SetMobileMenuButtonToggle(breakpoint = 1000) {\r\n this.SetMobileMenuButtonVisibility(breakpoint);\r\n $(window).on(\"resize\", () => this.SetMobileMenuButtonVisibility(breakpoint));\r\n }\r\n SetMobileMenuButtonVisibility(breakpoint) {\r\n const $menuSelector = $(\".caller\");\r\n const $target = $(\"#\" + $menuSelector.attr(\"aria-controls\"));\r\n if ($target.length) {\r\n if ($(window).width() < breakpoint) {\r\n $menuSelector.attr(\"aria-hidden\", \"false\").attr(\"aria-expanded\", \"false\");\r\n $target.attr(\"aria-hidden\", \"true\");\r\n }\r\n else {\r\n $menuSelector.attr(\"aria-hidden\", \"true\").attr(\"aria-expanded\", \"false\");\r\n $target.attr(\"aria-hidden\", \"false\");\r\n }\r\n }\r\n }\r\n HasRecaptcha() {\r\n return !!window.grecaptcha;\r\n }\r\n InitInteractionComponents() {\r\n this.RecaptchaKey = $(\"#recaptchaSiteKey\").val();\r\n this.UpdateFormsToken();\r\n this.SetupEvents();\r\n }\r\n UpdateFormsToken() {\r\n const token = GetCookie(\"XSRF-TOKEN\");\r\n if (token) {\r\n $(\"form\").each((idx, elem) => {\r\n const $form = $(elem);\r\n if ($form.find(\"[name=__RequestVerificationToken]\").length > 0) {\r\n $form.find(\"[name=__RequestVerificationToken]\").remove();\r\n }\r\n $form.append(``);\r\n });\r\n }\r\n }\r\n RenderRecaptchas() {\r\n if (!this.RecaptchaKey || !window.grecaptcha) {\r\n return;\r\n }\r\n $(\".g-recaptcha\").each((i, e) => {\r\n this.RenderRecaptcha(e);\r\n });\r\n }\r\n RenderRecaptcha(e) {\r\n try {\r\n if (!window.grecaptcha) {\r\n return;\r\n }\r\n const $e = $(e);\r\n if (!$e.attr(\"data-RecaptchaWidgetId\")) {\r\n const params = { \"sitekey\": this.RecaptchaKey };\r\n const recaptchaWidgetId = window.grecaptcha.render((e), params);\r\n $e.attr(\"data-RecaptchaWidgetId\", recaptchaWidgetId + \"\");\r\n }\r\n }\r\n catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n ResetCaptcha(recaptchaWidgetId) {\r\n if (!window.grecaptcha) {\r\n return;\r\n }\r\n try {\r\n window.grecaptcha.reset(recaptchaWidgetId);\r\n }\r\n catch (e) {\r\n }\r\n }\r\n GetCaptchaResponse(recaptchaWidgetId) {\r\n if (!window.grecaptcha) {\r\n return;\r\n }\r\n return window.grecaptcha.getResponse(recaptchaWidgetId);\r\n }\r\n SetupEvents() {\r\n $(\"body\").on(\"click\", \"[aria-controls]\", (ev) => {\r\n const $caller = $(ev.currentTarget);\r\n if ($caller.hasClass('no-toggle-action')) {\r\n return;\r\n }\r\n const tagName = $caller.prop(\"tagName\").toLowerCase();\r\n const type = $caller.attr(\"type\");\r\n if (!(tagName === \"input\" && (type === \"checkbox\" || type === \"radio\"))) {\r\n ev.stopImmediatePropagation();\r\n ev.preventDefault();\r\n }\r\n const $target = $(\"#\" + $caller.attr(\"aria-controls\"));\r\n this.ToggleDisplay($caller, $target);\r\n });\r\n $(document).on(\"mouseup\", (ev) => {\r\n this.OnMouseUp(ev);\r\n });\r\n $(window).on(\"resize\", debounce(() => this.OnWindowResize(), 500));\r\n }\r\n OnWindowResize() {\r\n this.breakPoint.RefreshValue();\r\n }\r\n OnMouseUp(ev) {\r\n const $target = $(ev.target);\r\n if (!$target.attr(\"aria-controls\") && !$target.parent().attr(\"aria-controls\") && $target.closest(\".autoclose\").length === 0) {\r\n const $autoClosedContainer = $(\".autoclose[aria-hidden='false']\");\r\n const $caller = $(\"[aria-controls=\" + $autoClosedContainer.attr(\"id\") + \"]\");\r\n this.ToggleDisplay($caller, $autoClosedContainer);\r\n }\r\n }\r\n ToggleDisplay($caller, $target) {\r\n $(\".autoclose[aria-hidden='false']\").each((i, e) => {\r\n if (e !== $target.get(0) && $target.closest(\".autoclose\").get(0) !== e) {\r\n const $e = $(e);\r\n $e.attr(\"aria-hidden\", \"true\");\r\n $(\"[aria-controls=\" + $e.attr(\"id\") + \"]\").attr(\"aria-expanded\", \"false\");\r\n }\r\n });\r\n this.ToggleAriaExpansion($caller);\r\n if ($caller.attr(\"aria-expanded\") === \"true\") {\r\n $target.attr(\"aria-hidden\", \"false\");\r\n setTimeout(() => {\r\n $target.find(\"input[type=text],input[type=search],input[type=email]\").first().trigger(\"focus\");\r\n }, 300);\r\n }\r\n else {\r\n $target.attr(\"aria-hidden\", \"true\");\r\n }\r\n }\r\n ToggleAriaExpansion($element) {\r\n if ($element.attr(\"aria-expanded\") === \"true\") {\r\n $element.attr(\"aria-expanded\", \"false\");\r\n }\r\n else {\r\n $element.attr(\"aria-expanded\", \"true\");\r\n }\r\n }\r\n SetUpVideoPlayer($container) {\r\n const videos = $container.find(\"video:visible\");\r\n if (videos.length) {\r\n videos.mediaelementplayer({\r\n startLanguage: 'en'\r\n });\r\n }\r\n }\r\n}\r\nexport const WebAppUtils = new WebUtils();\r\n//# sourceMappingURL=WebApplicationHelper.js.map","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\tif ($defineProperty) {\n\t\ttry {\n\t\t\t$defineProperty({}, 'a', { value: 1 });\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\t// IE 8 has a broken defineProperty\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!hasPropertyDescriptors()) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar has;\nvar $exec;\nvar isRegexMarker;\nvar badStringifier;\n\nif (hasToStringTag) {\n\thas = callBound('Object.prototype.hasOwnProperty');\n\t$exec = callBound('RegExp.prototype.exec');\n\tisRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\tbadStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n}\n\nvar $toString = callBound('Object.prototype.toString');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar regexClass = '[object RegExp]';\n\nmodule.exports = hasToStringTag\n\t// eslint-disable-next-line consistent-return\n\t? function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar descriptor = gOPD(value, 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t$exec(value, badStringifier);\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t}\n\t: function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n","'use strict';\n\nvar strValue = String.prototype.valueOf;\nvar tryStringObject = function tryStringObject(value) {\n\ttry {\n\t\tstrValue.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar strClass = '[object String]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isString(value) {\n\tif (typeof value === 'string') {\n\t\treturn true;\n\t}\n\tif (typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryStringObject(value) : toStr.call(value) === strClass;\n};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar hasSymbols = require('has-symbols')();\n\nif (hasSymbols) {\n\tvar symToStr = Symbol.prototype.toString;\n\tvar symStringRegex = /^Symbol\\(.*\\)$/;\n\tvar isSymbolObject = function isRealSymbolObject(value) {\n\t\tif (typeof value.valueOf() !== 'symbol') {\n\t\t\treturn false;\n\t\t}\n\t\treturn symStringRegex.test(symToStr.call(value));\n\t};\n\n\tmodule.exports = function isSymbol(value) {\n\t\tif (typeof value === 'symbol') {\n\t\t\treturn true;\n\t\t}\n\t\tif (toStr.call(value) !== '[object Symbol]') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\treturn isSymbolObject(value);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n} else {\n\n\tmodule.exports = function isSymbol(value) {\n\t\t// this environment does not support Symbols.\n\t\treturn false && value;\n\t};\n}\n","/*!\n * jQuery Validation Plugin v1.20.0\n *\n * https://jqueryvalidation.org/\n *\n * Copyright (c) 2023 Jörn Zaefferer\n * Released under the MIT license\n */\n(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n$.extend( $.fn, {\n\n\t// https://jqueryvalidation.org/validate/\n\tvalidate: function( options ) {\n\n\t\t// If nothing is selected, return nothing; can't chain anyway\n\t\tif ( !this.length ) {\n\t\t\tif ( options && options.debug && window.console ) {\n\t\t\t\tconsole.warn( \"Nothing selected, can't validate, returning nothing.\" );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if a validator for this form was already created\n\t\tvar validator = $.data( this[ 0 ], \"validator\" );\n\t\tif ( validator ) {\n\t\t\treturn validator;\n\t\t}\n\n\t\t// Add novalidate tag if HTML5.\n\t\tthis.attr( \"novalidate\", \"novalidate\" );\n\n\t\tvalidator = new $.validator( options, this[ 0 ] );\n\t\t$.data( this[ 0 ], \"validator\", validator );\n\n\t\tif ( validator.settings.onsubmit ) {\n\n\t\t\tthis.on( \"click.validate\", \":submit\", function( event ) {\n\n\t\t\t\t// Track the used submit button to properly handle scripted\n\t\t\t\t// submits later.\n\t\t\t\tvalidator.submitButton = event.currentTarget;\n\n\t\t\t\t// Allow suppressing validation by adding a cancel class to the submit button\n\t\t\t\tif ( $( this ).hasClass( \"cancel\" ) ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\n\t\t\t\t// Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\n\t\t\t\tif ( $( this ).attr( \"formnovalidate\" ) !== undefined ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Validate the form on submit\n\t\t\tthis.on( \"submit.validate\", function( event ) {\n\t\t\t\tif ( validator.settings.debug ) {\n\n\t\t\t\t\t// Prevent form submit to be able to see console output\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\n\t\t\t\tfunction handle() {\n\t\t\t\t\tvar hidden, result;\n\n\t\t\t\t\t// Insert a hidden input as a replacement for the missing submit button\n\t\t\t\t\t// The hidden input is inserted in two cases:\n\t\t\t\t\t// - A user defined a `submitHandler`\n\t\t\t\t\t// - There was a pending request due to `remote` method and `stopRequest()`\n\t\t\t\t\t// was called to submit the form in case it's valid\n\t\t\t\t\tif ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {\n\t\t\t\t\t\thidden = $( \"\" )\n\t\t\t\t\t\t\t.attr( \"name\", validator.submitButton.name )\n\t\t\t\t\t\t\t.val( $( validator.submitButton ).val() )\n\t\t\t\t\t\t\t.appendTo( validator.currentForm );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( validator.settings.submitHandler && !validator.settings.debug ) {\n\t\t\t\t\t\tresult = validator.settings.submitHandler.call( validator, validator.currentForm, event );\n\t\t\t\t\t\tif ( hidden ) {\n\n\t\t\t\t\t\t\t// And clean up afterwards; thanks to no-block-scope, hidden can be referenced\n\t\t\t\t\t\t\thidden.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( result !== undefined ) {\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// Prevent submit for invalid forms or custom submit handlers\n\t\t\t\tif ( validator.cancelSubmit ) {\n\t\t\t\t\tvalidator.cancelSubmit = false;\n\t\t\t\t\treturn handle();\n\t\t\t\t}\n\t\t\t\tif ( validator.form() ) {\n\t\t\t\t\tif ( validator.pendingRequest ) {\n\t\t\t\t\t\tvalidator.formSubmitted = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn handle();\n\t\t\t\t} else {\n\t\t\t\t\tvalidator.focusInvalid();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn validator;\n\t},\n\n\t// https://jqueryvalidation.org/valid/\n\tvalid: function() {\n\t\tvar valid, validator, errorList;\n\n\t\tif ( $( this[ 0 ] ).is( \"form\" ) ) {\n\t\t\tvalid = this.validate().form();\n\t\t} else {\n\t\t\terrorList = [];\n\t\t\tvalid = true;\n\t\t\tvalidator = $( this[ 0 ].form ).validate();\n\t\t\tthis.each( function() {\n\t\t\t\tvalid = validator.element( this ) && valid;\n\t\t\t\tif ( !valid ) {\n\t\t\t\t\terrorList = errorList.concat( validator.errorList );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tvalidator.errorList = errorList;\n\t\t}\n\t\treturn valid;\n\t},\n\n\t// https://jqueryvalidation.org/rules/\n\trules: function( command, argument ) {\n\t\tvar element = this[ 0 ],\n\t\t\tisContentEditable = typeof this.attr( \"contenteditable\" ) !== \"undefined\" && this.attr( \"contenteditable\" ) !== \"false\",\n\t\t\tsettings, staticRules, existingRules, data, param, filtered;\n\n\t\t// If nothing is selected, return empty object; can't chain anyway\n\t\tif ( element == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !element.form && isContentEditable ) {\n\t\t\telement.form = this.closest( \"form\" )[ 0 ];\n\t\t\telement.name = this.attr( \"name\" );\n\t\t}\n\n\t\tif ( element.form == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( command ) {\n\t\t\tsettings = $.data( element.form, \"validator\" ).settings;\n\t\t\tstaticRules = settings.rules;\n\t\t\texistingRules = $.validator.staticRules( element );\n\t\t\tswitch ( command ) {\n\t\t\tcase \"add\":\n\t\t\t\t$.extend( existingRules, $.validator.normalizeRule( argument ) );\n\n\t\t\t\t// Remove messages from rules, but allow them to be set separately\n\t\t\t\tdelete existingRules.messages;\n\t\t\t\tstaticRules[ element.name ] = existingRules;\n\t\t\t\tif ( argument.messages ) {\n\t\t\t\t\tsettings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"remove\":\n\t\t\t\tif ( !argument ) {\n\t\t\t\t\tdelete staticRules[ element.name ];\n\t\t\t\t\treturn existingRules;\n\t\t\t\t}\n\t\t\t\tfiltered = {};\n\t\t\t\t$.each( argument.split( /\\s/ ), function( index, method ) {\n\t\t\t\t\tfiltered[ method ] = existingRules[ method ];\n\t\t\t\t\tdelete existingRules[ method ];\n\t\t\t\t} );\n\t\t\t\treturn filtered;\n\t\t\t}\n\t\t}\n\n\t\tdata = $.validator.normalizeRules(\n\t\t$.extend(\n\t\t\t{},\n\t\t\t$.validator.classRules( element ),\n\t\t\t$.validator.attributeRules( element ),\n\t\t\t$.validator.dataRules( element ),\n\t\t\t$.validator.staticRules( element )\n\t\t), element );\n\n\t\t// Make sure required is at front\n\t\tif ( data.required ) {\n\t\t\tparam = data.required;\n\t\t\tdelete data.required;\n\t\t\tdata = $.extend( { required: param }, data );\n\t\t}\n\n\t\t// Make sure remote is at back\n\t\tif ( data.remote ) {\n\t\t\tparam = data.remote;\n\t\t\tdelete data.remote;\n\t\t\tdata = $.extend( data, { remote: param } );\n\t\t}\n\n\t\treturn data;\n\t}\n} );\n\n// JQuery trim is deprecated, provide a trim method based on String.prototype.trim\nvar trim = function( str ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim#Polyfill\n\treturn str.replace( /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\" );\n};\n\n// Custom selectors\n$.extend( $.expr.pseudos || $.expr[ \":\" ], {\t\t// '|| $.expr[ \":\" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support\n\n\t// https://jqueryvalidation.org/blank-selector/\n\tblank: function( a ) {\n\t\treturn !trim( \"\" + $( a ).val() );\n\t},\n\n\t// https://jqueryvalidation.org/filled-selector/\n\tfilled: function( a ) {\n\t\tvar val = $( a ).val();\n\t\treturn val !== null && !!trim( \"\" + val );\n\t},\n\n\t// https://jqueryvalidation.org/unchecked-selector/\n\tunchecked: function( a ) {\n\t\treturn !$( a ).prop( \"checked\" );\n\t}\n} );\n\n// Constructor for validator\n$.validator = function( options, form ) {\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\n\tthis.currentForm = form;\n\tthis.init();\n};\n\n// https://jqueryvalidation.org/jQuery.validator.format/\n$.validator.format = function( source, params ) {\n\tif ( arguments.length === 1 ) {\n\t\treturn function() {\n\t\t\tvar args = $.makeArray( arguments );\n\t\t\targs.unshift( source );\n\t\t\treturn $.validator.format.apply( this, args );\n\t\t};\n\t}\n\tif ( params === undefined ) {\n\t\treturn source;\n\t}\n\tif ( arguments.length > 2 && params.constructor !== Array ) {\n\t\tparams = $.makeArray( arguments ).slice( 1 );\n\t}\n\tif ( params.constructor !== Array ) {\n\t\tparams = [ params ];\n\t}\n\t$.each( params, function( i, n ) {\n\t\tsource = source.replace( new RegExp( \"\\\\{\" + i + \"\\\\}\", \"g\" ), function() {\n\t\t\treturn n;\n\t\t} );\n\t} );\n\treturn source;\n};\n\n$.extend( $.validator, {\n\n\tdefaults: {\n\t\tmessages: {},\n\t\tgroups: {},\n\t\trules: {},\n\t\terrorClass: \"error\",\n\t\tpendingClass: \"pending\",\n\t\tvalidClass: \"valid\",\n\t\terrorElement: \"label\",\n\t\tfocusCleanup: false,\n\t\tfocusInvalid: true,\n\t\terrorContainer: $( [] ),\n\t\terrorLabelContainer: $( [] ),\n\t\tonsubmit: true,\n\t\tignore: \":hidden\",\n\t\tignoreTitle: false,\n\t\tonfocusin: function( element ) {\n\t\t\tthis.lastActive = element;\n\n\t\t\t// Hide error label and remove error class on focus if enabled\n\t\t\tif ( this.settings.focusCleanup ) {\n\t\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.hideThese( this.errorsFor( element ) );\n\t\t\t}\n\t\t},\n\t\tonfocusout: function( element ) {\n\t\t\tif ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonkeyup: function( element, event ) {\n\n\t\t\t// Avoid revalidate the field when pressing one of the following keys\n\t\t\t// Shift => 16\n\t\t\t// Ctrl => 17\n\t\t\t// Alt => 18\n\t\t\t// Caps lock => 20\n\t\t\t// End => 35\n\t\t\t// Home => 36\n\t\t\t// Left arrow => 37\n\t\t\t// Up arrow => 38\n\t\t\t// Right arrow => 39\n\t\t\t// Down arrow => 40\n\t\t\t// Insert => 45\n\t\t\t// Num lock => 144\n\t\t\t// AltGr key => 225\n\t\t\tvar excludedKeys = [\n\t\t\t\t16, 17, 18, 20, 35, 36, 37,\n\t\t\t\t38, 39, 40, 45, 144, 225\n\t\t\t];\n\n\t\t\tif ( event.which === 9 && this.elementValue( element ) === \"\" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t} else if ( element.name in this.submitted || element.name in this.invalid ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonclick: function( element ) {\n\n\t\t\t// Click on selects, radiobuttons and checkboxes\n\t\t\tif ( element.name in this.submitted ) {\n\t\t\t\tthis.element( element );\n\n\t\t\t// Or option elements, check parent select in that case\n\t\t\t} else if ( element.parentNode.name in this.submitted ) {\n\t\t\t\tthis.element( element.parentNode );\n\t\t\t}\n\t\t},\n\t\thighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).addClass( errorClass ).removeClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).addClass( errorClass ).removeClass( validClass );\n\t\t\t}\n\t\t},\n\t\tunhighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).removeClass( errorClass ).addClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).removeClass( errorClass ).addClass( validClass );\n\t\t\t}\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.setDefaults/\n\tsetDefaults: function( settings ) {\n\t\t$.extend( $.validator.defaults, settings );\n\t},\n\n\tmessages: {\n\t\trequired: \"This field is required.\",\n\t\tremote: \"Please fix this field.\",\n\t\temail: \"Please enter a valid email address.\",\n\t\turl: \"Please enter a valid URL.\",\n\t\tdate: \"Please enter a valid date.\",\n\t\tdateISO: \"Please enter a valid date (ISO).\",\n\t\tnumber: \"Please enter a valid number.\",\n\t\tdigits: \"Please enter only digits.\",\n\t\tequalTo: \"Please enter the same value again.\",\n\t\tmaxlength: $.validator.format( \"Please enter no more than {0} characters.\" ),\n\t\tminlength: $.validator.format( \"Please enter at least {0} characters.\" ),\n\t\trangelength: $.validator.format( \"Please enter a value between {0} and {1} characters long.\" ),\n\t\trange: $.validator.format( \"Please enter a value between {0} and {1}.\" ),\n\t\tmax: $.validator.format( \"Please enter a value less than or equal to {0}.\" ),\n\t\tmin: $.validator.format( \"Please enter a value greater than or equal to {0}.\" ),\n\t\tstep: $.validator.format( \"Please enter a multiple of {0}.\" )\n\t},\n\n\tautoCreateRanges: false,\n\n\tprototype: {\n\n\t\tinit: function() {\n\t\t\tthis.labelContainer = $( this.settings.errorLabelContainer );\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );\n\t\t\tthis.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );\n\t\t\tthis.submitted = {};\n\t\t\tthis.valueCache = {};\n\t\t\tthis.pendingRequest = 0;\n\t\t\tthis.pending = {};\n\t\t\tthis.invalid = {};\n\t\t\tthis.reset();\n\n\t\t\tvar currentForm = this.currentForm,\n\t\t\t\tgroups = ( this.groups = {} ),\n\t\t\t\trules;\n\t\t\t$.each( this.settings.groups, function( key, value ) {\n\t\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\t\tvalue = value.split( /\\s/ );\n\t\t\t\t}\n\t\t\t\t$.each( value, function( index, name ) {\n\t\t\t\t\tgroups[ name ] = key;\n\t\t\t\t} );\n\t\t\t} );\n\t\t\trules = this.settings.rules;\n\t\t\t$.each( rules, function( key, value ) {\n\t\t\t\trules[ key ] = $.validator.normalizeRule( value );\n\t\t\t} );\n\n\t\t\tfunction delegate( event ) {\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( !this.form && isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = $( this ).attr( \"name\" );\n\t\t\t\t}\n\n\t\t\t\t// Ignore the element if it belongs to another form. This will happen mainly\n\t\t\t\t// when setting the `form` attribute of an input to the id of another form.\n\t\t\t\tif ( currentForm !== this.form ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar validator = $.data( this.form, \"validator\" ),\n\t\t\t\t\teventType = \"on\" + event.type.replace( /^validate/, \"\" ),\n\t\t\t\t\tsettings = validator.settings;\n\t\t\t\tif ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {\n\t\t\t\t\tsettings[ eventType ].call( validator, this, event );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.on( \"focusin.validate focusout.validate keyup.validate\",\n\t\t\t\t\t\":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], \" +\n\t\t\t\t\t\"[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], \" +\n\t\t\t\t\t\"[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], \" +\n\t\t\t\t\t\"[type='radio'], [type='checkbox'], [contenteditable], [type='button']\", delegate )\n\n\t\t\t\t// Support: Chrome, oldIE\n\t\t\t\t// \"select\" is provided as event.target when clicking a option\n\t\t\t\t.on( \"click.validate\", \"select, option, [type='radio'], [type='checkbox']\", delegate );\n\n\t\t\tif ( this.settings.invalidHandler ) {\n\t\t\t\t$( this.currentForm ).on( \"invalid-form.validate\", this.settings.invalidHandler );\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.form/\n\t\tform: function() {\n\t\t\tthis.checkForm();\n\t\t\t$.extend( this.submitted, this.errorMap );\n\t\t\tthis.invalid = $.extend( {}, this.errorMap );\n\t\t\tif ( !this.valid() ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn this.valid();\n\t\t},\n\n\t\tcheckForm: function() {\n\t\t\tthis.prepareForm();\n\t\t\tfor ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {\n\t\t\t\tthis.check( elements[ i ] );\n\t\t\t}\n\t\t\treturn this.valid();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.element/\n\t\telement: function( element ) {\n\t\t\tvar cleanElement = this.clean( element ),\n\t\t\t\tcheckElement = this.validationTargetFor( cleanElement ),\n\t\t\t\tv = this,\n\t\t\t\tresult = true,\n\t\t\t\trs, group;\n\n\t\t\tif ( checkElement === undefined ) {\n\t\t\t\tdelete this.invalid[ cleanElement.name ];\n\t\t\t} else {\n\t\t\t\tthis.prepareElement( checkElement );\n\t\t\t\tthis.currentElements = $( checkElement );\n\n\t\t\t\t// If this element is grouped, then validate all group elements already\n\t\t\t\t// containing a value\n\t\t\t\tgroup = this.groups[ checkElement.name ];\n\t\t\t\tif ( group ) {\n\t\t\t\t\t$.each( this.groups, function( name, testgroup ) {\n\t\t\t\t\t\tif ( testgroup === group && name !== checkElement.name ) {\n\t\t\t\t\t\t\tcleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );\n\t\t\t\t\t\t\tif ( cleanElement && cleanElement.name in v.invalid ) {\n\t\t\t\t\t\t\t\tv.currentElements.push( cleanElement );\n\t\t\t\t\t\t\t\tresult = v.check( cleanElement ) && result;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\trs = this.check( checkElement ) !== false;\n\t\t\t\tresult = result && rs;\n\t\t\t\tif ( rs ) {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = false;\n\t\t\t\t} else {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = true;\n\t\t\t\t}\n\n\t\t\t\tif ( !this.numberOfInvalids() ) {\n\n\t\t\t\t\t// Hide error containers on last error\n\t\t\t\t\tthis.toHide = this.toHide.add( this.containers );\n\t\t\t\t}\n\t\t\t\tthis.showErrors();\n\n\t\t\t\t// Add aria-invalid status for screen readers\n\t\t\t\t$( element ).attr( \"aria-invalid\", !rs );\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.showErrors/\n\t\tshowErrors: function( errors ) {\n\t\t\tif ( errors ) {\n\t\t\t\tvar validator = this;\n\n\t\t\t\t// Add items to error list and map\n\t\t\t\t$.extend( this.errorMap, errors );\n\t\t\t\tthis.errorList = $.map( this.errorMap, function( message, name ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\telement: validator.findByName( name )[ 0 ]\n\t\t\t\t\t};\n\t\t\t\t} );\n\n\t\t\t\t// Remove items from success list\n\t\t\t\tthis.successList = $.grep( this.successList, function( element ) {\n\t\t\t\t\treturn !( element.name in errors );\n\t\t\t\t} );\n\t\t\t}\n\t\t\tif ( this.settings.showErrors ) {\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\n\t\t\t} else {\n\t\t\t\tthis.defaultShowErrors();\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.resetForm/\n\t\tresetForm: function() {\n\t\t\tif ( $.fn.resetForm ) {\n\t\t\t\t$( this.currentForm ).resetForm();\n\t\t\t}\n\t\t\tthis.invalid = {};\n\t\t\tthis.submitted = {};\n\t\t\tthis.prepareForm();\n\t\t\tthis.hideErrors();\n\t\t\tvar elements = this.elements()\n\t\t\t\t.removeData( \"previousValue\" )\n\t\t\t\t.removeAttr( \"aria-invalid\" );\n\n\t\t\tthis.resetElements( elements );\n\t\t},\n\n\t\tresetElements: function( elements ) {\n\t\t\tvar i;\n\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0; elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ],\n\t\t\t\t\t\tthis.settings.errorClass, \"\" );\n\t\t\t\t\tthis.findByName( elements[ i ].name ).removeClass( this.settings.validClass );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\telements\n\t\t\t\t\t.removeClass( this.settings.errorClass )\n\t\t\t\t\t.removeClass( this.settings.validClass );\n\t\t\t}\n\t\t},\n\n\t\tnumberOfInvalids: function() {\n\t\t\treturn this.objectLength( this.invalid );\n\t\t},\n\n\t\tobjectLength: function( obj ) {\n\t\t\t/* jshint unused: false */\n\t\t\tvar count = 0,\n\t\t\t\ti;\n\t\t\tfor ( i in obj ) {\n\n\t\t\t\t// This check allows counting elements with empty error\n\t\t\t\t// message as invalid elements\n\t\t\t\tif ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\thideErrors: function() {\n\t\t\tthis.hideThese( this.toHide );\n\t\t},\n\n\t\thideThese: function( errors ) {\n\t\t\terrors.not( this.containers ).text( \"\" );\n\t\t\tthis.addWrapper( errors ).hide();\n\t\t},\n\n\t\tvalid: function() {\n\t\t\treturn this.size() === 0;\n\t\t},\n\n\t\tsize: function() {\n\t\t\treturn this.errorList.length;\n\t\t},\n\n\t\tfocusInvalid: function() {\n\t\t\tif ( this.settings.focusInvalid ) {\n\t\t\t\ttry {\n\t\t\t\t\t$( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )\n\t\t\t\t\t.filter( \":visible\" )\n\t\t\t\t\t.trigger( \"focus\" )\n\n\t\t\t\t\t// Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\n\t\t\t\t\t.trigger( \"focusin\" );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// Ignore IE throwing errors when focusing hidden elements\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfindLastActive: function() {\n\t\t\tvar lastActive = this.lastActive;\n\t\t\treturn lastActive && $.grep( this.errorList, function( n ) {\n\t\t\t\treturn n.element.name === lastActive.name;\n\t\t\t} ).length === 1 && lastActive;\n\t\t},\n\n\t\telements: function() {\n\t\t\tvar validator = this,\n\t\t\t\trulesCache = {};\n\n\t\t\t// Select all valid inputs inside the form (no submit or reset buttons)\n\t\t\treturn $( this.currentForm )\n\t\t\t.find( \"input, select, textarea, [contenteditable]\" )\n\t\t\t.not( \":submit, :reset, :image, :disabled\" )\n\t\t\t.not( this.settings.ignore )\n\t\t\t.filter( function() {\n\t\t\t\tvar name = this.name || $( this ).attr( \"name\" ); // For contenteditable\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\tif ( !name && validator.settings.debug && window.console ) {\n\t\t\t\t\tconsole.error( \"%o has no name assigned\", this );\n\t\t\t\t}\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = name;\n\t\t\t\t}\n\n\t\t\t\t// Ignore elements that belong to other/nested forms\n\t\t\t\tif ( this.form !== validator.currentForm ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Select only the first element for each name, and only those with rules specified\n\t\t\t\tif ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\trulesCache[ name ] = true;\n\t\t\t\treturn true;\n\t\t\t} );\n\t\t},\n\n\t\tclean: function( selector ) {\n\t\t\treturn $( selector )[ 0 ];\n\t\t},\n\n\t\terrors: function() {\n\t\t\tvar errorClass = this.settings.errorClass.split( \" \" ).join( \".\" );\n\t\t\treturn $( this.settings.errorElement + \".\" + errorClass, this.errorContext );\n\t\t},\n\n\t\tresetInternals: function() {\n\t\t\tthis.successList = [];\n\t\t\tthis.errorList = [];\n\t\t\tthis.errorMap = {};\n\t\t\tthis.toShow = $( [] );\n\t\t\tthis.toHide = $( [] );\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.resetInternals();\n\t\t\tthis.currentElements = $( [] );\n\t\t},\n\n\t\tprepareForm: function() {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errors().add( this.containers );\n\t\t},\n\n\t\tprepareElement: function( element ) {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errorsFor( element );\n\t\t},\n\n\t\telementValue: function( element ) {\n\t\t\tvar $element = $( element ),\n\t\t\t\ttype = element.type,\n\t\t\t\tisContentEditable = typeof $element.attr( \"contenteditable\" ) !== \"undefined\" && $element.attr( \"contenteditable\" ) !== \"false\",\n\t\t\t\tval, idx;\n\n\t\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).val();\n\t\t\t} else if ( type === \"number\" && typeof element.validity !== \"undefined\" ) {\n\t\t\t\treturn element.validity.badInput ? \"NaN\" : $element.val();\n\t\t\t}\n\n\t\t\tif ( isContentEditable ) {\n\t\t\t\tval = $element.text();\n\t\t\t} else {\n\t\t\t\tval = $element.val();\n\t\t\t}\n\n\t\t\tif ( type === \"file\" ) {\n\n\t\t\t\t// Modern browser (chrome & safari)\n\t\t\t\tif ( val.substr( 0, 12 ) === \"C:\\\\fakepath\\\\\" ) {\n\t\t\t\t\treturn val.substr( 12 );\n\t\t\t\t}\n\n\t\t\t\t// Legacy browsers\n\t\t\t\t// Unix-based path\n\t\t\t\tidx = val.lastIndexOf( \"/\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Windows-based path\n\t\t\t\tidx = val.lastIndexOf( \"\\\\\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Just the file name\n\t\t\t\treturn val;\n\t\t\t}\n\n\t\t\tif ( typeof val === \"string\" ) {\n\t\t\t\treturn val.replace( /\\r/g, \"\" );\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\n\t\tcheck: function( element ) {\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\n\t\t\tvar rules = $( element ).rules(),\n\t\t\t\trulesCount = $.map( rules, function( n, i ) {\n\t\t\t\t\treturn i;\n\t\t\t\t} ).length,\n\t\t\t\tdependencyMismatch = false,\n\t\t\t\tval = this.elementValue( element ),\n\t\t\t\tresult, method, rule, normalizer;\n\n\t\t\t// Abort any pending Ajax request from a previous call to this method.\n\t\t\tthis.abortRequest( element );\n\n\t\t\t// Prioritize the local normalizer defined for this element over the global one\n\t\t\t// if the former exists, otherwise user the global one in case it exists.\n\t\t\tif ( typeof rules.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = rules.normalizer;\n\t\t\t} else if (\ttypeof this.settings.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = this.settings.normalizer;\n\t\t\t}\n\n\t\t\t// If normalizer is defined, then call it to retreive the changed value instead\n\t\t\t// of using the real one.\n\t\t\t// Note that `this` in the normalizer is `element`.\n\t\t\tif ( normalizer ) {\n\t\t\t\tval = normalizer.call( element, val );\n\n\t\t\t\t// Delete the normalizer from rules to avoid treating it as a pre-defined method.\n\t\t\t\tdelete rules.normalizer;\n\t\t\t}\n\n\t\t\tfor ( method in rules ) {\n\t\t\t\trule = { method: method, parameters: rules[ method ] };\n\t\t\t\ttry {\n\t\t\t\t\tresult = $.validator.methods[ method ].call( this, val, element, rule.parameters );\n\n\t\t\t\t\t// If a method indicates that the field is optional and therefore valid,\n\t\t\t\t\t// don't mark it as valid when there are no other rules\n\t\t\t\t\tif ( result === \"dependency-mismatch\" && rulesCount === 1 ) {\n\t\t\t\t\t\tdependencyMismatch = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdependencyMismatch = false;\n\n\t\t\t\t\tif ( result === \"pending\" ) {\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor( element ) );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !result ) {\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.log( \"Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\", e );\n\t\t\t\t\t}\n\t\t\t\t\tif ( e instanceof TypeError ) {\n\t\t\t\t\t\te.message += \". Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\";\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( dependencyMismatch ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( this.objectLength( rules ) ) {\n\t\t\t\tthis.successList.push( element );\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t// Return the custom message for the given element and validation method\n\t\t// specified in the element's HTML5 data attribute\n\t\t// return the generic message if present and no method specific message is present\n\t\tcustomDataMessage: function( element, method ) {\n\t\t\treturn $( element ).data( \"msg\" + method.charAt( 0 ).toUpperCase() +\n\t\t\t\tmethod.substring( 1 ).toLowerCase() ) || $( element ).data( \"msg\" );\n\t\t},\n\n\t\t// Return the custom message for the given element name and validation method\n\t\tcustomMessage: function( name, method ) {\n\t\t\tvar m = this.settings.messages[ name ];\n\t\t\treturn m && ( m.constructor === String ? m : m[ method ] );\n\t\t},\n\n\t\t// Return the first defined argument, allowing empty strings\n\t\tfindDefined: function() {\n\t\t\tfor ( var i = 0; i < arguments.length; i++ ) {\n\t\t\t\tif ( arguments[ i ] !== undefined ) {\n\t\t\t\t\treturn arguments[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\n\t\t// The second parameter 'rule' used to be a string, and extended to an object literal\n\t\t// of the following form:\n\t\t// rule = {\n\t\t// method: \"method name\",\n\t\t// parameters: \"the given method parameters\"\n\t\t// }\n\t\t//\n\t\t// The old behavior still supported, kept to maintain backward compatibility with\n\t\t// old code, and will be removed in the next major release.\n\t\tdefaultMessage: function( element, rule ) {\n\t\t\tif ( typeof rule === \"string\" ) {\n\t\t\t\trule = { method: rule };\n\t\t\t}\n\n\t\t\tvar message = this.findDefined(\n\t\t\t\t\tthis.customMessage( element.name, rule.method ),\n\t\t\t\t\tthis.customDataMessage( element, rule.method ),\n\n\t\t\t\t\t// 'title' is never undefined, so handle empty string as undefined\n\t\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\n\t\t\t\t\t$.validator.messages[ rule.method ],\n\t\t\t\t\t\"Warning: No message defined for \" + element.name + \"\"\n\t\t\t\t),\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\n\t\t\tif ( typeof message === \"function\" ) {\n\t\t\t\tmessage = message.call( this, rule.parameters, element );\n\t\t\t} else if ( theregex.test( message ) ) {\n\t\t\t\tmessage = $.validator.format( message.replace( theregex, \"{$1}\" ), rule.parameters );\n\t\t\t}\n\n\t\t\treturn message;\n\t\t},\n\n\t\tformatAndAdd: function( element, rule ) {\n\t\t\tvar message = this.defaultMessage( element, rule );\n\n\t\t\tthis.errorList.push( {\n\t\t\t\tmessage: message,\n\t\t\t\telement: element,\n\t\t\t\tmethod: rule.method\n\t\t\t} );\n\n\t\t\tthis.errorMap[ element.name ] = message;\n\t\t\tthis.submitted[ element.name ] = message;\n\t\t},\n\n\t\taddWrapper: function( toToggle ) {\n\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\n\t\t\t}\n\t\t\treturn toToggle;\n\t\t},\n\n\t\tdefaultShowErrors: function() {\n\t\t\tvar i, elements, error;\n\t\t\tfor ( i = 0; this.errorList[ i ]; i++ ) {\n\t\t\t\terror = this.errorList[ i ];\n\t\t\t\tif ( this.settings.highlight ) {\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.showLabel( error.element, error.message );\n\t\t\t}\n\t\t\tif ( this.errorList.length ) {\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\n\t\t\t}\n\t\t\tif ( this.settings.success ) {\n\t\t\t\tfor ( i = 0; this.successList[ i ]; i++ ) {\n\t\t\t\t\tthis.showLabel( this.successList[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\n\t\t\tthis.hideErrors();\n\t\t\tthis.addWrapper( this.toShow ).show();\n\t\t},\n\n\t\tvalidElements: function() {\n\t\t\treturn this.currentElements.not( this.invalidElements() );\n\t\t},\n\n\t\tinvalidElements: function() {\n\t\t\treturn $( this.errorList ).map( function() {\n\t\t\t\treturn this.element;\n\t\t\t} );\n\t\t},\n\n\t\tshowLabel: function( element, message ) {\n\t\t\tvar place, group, errorID, v,\n\t\t\t\terror = this.errorsFor( element ),\n\t\t\t\telementID = this.idOrName( element ),\n\t\t\t\tdescribedBy = $( element ).attr( \"aria-describedby\" );\n\n\t\t\tif ( error.length ) {\n\n\t\t\t\t// Refresh error/success class\n\t\t\t\terror.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\n\n\t\t\t\t// Replace message on existing label\n\t\t\t\tif ( this.settings && this.settings.escapeHtml ) {\n\t\t\t\t\terror.text( message || \"\" );\n\t\t\t\t} else {\n\t\t\t\t\terror.html( message || \"\" );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Create error element\n\t\t\t\terror = $( \"<\" + this.settings.errorElement + \">\" )\n\t\t\t\t\t.attr( \"id\", elementID + \"-error\" )\n\t\t\t\t\t.addClass( this.settings.errorClass );\n\n\t\t\t\tif ( this.settings && this.settings.escapeHtml ) {\n\t\t\t\t\terror.text( message || \"\" );\n\t\t\t\t} else {\n\t\t\t\t\terror.html( message || \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Maintain reference to the element to be placed into the DOM\n\t\t\t\tplace = error;\n\t\t\t\tif ( this.settings.wrapper ) {\n\n\t\t\t\t\t// Make sure the element is visible, even in IE\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\n\t\t\t\t\tplace = error.hide().show().wrap( \"<\" + this.settings.wrapper + \"/>\" ).parent();\n\t\t\t\t}\n\t\t\t\tif ( this.labelContainer.length ) {\n\t\t\t\t\tthis.labelContainer.append( place );\n\t\t\t\t} else if ( this.settings.errorPlacement ) {\n\t\t\t\t\tthis.settings.errorPlacement.call( this, place, $( element ) );\n\t\t\t\t} else {\n\t\t\t\t\tplace.insertAfter( element );\n\t\t\t\t}\n\n\t\t\t\t// Link error back to the element\n\t\t\t\tif ( error.is( \"label\" ) ) {\n\n\t\t\t\t\t// If the error is a label, then associate using 'for'\n\t\t\t\t\terror.attr( \"for\", elementID );\n\n\t\t\t\t\t// If the element is not a child of an associated label, then it's necessary\n\t\t\t\t\t// to explicitly apply aria-describedby\n\t\t\t\t} else if ( error.parents( \"label[for='\" + this.escapeCssMeta( elementID ) + \"']\" ).length === 0 ) {\n\t\t\t\t\terrorID = error.attr( \"id\" );\n\n\t\t\t\t\t// Respect existing non-error aria-describedby\n\t\t\t\t\tif ( !describedBy ) {\n\t\t\t\t\t\tdescribedBy = errorID;\n\t\t\t\t\t} else if ( !describedBy.match( new RegExp( \"\\\\b\" + this.escapeCssMeta( errorID ) + \"\\\\b\" ) ) ) {\n\n\t\t\t\t\t\t// Add to end of list if not already present\n\t\t\t\t\t\tdescribedBy += \" \" + errorID;\n\t\t\t\t\t}\n\t\t\t\t\t$( element ).attr( \"aria-describedby\", describedBy );\n\n\t\t\t\t\t// If this element is grouped, then assign to all elements in the same group\n\t\t\t\t\tgroup = this.groups[ element.name ];\n\t\t\t\t\tif ( group ) {\n\t\t\t\t\t\tv = this;\n\t\t\t\t\t\t$.each( v.groups, function( name, testgroup ) {\n\t\t\t\t\t\t\tif ( testgroup === group ) {\n\t\t\t\t\t\t\t\t$( \"[name='\" + v.escapeCssMeta( name ) + \"']\", v.currentForm )\n\t\t\t\t\t\t\t\t\t.attr( \"aria-describedby\", error.attr( \"id\" ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !message && this.settings.success ) {\n\t\t\t\terror.text( \"\" );\n\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\n\t\t\t\t\terror.addClass( this.settings.success );\n\t\t\t\t} else {\n\t\t\t\t\tthis.settings.success( error, element );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toShow = this.toShow.add( error );\n\t\t},\n\n\t\terrorsFor: function( element ) {\n\t\t\tvar name = this.escapeCssMeta( this.idOrName( element ) ),\n\t\t\t\tdescriber = $( element ).attr( \"aria-describedby\" ),\n\t\t\t\tselector = \"label[for='\" + name + \"'], label[for='\" + name + \"'] *\";\n\n\t\t\t// 'aria-describedby' should directly reference the error element\n\t\t\tif ( describer ) {\n\t\t\t\tselector = selector + \", #\" + this.escapeCssMeta( describer )\n\t\t\t\t\t.replace( /\\s+/g, \", #\" );\n\t\t\t}\n\n\t\t\treturn this\n\t\t\t\t.errors()\n\t\t\t\t.filter( selector );\n\t\t},\n\n\t\t// See https://api.jquery.com/category/selectors/, for CSS\n\t\t// meta-characters that should be escaped in order to be used with JQuery\n\t\t// as a literal part of a name/id or any selector.\n\t\tescapeCssMeta: function( string ) {\n\t\t\tif ( string === undefined ) {\n\t\t\t\treturn \"\";\n\t\t\t}\n\n\t\t\treturn string.replace( /([\\\\!\"#$%&'()*+,./:;<=>?@\\[\\]^`{|}~])/g, \"\\\\$1\" );\n\t\t},\n\n\t\tidOrName: function( element ) {\n\t\t\treturn this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );\n\t\t},\n\n\t\tvalidationTargetFor: function( element ) {\n\n\t\t\t// If radio/checkbox, validate first element in group instead\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\telement = this.findByName( element.name );\n\t\t\t}\n\n\t\t\t// Always apply ignore filter\n\t\t\treturn $( element ).not( this.settings.ignore )[ 0 ];\n\t\t},\n\n\t\tcheckable: function( element ) {\n\t\t\treturn ( /radio|checkbox/i ).test( element.type );\n\t\t},\n\n\t\tfindByName: function( name ) {\n\t\t\treturn $( this.currentForm ).find( \"[name='\" + this.escapeCssMeta( name ) + \"']\" );\n\t\t},\n\n\t\tgetLength: function( value, element ) {\n\t\t\tswitch ( element.nodeName.toLowerCase() ) {\n\t\t\tcase \"select\":\n\t\t\t\treturn $( \"option:selected\", element ).length;\n\t\t\tcase \"input\":\n\t\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).length;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn value.length;\n\t\t},\n\n\t\tdepend: function( param, element ) {\n\t\t\treturn this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;\n\t\t},\n\n\t\tdependTypes: {\n\t\t\t\"boolean\": function( param ) {\n\t\t\t\treturn param;\n\t\t\t},\n\t\t\t\"string\": function( param, element ) {\n\t\t\t\treturn !!$( param, element.form ).length;\n\t\t\t},\n\t\t\t\"function\": function( param, element ) {\n\t\t\t\treturn param( element );\n\t\t\t}\n\t\t},\n\n\t\toptional: function( element ) {\n\t\t\tvar val = this.elementValue( element );\n\t\t\treturn !$.validator.methods.required.call( this, val, element ) && \"dependency-mismatch\";\n\t\t},\n\n\t\telementAjaxPort: function( element ) {\n\t\t\treturn \"validate\" + element.name;\n\t\t},\n\n\t\tstartRequest: function( element ) {\n\t\t\tif ( !this.pending[ element.name ] ) {\n\t\t\t\tthis.pendingRequest++;\n\t\t\t\t$( element ).addClass( this.settings.pendingClass );\n\t\t\t\tthis.pending[ element.name ] = true;\n\t\t\t}\n\t\t},\n\n\t\tstopRequest: function( element, valid ) {\n\t\t\tthis.pendingRequest--;\n\n\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\tthis.pendingRequest = 0;\n\t\t\t}\n\t\t\tdelete this.pending[ element.name ];\n\t\t\t$( element ).removeClass( this.settings.pendingClass );\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() && this.pendingRequest === 0 ) {\n\t\t\t\t$( this.currentForm ).trigger( \"submit\" );\n\n\t\t\t\t// Remove the hidden input that was used as a replacement for the\n\t\t\t\t// missing submit button. The hidden input is added by `handle()`\n\t\t\t\t// to ensure that the value of the used submit button is passed on\n\t\t\t\t// for scripted submits triggered by this method\n\t\t\t\tif ( this.submitButton ) {\n\t\t\t\t\t$( \"input:hidden[name='\" + this.submitButton.name + \"']\", this.currentForm ).remove();\n\t\t\t\t}\n\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t} else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t}\n\t\t},\n\n\t\tabortRequest: function( element ) {\n\t\t\tvar port;\n\n\t\t\tif ( this.pending[ element.name ] ) {\n\t\t\t\tport = this.elementAjaxPort( element );\n\t\t\t\t$.ajaxAbort( port );\n\n\t\t\t\tthis.pendingRequest--;\n\n\t\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\t\tthis.pendingRequest = 0;\n\t\t\t\t}\n\n\t\t\t\tdelete this.pending[ element.name ];\n\t\t\t\t$( element ).removeClass( this.settings.pendingClass );\n\t\t\t}\n\t\t},\n\n\t\tpreviousValue: function( element, method ) {\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\treturn $.data( element, \"previousValue\" ) || $.data( element, \"previousValue\", {\n\t\t\t\told: null,\n\t\t\t\tvalid: true,\n\t\t\t\tmessage: this.defaultMessage( element, { method: method } )\n\t\t\t} );\n\t\t},\n\n\t\t// Cleans up all forms and elements, removes validator-specific events\n\t\tdestroy: function() {\n\t\t\tthis.resetForm();\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.off( \".validate\" )\n\t\t\t\t.removeData( \"validator\" )\n\t\t\t\t.find( \".validate-equalTo-blur\" )\n\t\t\t\t\t.off( \".validate-equalTo\" )\n\t\t\t\t\t.removeClass( \"validate-equalTo-blur\" )\n\t\t\t\t.find( \".validate-lessThan-blur\" )\n\t\t\t\t\t.off( \".validate-lessThan\" )\n\t\t\t\t\t.removeClass( \"validate-lessThan-blur\" )\n\t\t\t\t.find( \".validate-lessThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-lessThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-lessThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThan-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThan\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThan-blur\" );\n\t\t}\n\n\t},\n\n\tclassRuleSettings: {\n\t\trequired: { required: true },\n\t\temail: { email: true },\n\t\turl: { url: true },\n\t\tdate: { date: true },\n\t\tdateISO: { dateISO: true },\n\t\tnumber: { number: true },\n\t\tdigits: { digits: true },\n\t\tcreditcard: { creditcard: true }\n\t},\n\n\taddClassRules: function( className, rules ) {\n\t\tif ( className.constructor === String ) {\n\t\t\tthis.classRuleSettings[ className ] = rules;\n\t\t} else {\n\t\t\t$.extend( this.classRuleSettings, className );\n\t\t}\n\t},\n\n\tclassRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tclasses = $( element ).attr( \"class\" );\n\n\t\tif ( classes ) {\n\t\t\t$.each( classes.split( \" \" ), function() {\n\t\t\t\tif ( this in $.validator.classRuleSettings ) {\n\t\t\t\t\t$.extend( rules, $.validator.classRuleSettings[ this ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeAttributeRule: function( rules, type, method, value ) {\n\n\t\t// Convert the value to a number for number inputs, and for text for backwards compability\n\t\t// allows type=\"date\" and others to be compared as strings\n\t\tif ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {\n\t\t\tvalue = Number( value );\n\n\t\t\t// Support Opera Mini, which returns NaN for undefined minlength\n\t\t\tif ( isNaN( value ) ) {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( value || value === 0 ) {\n\t\t\trules[ method ] = value;\n\t\t} else if ( type === method && type !== \"range\" ) {\n\n\t\t\t// Exception: the jquery validate 'range' method\n\t\t\t// does not test for the html5 'range' type\n\t\t\trules[ type === \"date\" ? \"dateISO\" : method ] = true;\n\t\t}\n\t},\n\n\tattributeRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\n\t\t\t// Support for in both html5 and older browsers\n\t\t\tif ( method === \"required\" ) {\n\t\t\t\tvalue = element.getAttribute( method );\n\n\t\t\t\t// Some browsers return an empty string for the required attribute\n\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\tvalue = true;\n\t\t\t\t}\n\n\t\t\t\t// Force non-HTML5 browsers to return bool\n\t\t\t\tvalue = !!value;\n\t\t\t} else {\n\t\t\t\tvalue = $element.attr( method );\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\n\t\t// 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs\n\t\tif ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {\n\t\t\tdelete rules.maxlength;\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\tdataRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\t\t\tvalue = $element.data( \"rule\" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );\n\n\t\t\t// Cast empty attributes like `data-rule-required` to `true`\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = true;\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tstaticRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tvalidator = $.data( element.form, \"validator\" );\n\n\t\tif ( validator.settings.rules ) {\n\t\t\trules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeRules: function( rules, element ) {\n\n\t\t// Handle dependency check\n\t\t$.each( rules, function( prop, val ) {\n\n\t\t\t// Ignore rule when param is explicitly false, eg. required:false\n\t\t\tif ( val === false ) {\n\t\t\t\tdelete rules[ prop ];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( val.param || val.depends ) {\n\t\t\t\tvar keepRule = true;\n\t\t\t\tswitch ( typeof val.depends ) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tkeepRule = !!$( val.depends, element.form ).length;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tkeepRule = val.depends.call( element, element );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( keepRule ) {\n\t\t\t\t\trules[ prop ] = val.param !== undefined ? val.param : true;\n\t\t\t\t} else {\n\t\t\t\t\t$.data( element.form, \"validator\" ).resetElements( $( element ) );\n\t\t\t\t\tdelete rules[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Evaluate parameters\n\t\t$.each( rules, function( rule, parameter ) {\n\t\t\trules[ rule ] = typeof parameter === \"function\" && rule !== \"normalizer\" ? parameter( element ) : parameter;\n\t\t} );\n\n\t\t// Clean number parameters\n\t\t$.each( [ \"minlength\", \"maxlength\" ], function() {\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\trules[ this ] = Number( rules[ this ] );\n\t\t\t}\n\t\t} );\n\t\t$.each( [ \"rangelength\", \"range\" ], function() {\n\t\t\tvar parts;\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\tif ( Array.isArray( rules[ this ] ) ) {\n\t\t\t\t\trules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];\n\t\t\t\t} else if ( typeof rules[ this ] === \"string\" ) {\n\t\t\t\t\tparts = rules[ this ].replace( /[\\[\\]]/g, \"\" ).split( /[\\s,]+/ );\n\t\t\t\t\trules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\tif ( $.validator.autoCreateRanges ) {\n\n\t\t\t// Auto-create ranges\n\t\t\tif ( rules.min != null && rules.max != null ) {\n\t\t\t\trules.range = [ rules.min, rules.max ];\n\t\t\t\tdelete rules.min;\n\t\t\t\tdelete rules.max;\n\t\t\t}\n\t\t\tif ( rules.minlength != null && rules.maxlength != null ) {\n\t\t\t\trules.rangelength = [ rules.minlength, rules.maxlength ];\n\t\t\t\tdelete rules.minlength;\n\t\t\t\tdelete rules.maxlength;\n\t\t\t}\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\n\tnormalizeRule: function( data ) {\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tvar transformed = {};\n\t\t\t$.each( data.split( /\\s/ ), function() {\n\t\t\t\ttransformed[ this ] = true;\n\t\t\t} );\n\t\t\tdata = transformed;\n\t\t}\n\t\treturn data;\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.addMethod/\n\taddMethod: function( name, method, message ) {\n\t\t$.validator.methods[ name ] = method;\n\t\t$.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];\n\t\tif ( method.length < 3 ) {\n\t\t\t$.validator.addClassRules( name, $.validator.normalizeRule( name ) );\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.methods/\n\tmethods: {\n\n\t\t// https://jqueryvalidation.org/required-method/\n\t\trequired: function( value, element, param ) {\n\n\t\t\t// Check if dependency is met\n\t\t\tif ( !this.depend( param, element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\n\n\t\t\t\t// Could be an array for select-multiple or a string, both are fine this way\n\t\t\t\tvar val = $( element ).val();\n\t\t\t\treturn val && val.length > 0;\n\t\t\t}\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\treturn this.getLength( value, element ) > 0;\n\t\t\t}\n\t\t\treturn value !== undefined && value !== null && value.length > 0;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/email-method/\n\t\temail: function( value, element ) {\n\n\t\t\t// From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address\n\t\t\t// Retrieved 2014-01-14\n\t\t\t// If you have a problem with this implementation, report a bug against the above spec\n\t\t\t// Or use custom methods to implement your own email validation\n\t\t\treturn this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/url-method/\n\t\turl: function( value, element ) {\n\n\t\t\t// Copyright (c) 2010-2013 Diego Perini, MIT licensed\n\t\t\t// https://gist.github.com/dperini/729294\n\t\t\t// see also https://mathiasbynens.be/demo/url-regex\n\t\t\t// modified to allow protocol-relative URLs\n\t\t\treturn this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:(?:[^\\]\\[?\\/<~#`!@$^&*()+=}|:\";',>{ ]|%[0-9A-Fa-f]{2})+(?::(?:[^\\]\\[?\\/<~#`!@$^&*()+=}|:\";',>{ ]|%[0-9A-Fa-f]{2})*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:[a-z\\u00a1-\\uffff]{2,}\\.?))(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/date-method/\n\t\tdate: ( function() {\n\t\t\tvar called = false;\n\n\t\t\treturn function( value, element ) {\n\t\t\t\tif ( !called ) {\n\t\t\t\t\tcalled = true;\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t\"The `date` method is deprecated and will be removed in version '2.0.0'.\\n\" +\n\t\t\t\t\t\t\t\"Please don't use it, since it relies on the Date constructor, which\\n\" +\n\t\t\t\t\t\t\t\"behaves very differently across browsers and locales. Use `dateISO`\\n\" +\n\t\t\t\t\t\t\t\"instead or one of the locale specific methods in `localizations/`\\n\" +\n\t\t\t\t\t\t\t\"and `additional-methods.js`.\"\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );\n\t\t\t};\n\t\t}() ),\n\n\t\t// https://jqueryvalidation.org/dateISO-method/\n\t\tdateISO: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/number-method/\n\t\tnumber: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/digits-method/\n\t\tdigits: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d+$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/minlength-method/\n\t\tminlength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/maxlength-method/\n\t\tmaxlength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/rangelength-method/\n\t\trangelength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/min-method/\n\t\tmin: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/max-method/\n\t\tmax: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/range-method/\n\t\trange: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/step-method/\n\t\tstep: function( value, element, param ) {\n\t\t\tvar type = $( element ).attr( \"type\" ),\n\t\t\t\terrorMessage = \"Step attribute on input type \" + type + \" is not supported.\",\n\t\t\t\tsupportedTypes = [ \"text\", \"number\", \"range\" ],\n\t\t\t\tre = new RegExp( \"\\\\b\" + type + \"\\\\b\" ),\n\t\t\t\tnotSupported = type && !re.test( supportedTypes.join() ),\n\t\t\t\tdecimalPlaces = function( num ) {\n\t\t\t\t\tvar match = ( \"\" + num ).match( /(?:\\.(\\d+))?$/ );\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Number of digits right of decimal point.\n\t\t\t\t\treturn match[ 1 ] ? match[ 1 ].length : 0;\n\t\t\t\t},\n\t\t\t\ttoInt = function( num ) {\n\t\t\t\t\treturn Math.round( num * Math.pow( 10, decimals ) );\n\t\t\t\t},\n\t\t\t\tvalid = true,\n\t\t\t\tdecimals;\n\n\t\t\t// Works only for text, number and range input types\n\t\t\t// TODO find a way to support input types date, datetime, datetime-local, month, time and week\n\t\t\tif ( notSupported ) {\n\t\t\t\tthrow new Error( errorMessage );\n\t\t\t}\n\n\t\t\tdecimals = decimalPlaces( param );\n\n\t\t\t// Value can't have too many decimals\n\t\t\tif ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {\n\t\t\t\tvalid = false;\n\t\t\t}\n\n\t\t\treturn this.optional( element ) || valid;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/equalTo-method/\n\t\tequalTo: function( value, element, param ) {\n\n\t\t\t// Bind to the blur event of the target in order to revalidate whenever the target field is updated\n\t\t\tvar target = $( param );\n\t\t\tif ( this.settings.onfocusout && target.not( \".validate-equalTo-blur\" ).length ) {\n\t\t\t\ttarget.addClass( \"validate-equalTo-blur\" ).on( \"blur.validate-equalTo\", function() {\n\t\t\t\t\t$( element ).valid();\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn value === target.val();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/remote-method/\n\t\tremote: function( value, element, param, method ) {\n\t\t\tif ( this.optional( element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\tvar previous = this.previousValue( element, method ),\n\t\t\t\tvalidator, data, optionDataString;\n\n\t\t\tif ( !this.settings.messages[ element.name ] ) {\n\t\t\t\tthis.settings.messages[ element.name ] = {};\n\t\t\t}\n\t\t\tprevious.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];\n\t\t\tthis.settings.messages[ element.name ][ method ] = previous.message;\n\n\t\t\tparam = typeof param === \"string\" && { url: param } || param;\n\t\t\toptionDataString = $.param( $.extend( { data: value }, param.data ) );\n\t\t\tif ( previous.old === optionDataString ) {\n\t\t\t\treturn previous.valid;\n\t\t\t}\n\n\t\t\tprevious.old = optionDataString;\n\t\t\tvalidator = this;\n\t\t\tthis.startRequest( element );\n\t\t\tdata = {};\n\t\t\tdata[ element.name ] = value;\n\t\t\t$.ajax( $.extend( true, {\n\t\t\t\tmode: \"abort\",\n\t\t\t\tport: this.elementAjaxPort( element ),\n\t\t\t\tdataType: \"json\",\n\t\t\t\tdata: data,\n\t\t\t\tcontext: validator.currentForm,\n\t\t\t\tsuccess: function( response ) {\n\t\t\t\t\tvar valid = response === true || response === \"true\",\n\t\t\t\t\t\terrors, message, submitted;\n\n\t\t\t\t\tvalidator.settings.messages[ element.name ][ method ] = previous.originalMessage;\n\t\t\t\t\tif ( valid ) {\n\t\t\t\t\t\tsubmitted = validator.formSubmitted;\n\t\t\t\t\t\tvalidator.toHide = validator.errorsFor( element );\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\n\t\t\t\t\t\tvalidator.successList.push( element );\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = false;\n\t\t\t\t\t\tvalidator.showErrors();\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrors = {};\n\t\t\t\t\t\tmessage = response || validator.defaultMessage( element, { method: method, parameters: value } );\n\t\t\t\t\t\terrors[ element.name ] = previous.message = message;\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = true;\n\t\t\t\t\t\tvalidator.showErrors( errors );\n\t\t\t\t\t}\n\t\t\t\t\tprevious.valid = valid;\n\t\t\t\t\tvalidator.stopRequest( element, valid );\n\t\t\t\t}\n\t\t\t}, param ) );\n\t\t\treturn \"pending\";\n\t\t}\n\t}\n\n} );\n\n// Ajax mode: abort\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\n// $.ajaxAbort( port );\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\n\nvar pendingRequests = {},\n\tajax;\n\n// Use a prefilter if available (1.5+)\nif ( $.ajaxPrefilter ) {\n\t$.ajaxPrefilter( function( settings, _, xhr ) {\n\t\tvar port = settings.port;\n\t\tif ( settings.mode === \"abort\" ) {\n\t\t\t$.ajaxAbort( port );\n\t\t\tpendingRequests[ port ] = xhr;\n\t\t}\n\t} );\n} else {\n\n\t// Proxy ajax\n\tajax = $.ajax;\n\t$.ajax = function( settings ) {\n\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\n\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\n\t\tif ( mode === \"abort\" ) {\n\t\t\t$.ajaxAbort( port );\n\t\t\tpendingRequests[ port ] = ajax.apply( this, arguments );\n\t\t\treturn pendingRequests[ port ];\n\t\t}\n\t\treturn ajax.apply( this, arguments );\n\t};\n}\n\n// Abort the previous request without sending a new one\n$.ajaxAbort = function( port ) {\n\tif ( pendingRequests[ port ] ) {\n\t\tpendingRequests[ port ].abort();\n\t\tdelete pendingRequests[ port ];\n\t}\n};\nreturn $;\n}));","// (c) 2012-2018 Airbnb, Inc.\n//\n// polyglot.js may be freely distributed under the terms of the BSD\n// license. For all licensing information, details, and documentation:\n// http://airbnb.github.com/polyglot.js\n//\n//\n// Polyglot.js is an I18n helper library written in JavaScript, made to\n// work both in the browser and in Node. It provides a simple solution for\n// interpolation and pluralization, based off of Airbnb's\n// experience adding I18n functionality to its Backbone.js and Node apps.\n//\n// Polylglot is agnostic to your translation backend. It doesn't perform any\n// translation; it simply gives you a way to manage translated phrases from\n// your client- or server-side JavaScript application.\n//\n\n'use strict';\n\nvar forEach = require('array.prototype.foreach');\nvar entries = require('object.entries');\nvar warning = require('warning');\nvar has = require('has');\nvar trim = require('string.prototype.trim');\n\nvar warn = function warn(message) {\n warning(false, message);\n};\n\nvar defaultReplace = String.prototype.replace;\nvar split = String.prototype.split;\n\n// #### Pluralization methods\n// The string that separates the different phrase possibilities.\nvar delimiter = '||||';\n\nvar russianPluralGroups = function (n) {\n var lastTwo = n % 100;\n var end = lastTwo % 10;\n if (lastTwo !== 11 && end === 1) {\n return 0;\n }\n if (2 <= end && end <= 4 && !(lastTwo >= 12 && lastTwo <= 14)) {\n return 1;\n }\n return 2;\n};\n\nvar defaultPluralRules = {\n // Mapping from pluralization group plural logic.\n pluralTypes: {\n arabic: function (n) {\n // http://www.arabeyes.org/Plural_Forms\n if (n < 3) { return n; }\n var lastTwo = n % 100;\n if (lastTwo >= 3 && lastTwo <= 10) return 3;\n return lastTwo >= 11 ? 4 : 5;\n },\n bosnian_serbian: russianPluralGroups,\n chinese: function () { return 0; },\n croatian: russianPluralGroups,\n french: function (n) { return n >= 2 ? 1 : 0; },\n german: function (n) { return n !== 1 ? 1 : 0; },\n russian: russianPluralGroups,\n lithuanian: function (n) {\n if (n % 10 === 1 && n % 100 !== 11) { return 0; }\n return n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19) ? 1 : 2;\n },\n czech: function (n) {\n if (n === 1) { return 0; }\n return (n >= 2 && n <= 4) ? 1 : 2;\n },\n polish: function (n) {\n if (n === 1) { return 0; }\n var end = n % 10;\n return 2 <= end && end <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2;\n },\n icelandic: function (n) { return (n % 10 !== 1 || n % 100 === 11) ? 1 : 0; },\n slovenian: function (n) {\n var lastTwo = n % 100;\n if (lastTwo === 1) {\n return 0;\n }\n if (lastTwo === 2) {\n return 1;\n }\n if (lastTwo === 3 || lastTwo === 4) {\n return 2;\n }\n return 3;\n },\n romanian: function (n) {\n if (n === 1) { return 0; }\n var lastTwo = n % 100;\n if (n === 0 || (lastTwo >= 2 && lastTwo <= 19)) { return 1; }\n return 2;\n }\n },\n\n // Mapping from pluralization group to individual language codes/locales.\n // Will look up based on exact match, if not found and it's a locale will parse the locale\n // for language code, and if that does not exist will default to 'en'\n pluralTypeToLanguages: {\n arabic: ['ar'],\n bosnian_serbian: ['bs-Latn-BA', 'bs-Cyrl-BA', 'srl-RS', 'sr-RS'],\n chinese: ['id', 'id-ID', 'ja', 'ko', 'ko-KR', 'lo', 'ms', 'th', 'th-TH', 'zh'],\n croatian: ['hr', 'hr-HR'],\n german: ['fa', 'da', 'de', 'en', 'es', 'fi', 'el', 'he', 'hi-IN', 'hu', 'hu-HU', 'it', 'nl', 'no', 'pt', 'sv', 'tr'],\n french: ['fr', 'tl', 'pt-br'],\n russian: ['ru', 'ru-RU'],\n lithuanian: ['lt'],\n czech: ['cs', 'cs-CZ', 'sk'],\n polish: ['pl'],\n icelandic: ['is', 'mk'],\n slovenian: ['sl-SL'],\n romanian: ['ro']\n }\n};\n\nfunction langToTypeMap(mapping) {\n var ret = {};\n forEach(entries(mapping), function (entry) {\n var type = entry[0];\n var langs = entry[1];\n forEach(langs, function (lang) {\n ret[lang] = type;\n });\n });\n return ret;\n}\n\nfunction pluralTypeName(pluralRules, locale) {\n var langToPluralType = langToTypeMap(pluralRules.pluralTypeToLanguages);\n return langToPluralType[locale]\n || langToPluralType[split.call(locale, /-/, 1)[0]]\n || langToPluralType.en;\n}\n\nfunction pluralTypeIndex(pluralRules, pluralType, count) {\n return pluralRules.pluralTypes[pluralType](count);\n}\n\nfunction createMemoizedPluralTypeNameSelector() {\n var localePluralTypeStorage = {};\n\n return function (pluralRules, locale) {\n var pluralType = localePluralTypeStorage[locale];\n\n if (pluralType && !pluralRules.pluralTypes[pluralType]) {\n pluralType = null;\n localePluralTypeStorage[locale] = pluralType;\n }\n\n if (!pluralType) {\n pluralType = pluralTypeName(pluralRules, locale);\n\n if (pluralType) {\n localePluralTypeStorage[locale] = pluralType;\n }\n }\n\n return pluralType;\n };\n}\n\nfunction escape(token) {\n return token.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction constructTokenRegex(opts) {\n var prefix = (opts && opts.prefix) || '%{';\n var suffix = (opts && opts.suffix) || '}';\n\n if (prefix === delimiter || suffix === delimiter) {\n throw new RangeError('\"' + delimiter + '\" token is reserved for pluralization');\n }\n\n return new RegExp(escape(prefix) + '(.*?)' + escape(suffix), 'g');\n}\n\nvar memoizedPluralTypeName = createMemoizedPluralTypeNameSelector();\n\nvar defaultTokenRegex = /%\\{(.*?)\\}/g;\n\n// ### transformPhrase(phrase, substitutions, locale)\n//\n// Takes a phrase string and transforms it by choosing the correct\n// plural form and interpolating it.\n//\n// transformPhrase('Hello, %{name}!', {name: 'Spike'});\n// // \"Hello, Spike!\"\n//\n// The correct plural form is selected if substitutions.smart_count\n// is set. You can pass in a number instead of an Object as `substitutions`\n// as a shortcut for `smart_count`.\n//\n// transformPhrase('%{smart_count} new messages |||| 1 new message', {smart_count: 1}, 'en');\n// // \"1 new message\"\n//\n// transformPhrase('%{smart_count} new messages |||| 1 new message', {smart_count: 2}, 'en');\n// // \"2 new messages\"\n//\n// transformPhrase('%{smart_count} new messages |||| 1 new message', 5, 'en');\n// // \"5 new messages\"\n//\n// You should pass in a third argument, the locale, to specify the correct plural type.\n// It defaults to `'en'` with 2 plural forms.\nfunction transformPhrase(\n phrase,\n substitutions,\n locale,\n tokenRegex,\n pluralRules,\n replaceImplementation\n) {\n if (typeof phrase !== 'string') {\n throw new TypeError('Polyglot.transformPhrase expects argument #1 to be string');\n }\n\n if (substitutions == null) {\n return phrase;\n }\n\n var result = phrase;\n var interpolationRegex = tokenRegex || defaultTokenRegex;\n var replace = replaceImplementation || defaultReplace;\n\n // allow number as a pluralization shortcut\n var options = typeof substitutions === 'number' ? { smart_count: substitutions } : substitutions;\n\n // Select plural form: based on a phrase text that contains `n`\n // plural forms separated by `delimiter`, a `locale`, and a `substitutions.smart_count`,\n // choose the correct plural form. This is only done if `count` is set.\n if (options.smart_count != null && phrase) {\n var pluralRulesOrDefault = pluralRules || defaultPluralRules;\n var texts = split.call(phrase, delimiter);\n var bestLocale = locale || 'en';\n var pluralType = memoizedPluralTypeName(pluralRulesOrDefault, bestLocale);\n var pluralTypeWithCount = pluralTypeIndex(\n pluralRulesOrDefault,\n pluralType,\n options.smart_count\n );\n\n result = trim(texts[pluralTypeWithCount] || texts[0]);\n }\n\n // Interpolate: Creates a `RegExp` object for each interpolation placeholder.\n result = replace.call(result, interpolationRegex, function (expression, argument) {\n if (!has(options, argument) || options[argument] == null) { return expression; }\n return options[argument];\n });\n\n return result;\n}\n\n// ### Polyglot class constructor\nfunction Polyglot(options) {\n var opts = options || {};\n this.phrases = {};\n this.extend(opts.phrases || {});\n this.currentLocale = opts.locale || 'en';\n var allowMissing = opts.allowMissing ? transformPhrase : null;\n this.onMissingKey = typeof opts.onMissingKey === 'function' ? opts.onMissingKey : allowMissing;\n this.warn = opts.warn || warn;\n this.replaceImplementation = opts.replace || defaultReplace;\n this.tokenRegex = constructTokenRegex(opts.interpolation);\n this.pluralRules = opts.pluralRules || defaultPluralRules;\n}\n\n// ### polyglot.locale([locale])\n//\n// Get or set locale. Internally, Polyglot only uses locale for pluralization.\nPolyglot.prototype.locale = function (newLocale) {\n if (newLocale) this.currentLocale = newLocale;\n return this.currentLocale;\n};\n\n// ### polyglot.extend(phrases)\n//\n// Use `extend` to tell Polyglot how to translate a given key.\n//\n// polyglot.extend({\n// \"hello\": \"Hello\",\n// \"hello_name\": \"Hello, %{name}\"\n// });\n//\n// The key can be any string. Feel free to call `extend` multiple times;\n// it will override any phrases with the same key, but leave existing phrases\n// untouched.\n//\n// It is also possible to pass nested phrase objects, which get flattened\n// into an object with the nested keys concatenated using dot notation.\n//\n// polyglot.extend({\n// \"nav\": {\n// \"hello\": \"Hello\",\n// \"hello_name\": \"Hello, %{name}\",\n// \"sidebar\": {\n// \"welcome\": \"Welcome\"\n// }\n// }\n// });\n//\n// console.log(polyglot.phrases);\n// // {\n// // 'nav.hello': 'Hello',\n// // 'nav.hello_name': 'Hello, %{name}',\n// // 'nav.sidebar.welcome': 'Welcome'\n// // }\n//\n// `extend` accepts an optional second argument, `prefix`, which can be used\n// to prefix every key in the phrases object with some string, using dot\n// notation.\n//\n// polyglot.extend({\n// \"hello\": \"Hello\",\n// \"hello_name\": \"Hello, %{name}\"\n// }, \"nav\");\n//\n// console.log(polyglot.phrases);\n// // {\n// // 'nav.hello': 'Hello',\n// // 'nav.hello_name': 'Hello, %{name}'\n// // }\n//\n// This feature is used internally to support nested phrase objects.\nPolyglot.prototype.extend = function (morePhrases, prefix) {\n forEach(entries(morePhrases || {}), function (entry) {\n var key = entry[0];\n var phrase = entry[1];\n var prefixedKey = prefix ? prefix + '.' + key : key;\n if (typeof phrase === 'object') {\n this.extend(phrase, prefixedKey);\n } else {\n this.phrases[prefixedKey] = phrase;\n }\n }, this);\n};\n\n// ### polyglot.unset(phrases)\n// Use `unset` to selectively remove keys from a polyglot instance.\n//\n// polyglot.unset(\"some_key\");\n// polyglot.unset({\n// \"hello\": \"Hello\",\n// \"hello_name\": \"Hello, %{name}\"\n// });\n//\n// The unset method can take either a string (for the key), or an object hash with\n// the keys that you would like to unset.\nPolyglot.prototype.unset = function (morePhrases, prefix) {\n if (typeof morePhrases === 'string') {\n delete this.phrases[morePhrases];\n } else {\n forEach(entries(morePhrases || {}), function (entry) {\n var key = entry[0];\n var phrase = entry[1];\n var prefixedKey = prefix ? prefix + '.' + key : key;\n if (typeof phrase === 'object') {\n this.unset(phrase, prefixedKey);\n } else {\n delete this.phrases[prefixedKey];\n }\n }, this);\n }\n};\n\n// ### polyglot.clear()\n//\n// Clears all phrases. Useful for special cases, such as freeing\n// up memory if you have lots of phrases but no longer need to\n// perform any translation. Also used internally by `replace`.\nPolyglot.prototype.clear = function () {\n this.phrases = {};\n};\n\n// ### polyglot.replace(phrases)\n//\n// Completely replace the existing phrases with a new set of phrases.\n// Normally, just use `extend` to add more phrases, but under certain\n// circumstances, you may want to make sure no old phrases are lying around.\nPolyglot.prototype.replace = function (newPhrases) {\n this.clear();\n this.extend(newPhrases);\n};\n\n// ### polyglot.t(key, options)\n//\n// The most-used method. Provide a key, and `t` will return the\n// phrase.\n//\n// polyglot.t(\"hello\");\n// => \"Hello\"\n//\n// The phrase value is provided first by a call to `polyglot.extend()` or\n// `polyglot.replace()`.\n//\n// Pass in an object as the second argument to perform interpolation.\n//\n// polyglot.t(\"hello_name\", {name: \"Spike\"});\n// => \"Hello, Spike\"\n//\n// If you like, you can provide a default value in case the phrase is missing.\n// Use the special option key \"_\" to specify a default.\n//\n// polyglot.t(\"i_like_to_write_in_language\", {\n// _: \"I like to write in %{language}.\",\n// language: \"JavaScript\"\n// });\n// => \"I like to write in JavaScript.\"\n//\nPolyglot.prototype.t = function (key, options) {\n var phrase, result;\n var opts = options == null ? {} : options;\n if (typeof this.phrases[key] === 'string') {\n phrase = this.phrases[key];\n } else if (typeof opts._ === 'string') {\n phrase = opts._;\n } else if (this.onMissingKey) {\n var onMissingKey = this.onMissingKey;\n result = onMissingKey(\n key,\n opts,\n this.currentLocale,\n this.tokenRegex,\n this.pluralRules,\n this.replaceImplementation\n );\n } else {\n this.warn('Missing translation for key: \"' + key + '\"');\n result = key;\n }\n if (typeof phrase === 'string') {\n result = transformPhrase(\n phrase,\n opts,\n this.currentLocale,\n this.tokenRegex,\n this.pluralRules,\n this.replaceImplementation\n );\n }\n return result;\n};\n\n// ### polyglot.has(key)\n//\n// Check if polyglot has a translation for given key\nPolyglot.prototype.has = function (key) {\n return has(this.phrases, key);\n};\n\n// export transformPhrase\nPolyglot.transformPhrase = function transform(phrase, substitutions, locale) {\n return transformPhrase(phrase, substitutions, locale);\n};\n\nmodule.exports = Polyglot;\n","/* \r\n @package NOTY - Dependency-free notification library \r\n @version version: 3.1.4 \r\n @contributors https://github.com/needim/noty/graphs/contributors \r\n @documentation Examples and Documentation - http://needim.github.com/noty \r\n @license Licensed under the MIT licenses: http://www.opensource.org/licenses/mit-license.php \r\n*/\r\n\r\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Noty\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Noty\"] = factory();\n\telse\n\t\troot[\"Noty\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 6);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.css = exports.deepExtend = exports.animationEndEvents = undefined;\n\nvar _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; };\n\nexports.inArray = inArray;\nexports.stopPropagation = stopPropagation;\nexports.generateID = generateID;\nexports.outerHeight = outerHeight;\nexports.addListener = addListener;\nexports.hasClass = hasClass;\nexports.addClass = addClass;\nexports.removeClass = removeClass;\nexports.remove = remove;\nexports.classList = classList;\nexports.visibilityChangeFlow = visibilityChangeFlow;\nexports.createAudioElements = createAudioElements;\n\nvar _api = __webpack_require__(1);\n\nvar API = _interopRequireWildcard(_api);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar animationEndEvents = exports.animationEndEvents = 'webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend';\n\nfunction inArray(needle, haystack, argStrict) {\n var key = void 0;\n var strict = !!argStrict;\n\n if (strict) {\n for (key in haystack) {\n if (haystack.hasOwnProperty(key) && haystack[key] === needle) {\n return true;\n }\n }\n } else {\n for (key in haystack) {\n if (haystack.hasOwnProperty(key) && haystack[key] === needle) {\n return true;\n }\n }\n }\n return false;\n}\n\nfunction stopPropagation(evt) {\n evt = evt || window.event;\n\n if (typeof evt.stopPropagation !== 'undefined') {\n evt.stopPropagation();\n } else {\n evt.cancelBubble = true;\n }\n}\n\nvar deepExtend = exports.deepExtend = function deepExtend(out) {\n out = out || {};\n\n for (var i = 1; i < arguments.length; i++) {\n var obj = arguments[i];\n\n if (!obj) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n if (Array.isArray(obj[key])) {\n out[key] = obj[key];\n } else if (_typeof(obj[key]) === 'object' && obj[key] !== null) {\n out[key] = deepExtend(out[key], obj[key]);\n } else {\n out[key] = obj[key];\n }\n }\n }\n }\n\n return out;\n};\n\nfunction generateID() {\n var prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n var id = 'noty_' + prefix + '_';\n\n id += 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0;\n var v = c === 'x' ? r : r & 0x3 | 0x8;\n return v.toString(16);\n });\n\n return id;\n}\n\nfunction outerHeight(el) {\n var height = el.offsetHeight;\n var style = window.getComputedStyle(el);\n\n height += parseInt(style.marginTop) + parseInt(style.marginBottom);\n return height;\n}\n\nvar css = exports.css = function () {\n var cssPrefixes = ['Webkit', 'O', 'Moz', 'ms'];\n var cssProps = {};\n\n function camelCase(string) {\n return string.replace(/^-ms-/, 'ms-').replace(/-([\\da-z])/gi, function (match, letter) {\n return letter.toUpperCase();\n });\n }\n\n function getVendorProp(name) {\n var style = document.body.style;\n if (name in style) return name;\n\n var i = cssPrefixes.length;\n var capName = name.charAt(0).toUpperCase() + name.slice(1);\n var vendorName = void 0;\n\n while (i--) {\n vendorName = cssPrefixes[i] + capName;\n if (vendorName in style) return vendorName;\n }\n\n return name;\n }\n\n function getStyleProp(name) {\n name = camelCase(name);\n return cssProps[name] || (cssProps[name] = getVendorProp(name));\n }\n\n function applyCss(element, prop, value) {\n prop = getStyleProp(prop);\n element.style[prop] = value;\n }\n\n return function (element, properties) {\n var args = arguments;\n var prop = void 0;\n var value = void 0;\n\n if (args.length === 2) {\n for (prop in properties) {\n if (properties.hasOwnProperty(prop)) {\n value = properties[prop];\n if (value !== undefined && properties.hasOwnProperty(prop)) {\n applyCss(element, prop, value);\n }\n }\n }\n } else {\n applyCss(element, args[1], args[2]);\n }\n };\n}();\n\nfunction addListener(el, events, cb) {\n var useCapture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n events = events.split(' ');\n for (var i = 0; i < events.length; i++) {\n if (document.addEventListener) {\n el.addEventListener(events[i], cb, useCapture);\n } else if (document.attachEvent) {\n el.attachEvent('on' + events[i], cb);\n }\n }\n}\n\nfunction hasClass(element, name) {\n var list = typeof element === 'string' ? element : classList(element);\n return list.indexOf(' ' + name + ' ') >= 0;\n}\n\nfunction addClass(element, name) {\n var oldList = classList(element);\n var newList = oldList + name;\n\n if (hasClass(oldList, name)) return;\n\n // Trim the opening space.\n element.className = newList.substring(1);\n}\n\nfunction removeClass(element, name) {\n var oldList = classList(element);\n var newList = void 0;\n\n if (!hasClass(element, name)) return;\n\n // Replace the class name.\n newList = oldList.replace(' ' + name + ' ', ' ');\n\n // Trim the opening and closing spaces.\n element.className = newList.substring(1, newList.length - 1);\n}\n\nfunction remove(element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n}\n\nfunction classList(element) {\n return (' ' + (element && element.className || '') + ' ').replace(/\\s+/gi, ' ');\n}\n\nfunction visibilityChangeFlow() {\n var hidden = void 0;\n var visibilityChange = void 0;\n if (typeof document.hidden !== 'undefined') {\n // Opera 12.10 and Firefox 18 and later support\n hidden = 'hidden';\n visibilityChange = 'visibilitychange';\n } else if (typeof document.msHidden !== 'undefined') {\n hidden = 'msHidden';\n visibilityChange = 'msvisibilitychange';\n } else if (typeof document.webkitHidden !== 'undefined') {\n hidden = 'webkitHidden';\n visibilityChange = 'webkitvisibilitychange';\n }\n\n function onVisibilityChange() {\n API.PageHidden = document[hidden];\n handleVisibilityChange();\n }\n\n function onBlur() {\n API.PageHidden = true;\n handleVisibilityChange();\n }\n\n function onFocus() {\n API.PageHidden = false;\n handleVisibilityChange();\n }\n\n function handleVisibilityChange() {\n if (API.PageHidden) stopAll();else resumeAll();\n }\n\n function stopAll() {\n setTimeout(function () {\n Object.keys(API.Store).forEach(function (id) {\n if (API.Store.hasOwnProperty(id)) {\n if (API.Store[id].options.visibilityControl) {\n API.Store[id].stop();\n }\n }\n });\n }, 100);\n }\n\n function resumeAll() {\n setTimeout(function () {\n Object.keys(API.Store).forEach(function (id) {\n if (API.Store.hasOwnProperty(id)) {\n if (API.Store[id].options.visibilityControl) {\n API.Store[id].resume();\n }\n }\n });\n API.queueRenderAll();\n }, 100);\n }\n\n if (visibilityChange) {\n addListener(document, visibilityChange, onVisibilityChange);\n }\n\n addListener(window, 'blur', onBlur);\n addListener(window, 'focus', onFocus);\n}\n\nfunction createAudioElements(ref) {\n if (ref.hasSound) {\n var audioElement = document.createElement('audio');\n\n ref.options.sounds.sources.forEach(function (s) {\n var source = document.createElement('source');\n source.src = s;\n source.type = 'audio/' + getExtension(s);\n audioElement.appendChild(source);\n });\n\n if (ref.barDom) {\n ref.barDom.appendChild(audioElement);\n } else {\n document.querySelector('body').appendChild(audioElement);\n }\n\n audioElement.volume = ref.options.sounds.volume;\n\n if (!ref.soundPlayed) {\n audioElement.play();\n ref.soundPlayed = true;\n }\n\n audioElement.onended = function () {\n remove(audioElement);\n };\n }\n}\n\nfunction getExtension(fileName) {\n return fileName.match(/\\.([^.]+)$/)[1];\n}\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Defaults = exports.Store = exports.Queues = exports.DefaultMaxVisible = exports.docTitle = exports.DocModalCount = exports.PageHidden = undefined;\nexports.getQueueCounts = getQueueCounts;\nexports.addToQueue = addToQueue;\nexports.removeFromQueue = removeFromQueue;\nexports.queueRender = queueRender;\nexports.queueRenderAll = queueRenderAll;\nexports.ghostFix = ghostFix;\nexports.build = build;\nexports.hasButtons = hasButtons;\nexports.handleModal = handleModal;\nexports.handleModalClose = handleModalClose;\nexports.queueClose = queueClose;\nexports.dequeueClose = dequeueClose;\nexports.fire = fire;\nexports.openFlow = openFlow;\nexports.closeFlow = closeFlow;\n\nvar _utils = __webpack_require__(0);\n\nvar Utils = _interopRequireWildcard(_utils);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar PageHidden = exports.PageHidden = false;\nvar DocModalCount = exports.DocModalCount = 0;\n\nvar DocTitleProps = {\n originalTitle: null,\n count: 0,\n changed: false,\n timer: -1\n};\n\nvar docTitle = exports.docTitle = {\n increment: function increment() {\n DocTitleProps.count++;\n\n docTitle._update();\n },\n\n decrement: function decrement() {\n DocTitleProps.count--;\n\n if (DocTitleProps.count <= 0) {\n docTitle._clear();\n return;\n }\n\n docTitle._update();\n },\n\n _update: function _update() {\n var title = document.title;\n\n if (!DocTitleProps.changed) {\n DocTitleProps.originalTitle = title;\n document.title = '(' + DocTitleProps.count + ') ' + title;\n DocTitleProps.changed = true;\n } else {\n document.title = '(' + DocTitleProps.count + ') ' + DocTitleProps.originalTitle;\n }\n },\n\n _clear: function _clear() {\n if (DocTitleProps.changed) {\n DocTitleProps.count = 0;\n document.title = DocTitleProps.originalTitle;\n DocTitleProps.changed = false;\n }\n }\n};\n\nvar DefaultMaxVisible = exports.DefaultMaxVisible = 5;\n\nvar Queues = exports.Queues = {\n global: {\n maxVisible: DefaultMaxVisible,\n queue: []\n }\n};\n\nvar Store = exports.Store = {};\n\nvar Defaults = exports.Defaults = {\n type: 'alert',\n layout: 'topRight',\n theme: 'mint',\n text: '',\n timeout: false,\n progressBar: true,\n closeWith: ['click'],\n animation: {\n open: 'noty_effects_open',\n close: 'noty_effects_close'\n },\n id: false,\n force: false,\n killer: false,\n queue: 'global',\n container: false,\n buttons: [],\n callbacks: {\n beforeShow: null,\n onShow: null,\n afterShow: null,\n onClose: null,\n afterClose: null,\n onClick: null,\n onHover: null,\n onTemplate: null\n },\n sounds: {\n sources: [],\n volume: 1,\n conditions: []\n },\n titleCount: {\n conditions: []\n },\n modal: false,\n visibilityControl: false\n\n /**\r\n * @param {string} queueName\r\n * @return {object}\r\n */\n};function getQueueCounts() {\n var queueName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'global';\n\n var count = 0;\n var max = DefaultMaxVisible;\n\n if (Queues.hasOwnProperty(queueName)) {\n max = Queues[queueName].maxVisible;\n Object.keys(Store).forEach(function (i) {\n if (Store[i].options.queue === queueName && !Store[i].closed) count++;\n });\n }\n\n return {\n current: count,\n maxVisible: max\n };\n}\n\n/**\r\n * @param {Noty} ref\r\n * @return {void}\r\n */\nfunction addToQueue(ref) {\n if (!Queues.hasOwnProperty(ref.options.queue)) {\n Queues[ref.options.queue] = { maxVisible: DefaultMaxVisible, queue: [] };\n }\n\n Queues[ref.options.queue].queue.push(ref);\n}\n\n/**\r\n * @param {Noty} ref\r\n * @return {void}\r\n */\nfunction removeFromQueue(ref) {\n if (Queues.hasOwnProperty(ref.options.queue)) {\n var queue = [];\n Object.keys(Queues[ref.options.queue].queue).forEach(function (i) {\n if (Queues[ref.options.queue].queue[i].id !== ref.id) {\n queue.push(Queues[ref.options.queue].queue[i]);\n }\n });\n Queues[ref.options.queue].queue = queue;\n }\n}\n\n/**\r\n * @param {string} queueName\r\n * @return {void}\r\n */\nfunction queueRender() {\n var queueName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'global';\n\n if (Queues.hasOwnProperty(queueName)) {\n var noty = Queues[queueName].queue.shift();\n\n if (noty) noty.show();\n }\n}\n\n/**\r\n * @return {void}\r\n */\nfunction queueRenderAll() {\n Object.keys(Queues).forEach(function (queueName) {\n queueRender(queueName);\n });\n}\n\n/**\r\n * @param {Noty} ref\r\n * @return {void}\r\n */\nfunction ghostFix(ref) {\n var ghostID = Utils.generateID('ghost');\n var ghost = document.createElement('div');\n ghost.setAttribute('id', ghostID);\n Utils.css(ghost, {\n height: Utils.outerHeight(ref.barDom) + 'px'\n });\n\n ref.barDom.insertAdjacentHTML('afterend', ghost.outerHTML);\n\n Utils.remove(ref.barDom);\n ghost = document.getElementById(ghostID);\n Utils.addClass(ghost, 'noty_fix_effects_height');\n Utils.addListener(ghost, Utils.animationEndEvents, function () {\n Utils.remove(ghost);\n });\n}\n\n/**\r\n * @param {Noty} ref\r\n * @return {void}\r\n */\nfunction build(ref) {\n findOrCreateContainer(ref);\n\n var markup = '
' + ref.options.text + '
' + buildButtons(ref) + '
';\n\n ref.barDom = document.createElement('div');\n ref.barDom.setAttribute('id', ref.id);\n Utils.addClass(ref.barDom, 'noty_bar noty_type__' + ref.options.type + ' noty_theme__' + ref.options.theme);\n\n ref.barDom.innerHTML = markup;\n\n fire(ref, 'onTemplate');\n}\n\n/**\r\n * @param {Noty} ref\r\n * @return {boolean}\r\n */\nfunction hasButtons(ref) {\n return !!(ref.options.buttons && Object.keys(ref.options.buttons).length);\n}\n\n/**\r\n * @param {Noty} ref\r\n * @return {string}\r\n */\nfunction buildButtons(ref) {\n if (hasButtons(ref)) {\n var buttons = document.createElement('div');\n Utils.addClass(buttons, 'noty_buttons');\n\n Object.keys(ref.options.buttons).forEach(function (key) {\n buttons.appendChild(ref.options.buttons[key].dom);\n });\n\n ref.options.buttons.forEach(function (btn) {\n buttons.appendChild(btn.dom);\n });\n return buttons.outerHTML;\n }\n return '';\n}\n\n/**\r\n * @param {Noty} ref\r\n * @return {void}\r\n */\nfunction handleModal(ref) {\n if (ref.options.modal) {\n if (DocModalCount === 0) {\n createModal(ref);\n }\n\n exports.DocModalCount = DocModalCount += 1;\n }\n}\n\n/**\r\n * @param {Noty} ref\r\n * @return {void}\r\n */\nfunction handleModalClose(ref) {\n if (ref.options.modal && DocModalCount > 0) {\n exports.DocModalCount = DocModalCount -= 1;\n\n if (DocModalCount <= 0) {\n var modal = document.querySelector('.noty_modal');\n\n if (modal) {\n Utils.removeClass(modal, 'noty_modal_open');\n Utils.addClass(modal, 'noty_modal_close');\n Utils.addListener(modal, Utils.animationEndEvents, function () {\n Utils.remove(modal);\n });\n }\n }\n }\n}\n\n/**\r\n * @return {void}\r\n */\nfunction createModal() {\n var body = document.querySelector('body');\n var modal = document.createElement('div');\n Utils.addClass(modal, 'noty_modal');\n body.insertBefore(modal, body.firstChild);\n Utils.addClass(modal, 'noty_modal_open');\n\n Utils.addListener(modal, Utils.animationEndEvents, function () {\n Utils.removeClass(modal, 'noty_modal_open');\n });\n}\n\n/**\r\n * @param {Noty} ref\r\n * @return {void}\r\n */\nfunction findOrCreateContainer(ref) {\n if (ref.options.container) {\n ref.layoutDom = document.querySelector(ref.options.container);\n return;\n }\n\n var layoutID = 'noty_layout__' + ref.options.layout;\n ref.layoutDom = document.querySelector('div#' + layoutID);\n\n if (!ref.layoutDom) {\n ref.layoutDom = document.createElement('div');\n ref.layoutDom.setAttribute('id', layoutID);\n ref.layoutDom.setAttribute('role', 'alert');\n ref.layoutDom.setAttribute('aria-live', 'polite');\n Utils.addClass(ref.layoutDom, 'noty_layout');\n document.querySelector('body').appendChild(ref.layoutDom);\n }\n}\n\n/**\r\n * @param {Noty} ref\r\n * @return {void}\r\n */\nfunction queueClose(ref) {\n if (ref.options.timeout) {\n if (ref.options.progressBar && ref.progressDom) {\n Utils.css(ref.progressDom, {\n transition: 'width ' + ref.options.timeout + 'ms linear',\n width: '0%'\n });\n }\n\n clearTimeout(ref.closeTimer);\n\n ref.closeTimer = setTimeout(function () {\n ref.close();\n }, ref.options.timeout);\n }\n}\n\n/**\r\n * @param {Noty} ref\r\n * @return {void}\r\n */\nfunction dequeueClose(ref) {\n if (ref.options.timeout && ref.closeTimer) {\n clearTimeout(ref.closeTimer);\n ref.closeTimer = -1;\n\n if (ref.options.progressBar && ref.progressDom) {\n Utils.css(ref.progressDom, {\n transition: 'width 0ms linear',\n width: '100%'\n });\n }\n }\n}\n\n/**\r\n * @param {Noty} ref\r\n * @param {string} eventName\r\n * @return {void}\r\n */\nfunction fire(ref, eventName) {\n if (ref.listeners.hasOwnProperty(eventName)) {\n ref.listeners[eventName].forEach(function (cb) {\n if (typeof cb === 'function') {\n cb.apply(ref);\n }\n });\n }\n}\n\n/**\r\n * @param {Noty} ref\r\n * @return {void}\r\n */\nfunction openFlow(ref) {\n fire(ref, 'afterShow');\n queueClose(ref);\n\n Utils.addListener(ref.barDom, 'mouseenter', function () {\n dequeueClose(ref);\n });\n\n Utils.addListener(ref.barDom, 'mouseleave', function () {\n queueClose(ref);\n });\n}\n\n/**\r\n * @param {Noty} ref\r\n * @return {void}\r\n */\nfunction closeFlow(ref) {\n delete Store[ref.id];\n ref.closing = false;\n fire(ref, 'afterClose');\n\n Utils.remove(ref.barDom);\n\n if (ref.layoutDom.querySelectorAll('.noty_bar').length === 0 && !ref.options.container) {\n Utils.remove(ref.layoutDom);\n }\n\n if (Utils.inArray('docVisible', ref.options.titleCount.conditions) || Utils.inArray('docHidden', ref.options.titleCount.conditions)) {\n docTitle.decrement();\n }\n\n queueRender(ref.options.queue);\n}\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.NotyButton = undefined;\n\nvar _utils = __webpack_require__(0);\n\nvar Utils = _interopRequireWildcard(_utils);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar NotyButton = exports.NotyButton = function NotyButton(html, classes, cb) {\n var _this = this;\n\n var attributes = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n _classCallCheck(this, NotyButton);\n\n this.dom = document.createElement('button');\n this.dom.innerHTML = html;\n this.id = attributes.id = attributes.id || Utils.generateID('button');\n this.cb = cb;\n Object.keys(attributes).forEach(function (propertyName) {\n _this.dom.setAttribute(propertyName, attributes[propertyName]);\n });\n Utils.addClass(this.dom, classes || 'noty_btn');\n\n return this;\n};\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Push = exports.Push = function () {\n function Push() {\n var workerPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '/service-worker.js';\n\n _classCallCheck(this, Push);\n\n this.subData = {};\n this.workerPath = workerPath;\n this.listeners = {\n onPermissionGranted: [],\n onPermissionDenied: [],\n onSubscriptionSuccess: [],\n onSubscriptionCancel: [],\n onWorkerError: [],\n onWorkerSuccess: [],\n onWorkerNotSupported: []\n };\n return this;\n }\n\n /**\r\n * @param {string} eventName\r\n * @param {function} cb\r\n * @return {Push}\r\n */\n\n\n _createClass(Push, [{\n key: 'on',\n value: function on(eventName) {\n var cb = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};\n\n if (typeof cb === 'function' && this.listeners.hasOwnProperty(eventName)) {\n this.listeners[eventName].push(cb);\n }\n\n return this;\n }\n }, {\n key: 'fire',\n value: function fire(eventName) {\n var _this = this;\n\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n if (this.listeners.hasOwnProperty(eventName)) {\n this.listeners[eventName].forEach(function (cb) {\n if (typeof cb === 'function') {\n cb.apply(_this, params);\n }\n });\n }\n }\n }, {\n key: 'create',\n value: function create() {\n console.log('NOT IMPLEMENTED YET');\n }\n\n /**\r\n * @return {boolean}\r\n */\n\n }, {\n key: 'isSupported',\n value: function isSupported() {\n var result = false;\n\n try {\n result = window.Notification || window.webkitNotifications || navigator.mozNotification || window.external && window.external.msIsSiteMode() !== undefined;\n } catch (e) {}\n\n return result;\n }\n\n /**\r\n * @return {string}\r\n */\n\n }, {\n key: 'getPermissionStatus',\n value: function getPermissionStatus() {\n var perm = 'default';\n\n if (window.Notification && window.Notification.permissionLevel) {\n perm = window.Notification.permissionLevel;\n } else if (window.webkitNotifications && window.webkitNotifications.checkPermission) {\n switch (window.webkitNotifications.checkPermission()) {\n case 1:\n perm = 'default';\n break;\n case 0:\n perm = 'granted';\n break;\n default:\n perm = 'denied';\n }\n } else if (window.Notification && window.Notification.permission) {\n perm = window.Notification.permission;\n } else if (navigator.mozNotification) {\n perm = 'granted';\n } else if (window.external && window.external.msIsSiteMode() !== undefined) {\n perm = window.external.msIsSiteMode() ? 'granted' : 'default';\n }\n\n return perm.toString().toLowerCase();\n }\n\n /**\r\n * @return {string}\r\n */\n\n }, {\n key: 'getEndpoint',\n value: function getEndpoint(subscription) {\n var endpoint = subscription.endpoint;\n var subscriptionId = subscription.subscriptionId;\n\n // fix for Chrome < 45\n if (subscriptionId && endpoint.indexOf(subscriptionId) === -1) {\n endpoint += '/' + subscriptionId;\n }\n\n return endpoint;\n }\n\n /**\r\n * @return {boolean}\r\n */\n\n }, {\n key: 'isSWRegistered',\n value: function isSWRegistered() {\n try {\n return navigator.serviceWorker.controller.state === 'activated';\n } catch (e) {\n return false;\n }\n }\n\n /**\r\n * @return {void}\r\n */\n\n }, {\n key: 'unregisterWorker',\n value: function unregisterWorker() {\n var self = this;\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.getRegistrations().then(function (registrations) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = registrations[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var registration = _step.value;\n\n registration.unregister();\n self.fire('onSubscriptionCancel');\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n });\n }\n }\n\n /**\r\n * @return {void}\r\n */\n\n }, {\n key: 'requestSubscription',\n value: function requestSubscription() {\n var _this2 = this;\n\n var userVisibleOnly = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n var self = this;\n var current = this.getPermissionStatus();\n var cb = function cb(result) {\n if (result === 'granted') {\n _this2.fire('onPermissionGranted');\n\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.register(_this2.workerPath).then(function () {\n navigator.serviceWorker.ready.then(function (serviceWorkerRegistration) {\n self.fire('onWorkerSuccess');\n serviceWorkerRegistration.pushManager.subscribe({\n userVisibleOnly: userVisibleOnly\n }).then(function (subscription) {\n var key = subscription.getKey('p256dh');\n var token = subscription.getKey('auth');\n\n self.subData = {\n endpoint: self.getEndpoint(subscription),\n p256dh: key ? window.btoa(String.fromCharCode.apply(null, new Uint8Array(key))) : null,\n auth: token ? window.btoa(String.fromCharCode.apply(null, new Uint8Array(token))) : null\n };\n\n self.fire('onSubscriptionSuccess', [self.subData]);\n }).catch(function (err) {\n self.fire('onWorkerError', [err]);\n });\n });\n });\n } else {\n self.fire('onWorkerNotSupported');\n }\n } else if (result === 'denied') {\n _this2.fire('onPermissionDenied');\n _this2.unregisterWorker();\n }\n };\n\n if (current === 'default') {\n if (window.Notification && window.Notification.requestPermission) {\n window.Notification.requestPermission(cb);\n } else if (window.webkitNotifications && window.webkitNotifications.checkPermission) {\n window.webkitNotifications.requestPermission(cb);\n }\n } else {\n cb(current);\n }\n }\n }]);\n\n return Push;\n}();\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(process, global) {var require;/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version 4.1.1\n */\n\n(function (global, factory) {\n\t true ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\nvar _isArray = undefined;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = undefined;\nvar customSchedulerFn = undefined;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && ({}).toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var r = require;\n var vertx = __webpack_require__(9);\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = undefined;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && \"function\" === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var _arguments = arguments;\n\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n if (_state) {\n (function () {\n var callback = _arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n })();\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(16);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar GET_THEN_ERROR = new ErrorObject();\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n try {\n return promise.then;\n } catch (error) {\n GET_THEN_ERROR.error = error;\n return GET_THEN_ERROR;\n }\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === GET_THEN_ERROR) {\n reject(promise, GET_THEN_ERROR.error);\n GET_THEN_ERROR.error = null;\n } else if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n handleMaybeThenable(promise, value, getThen(value));\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = undefined,\n callback = undefined,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction ErrorObject() {\n this.error = null;\n}\n\nvar TRY_CATCH_ERROR = new ErrorObject();\n\nfunction tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch (e) {\n TRY_CATCH_ERROR.error = e;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = undefined,\n error = undefined,\n succeeded = undefined,\n failed = undefined;\n\n if (hasCallback) {\n value = tryCatch(callback, detail);\n\n if (value === TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value.error = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (failed) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction Enumerator$1(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nEnumerator$1.prototype._enumerate = function (input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n};\n\nEnumerator$1.prototype._eachEntry = function (entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n if (resolve$$1 === resolve$1) {\n var _then = getThen(entry);\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$2) {\n var promise = new c(noop);\n handleMaybeThenable(promise, entry, _then);\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n};\n\nEnumerator$1.prototype._settledAt = function (state, i, value) {\n var promise = this.promise;\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n};\n\nEnumerator$1.prototype._willSettleAt = function (promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n};\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all$1(entries) {\n return new Enumerator$1(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race$1(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {function} resolver\n Useful for tooling.\n @constructor\n*/\nfunction Promise$2(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise$2 ? initializePromise(this, resolver) : needsNew();\n }\n}\n\nPromise$2.all = all$1;\nPromise$2.race = race$1;\nPromise$2.resolve = resolve$1;\nPromise$2.reject = reject$1;\nPromise$2._setScheduler = setScheduler;\nPromise$2._setAsap = setAsap;\nPromise$2._asap = asap;\n\nPromise$2.prototype = {\n constructor: Promise$2,\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n \n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n \n Chaining\n --------\n \n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n \n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n \n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n \n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n \n Assimilation\n ------------\n \n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n \n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n \n If the assimliated promise rejects, then the downstream promise will also reject.\n \n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n \n Simple Example\n --------------\n \n Synchronous Example\n \n ```javascript\n let result;\n \n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n \n Errback Example\n \n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n \n Promise Example;\n \n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n \n Advanced Example\n --------------\n \n Synchronous Example\n \n ```javascript\n let author, books;\n \n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n \n Errback Example\n \n ```js\n \n function foundBooks(books) {\n \n }\n \n function failure(reason) {\n \n }\n \n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n \n Promise Example;\n \n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n \n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n then: then,\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n \n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n \n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n \n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n \n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n 'catch': function _catch(onRejection) {\n return this.then(null, onRejection);\n }\n};\n\n/*global self*/\nfunction polyfill$1() {\n var local = undefined;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$2;\n}\n\n// Strange compat..\nPromise$2.polyfill = polyfill$1;\nPromise$2.Promise = Promise$2;\n\nreturn Promise$2;\n\n})));\n\n//# sourceMappingURL=es6-promise.map\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7), __webpack_require__(8)))\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* global VERSION */\n\n__webpack_require__(5);\n\nvar _es6Promise = __webpack_require__(4);\n\nvar _es6Promise2 = _interopRequireDefault(_es6Promise);\n\nvar _utils = __webpack_require__(0);\n\nvar Utils = _interopRequireWildcard(_utils);\n\nvar _api = __webpack_require__(1);\n\nvar API = _interopRequireWildcard(_api);\n\nvar _button = __webpack_require__(2);\n\nvar _push = __webpack_require__(3);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Noty = function () {\n /**\r\n * @param {object} options\r\n * @return {Noty}\r\n */\n function Noty() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Noty);\n\n this.options = Utils.deepExtend({}, API.Defaults, options);\n this.id = this.options.id || Utils.generateID('bar');\n this.closeTimer = -1;\n this.barDom = null;\n this.layoutDom = null;\n this.progressDom = null;\n this.showing = false;\n this.shown = false;\n this.closed = false;\n this.closing = false;\n this.killable = this.options.timeout || this.options.closeWith.length > 0;\n this.hasSound = this.options.sounds.sources.length > 0;\n this.soundPlayed = false;\n this.listeners = {\n beforeShow: [],\n onShow: [],\n afterShow: [],\n onClose: [],\n afterClose: [],\n onClick: [],\n onHover: [],\n onTemplate: []\n };\n this.promises = {\n show: null,\n close: null\n };\n this.on('beforeShow', this.options.callbacks.beforeShow);\n this.on('onShow', this.options.callbacks.onShow);\n this.on('afterShow', this.options.callbacks.afterShow);\n this.on('onClose', this.options.callbacks.onClose);\n this.on('afterClose', this.options.callbacks.afterClose);\n this.on('onClick', this.options.callbacks.onClick);\n this.on('onHover', this.options.callbacks.onHover);\n this.on('onTemplate', this.options.callbacks.onTemplate);\n\n return this;\n }\n\n /**\r\n * @param {string} eventName\r\n * @param {function} cb\r\n * @return {Noty}\r\n */\n\n\n _createClass(Noty, [{\n key: 'on',\n value: function on(eventName) {\n var cb = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};\n\n if (typeof cb === 'function' && this.listeners.hasOwnProperty(eventName)) {\n this.listeners[eventName].push(cb);\n }\n\n return this;\n }\n\n /**\r\n * @return {Noty}\r\n */\n\n }, {\n key: 'show',\n value: function show() {\n var _this = this;\n\n if (this.options.killer === true) {\n Noty.closeAll();\n } else if (typeof this.options.killer === 'string') {\n Noty.closeAll(this.options.killer);\n }\n\n var queueCounts = API.getQueueCounts(this.options.queue);\n\n if (queueCounts.current >= queueCounts.maxVisible || API.PageHidden && this.options.visibilityControl) {\n API.addToQueue(this);\n\n if (API.PageHidden && this.hasSound && Utils.inArray('docHidden', this.options.sounds.conditions)) {\n Utils.createAudioElements(this);\n }\n\n if (API.PageHidden && Utils.inArray('docHidden', this.options.titleCount.conditions)) {\n API.docTitle.increment();\n }\n\n return this;\n }\n\n API.Store[this.id] = this;\n\n API.fire(this, 'beforeShow');\n\n this.showing = true;\n\n if (this.closing) {\n this.showing = false;\n return this;\n }\n\n API.build(this);\n API.handleModal(this);\n\n if (this.options.force) {\n this.layoutDom.insertBefore(this.barDom, this.layoutDom.firstChild);\n } else {\n this.layoutDom.appendChild(this.barDom);\n }\n\n if (this.hasSound && !this.soundPlayed && Utils.inArray('docVisible', this.options.sounds.conditions)) {\n Utils.createAudioElements(this);\n }\n\n if (Utils.inArray('docVisible', this.options.titleCount.conditions)) {\n API.docTitle.increment();\n }\n\n this.shown = true;\n this.closed = false;\n\n // bind button events if any\n if (API.hasButtons(this)) {\n Object.keys(this.options.buttons).forEach(function (key) {\n var btn = _this.barDom.querySelector('#' + _this.options.buttons[key].id);\n Utils.addListener(btn, 'click', function (e) {\n Utils.stopPropagation(e);\n _this.options.buttons[key].cb();\n });\n });\n }\n\n this.progressDom = this.barDom.querySelector('.noty_progressbar');\n\n if (Utils.inArray('click', this.options.closeWith)) {\n Utils.addClass(this.barDom, 'noty_close_with_click');\n Utils.addListener(this.barDom, 'click', function (e) {\n Utils.stopPropagation(e);\n API.fire(_this, 'onClick');\n _this.close();\n }, false);\n }\n\n Utils.addListener(this.barDom, 'mouseenter', function () {\n API.fire(_this, 'onHover');\n }, false);\n\n if (this.options.timeout) Utils.addClass(this.barDom, 'noty_has_timeout');\n if (this.options.progressBar) {\n Utils.addClass(this.barDom, 'noty_has_progressbar');\n }\n\n if (Utils.inArray('button', this.options.closeWith)) {\n Utils.addClass(this.barDom, 'noty_close_with_button');\n\n var closeButton = document.createElement('div');\n Utils.addClass(closeButton, 'noty_close_button');\n closeButton.innerHTML = '×';\n this.barDom.appendChild(closeButton);\n\n Utils.addListener(closeButton, 'click', function (e) {\n Utils.stopPropagation(e);\n _this.close();\n }, false);\n }\n\n API.fire(this, 'onShow');\n\n if (this.options.animation.open === null) {\n this.promises.show = new _es6Promise2.default(function (resolve) {\n resolve();\n });\n } else if (typeof this.options.animation.open === 'function') {\n this.promises.show = new _es6Promise2.default(this.options.animation.open.bind(this));\n } else {\n Utils.addClass(this.barDom, this.options.animation.open);\n this.promises.show = new _es6Promise2.default(function (resolve) {\n Utils.addListener(_this.barDom, Utils.animationEndEvents, function () {\n Utils.removeClass(_this.barDom, _this.options.animation.open);\n resolve();\n });\n });\n }\n\n this.promises.show.then(function () {\n var _t = _this;\n setTimeout(function () {\n API.openFlow(_t);\n }, 100);\n });\n\n return this;\n }\n\n /**\r\n * @return {Noty}\r\n */\n\n }, {\n key: 'stop',\n value: function stop() {\n API.dequeueClose(this);\n return this;\n }\n\n /**\r\n * @return {Noty}\r\n */\n\n }, {\n key: 'resume',\n value: function resume() {\n API.queueClose(this);\n return this;\n }\n\n /**\r\n * @param {int|boolean} ms\r\n * @return {Noty}\r\n */\n\n }, {\n key: 'setTimeout',\n value: function (_setTimeout) {\n function setTimeout(_x) {\n return _setTimeout.apply(this, arguments);\n }\n\n setTimeout.toString = function () {\n return _setTimeout.toString();\n };\n\n return setTimeout;\n }(function (ms) {\n this.stop();\n this.options.timeout = ms;\n\n if (this.barDom) {\n if (this.options.timeout) {\n Utils.addClass(this.barDom, 'noty_has_timeout');\n } else {\n Utils.removeClass(this.barDom, 'noty_has_timeout');\n }\n\n var _t = this;\n setTimeout(function () {\n // ugly fix for progressbar display bug\n _t.resume();\n }, 100);\n }\n\n return this;\n })\n\n /**\r\n * @param {string} html\r\n * @param {boolean} optionsOverride\r\n * @return {Noty}\r\n */\n\n }, {\n key: 'setText',\n value: function setText(html) {\n var optionsOverride = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (this.barDom) {\n this.barDom.querySelector('.noty_body').innerHTML = html;\n }\n\n if (optionsOverride) this.options.text = html;\n\n return this;\n }\n\n /**\r\n * @param {string} type\r\n * @param {boolean} optionsOverride\r\n * @return {Noty}\r\n */\n\n }, {\n key: 'setType',\n value: function setType(type) {\n var _this2 = this;\n\n var optionsOverride = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (this.barDom) {\n var classList = Utils.classList(this.barDom).split(' ');\n\n classList.forEach(function (c) {\n if (c.substring(0, 11) === 'noty_type__') {\n Utils.removeClass(_this2.barDom, c);\n }\n });\n\n Utils.addClass(this.barDom, 'noty_type__' + type);\n }\n\n if (optionsOverride) this.options.type = type;\n\n return this;\n }\n\n /**\r\n * @param {string} theme\r\n * @param {boolean} optionsOverride\r\n * @return {Noty}\r\n */\n\n }, {\n key: 'setTheme',\n value: function setTheme(theme) {\n var _this3 = this;\n\n var optionsOverride = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (this.barDom) {\n var classList = Utils.classList(this.barDom).split(' ');\n\n classList.forEach(function (c) {\n if (c.substring(0, 12) === 'noty_theme__') {\n Utils.removeClass(_this3.barDom, c);\n }\n });\n\n Utils.addClass(this.barDom, 'noty_theme__' + theme);\n }\n\n if (optionsOverride) this.options.theme = theme;\n\n return this;\n }\n\n /**\r\n * @return {Noty}\r\n */\n\n }, {\n key: 'close',\n value: function close() {\n var _this4 = this;\n\n if (this.closed) return this;\n\n if (!this.shown) {\n // it's in the queue\n API.removeFromQueue(this);\n return this;\n }\n\n API.fire(this, 'onClose');\n\n this.closing = true;\n\n if (this.options.animation.close === null) {\n this.promises.close = new _es6Promise2.default(function (resolve) {\n resolve();\n });\n } else if (typeof this.options.animation.close === 'function') {\n this.promises.close = new _es6Promise2.default(this.options.animation.close.bind(this));\n } else {\n Utils.addClass(this.barDom, this.options.animation.close);\n this.promises.close = new _es6Promise2.default(function (resolve) {\n Utils.addListener(_this4.barDom, Utils.animationEndEvents, function () {\n if (_this4.options.force) {\n Utils.remove(_this4.barDom);\n } else {\n API.ghostFix(_this4);\n }\n resolve();\n });\n });\n }\n\n this.promises.close.then(function () {\n API.closeFlow(_this4);\n API.handleModalClose(_this4);\n });\n\n this.closed = true;\n\n return this;\n }\n\n // API functions\n\n /**\r\n * @param {boolean|string} queueName\r\n * @return {Noty}\r\n */\n\n }], [{\n key: 'closeAll',\n value: function closeAll() {\n var queueName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n Object.keys(API.Store).forEach(function (id) {\n if (queueName) {\n if (API.Store[id].options.queue === queueName && API.Store[id].killable) {\n API.Store[id].close();\n }\n } else if (API.Store[id].killable) {\n API.Store[id].close();\n }\n });\n return this;\n }\n\n /**\r\n * @param {Object} obj\r\n * @return {Noty}\r\n */\n\n }, {\n key: 'overrideDefaults',\n value: function overrideDefaults(obj) {\n API.Defaults = Utils.deepExtend({}, API.Defaults, obj);\n return this;\n }\n\n /**\r\n * @param {int} amount\r\n * @param {string} queueName\r\n * @return {Noty}\r\n */\n\n }, {\n key: 'setMaxVisible',\n value: function setMaxVisible() {\n var amount = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : API.DefaultMaxVisible;\n var queueName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'global';\n\n if (!API.Queues.hasOwnProperty(queueName)) {\n API.Queues[queueName] = { maxVisible: amount, queue: [] };\n }\n\n API.Queues[queueName].maxVisible = amount;\n return this;\n }\n\n /**\r\n * @param {string} innerHtml\r\n * @param {String} classes\r\n * @param {Function} cb\r\n * @param {Object} attributes\r\n * @return {NotyButton}\r\n */\n\n }, {\n key: 'button',\n value: function button(innerHtml) {\n var classes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var cb = arguments[2];\n var attributes = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n return new _button.NotyButton(innerHtml, classes, cb, attributes);\n }\n\n /**\r\n * @return {string}\r\n */\n\n }, {\n key: 'version',\n value: function version() {\n return \"3.1.4\";\n }\n\n /**\r\n * @param {String} workerPath\r\n * @return {Push}\r\n */\n\n }, {\n key: 'Push',\n value: function Push(workerPath) {\n return new _push.Push(workerPath);\n }\n }]);\n\n return Noty;\n}();\n\n// Document visibility change controller\n\n\nexports.default = Noty;\nUtils.visibilityChangeFlow();\nmodule.exports = exports['default'];\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports) {\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports) {\n\n/* (ignored) */\n\n/***/ })\n/******/ ]);\n});\n//# sourceMappingURL=noty.js.map","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar RequireObjectCoercible = require('es-abstract/2022/RequireObjectCoercible');\nvar callBound = require('call-bind/callBound');\nvar $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');\nvar $push = callBound('Array.prototype.push');\n\nmodule.exports = function entries(O) {\n\tvar obj = RequireObjectCoercible(O);\n\tvar entrys = [];\n\tfor (var key in obj) {\n\t\tif ($isEnumerable(obj, key)) { // checks own-ness as well\n\t\t\t$push(entrys, [key, obj[key]]);\n\t\t}\n\t}\n\treturn entrys;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.entries === 'function' ? Object.entries : implementation;\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimEntries() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { entries: polyfill }, {\n\t\tentries: function testEntries() {\n\t\t\treturn Object.entries !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar GetIntrinsic = require('get-intrinsic');\nvar isRegex = require('is-regex');\n\nvar $exec = callBound('RegExp.prototype.exec');\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nmodule.exports = function regexTester(regex) {\n\tif (!isRegex(regex)) {\n\t\tthrow new $TypeError('`regex` must be a RegExp');\n\t}\n\treturn function test(s) {\n\t\treturn $exec(regex, s) !== null;\n\t};\n};\n","'use strict';\n\nvar RequireObjectCoercible = require('es-abstract/2022/RequireObjectCoercible');\nvar ToString = require('es-abstract/2022/ToString');\nvar callBound = require('call-bind/callBound');\nvar $replace = callBound('String.prototype.replace');\n\nvar mvsIsWS = (/^\\s$/).test('\\u180E');\n/* eslint-disable no-control-regex */\nvar leftWhitespace = mvsIsWS\n\t? /^[\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF]+/\n\t: /^[\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF]+/;\nvar rightWhitespace = mvsIsWS\n\t? /[\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF]+$/\n\t: /[\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF]+$/;\n/* eslint-enable no-control-regex */\n\nmodule.exports = function trim() {\n\tvar S = ToString(RequireObjectCoercible(this));\n\treturn $replace($replace(S, leftWhitespace, ''), rightWhitespace, '');\n};\n","'use strict';\n\nvar callBind = require('call-bind');\nvar define = require('define-properties');\nvar RequireObjectCoercible = require('es-abstract/2022/RequireObjectCoercible');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar bound = callBind(getPolyfill());\nvar boundMethod = function trim(receiver) {\n\tRequireObjectCoercible(receiver);\n\treturn bound(receiver);\n};\n\ndefine(boundMethod, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = boundMethod;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar zeroWidthSpace = '\\u200b';\nvar mongolianVowelSeparator = '\\u180E';\n\nmodule.exports = function getPolyfill() {\n\tif (\n\t\tString.prototype.trim\n\t\t&& zeroWidthSpace.trim() === zeroWidthSpace\n\t\t&& mongolianVowelSeparator.trim() === mongolianVowelSeparator\n\t\t&& ('_' + mongolianVowelSeparator).trim() === ('_' + mongolianVowelSeparator)\n\t\t&& (mongolianVowelSeparator + '_').trim() === (mongolianVowelSeparator + '_')\n\t) {\n\t\treturn String.prototype.trim;\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimStringTrim() {\n\tvar polyfill = getPolyfill();\n\tdefine(String.prototype, { trim: polyfill }, {\n\t\ttrim: function testTrim() {\n\t\t\treturn String.prototype.trim !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","module.exports = jQuery;","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar IsArray = require('./IsArray');\n\nvar $apply = GetIntrinsic('%Reflect.apply%', true) || callBound('%Function.prototype.apply%');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-call\n\nmodule.exports = function Call(F, V) {\n\tvar argumentsList = arguments.length > 2 ? arguments[2] : [];\n\tif (!IsArray(argumentsList)) {\n\t\tthrow new $TypeError('Assertion failed: optional `argumentsList`, if provided, must be a List');\n\t}\n\treturn $apply(F, V, argumentsList);\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar inspect = require('object-inspect');\n\nvar IsPropertyKey = require('./IsPropertyKey');\nvar Type = require('./Type');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-get-o-p\n\nmodule.exports = function Get(O, P) {\n\t// 7.3.1.1\n\tif (Type(O) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: Type(O) is not Object');\n\t}\n\t// 7.3.1.2\n\tif (!IsPropertyKey(P)) {\n\t\tthrow new $TypeError('Assertion failed: IsPropertyKey(P) is not true, got ' + inspect(P));\n\t}\n\t// 7.3.1.3\n\treturn O[P];\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar IsPropertyKey = require('./IsPropertyKey');\nvar Type = require('./Type');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-hasproperty\n\nmodule.exports = function HasProperty(O, P) {\n\tif (Type(O) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: `O` must be an Object');\n\t}\n\tif (!IsPropertyKey(P)) {\n\t\tthrow new $TypeError('Assertion failed: `P` must be a Property Key');\n\t}\n\treturn P in O;\n};\n","'use strict';\n\n// https://ecma-international.org/ecma-262/6.0/#sec-isarray\nmodule.exports = require('../helpers/IsArray');\n","'use strict';\n\n// http://262.ecma-international.org/5.1/#sec-9.11\n\nmodule.exports = require('is-callable');\n","'use strict';\n\n// https://ecma-international.org/ecma-262/6.0/#sec-ispropertykey\n\nmodule.exports = function IsPropertyKey(argument) {\n\treturn typeof argument === 'string' || typeof argument === 'symbol';\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\nvar Get = require('./Get');\nvar ToLength = require('./ToLength');\nvar Type = require('./Type');\n\n// https://262.ecma-international.org/11.0/#sec-lengthofarraylike\n\nmodule.exports = function LengthOfArrayLike(obj) {\n\tif (Type(obj) !== 'Object') {\n\t\tthrow new $TypeError('Assertion failed: `obj` must be an Object');\n\t}\n\treturn ToLength(Get(obj, 'length'));\n};\n\n// TODO: use this all over\n","'use strict';\n\nmodule.exports = require('../5/CheckObjectCoercible');\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $Number = GetIntrinsic('%Number%');\nvar $RegExp = GetIntrinsic('%RegExp%');\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $parseInteger = GetIntrinsic('%parseInt%');\n\nvar callBound = require('call-bind/callBound');\nvar regexTester = require('safe-regex-test');\n\nvar $strSlice = callBound('String.prototype.slice');\nvar isBinary = regexTester(/^0b[01]+$/i);\nvar isOctal = regexTester(/^0o[0-7]+$/i);\nvar isInvalidHexLiteral = regexTester(/^[-+]0x[0-9a-f]+$/i);\nvar nonWS = ['\\u0085', '\\u200b', '\\ufffe'].join('');\nvar nonWSregex = new $RegExp('[' + nonWS + ']', 'g');\nvar hasNonWS = regexTester(nonWSregex);\n\n// whitespace from: https://es5.github.io/#x15.5.4.20\n// implementation from https://github.com/es-shims/es5-shim/blob/v3.4.0/es5-shim.js#L1304-L1324\nvar ws = [\n\t'\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003',\n\t'\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028',\n\t'\\u2029\\uFEFF'\n].join('');\nvar trimRegex = new RegExp('(^[' + ws + ']+)|([' + ws + ']+$)', 'g');\nvar $replace = callBound('String.prototype.replace');\nvar $trim = function (value) {\n\treturn $replace(value, trimRegex, '');\n};\n\nvar Type = require('./Type');\n\n// https://ecma-international.org/ecma-262/13.0/#sec-stringtonumber\n\nmodule.exports = function StringToNumber(argument) {\n\tif (Type(argument) !== 'String') {\n\t\tthrow new $TypeError('Conversion from \\'BigInt\\' to \\'number\\' is not allowed.');\n\t}\n\tif (isBinary(argument)) {\n\t\treturn $Number($parseInteger($strSlice(argument, 2), 2));\n\t}\n\tif (isOctal(argument)) {\n\t\treturn $Number($parseInteger($strSlice(argument, 2), 8));\n\t}\n\tif (hasNonWS(argument) || isInvalidHexLiteral(argument)) {\n\t\treturn NaN;\n\t}\n\tvar trimmed = $trim(argument);\n\tif (trimmed !== argument) {\n\t\treturn StringToNumber(trimmed);\n\t}\n\treturn $Number(argument);\n};\n","'use strict';\n\nvar abs = require('./abs');\nvar floor = require('./floor');\nvar ToNumber = require('./ToNumber');\n\nvar $isNaN = require('../helpers/isNaN');\nvar $isFinite = require('../helpers/isFinite');\nvar $sign = require('../helpers/sign');\n\n// https://262.ecma-international.org/12.0/#sec-tointegerorinfinity\n\nmodule.exports = function ToIntegerOrInfinity(value) {\n\tvar number = ToNumber(value);\n\tif ($isNaN(number) || number === 0) { return 0; }\n\tif (!$isFinite(number)) { return number; }\n\tvar integer = floor(abs(number));\n\tif (integer === 0) { return 0; }\n\treturn $sign(number) * integer;\n};\n","'use strict';\n\nvar MAX_SAFE_INTEGER = require('../helpers/maxSafeInteger');\n\nvar ToIntegerOrInfinity = require('./ToIntegerOrInfinity');\n\nmodule.exports = function ToLength(argument) {\n\tvar len = ToIntegerOrInfinity(argument);\n\tif (len <= 0) { return 0; } // includes converting -0 to +0\n\tif (len > MAX_SAFE_INTEGER) { return MAX_SAFE_INTEGER; }\n\treturn len;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $Number = GetIntrinsic('%Number%');\nvar isPrimitive = require('../helpers/isPrimitive');\n\nvar ToPrimitive = require('./ToPrimitive');\nvar StringToNumber = require('./StringToNumber');\n\n// https://ecma-international.org/ecma-262/13.0/#sec-tonumber\n\nmodule.exports = function ToNumber(argument) {\n\tvar value = isPrimitive(argument) ? argument : ToPrimitive(argument, $Number);\n\tif (typeof value === 'symbol') {\n\t\tthrow new $TypeError('Cannot convert a Symbol value to a number');\n\t}\n\tif (typeof value === 'bigint') {\n\t\tthrow new $TypeError('Conversion from \\'BigInt\\' to \\'number\\' is not allowed.');\n\t}\n\tif (typeof value === 'string') {\n\t\treturn StringToNumber(value);\n\t}\n\treturn $Number(value);\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $Object = GetIntrinsic('%Object%');\n\nvar RequireObjectCoercible = require('./RequireObjectCoercible');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-toobject\n\nmodule.exports = function ToObject(value) {\n\tRequireObjectCoercible(value);\n\treturn $Object(value);\n};\n","'use strict';\n\nvar toPrimitive = require('es-to-primitive/es2015');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-toprimitive\n\nmodule.exports = function ToPrimitive(input) {\n\tif (arguments.length > 1) {\n\t\treturn toPrimitive(input, arguments[1]);\n\t}\n\treturn toPrimitive(input);\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $String = GetIntrinsic('%String%');\nvar $TypeError = GetIntrinsic('%TypeError%');\n\n// https://ecma-international.org/ecma-262/6.0/#sec-tostring\n\nmodule.exports = function ToString(argument) {\n\tif (typeof argument === 'symbol') {\n\t\tthrow new $TypeError('Cannot convert a Symbol value to a string');\n\t}\n\treturn $String(argument);\n};\n","'use strict';\n\nvar ES5Type = require('../5/Type');\n\n// https://262.ecma-international.org/11.0/#sec-ecmascript-data-types-and-values\n\nmodule.exports = function Type(x) {\n\tif (typeof x === 'symbol') {\n\t\treturn 'Symbol';\n\t}\n\tif (typeof x === 'bigint') {\n\t\treturn 'BigInt';\n\t}\n\treturn ES5Type(x);\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $abs = GetIntrinsic('%Math.abs%');\n\n// http://262.ecma-international.org/5.1/#sec-5.2\n\nmodule.exports = function abs(x) {\n\treturn $abs(x);\n};\n","'use strict';\n\nvar Type = require('./Type');\n\n// var modulo = require('./modulo');\nvar $floor = Math.floor;\n\n// http://262.ecma-international.org/11.0/#eqn-floor\n\nmodule.exports = function floor(x) {\n\t// return x - modulo(x, 1);\n\tif (Type(x) === 'BigInt') {\n\t\treturn x;\n\t}\n\treturn $floor(x);\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\n\n// http://262.ecma-international.org/5.1/#sec-9.10\n\nmodule.exports = function CheckObjectCoercible(value, optMessage) {\n\tif (value == null) {\n\t\tthrow new $TypeError(optMessage || ('Cannot call method on ' + value));\n\t}\n\treturn value;\n};\n","'use strict';\n\n// https://262.ecma-international.org/5.1/#sec-8\n\nmodule.exports = function Type(x) {\n\tif (x === null) {\n\t\treturn 'Null';\n\t}\n\tif (typeof x === 'undefined') {\n\t\treturn 'Undefined';\n\t}\n\tif (typeof x === 'function' || typeof x === 'object') {\n\t\treturn 'Object';\n\t}\n\tif (typeof x === 'number') {\n\t\treturn 'Number';\n\t}\n\tif (typeof x === 'boolean') {\n\t\treturn 'Boolean';\n\t}\n\tif (typeof x === 'string') {\n\t\treturn 'String';\n\t}\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $Array = GetIntrinsic('%Array%');\n\n// eslint-disable-next-line global-require\nvar toStr = !$Array.isArray && require('call-bind/callBound')('Object.prototype.toString');\n\nmodule.exports = $Array.isArray || function IsArray(argument) {\n\treturn toStr(argument) === '[object Array]';\n};\n","'use strict';\n\nvar $isNaN = Number.isNaN || function (a) { return a !== a; };\n\nmodule.exports = Number.isFinite || function (x) { return typeof x === 'number' && !$isNaN(x) && x !== Infinity && x !== -Infinity; };\n","'use strict';\n\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n","'use strict';\n\nmodule.exports = function isPrimitive(value) {\n\treturn value === null || (typeof value !== 'function' && typeof value !== 'object');\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $Math = GetIntrinsic('%Math%');\nvar $Number = GetIntrinsic('%Number%');\n\nmodule.exports = $Number.MAX_SAFE_INTEGER || $Math.pow(2, 53) - 1;\n","'use strict';\n\nmodule.exports = function sign(number) {\n\treturn number >= 0 ? 1 : -1;\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"scripts/\" + chunkId + \".min.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t34: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk\"] = self[\"webpackChunk\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","var win = window;\n\nexport var raf = win.requestAnimationFrame\n || win.webkitRequestAnimationFrame\n || win.mozRequestAnimationFrame\n || win.msRequestAnimationFrame\n || function(cb) { return setTimeout(cb, 16); };\n","var win = window;\n\nexport var caf = win.cancelAnimationFrame\n || win.mozCancelAnimationFrame\n || function(id){ clearTimeout(id); };\n","export function extend() {\n var obj, name, copy,\n target = arguments[0] || {},\n i = 1,\n length = arguments.length;\n\n for (; i < length; i++) {\n if ((obj = arguments[i]) !== null) {\n for (name in obj) {\n copy = obj[name];\n\n if (target === copy) {\n continue;\n } else if (copy !== undefined) {\n target[name] = copy;\n }\n }\n }\n }\n return target;\n}","export function checkStorageValue (value) {\n return ['true', 'false'].indexOf(value) >= 0 ? JSON.parse(value) : value;\n}","export function setLocalStorage(storage, key, value, access) {\n if (access) {\n try { storage.setItem(key, value); } catch (e) {}\n }\n return value;\n}","export function getBody () {\n var doc = document,\n body = doc.body;\n\n if (!body) {\n body = doc.createElement('body');\n body.fake = true;\n }\n\n return body;\n}","export var docElement = document.documentElement;","import { docElement } from './docElement.js';\n\nexport function setFakeBody (body) {\n var docOverflow = '';\n if (body.fake) {\n docOverflow = docElement.style.overflow;\n //avoid crashing IE8, if background image is used\n body.style.background = '';\n //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible\n body.style.overflow = docElement.style.overflow = 'hidden';\n docElement.appendChild(body);\n }\n\n return docOverflow;\n}","import { docElement } from './docElement.js';\n\nexport function resetFakeBody (body, docOverflow) {\n if (body.fake) {\n body.remove();\n docElement.style.overflow = docOverflow;\n // Trigger layout so kinetic scrolling isn't disabled in iOS6+\n // eslint-disable-next-line\n docElement.offsetHeight;\n }\n}","// cross browsers addRule method\nimport { raf } from './raf.js';\nexport function addCSSRule(sheet, selector, rules, index) {\n // return raf(function() {\n 'insertRule' in sheet ?\n sheet.insertRule(selector + '{' + rules + '}', index) :\n sheet.addRule(selector, rules, index);\n // });\n}","export function getCssRulesLength(sheet) {\n var rule = ('insertRule' in sheet) ? sheet.cssRules : sheet.rules;\n return rule.length;\n}","// https://toddmotto.com/ditch-the-array-foreach-call-nodelist-hack/\nexport function forEach (arr, callback, scope) {\n for (var i = 0, l = arr.length; i < l; i++) {\n callback.call(scope, arr[i], i);\n }\n}","export var classListSupport = 'classList' in document.createElement('_');","import { classListSupport } from './classListSupport.js';\n\nvar hasClass = classListSupport ?\n function (el, str) { return el.classList.contains(str); } :\n function (el, str) { return el.className.indexOf(str) >= 0; };\n\nexport { classListSupport, hasClass };","import { classListSupport, hasClass } from './hasClass.js';\nvar addClass = classListSupport ?\n function (el, str) {\n if (!hasClass(el, str)) { el.classList.add(str); }\n } :\n function (el, str) {\n if (!hasClass(el, str)) { el.className += ' ' + str; }\n };\n\nexport { addClass };","import { classListSupport, hasClass } from './hasClass.js';\nvar removeClass = classListSupport ?\n function (el, str) {\n if (hasClass(el, str)) { el.classList.remove(str); }\n } :\n function (el, str) {\n if (hasClass(el, str)) { el.className = el.className.replace(str, ''); }\n };\n\nexport { removeClass };","export function hasAttr(el, attr) {\n return el.hasAttribute(attr);\n}","export function getAttr(el, attr) {\n return el.getAttribute(attr);\n}","export function isNodeList(el) {\n // Only NodeList has the \"item()\" function\n return typeof el.item !== \"undefined\"; \n}","import { isNodeList } from \"./isNodeList.js\";\n\nexport function setAttrs(els, attrs) {\n els = (isNodeList(els) || els instanceof Array) ? els : [els];\n if (Object.prototype.toString.call(attrs) !== '[object Object]') { return; }\n\n for (var i = els.length; i--;) {\n for(var key in attrs) {\n els[i].setAttribute(key, attrs[key]);\n }\n }\n}","import { isNodeList } from \"./isNodeList.js\";\n\nexport function removeAttrs(els, attrs) {\n els = (isNodeList(els) || els instanceof Array) ? els : [els];\n attrs = (attrs instanceof Array) ? attrs : [attrs];\n\n var attrLength = attrs.length;\n for (var i = els.length; i--;) {\n for (var j = attrLength; j--;) {\n els[i].removeAttribute(attrs[j]);\n }\n }\n}","export function arrayFromNodeList (nl) {\n var arr = [];\n for (var i = 0, l = nl.length; i < l; i++) {\n arr.push(nl[i]);\n }\n return arr;\n}","export function hideElement(el, forceHide) {\n if (el.style.display !== 'none') { el.style.display = 'none'; }\n}","export function showElement(el, forceHide) {\n if (el.style.display === 'none') { el.style.display = ''; }\n}","export function isVisible(el) {\n return window.getComputedStyle(el).display !== 'none';\n}","export function whichProperty(props){\n if (typeof props === 'string') {\n var arr = [props],\n Props = props.charAt(0).toUpperCase() + props.substr(1),\n prefixes = ['Webkit', 'Moz', 'ms', 'O'];\n \n prefixes.forEach(function(prefix) {\n if (prefix !== 'ms' || props === 'transform') {\n arr.push(prefix + Props);\n }\n });\n\n props = arr;\n }\n\n var el = document.createElement('fakeelement'),\n len = props.length;\n for(var i = 0; i < props.length; i++){\n var prop = props[i];\n if( el.style[prop] !== undefined ){ return prop; }\n }\n\n return false; // explicit for ie9-\n}\n","// get transitionend, animationend based on transitionDuration\n// @propin: string\n// @propOut: string, first-letter uppercase\n// Usage: getEndProperty('WebkitTransitionDuration', 'Transition') => webkitTransitionEnd\nexport function getEndProperty(propIn, propOut) {\n var endProp = false;\n if (/^Webkit/.test(propIn)) {\n endProp = 'webkit' + propOut + 'End';\n } else if (/^O/.test(propIn)) {\n endProp = 'o' + propOut + 'End';\n } else if (propIn) {\n endProp = propOut.toLowerCase() + 'end';\n }\n return endProp;\n}","// Test via a getter in the options object to see if the passive property is accessed\nvar supportsPassive = false;\ntry {\n var opts = Object.defineProperty({}, 'passive', {\n get: function() {\n supportsPassive = true;\n }\n });\n window.addEventListener(\"test\", null, opts);\n} catch (e) {}\nexport var passiveOption = supportsPassive ? { passive: true } : false;","import { passiveOption } from './passiveOption.js';\n\nexport function addEvents(el, obj, preventScrolling) {\n for (var prop in obj) {\n var option = ['touchstart', 'touchmove'].indexOf(prop) >= 0 && !preventScrolling ? passiveOption : false;\n el.addEventListener(prop, obj[prop], option);\n }\n}","import { passiveOption } from './passiveOption.js';\n\nexport function removeEvents(el, obj) {\n for (var prop in obj) {\n var option = ['touchstart', 'touchmove'].indexOf(prop) >= 0 ? passiveOption : false;\n el.removeEventListener(prop, obj[prop], option);\n }\n}","export function Events() {\n return {\n topics: {},\n on: function (eventName, fn) {\n this.topics[eventName] = this.topics[eventName] || [];\n this.topics[eventName].push(fn);\n },\n off: function(eventName, fn) {\n if (this.topics[eventName]) {\n for (var i = 0; i < this.topics[eventName].length; i++) {\n if (this.topics[eventName][i] === fn) {\n this.topics[eventName].splice(i, 1);\n break;\n }\n }\n }\n },\n emit: function (eventName, data) {\n data.type = eventName;\n if (this.topics[eventName]) {\n this.topics[eventName].forEach(function(fn) {\n fn(data, eventName);\n });\n }\n }\n };\n};","// Object.keys\nif (!Object.keys) {\n Object.keys = function(object) {\n var keys = [];\n for (var name in object) {\n if (Object.prototype.hasOwnProperty.call(object, name)) {\n keys.push(name);\n }\n }\n return keys;\n };\n}\n\n// ChildNode.remove\nif(!(\"remove\" in Element.prototype)){\n Element.prototype.remove = function(){\n if(this.parentNode) {\n this.parentNode.removeChild(this);\n }\n };\n}\n\nimport { raf } from './helpers/raf.js';\nimport { caf } from './helpers/caf.js';\nimport { extend } from './helpers/extend.js';\nimport { checkStorageValue } from './helpers/checkStorageValue.js';\nimport { setLocalStorage } from './helpers/setLocalStorage.js';\nimport { getSlideId } from './helpers/getSlideId.js';\nimport { calc } from './helpers/calc.js';\nimport { percentageLayout } from './helpers/percentageLayout.js';\nimport { mediaquerySupport } from './helpers/mediaquerySupport.js';\nimport { createStyleSheet } from './helpers/createStyleSheet.js';\nimport { addCSSRule } from './helpers/addCSSRule.js';\nimport { removeCSSRule } from './helpers/removeCSSRule.js';\nimport { getCssRulesLength } from './helpers/getCssRulesLength.js';\nimport { toDegree } from './helpers/toDegree.js';\nimport { getTouchDirection } from './helpers/getTouchDirection.js';\nimport { forEach } from './helpers/forEach.js';\nimport { hasClass } from './helpers/hasClass.js';\nimport { addClass } from './helpers/addClass.js';\nimport { removeClass } from './helpers/removeClass.js';\nimport { hasAttr } from './helpers/hasAttr.js';\nimport { getAttr } from './helpers/getAttr.js';\nimport { setAttrs } from './helpers/setAttrs.js';\nimport { removeAttrs } from './helpers/removeAttrs.js';\nimport { arrayFromNodeList } from './helpers/arrayFromNodeList.js';\nimport { hideElement } from './helpers/hideElement.js';\nimport { showElement } from './helpers/showElement.js';\nimport { isVisible } from './helpers/isVisible.js';\nimport { whichProperty } from './helpers/whichProperty.js';\nimport { has3DTransforms } from './helpers/has3DTransforms.js';\nimport { getEndProperty } from './helpers/getEndProperty.js';\nimport { addEvents } from './helpers/addEvents.js';\nimport { removeEvents } from './helpers/removeEvents.js';\nimport { Events } from './helpers/events.js';\nimport { jsTransform } from './helpers/jsTransform.js';\n\nexport var tns = function(options) {\n options = extend({\n container: '.slider',\n mode: 'carousel',\n axis: 'horizontal',\n items: 1,\n gutter: 0,\n edgePadding: 0,\n fixedWidth: false,\n autoWidth: false,\n viewportMax: false,\n slideBy: 1,\n center: false,\n controls: true,\n controlsPosition: 'top',\n controlsText: ['prev', 'next'],\n controlsContainer: false,\n prevButton: false,\n nextButton: false,\n nav: true,\n navPosition: 'top',\n navContainer: false,\n navAsThumbnails: false,\n arrowKeys: false,\n speed: 300,\n autoplay: false,\n autoplayPosition: 'top',\n autoplayTimeout: 5000,\n autoplayDirection: 'forward',\n autoplayText: ['start', 'stop'],\n autoplayHoverPause: false,\n autoplayButton: false,\n autoplayButtonOutput: true,\n autoplayResetOnVisibility: true,\n animateIn: 'tns-fadeIn',\n animateOut: 'tns-fadeOut',\n animateNormal: 'tns-normal',\n animateDelay: false,\n loop: true,\n rewind: false,\n autoHeight: false,\n responsive: false,\n lazyload: false,\n lazyloadSelector: '.tns-lazy-img',\n touch: true,\n mouseDrag: false,\n swipeAngle: 15,\n nested: false,\n preventActionWhenRunning: false,\n preventScrollOnTouch: false,\n freezable: true,\n onInit: false,\n useLocalStorage: true,\n nonce: false\n }, options || {});\n\n var doc = document,\n win = window,\n KEYS = {\n ENTER: 13,\n SPACE: 32,\n LEFT: 37,\n RIGHT: 39\n },\n tnsStorage = {},\n localStorageAccess = options.useLocalStorage;\n\n if (localStorageAccess) {\n // check browser version and local storage access\n var browserInfo = navigator.userAgent;\n var uid = new Date;\n\n try {\n tnsStorage = win.localStorage;\n if (tnsStorage) {\n tnsStorage.setItem(uid, uid);\n localStorageAccess = tnsStorage.getItem(uid) == uid;\n tnsStorage.removeItem(uid);\n } else {\n localStorageAccess = false;\n }\n if (!localStorageAccess) { tnsStorage = {}; }\n } catch(e) {\n localStorageAccess = false;\n }\n\n if (localStorageAccess) {\n // remove storage when browser version changes\n if (tnsStorage['tnsApp'] && tnsStorage['tnsApp'] !== browserInfo) {\n ['tC', 'tPL', 'tMQ', 'tTf', 't3D', 'tTDu', 'tTDe', 'tADu', 'tADe', 'tTE', 'tAE'].forEach(function(item) { tnsStorage.removeItem(item); });\n }\n // update browserInfo\n localStorage['tnsApp'] = browserInfo;\n }\n }\n\n var CALC = tnsStorage['tC'] ? checkStorageValue(tnsStorage['tC']) : setLocalStorage(tnsStorage, 'tC', calc(), localStorageAccess),\n PERCENTAGELAYOUT = tnsStorage['tPL'] ? checkStorageValue(tnsStorage['tPL']) : setLocalStorage(tnsStorage, 'tPL', percentageLayout(), localStorageAccess),\n CSSMQ = tnsStorage['tMQ'] ? checkStorageValue(tnsStorage['tMQ']) : setLocalStorage(tnsStorage, 'tMQ', mediaquerySupport(), localStorageAccess),\n TRANSFORM = tnsStorage['tTf'] ? checkStorageValue(tnsStorage['tTf']) : setLocalStorage(tnsStorage, 'tTf', whichProperty('transform'), localStorageAccess),\n HAS3DTRANSFORMS = tnsStorage['t3D'] ? checkStorageValue(tnsStorage['t3D']) : setLocalStorage(tnsStorage, 't3D', has3DTransforms(TRANSFORM), localStorageAccess),\n TRANSITIONDURATION = tnsStorage['tTDu'] ? checkStorageValue(tnsStorage['tTDu']) : setLocalStorage(tnsStorage, 'tTDu', whichProperty('transitionDuration'), localStorageAccess),\n TRANSITIONDELAY = tnsStorage['tTDe'] ? checkStorageValue(tnsStorage['tTDe']) : setLocalStorage(tnsStorage, 'tTDe', whichProperty('transitionDelay'), localStorageAccess),\n ANIMATIONDURATION = tnsStorage['tADu'] ? checkStorageValue(tnsStorage['tADu']) : setLocalStorage(tnsStorage, 'tADu', whichProperty('animationDuration'), localStorageAccess),\n ANIMATIONDELAY = tnsStorage['tADe'] ? checkStorageValue(tnsStorage['tADe']) : setLocalStorage(tnsStorage, 'tADe', whichProperty('animationDelay'), localStorageAccess),\n TRANSITIONEND = tnsStorage['tTE'] ? checkStorageValue(tnsStorage['tTE']) : setLocalStorage(tnsStorage, 'tTE', getEndProperty(TRANSITIONDURATION, 'Transition'), localStorageAccess),\n ANIMATIONEND = tnsStorage['tAE'] ? checkStorageValue(tnsStorage['tAE']) : setLocalStorage(tnsStorage, 'tAE', getEndProperty(ANIMATIONDURATION, 'Animation'), localStorageAccess);\n\n // get element nodes from selectors\n var supportConsoleWarn = win.console && typeof win.console.warn === \"function\",\n tnsList = ['container', 'controlsContainer', 'prevButton', 'nextButton', 'navContainer', 'autoplayButton'],\n optionsElements = {};\n\n tnsList.forEach(function(item) {\n if (typeof options[item] === 'string') {\n var str = options[item],\n el = doc.querySelector(str);\n optionsElements[item] = str;\n\n if (el && el.nodeName) {\n options[item] = el;\n } else {\n if (supportConsoleWarn) { console.warn('Can\\'t find', options[item]); }\n return;\n }\n }\n });\n\n // make sure at least 1 slide\n if (options.container.children.length < 1) {\n if (supportConsoleWarn) { console.warn('No slides found in', options.container); }\n return;\n }\n\n // update options\n var responsive = options.responsive,\n nested = options.nested,\n carousel = options.mode === 'carousel' ? true : false;\n\n if (responsive) {\n // apply responsive[0] to options and remove it\n if (0 in responsive) {\n options = extend(options, responsive[0]);\n delete responsive[0];\n }\n\n var responsiveTem = {};\n for (var key in responsive) {\n var val = responsive[key];\n // update responsive\n // from: 300: 2\n // to:\n // 300: {\n // items: 2\n // }\n val = typeof val === 'number' ? {items: val} : val;\n responsiveTem[key] = val;\n }\n responsive = responsiveTem;\n responsiveTem = null;\n }\n\n // update options\n function updateOptions (obj) {\n for (var key in obj) {\n if (!carousel) {\n if (key === 'slideBy') { obj[key] = 'page'; }\n if (key === 'edgePadding') { obj[key] = false; }\n if (key === 'autoHeight') { obj[key] = false; }\n }\n\n // update responsive options\n if (key === 'responsive') { updateOptions(obj[key]); }\n }\n }\n if (!carousel) { updateOptions(options); }\n\n\n // === define and set variables ===\n if (!carousel) {\n options.axis = 'horizontal';\n options.slideBy = 'page';\n options.edgePadding = false;\n\n var animateIn = options.animateIn,\n animateOut = options.animateOut,\n animateDelay = options.animateDelay,\n animateNormal = options.animateNormal;\n }\n\n var horizontal = options.axis === 'horizontal' ? true : false,\n outerWrapper = doc.createElement('div'),\n innerWrapper = doc.createElement('div'),\n middleWrapper,\n container = options.container,\n containerParent = container.parentNode,\n containerHTML = container.outerHTML,\n slideItems = container.children,\n slideCount = slideItems.length,\n breakpointZone,\n windowWidth = getWindowWidth(),\n isOn = false;\n if (responsive) { setBreakpointZone(); }\n if (carousel) { container.className += ' tns-vpfix'; }\n\n // fixedWidth: viewport > rightBoundary > indexMax\n var autoWidth = options.autoWidth,\n fixedWidth = getOption('fixedWidth'),\n edgePadding = getOption('edgePadding'),\n gutter = getOption('gutter'),\n viewport = getViewportWidth(),\n center = getOption('center'),\n items = !autoWidth ? Math.floor(getOption('items')) : 1,\n slideBy = getOption('slideBy'),\n viewportMax = options.viewportMax || options.fixedWidthViewportWidth,\n arrowKeys = getOption('arrowKeys'),\n speed = getOption('speed'),\n rewind = options.rewind,\n loop = rewind ? false : options.loop,\n autoHeight = getOption('autoHeight'),\n controls = getOption('controls'),\n controlsText = getOption('controlsText'),\n nav = getOption('nav'),\n touch = getOption('touch'),\n mouseDrag = getOption('mouseDrag'),\n autoplay = getOption('autoplay'),\n autoplayTimeout = getOption('autoplayTimeout'),\n autoplayText = getOption('autoplayText'),\n autoplayHoverPause = getOption('autoplayHoverPause'),\n autoplayResetOnVisibility = getOption('autoplayResetOnVisibility'),\n sheet = createStyleSheet(null, getOption('nonce')),\n lazyload = options.lazyload,\n lazyloadSelector = options.lazyloadSelector,\n slidePositions, // collection of slide positions\n slideItemsOut = [],\n cloneCount = loop ? getCloneCountForLoop() : 0,\n slideCountNew = !carousel ? slideCount + cloneCount : slideCount + cloneCount * 2,\n hasRightDeadZone = (fixedWidth || autoWidth) && !loop ? true : false,\n rightBoundary = fixedWidth ? getRightBoundary() : null,\n updateIndexBeforeTransform = (!carousel || !loop) ? true : false,\n // transform\n transformAttr = horizontal ? 'left' : 'top',\n transformPrefix = '',\n transformPostfix = '',\n // index\n getIndexMax = (function () {\n if (fixedWidth) {\n return function() { return center && !loop ? slideCount - 1 : Math.ceil(- rightBoundary / (fixedWidth + gutter)); };\n } else if (autoWidth) {\n return function() {\n for (var i = 0; i < slideCountNew; i++) {\n if (slidePositions[i] >= - rightBoundary) { return i; }\n }\n };\n } else {\n return function() {\n if (center && carousel && !loop) {\n return slideCount - 1;\n } else {\n return loop || carousel ? Math.max(0, slideCountNew - Math.ceil(items)) : slideCountNew - 1;\n }\n };\n }\n })(),\n index = getStartIndex(getOption('startIndex')),\n indexCached = index,\n displayIndex = getCurrentSlide(),\n indexMin = 0,\n indexMax = !autoWidth ? getIndexMax() : null,\n // resize\n resizeTimer,\n preventActionWhenRunning = options.preventActionWhenRunning,\n swipeAngle = options.swipeAngle,\n moveDirectionExpected = swipeAngle ? '?' : true,\n running = false,\n onInit = options.onInit,\n events = new Events(),\n // id, class\n newContainerClasses = ' tns-slider tns-' + options.mode,\n slideId = container.id || getSlideId(),\n disable = getOption('disable'),\n disabled = false,\n freezable = options.freezable,\n freeze = freezable && !autoWidth ? getFreeze() : false,\n frozen = false,\n controlsEvents = {\n 'click': onControlsClick,\n 'keydown': onControlsKeydown\n },\n navEvents = {\n 'click': onNavClick,\n 'keydown': onNavKeydown\n },\n hoverEvents = {\n 'mouseover': mouseoverPause,\n 'mouseout': mouseoutRestart\n },\n visibilityEvent = {'visibilitychange': onVisibilityChange},\n docmentKeydownEvent = {'keydown': onDocumentKeydown},\n touchEvents = {\n 'touchstart': onPanStart,\n 'touchmove': onPanMove,\n 'touchend': onPanEnd,\n 'touchcancel': onPanEnd\n }, dragEvents = {\n 'mousedown': onPanStart,\n 'mousemove': onPanMove,\n 'mouseup': onPanEnd,\n 'mouseleave': onPanEnd\n },\n hasControls = hasOption('controls'),\n hasNav = hasOption('nav'),\n navAsThumbnails = autoWidth ? true : options.navAsThumbnails,\n hasAutoplay = hasOption('autoplay'),\n hasTouch = hasOption('touch'),\n hasMouseDrag = hasOption('mouseDrag'),\n slideActiveClass = 'tns-slide-active',\n slideClonedClass = 'tns-slide-cloned',\n imgCompleteClass = 'tns-complete',\n imgEvents = {\n 'load': onImgLoaded,\n 'error': onImgFailed\n },\n imgsComplete,\n liveregionCurrent,\n preventScroll = options.preventScrollOnTouch === 'force' ? true : false;\n\n // controls\n if (hasControls) {\n var controlsContainer = options.controlsContainer,\n controlsContainerHTML = options.controlsContainer ? options.controlsContainer.outerHTML : '',\n prevButton = options.prevButton,\n nextButton = options.nextButton,\n prevButtonHTML = options.prevButton ? options.prevButton.outerHTML : '',\n nextButtonHTML = options.nextButton ? options.nextButton.outerHTML : '',\n prevIsButton,\n nextIsButton;\n }\n\n // nav\n if (hasNav) {\n var navContainer = options.navContainer,\n navContainerHTML = options.navContainer ? options.navContainer.outerHTML : '',\n navItems,\n pages = autoWidth ? slideCount : getPages(),\n pagesCached = 0,\n navClicked = -1,\n navCurrentIndex = getCurrentNavIndex(),\n navCurrentIndexCached = navCurrentIndex,\n navActiveClass = 'tns-nav-active',\n navStr = 'Carousel Page ',\n navStrCurrent = ' (Current Slide)';\n }\n\n // autoplay\n if (hasAutoplay) {\n var autoplayDirection = options.autoplayDirection === 'forward' ? 1 : -1,\n autoplayButton = options.autoplayButton,\n autoplayButtonHTML = options.autoplayButton ? options.autoplayButton.outerHTML : '',\n autoplayHtmlStrings = ['', ' animation'],\n autoplayTimer,\n animating,\n autoplayHoverPaused,\n autoplayUserPaused,\n autoplayVisibilityPaused;\n }\n\n if (hasTouch || hasMouseDrag) {\n var initPosition = {},\n lastPosition = {},\n translateInit,\n disX,\n disY,\n panStart = false,\n rafIndex,\n getDist = horizontal ?\n function(a, b) { return a.x - b.x; } :\n function(a, b) { return a.y - b.y; };\n }\n\n // disable slider when slidecount <= items\n if (!autoWidth) { resetVariblesWhenDisable(disable || freeze); }\n\n if (TRANSFORM) {\n transformAttr = TRANSFORM;\n transformPrefix = 'translate';\n\n if (HAS3DTRANSFORMS) {\n transformPrefix += horizontal ? '3d(' : '3d(0px, ';\n transformPostfix = horizontal ? ', 0px, 0px)' : ', 0px)';\n } else {\n transformPrefix += horizontal ? 'X(' : 'Y(';\n transformPostfix = ')';\n }\n\n }\n\n if (carousel) { container.className = container.className.replace('tns-vpfix', ''); }\n initStructure();\n initSheet();\n initSliderTransform();\n\n // === COMMON FUNCTIONS === //\n function resetVariblesWhenDisable (condition) {\n if (condition) {\n controls = nav = touch = mouseDrag = arrowKeys = autoplay = autoplayHoverPause = autoplayResetOnVisibility = false;\n }\n }\n\n function getCurrentSlide () {\n var tem = carousel ? index - cloneCount : index;\n while (tem < 0) { tem += slideCount; }\n return tem%slideCount + 1;\n }\n\n function getStartIndex (ind) {\n ind = ind ? Math.max(0, Math.min(loop ? slideCount - 1 : slideCount - items, ind)) : 0;\n return carousel ? ind + cloneCount : ind;\n }\n\n function getAbsIndex (i) {\n if (i == null) { i = index; }\n\n if (carousel) { i -= cloneCount; }\n while (i < 0) { i += slideCount; }\n\n return Math.floor(i%slideCount);\n }\n\n function getCurrentNavIndex () {\n var absIndex = getAbsIndex(),\n result;\n\n result = navAsThumbnails ? absIndex :\n fixedWidth || autoWidth ? Math.ceil((absIndex + 1) * pages / slideCount - 1) :\n Math.floor(absIndex / items);\n\n // set active nav to the last one when reaches the right edge\n if (!loop && carousel && index === indexMax) { result = pages - 1; }\n\n return result;\n }\n\n function getItemsMax () {\n // fixedWidth or autoWidth while viewportMax is not available\n if (autoWidth || (fixedWidth && !viewportMax)) {\n return slideCount - 1;\n // most cases\n } else {\n var str = fixedWidth ? 'fixedWidth' : 'items',\n arr = [];\n\n if (fixedWidth || options[str] < slideCount) { arr.push(options[str]); }\n\n if (responsive) {\n for (var bp in responsive) {\n var tem = responsive[bp][str];\n if (tem && (fixedWidth || tem < slideCount)) { arr.push(tem); }\n }\n }\n\n if (!arr.length) { arr.push(0); }\n\n return Math.ceil(fixedWidth ? viewportMax / Math.min.apply(null, arr) : Math.max.apply(null, arr));\n }\n }\n\n function getCloneCountForLoop () {\n var itemsMax = getItemsMax(),\n result = carousel ? Math.ceil((itemsMax * 5 - slideCount)/2) : (itemsMax * 4 - slideCount);\n result = Math.max(itemsMax, result);\n\n return hasOption('edgePadding') ? result + 1 : result;\n }\n\n function getWindowWidth () {\n return win.innerWidth || doc.documentElement.clientWidth || doc.body.clientWidth;\n }\n\n function getInsertPosition (pos) {\n return pos === 'top' ? 'afterbegin' : 'beforeend';\n }\n\n function getClientWidth (el) {\n if (el == null) { return; }\n var div = doc.createElement('div'), rect, width;\n el.appendChild(div);\n rect = div.getBoundingClientRect();\n width = rect.right - rect.left;\n div.remove();\n return width || getClientWidth(el.parentNode);\n }\n\n function getViewportWidth () {\n var gap = edgePadding ? edgePadding * 2 - gutter : 0;\n return getClientWidth(containerParent) - gap;\n }\n\n function hasOption (item) {\n if (options[item]) {\n return true;\n } else {\n if (responsive) {\n for (var bp in responsive) {\n if (responsive[bp][item]) { return true; }\n }\n }\n return false;\n }\n }\n\n // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n function getOption (item, ww) {\n if (ww == null) { ww = windowWidth; }\n\n if (item === 'items' && fixedWidth) {\n return Math.floor((viewport + gutter) / (fixedWidth + gutter)) || 1;\n\n } else {\n var result = options[item];\n\n if (responsive) {\n for (var bp in responsive) {\n // bp: convert string to number\n if (ww >= parseInt(bp)) {\n if (item in responsive[bp]) { result = responsive[bp][item]; }\n }\n }\n }\n\n if (item === 'slideBy' && result === 'page') { result = getOption('items'); }\n if (!carousel && (item === 'slideBy' || item === 'items')) { result = Math.floor(result); }\n\n return result;\n }\n }\n\n function getSlideMarginLeft (i) {\n return CALC ?\n CALC + '(' + i * 100 + '% / ' + slideCountNew + ')' :\n i * 100 / slideCountNew + '%';\n }\n\n function getInnerWrapperStyles (edgePaddingTem, gutterTem, fixedWidthTem, speedTem, autoHeightBP) {\n var str = '';\n\n if (edgePaddingTem !== undefined) {\n var gap = edgePaddingTem;\n if (gutterTem) { gap -= gutterTem; }\n str = horizontal ?\n 'margin: 0 ' + gap + 'px 0 ' + edgePaddingTem + 'px;' :\n 'margin: ' + edgePaddingTem + 'px 0 ' + gap + 'px 0;';\n } else if (gutterTem && !fixedWidthTem) {\n var gutterTemUnit = '-' + gutterTem + 'px',\n dir = horizontal ? gutterTemUnit + ' 0 0' : '0 ' + gutterTemUnit + ' 0';\n str = 'margin: 0 ' + dir + ';'\n }\n\n if (!carousel && autoHeightBP && TRANSITIONDURATION && speedTem) { str += getTransitionDurationStyle(speedTem); }\n return str;\n }\n\n function getContainerWidth (fixedWidthTem, gutterTem, itemsTem) {\n if (fixedWidthTem) {\n return (fixedWidthTem + gutterTem) * slideCountNew + 'px';\n } else {\n return CALC ?\n CALC + '(' + slideCountNew * 100 + '% / ' + itemsTem + ')' :\n slideCountNew * 100 / itemsTem + '%';\n }\n }\n\n function getSlideWidthStyle (fixedWidthTem, gutterTem, itemsTem) {\n var width;\n\n if (fixedWidthTem) {\n width = (fixedWidthTem + gutterTem) + 'px';\n } else {\n if (!carousel) { itemsTem = Math.floor(itemsTem); }\n var dividend = carousel ? slideCountNew : itemsTem;\n width = CALC ?\n CALC + '(100% / ' + dividend + ')' :\n 100 / dividend + '%';\n }\n\n width = 'width:' + width;\n\n // inner slider: overwrite outer slider styles\n return nested !== 'inner' ? width + ';' : width + ' !important;';\n }\n\n function getSlideGutterStyle (gutterTem) {\n var str = '';\n\n // gutter maybe interger || 0\n // so can't use 'if (gutter)'\n if (gutterTem !== false) {\n var prop = horizontal ? 'padding-' : 'margin-',\n dir = horizontal ? 'right' : 'bottom';\n str = prop + dir + ': ' + gutterTem + 'px;';\n }\n\n return str;\n }\n\n function getCSSPrefix (name, num) {\n var prefix = name.substring(0, name.length - num).toLowerCase();\n if (prefix) { prefix = '-' + prefix + '-'; }\n\n return prefix;\n }\n\n function getTransitionDurationStyle (speed) {\n return getCSSPrefix(TRANSITIONDURATION, 18) + 'transition-duration:' + speed / 1000 + 's;';\n }\n\n function getAnimationDurationStyle (speed) {\n return getCSSPrefix(ANIMATIONDURATION, 17) + 'animation-duration:' + speed / 1000 + 's;';\n }\n\n function initStructure () {\n var classOuter = 'tns-outer',\n classInner = 'tns-inner',\n hasGutter = hasOption('gutter');\n\n outerWrapper.className = classOuter;\n innerWrapper.className = classInner;\n outerWrapper.id = slideId + '-ow';\n innerWrapper.id = slideId + '-iw';\n\n // set container properties\n if (container.id === '') { container.id = slideId; }\n newContainerClasses += PERCENTAGELAYOUT || autoWidth ? ' tns-subpixel' : ' tns-no-subpixel';\n newContainerClasses += CALC ? ' tns-calc' : ' tns-no-calc';\n if (autoWidth) { newContainerClasses += ' tns-autowidth'; }\n newContainerClasses += ' tns-' + options.axis;\n container.className += newContainerClasses;\n\n // add constrain layer for carousel\n if (carousel) {\n middleWrapper = doc.createElement('div');\n middleWrapper.id = slideId + '-mw';\n middleWrapper.className = 'tns-ovh';\n\n outerWrapper.appendChild(middleWrapper);\n middleWrapper.appendChild(innerWrapper);\n } else {\n outerWrapper.appendChild(innerWrapper);\n }\n\n if (autoHeight) {\n var wp = middleWrapper ? middleWrapper : innerWrapper;\n wp.className += ' tns-ah';\n }\n\n containerParent.insertBefore(outerWrapper, container);\n innerWrapper.appendChild(container);\n\n // add id, class, aria attributes\n // before clone slides\n forEach(slideItems, function(item, i) {\n addClass(item, 'tns-item');\n if (!item.id) { item.id = slideId + '-item' + i; }\n if (!carousel && animateNormal) { addClass(item, animateNormal); }\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n });\n\n // ## clone slides\n // carousel: n + slides + n\n // gallery: slides + n\n if (cloneCount) {\n var fragmentBefore = doc.createDocumentFragment(),\n fragmentAfter = doc.createDocumentFragment();\n\n for (var j = cloneCount; j--;) {\n var num = j%slideCount,\n cloneFirst = slideItems[num].cloneNode(true);\n addClass(cloneFirst, slideClonedClass);\n removeAttrs(cloneFirst, 'id');\n fragmentAfter.insertBefore(cloneFirst, fragmentAfter.firstChild);\n\n if (carousel) {\n var cloneLast = slideItems[slideCount - 1 - num].cloneNode(true);\n addClass(cloneLast, slideClonedClass);\n removeAttrs(cloneLast, 'id');\n fragmentBefore.appendChild(cloneLast);\n }\n }\n\n container.insertBefore(fragmentBefore, container.firstChild);\n container.appendChild(fragmentAfter);\n slideItems = container.children;\n }\n\n }\n\n function initSliderTransform () {\n // ## images loaded/failed\n if (hasOption('autoHeight') || autoWidth || !horizontal) {\n var imgs = container.querySelectorAll('img');\n\n // add img load event listener\n forEach(imgs, function(img) {\n var src = img.src;\n\n if (!lazyload) {\n // not data img\n if (src && src.indexOf('data:image') < 0) {\n img.src = '';\n addEvents(img, imgEvents);\n addClass(img, 'loading');\n\n img.src = src;\n // data img\n } else {\n imgLoaded(img);\n }\n }\n });\n\n // set imgsComplete\n raf(function(){ imgsLoadedCheck(arrayFromNodeList(imgs), function() { imgsComplete = true; }); });\n\n // reset imgs for auto height: check visible imgs only\n if (hasOption('autoHeight')) { imgs = getImageArray(index, Math.min(index + items - 1, slideCountNew - 1)); }\n\n lazyload ? initSliderTransformStyleCheck() : raf(function(){ imgsLoadedCheck(arrayFromNodeList(imgs), initSliderTransformStyleCheck); });\n\n } else {\n // set container transform property\n if (carousel) { doContainerTransformSilent(); }\n\n // update slider tools and events\n initTools();\n initEvents();\n }\n }\n\n function initSliderTransformStyleCheck () {\n if (autoWidth && slideCount > 1) {\n // check styles application\n var num = loop ? index : slideCount - 1;\n\n (function stylesApplicationCheck() {\n var left = slideItems[num].getBoundingClientRect().left;\n var right = slideItems[num - 1].getBoundingClientRect().right;\n\n (Math.abs(left - right) <= 1) ?\n initSliderTransformCore() :\n setTimeout(function(){ stylesApplicationCheck() }, 16);\n })();\n\n } else {\n initSliderTransformCore();\n }\n }\n\n\n function initSliderTransformCore () {\n // run Fn()s which are rely on image loading\n if (!horizontal || autoWidth) {\n setSlidePositions();\n\n if (autoWidth) {\n rightBoundary = getRightBoundary();\n if (freezable) { freeze = getFreeze(); }\n indexMax = getIndexMax(); // <= slidePositions, rightBoundary <=\n resetVariblesWhenDisable(disable || freeze);\n } else {\n updateContentWrapperHeight();\n }\n }\n\n // set container transform property\n if (carousel) { doContainerTransformSilent(); }\n\n // update slider tools and events\n initTools();\n initEvents();\n }\n\n function initSheet () {\n // gallery:\n // set animation classes and left value for gallery slider\n if (!carousel) {\n for (var i = index, l = index + Math.min(slideCount, items); i < l; i++) {\n var item = slideItems[i];\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, animateIn);\n removeClass(item, animateNormal);\n }\n }\n\n // #### LAYOUT\n\n // ## INLINE-BLOCK VS FLOAT\n\n // ## PercentageLayout:\n // slides: inline-block\n // remove blank space between slides by set font-size: 0\n\n // ## Non PercentageLayout:\n // slides: float\n // margin-right: -100%\n // margin-left: ~\n\n // Resource: https://docs.google.com/spreadsheets/d/147up245wwTXeQYve3BRSAD4oVcvQmuGsFteJOeA5xNQ/edit?usp=sharing\n if (horizontal) {\n if (PERCENTAGELAYOUT || autoWidth) {\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', 'font-size:' + win.getComputedStyle(slideItems[0]).fontSize + ';', getCssRulesLength(sheet));\n addCSSRule(sheet, '#' + slideId, 'font-size:0;', getCssRulesLength(sheet));\n } else if (carousel) {\n forEach(slideItems, function (slide, i) {\n slide.style.marginLeft = getSlideMarginLeft(i);\n });\n }\n }\n\n\n // ## BASIC STYLES\n if (CSSMQ) {\n // middle wrapper style\n if (TRANSITIONDURATION) {\n var str = middleWrapper && options.autoHeight ? getTransitionDurationStyle(options.speed) : '';\n addCSSRule(sheet, '#' + slideId + '-mw', str, getCssRulesLength(sheet));\n }\n\n // inner wrapper styles\n str = getInnerWrapperStyles(options.edgePadding, options.gutter, options.fixedWidth, options.speed, options.autoHeight);\n addCSSRule(sheet, '#' + slideId + '-iw', str, getCssRulesLength(sheet));\n\n // container styles\n if (carousel) {\n str = horizontal && !autoWidth ? 'width:' + getContainerWidth(options.fixedWidth, options.gutter, options.items) + ';' : '';\n if (TRANSITIONDURATION) { str += getTransitionDurationStyle(speed); }\n addCSSRule(sheet, '#' + slideId, str, getCssRulesLength(sheet));\n }\n\n // slide styles\n str = horizontal && !autoWidth ? getSlideWidthStyle(options.fixedWidth, options.gutter, options.items) : '';\n if (options.gutter) { str += getSlideGutterStyle(options.gutter); }\n // set gallery items transition-duration\n if (!carousel) {\n if (TRANSITIONDURATION) { str += getTransitionDurationStyle(speed); }\n if (ANIMATIONDURATION) { str += getAnimationDurationStyle(speed); }\n }\n if (str) { addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet)); }\n\n // non CSS mediaqueries: IE8\n // ## update inner wrapper, container, slides if needed\n // set inline styles for inner wrapper & container\n // insert stylesheet (one line) for slides only (since slides are many)\n } else {\n // middle wrapper styles\n update_carousel_transition_duration();\n\n // inner wrapper styles\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, autoHeight);\n\n // container styles\n if (carousel && horizontal && !autoWidth) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n }\n\n // slide styles\n var str = horizontal && !autoWidth ? getSlideWidthStyle(fixedWidth, gutter, items) : '';\n if (gutter) { str += getSlideGutterStyle(gutter); }\n\n // append to the last line\n if (str) { addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet)); }\n }\n\n // ## MEDIAQUERIES\n if (responsive && CSSMQ) {\n for (var bp in responsive) {\n // bp: convert string to number\n bp = parseInt(bp);\n\n var opts = responsive[bp],\n str = '',\n middleWrapperStr = '',\n innerWrapperStr = '',\n containerStr = '',\n slideStr = '',\n itemsBP = !autoWidth ? getOption('items', bp) : null,\n fixedWidthBP = getOption('fixedWidth', bp),\n speedBP = getOption('speed', bp),\n edgePaddingBP = getOption('edgePadding', bp),\n autoHeightBP = getOption('autoHeight', bp),\n gutterBP = getOption('gutter', bp);\n\n // middle wrapper string\n if (TRANSITIONDURATION && middleWrapper && getOption('autoHeight', bp) && 'speed' in opts) {\n middleWrapperStr = '#' + slideId + '-mw{' + getTransitionDurationStyle(speedBP) + '}';\n }\n\n // inner wrapper string\n if ('edgePadding' in opts || 'gutter' in opts) {\n innerWrapperStr = '#' + slideId + '-iw{' + getInnerWrapperStyles(edgePaddingBP, gutterBP, fixedWidthBP, speedBP, autoHeightBP) + '}';\n }\n\n // container string\n if (carousel && horizontal && !autoWidth && ('fixedWidth' in opts || 'items' in opts || (fixedWidth && 'gutter' in opts))) {\n containerStr = 'width:' + getContainerWidth(fixedWidthBP, gutterBP, itemsBP) + ';';\n }\n if (TRANSITIONDURATION && 'speed' in opts) {\n containerStr += getTransitionDurationStyle(speedBP);\n }\n if (containerStr) {\n containerStr = '#' + slideId + '{' + containerStr + '}';\n }\n\n // slide string\n if ('fixedWidth' in opts || (fixedWidth && 'gutter' in opts) || !carousel && 'items' in opts) {\n slideStr += getSlideWidthStyle(fixedWidthBP, gutterBP, itemsBP);\n }\n if ('gutter' in opts) {\n slideStr += getSlideGutterStyle(gutterBP);\n }\n // set gallery items transition-duration\n if (!carousel && 'speed' in opts) {\n if (TRANSITIONDURATION) { slideStr += getTransitionDurationStyle(speedBP); }\n if (ANIMATIONDURATION) { slideStr += getAnimationDurationStyle(speedBP); }\n }\n if (slideStr) { slideStr = '#' + slideId + ' > .tns-item{' + slideStr + '}'; }\n\n // add up\n str = middleWrapperStr + innerWrapperStr + containerStr + slideStr;\n\n if (str) {\n sheet.insertRule('@media (min-width: ' + bp / 16 + 'em) {' + str + '}', sheet.cssRules.length);\n }\n }\n }\n }\n\n function initTools () {\n // == slides ==\n updateSlideStatus();\n\n // == live region ==\n outerWrapper.insertAdjacentHTML('afterbegin', '
slide ' + getLiveRegionStr() + ' of ' + slideCount + '
');\n liveregionCurrent = outerWrapper.querySelector('.tns-liveregion .current');\n\n // == autoplayInit ==\n if (hasAutoplay) {\n var txt = autoplay ? 'stop' : 'start';\n if (autoplayButton) {\n setAttrs(autoplayButton, {'data-action': txt});\n } else if (options.autoplayButtonOutput) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.autoplayPosition), '');\n autoplayButton = outerWrapper.querySelector('[data-action]');\n }\n\n // add event\n if (autoplayButton) {\n addEvents(autoplayButton, {'click': toggleAutoplay});\n }\n\n if (autoplay) {\n startAutoplay();\n if (autoplayHoverPause) { addEvents(container, hoverEvents); }\n if (autoplayResetOnVisibility) { addEvents(container, visibilityEvent); }\n }\n }\n\n // == navInit ==\n if (hasNav) {\n var initIndex = !carousel ? 0 : cloneCount;\n // customized nav\n // will not hide the navs in case they're thumbnails\n if (navContainer) {\n setAttrs(navContainer, {'aria-label': 'Carousel Pagination'});\n navItems = navContainer.children;\n forEach(navItems, function(item, i) {\n setAttrs(item, {\n 'data-nav': i,\n 'tabindex': '-1',\n 'aria-label': navStr + (i + 1),\n 'aria-controls': slideId,\n });\n });\n\n // generated nav\n } else {\n var navHtml = '',\n hiddenStr = navAsThumbnails ? '' : 'style=\"display:none\"';\n for (var i = 0; i < slideCount; i++) {\n // hide nav items by default\n navHtml += '';\n }\n navHtml = '
' + navHtml + '
';\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.navPosition), navHtml);\n\n navContainer = outerWrapper.querySelector('.tns-nav');\n navItems = navContainer.children;\n }\n\n updateNavVisibility();\n\n // add transition\n if (TRANSITIONDURATION) {\n var prefix = TRANSITIONDURATION.substring(0, TRANSITIONDURATION.length - 18).toLowerCase(),\n str = 'transition: all ' + speed / 1000 + 's';\n\n if (prefix) {\n str = '-' + prefix + '-' + str;\n }\n\n addCSSRule(sheet, '[aria-controls^=' + slideId + '-item]', str, getCssRulesLength(sheet));\n }\n\n setAttrs(navItems[navCurrentIndex], {'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent});\n removeAttrs(navItems[navCurrentIndex], 'tabindex');\n addClass(navItems[navCurrentIndex], navActiveClass);\n\n // add events\n addEvents(navContainer, navEvents);\n }\n\n\n\n // == controlsInit ==\n if (hasControls) {\n if (!controlsContainer && (!prevButton || !nextButton)) {\n outerWrapper.insertAdjacentHTML(getInsertPosition(options.controlsPosition), '
');\n\n controlsContainer = outerWrapper.querySelector('.tns-controls');\n }\n\n if (!prevButton || !nextButton) {\n prevButton = controlsContainer.children[0];\n nextButton = controlsContainer.children[1];\n }\n\n if (options.controlsContainer) {\n setAttrs(controlsContainer, {\n 'aria-label': 'Carousel Navigation',\n 'tabindex': '0'\n });\n }\n\n if (options.controlsContainer || (options.prevButton && options.nextButton)) {\n setAttrs([prevButton, nextButton], {\n 'aria-controls': slideId,\n 'tabindex': '-1',\n });\n }\n\n if (options.controlsContainer || (options.prevButton && options.nextButton)) {\n setAttrs(prevButton, {'data-controls' : 'prev'});\n setAttrs(nextButton, {'data-controls' : 'next'});\n }\n\n prevIsButton = isButton(prevButton);\n nextIsButton = isButton(nextButton);\n\n updateControlsStatus();\n\n // add events\n if (controlsContainer) {\n addEvents(controlsContainer, controlsEvents);\n } else {\n addEvents(prevButton, controlsEvents);\n addEvents(nextButton, controlsEvents);\n }\n }\n\n // hide tools if needed\n disableUI();\n }\n\n function initEvents () {\n // add events\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n addEvents(container, eve);\n }\n\n if (touch) { addEvents(container, touchEvents, options.preventScrollOnTouch); }\n if (mouseDrag) { addEvents(container, dragEvents); }\n if (arrowKeys) { addEvents(doc, docmentKeydownEvent); }\n\n if (nested === 'inner') {\n events.on('outerResized', function () {\n resizeTasks();\n events.emit('innerLoaded', info());\n });\n } else if (responsive || fixedWidth || autoWidth || autoHeight || !horizontal) {\n addEvents(win, {'resize': onResize});\n }\n\n if (autoHeight) {\n if (nested === 'outer') {\n events.on('innerLoaded', doAutoHeight);\n } else if (!disable) { doAutoHeight(); }\n }\n\n doLazyLoad();\n if (disable) { disableSlider(); } else if (freeze) { freezeSlider(); }\n\n events.on('indexChanged', additionalUpdates);\n if (nested === 'inner') { events.emit('innerLoaded', info()); }\n if (typeof onInit === 'function') { onInit(info()); }\n isOn = true;\n }\n\n function destroy () {\n // sheet\n sheet.disabled = true;\n if (sheet.ownerNode) { sheet.ownerNode.remove(); }\n\n // remove win event listeners\n removeEvents(win, {'resize': onResize});\n\n // arrowKeys, controls, nav\n if (arrowKeys) { removeEvents(doc, docmentKeydownEvent); }\n if (controlsContainer) { removeEvents(controlsContainer, controlsEvents); }\n if (navContainer) { removeEvents(navContainer, navEvents); }\n\n // autoplay\n removeEvents(container, hoverEvents);\n removeEvents(container, visibilityEvent);\n if (autoplayButton) { removeEvents(autoplayButton, {'click': toggleAutoplay}); }\n if (autoplay) { clearInterval(autoplayTimer); }\n\n // container\n if (carousel && TRANSITIONEND) {\n var eve = {};\n eve[TRANSITIONEND] = onTransitionEnd;\n removeEvents(container, eve);\n }\n if (touch) { removeEvents(container, touchEvents); }\n if (mouseDrag) { removeEvents(container, dragEvents); }\n\n // cache Object values in options && reset HTML\n var htmlList = [containerHTML, controlsContainerHTML, prevButtonHTML, nextButtonHTML, navContainerHTML, autoplayButtonHTML];\n\n tnsList.forEach(function(item, i) {\n var el = item === 'container' ? outerWrapper : options[item];\n\n if (typeof el === 'object' && el) {\n var prevEl = el.previousElementSibling ? el.previousElementSibling : false,\n parentEl = el.parentNode;\n el.outerHTML = htmlList[i];\n options[item] = prevEl ? prevEl.nextElementSibling : parentEl.firstElementChild;\n }\n });\n\n\n // reset variables\n tnsList = animateIn = animateOut = animateDelay = animateNormal = horizontal = outerWrapper = innerWrapper = container = containerParent = containerHTML = slideItems = slideCount = breakpointZone = windowWidth = autoWidth = fixedWidth = edgePadding = gutter = viewport = items = slideBy = viewportMax = arrowKeys = speed = rewind = loop = autoHeight = sheet = lazyload = slidePositions = slideItemsOut = cloneCount = slideCountNew = hasRightDeadZone = rightBoundary = updateIndexBeforeTransform = transformAttr = transformPrefix = transformPostfix = getIndexMax = index = indexCached = indexMin = indexMax = resizeTimer = swipeAngle = moveDirectionExpected = running = onInit = events = newContainerClasses = slideId = disable = disabled = freezable = freeze = frozen = controlsEvents = navEvents = hoverEvents = visibilityEvent = docmentKeydownEvent = touchEvents = dragEvents = hasControls = hasNav = navAsThumbnails = hasAutoplay = hasTouch = hasMouseDrag = slideActiveClass = imgCompleteClass = imgEvents = imgsComplete = controls = controlsText = controlsContainer = controlsContainerHTML = prevButton = nextButton = prevIsButton = nextIsButton = nav = navContainer = navContainerHTML = navItems = pages = pagesCached = navClicked = navCurrentIndex = navCurrentIndexCached = navActiveClass = navStr = navStrCurrent = autoplay = autoplayTimeout = autoplayDirection = autoplayText = autoplayHoverPause = autoplayButton = autoplayButtonHTML = autoplayResetOnVisibility = autoplayHtmlStrings = autoplayTimer = animating = autoplayHoverPaused = autoplayUserPaused = autoplayVisibilityPaused = initPosition = lastPosition = translateInit = disX = disY = panStart = rafIndex = getDist = touch = mouseDrag = null;\n // check variables\n // [animateIn, animateOut, animateDelay, animateNormal, horizontal, outerWrapper, innerWrapper, container, containerParent, containerHTML, slideItems, slideCount, breakpointZone, windowWidth, autoWidth, fixedWidth, edgePadding, gutter, viewport, items, slideBy, viewportMax, arrowKeys, speed, rewind, loop, autoHeight, sheet, lazyload, slidePositions, slideItemsOut, cloneCount, slideCountNew, hasRightDeadZone, rightBoundary, updateIndexBeforeTransform, transformAttr, transformPrefix, transformPostfix, getIndexMax, index, indexCached, indexMin, indexMax, resizeTimer, swipeAngle, moveDirectionExpected, running, onInit, events, newContainerClasses, slideId, disable, disabled, freezable, freeze, frozen, controlsEvents, navEvents, hoverEvents, visibilityEvent, docmentKeydownEvent, touchEvents, dragEvents, hasControls, hasNav, navAsThumbnails, hasAutoplay, hasTouch, hasMouseDrag, slideActiveClass, imgCompleteClass, imgEvents, imgsComplete, controls, controlsText, controlsContainer, controlsContainerHTML, prevButton, nextButton, prevIsButton, nextIsButton, nav, navContainer, navContainerHTML, navItems, pages, pagesCached, navClicked, navCurrentIndex, navCurrentIndexCached, navActiveClass, navStr, navStrCurrent, autoplay, autoplayTimeout, autoplayDirection, autoplayText, autoplayHoverPause, autoplayButton, autoplayButtonHTML, autoplayResetOnVisibility, autoplayHtmlStrings, autoplayTimer, animating, autoplayHoverPaused, autoplayUserPaused, autoplayVisibilityPaused, initPosition, lastPosition, translateInit, disX, disY, panStart, rafIndex, getDist, touch, mouseDrag ].forEach(function(item) { if (item !== null) { console.log(item); } });\n\n for (var a in this) {\n if (a !== 'rebuild') { this[a] = null; }\n }\n isOn = false;\n }\n\n// === ON RESIZE ===\n // responsive || fixedWidth || autoWidth || !horizontal\n function onResize (e) {\n raf(function(){ resizeTasks(getEvent(e)); });\n }\n\n function resizeTasks (e) {\n if (!isOn) { return; }\n if (nested === 'outer') { events.emit('outerResized', info(e)); }\n windowWidth = getWindowWidth();\n var bpChanged,\n breakpointZoneTem = breakpointZone,\n needContainerTransform = false;\n\n if (responsive) {\n setBreakpointZone();\n bpChanged = breakpointZoneTem !== breakpointZone;\n // if (hasRightDeadZone) { needContainerTransform = true; } // *?\n if (bpChanged) { events.emit('newBreakpointStart', info(e)); }\n }\n\n var indChanged,\n itemsChanged,\n itemsTem = items,\n disableTem = disable,\n freezeTem = freeze,\n arrowKeysTem = arrowKeys,\n controlsTem = controls,\n navTem = nav,\n touchTem = touch,\n mouseDragTem = mouseDrag,\n autoplayTem = autoplay,\n autoplayHoverPauseTem = autoplayHoverPause,\n autoplayResetOnVisibilityTem = autoplayResetOnVisibility,\n indexTem = index;\n\n if (bpChanged) {\n var fixedWidthTem = fixedWidth,\n autoHeightTem = autoHeight,\n controlsTextTem = controlsText,\n centerTem = center,\n autoplayTextTem = autoplayText;\n\n if (!CSSMQ) {\n var gutterTem = gutter,\n edgePaddingTem = edgePadding;\n }\n }\n\n // get option:\n // fixed width: viewport, fixedWidth, gutter => items\n // others: window width => all variables\n // all: items => slideBy\n arrowKeys = getOption('arrowKeys');\n controls = getOption('controls');\n nav = getOption('nav');\n touch = getOption('touch');\n center = getOption('center');\n mouseDrag = getOption('mouseDrag');\n autoplay = getOption('autoplay');\n autoplayHoverPause = getOption('autoplayHoverPause');\n autoplayResetOnVisibility = getOption('autoplayResetOnVisibility');\n\n if (bpChanged) {\n disable = getOption('disable');\n fixedWidth = getOption('fixedWidth');\n speed = getOption('speed');\n autoHeight = getOption('autoHeight');\n controlsText = getOption('controlsText');\n autoplayText = getOption('autoplayText');\n autoplayTimeout = getOption('autoplayTimeout');\n\n if (!CSSMQ) {\n edgePadding = getOption('edgePadding');\n gutter = getOption('gutter');\n }\n }\n // update options\n resetVariblesWhenDisable(disable);\n\n viewport = getViewportWidth(); // <= edgePadding, gutter\n if ((!horizontal || autoWidth) && !disable) {\n setSlidePositions();\n if (!horizontal) {\n updateContentWrapperHeight(); // <= setSlidePositions\n needContainerTransform = true;\n }\n }\n if (fixedWidth || autoWidth) {\n rightBoundary = getRightBoundary(); // autoWidth: <= viewport, slidePositions, gutter\n // fixedWidth: <= viewport, fixedWidth, gutter\n indexMax = getIndexMax(); // autoWidth: <= rightBoundary, slidePositions\n // fixedWidth: <= rightBoundary, fixedWidth, gutter\n }\n\n if (bpChanged || fixedWidth) {\n items = getOption('items');\n slideBy = getOption('slideBy');\n itemsChanged = items !== itemsTem;\n\n if (itemsChanged) {\n if (!fixedWidth && !autoWidth) { indexMax = getIndexMax(); } // <= items\n // check index before transform in case\n // slider reach the right edge then items become bigger\n updateIndex();\n }\n }\n\n if (bpChanged) {\n if (disable !== disableTem) {\n if (disable) {\n disableSlider();\n } else {\n enableSlider(); // <= slidePositions, rightBoundary, indexMax\n }\n }\n }\n\n if (freezable && (bpChanged || fixedWidth || autoWidth)) {\n freeze = getFreeze(); // <= autoWidth: slidePositions, gutter, viewport, rightBoundary\n // <= fixedWidth: fixedWidth, gutter, rightBoundary\n // <= others: items\n\n if (freeze !== freezeTem) {\n if (freeze) {\n doContainerTransform(getContainerTransformValue(getStartIndex(0)));\n freezeSlider();\n } else {\n unfreezeSlider();\n needContainerTransform = true;\n }\n }\n }\n\n resetVariblesWhenDisable(disable || freeze); // controls, nav, touch, mouseDrag, arrowKeys, autoplay, autoplayHoverPause, autoplayResetOnVisibility\n if (!autoplay) { autoplayHoverPause = autoplayResetOnVisibility = false; }\n\n if (arrowKeys !== arrowKeysTem) {\n arrowKeys ?\n addEvents(doc, docmentKeydownEvent) :\n removeEvents(doc, docmentKeydownEvent);\n }\n if (controls !== controlsTem) {\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) { showElement(prevButton); }\n if (nextButton) { showElement(nextButton); }\n }\n } else {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) { hideElement(prevButton); }\n if (nextButton) { hideElement(nextButton); }\n }\n }\n }\n if (nav !== navTem) {\n if (nav) {\n showElement(navContainer);\n updateNavVisibility();\n } else {\n hideElement(navContainer)\n }\n }\n if (touch !== touchTem) {\n touch ?\n addEvents(container, touchEvents, options.preventScrollOnTouch) :\n removeEvents(container, touchEvents);\n }\n if (mouseDrag !== mouseDragTem) {\n mouseDrag ?\n addEvents(container, dragEvents) :\n removeEvents(container, dragEvents);\n }\n if (autoplay !== autoplayTem) {\n if (autoplay) {\n if (autoplayButton) { showElement(autoplayButton); }\n if (!animating && !autoplayUserPaused) { startAutoplay(); }\n } else {\n if (autoplayButton) { hideElement(autoplayButton); }\n if (animating) { stopAutoplay(); }\n }\n }\n if (autoplayHoverPause !== autoplayHoverPauseTem) {\n autoplayHoverPause ?\n addEvents(container, hoverEvents) :\n removeEvents(container, hoverEvents);\n }\n if (autoplayResetOnVisibility !== autoplayResetOnVisibilityTem) {\n autoplayResetOnVisibility ?\n addEvents(doc, visibilityEvent) :\n removeEvents(doc, visibilityEvent);\n }\n\n if (bpChanged) {\n if (fixedWidth !== fixedWidthTem || center !== centerTem) { needContainerTransform = true; }\n\n if (autoHeight !== autoHeightTem) {\n if (!autoHeight) { innerWrapper.style.height = ''; }\n }\n\n if (controls && controlsText !== controlsTextTem) {\n prevButton.innerHTML = controlsText[0];\n nextButton.innerHTML = controlsText[1];\n }\n\n if (autoplayButton && autoplayText !== autoplayTextTem) {\n var i = autoplay ? 1 : 0,\n html = autoplayButton.innerHTML,\n len = html.length - autoplayTextTem[i].length;\n if (html.substring(len) === autoplayTextTem[i]) {\n autoplayButton.innerHTML = html.substring(0, len) + autoplayText[i];\n }\n }\n } else {\n if (center && (fixedWidth || autoWidth)) { needContainerTransform = true; }\n }\n\n if (itemsChanged || fixedWidth && !autoWidth) {\n pages = getPages();\n updateNavVisibility();\n }\n\n indChanged = index !== indexTem;\n if (indChanged) {\n events.emit('indexChanged', info());\n needContainerTransform = true;\n } else if (itemsChanged) {\n if (!indChanged) { additionalUpdates(); }\n } else if (fixedWidth || autoWidth) {\n doLazyLoad();\n updateSlideStatus();\n updateLiveRegion();\n }\n\n if (itemsChanged && !carousel) { updateGallerySlidePositions(); }\n\n if (!disable && !freeze) {\n // non-mediaqueries: IE8\n if (bpChanged && !CSSMQ) {\n // middle wrapper styles\n\n // inner wrapper styles\n if (edgePadding !== edgePaddingTem || gutter !== gutterTem) {\n innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, speed, autoHeight);\n }\n\n if (horizontal) {\n // container styles\n if (carousel) {\n container.style.width = getContainerWidth(fixedWidth, gutter, items);\n }\n\n // slide styles\n var str = getSlideWidthStyle(fixedWidth, gutter, items) +\n getSlideGutterStyle(gutter);\n\n // remove the last line and\n // add new styles\n removeCSSRule(sheet, getCssRulesLength(sheet) - 1);\n addCSSRule(sheet, '#' + slideId + ' > .tns-item', str, getCssRulesLength(sheet));\n }\n }\n\n // auto height\n if (autoHeight) { doAutoHeight(); }\n\n if (needContainerTransform) {\n doContainerTransformSilent();\n indexCached = index;\n }\n }\n\n if (bpChanged) { events.emit('newBreakpointEnd', info(e)); }\n }\n\n\n\n\n\n // === INITIALIZATION FUNCTIONS === //\n function getFreeze () {\n if (!fixedWidth && !autoWidth) {\n var a = center ? items - (items - 1) / 2 : items;\n return slideCount <= a;\n }\n\n var width = fixedWidth ? (fixedWidth + gutter) * slideCount : slidePositions[slideCount],\n vp = edgePadding ? viewport + edgePadding * 2 : viewport + gutter;\n\n if (center) {\n vp -= fixedWidth ? (viewport - fixedWidth) / 2 : (viewport - (slidePositions[index + 1] - slidePositions[index] - gutter)) / 2;\n }\n\n return width <= vp;\n }\n\n function setBreakpointZone () {\n breakpointZone = 0;\n for (var bp in responsive) {\n bp = parseInt(bp); // convert string to number\n if (windowWidth >= bp) { breakpointZone = bp; }\n }\n }\n\n // (slideBy, indexMin, indexMax) => index\n var updateIndex = (function () {\n return loop ?\n carousel ?\n // loop + carousel\n function () {\n var leftEdge = indexMin,\n rightEdge = indexMax;\n\n leftEdge += slideBy;\n rightEdge -= slideBy;\n\n // adjust edges when has edge paddings\n // or fixed-width slider with extra space on the right side\n if (edgePadding) {\n leftEdge += 1;\n rightEdge -= 1;\n } else if (fixedWidth) {\n if ((viewport + gutter)%(fixedWidth + gutter)) { rightEdge -= 1; }\n }\n\n if (cloneCount) {\n if (index > rightEdge) {\n index -= slideCount;\n } else if (index < leftEdge) {\n index += slideCount;\n }\n }\n } :\n // loop + gallery\n function() {\n if (index > indexMax) {\n while (index >= indexMin + slideCount) { index -= slideCount; }\n } else if (index < indexMin) {\n while (index <= indexMax - slideCount) { index += slideCount; }\n }\n } :\n // non-loop\n function() {\n index = Math.max(indexMin, Math.min(indexMax, index));\n };\n })();\n\n function disableUI () {\n if (!autoplay && autoplayButton) { hideElement(autoplayButton); }\n if (!nav && navContainer) { hideElement(navContainer); }\n if (!controls) {\n if (controlsContainer) {\n hideElement(controlsContainer);\n } else {\n if (prevButton) { hideElement(prevButton); }\n if (nextButton) { hideElement(nextButton); }\n }\n }\n }\n\n function enableUI () {\n if (autoplay && autoplayButton) { showElement(autoplayButton); }\n if (nav && navContainer) { showElement(navContainer); }\n if (controls) {\n if (controlsContainer) {\n showElement(controlsContainer);\n } else {\n if (prevButton) { showElement(prevButton); }\n if (nextButton) { showElement(nextButton); }\n }\n }\n }\n\n function freezeSlider () {\n if (frozen) { return; }\n\n // remove edge padding from inner wrapper\n if (edgePadding) { innerWrapper.style.margin = '0px'; }\n\n // add class tns-transparent to cloned slides\n if (cloneCount) {\n var str = 'tns-transparent';\n for (var i = cloneCount; i--;) {\n if (carousel) { addClass(slideItems[i], str); }\n addClass(slideItems[slideCountNew - i - 1], str);\n }\n }\n\n // update tools\n disableUI();\n\n frozen = true;\n }\n\n function unfreezeSlider () {\n if (!frozen) { return; }\n\n // restore edge padding for inner wrapper\n // for mordern browsers\n if (edgePadding && CSSMQ) { innerWrapper.style.margin = ''; }\n\n // remove class tns-transparent to cloned slides\n if (cloneCount) {\n var str = 'tns-transparent';\n for (var i = cloneCount; i--;) {\n if (carousel) { removeClass(slideItems[i], str); }\n removeClass(slideItems[slideCountNew - i - 1], str);\n }\n }\n\n // update tools\n enableUI();\n\n frozen = false;\n }\n\n function disableSlider () {\n if (disabled) { return; }\n\n sheet.disabled = true;\n container.className = container.className.replace(newContainerClasses.substring(1), '');\n removeAttrs(container, ['style']);\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) { hideElement(slideItems[j]); }\n hideElement(slideItems[slideCountNew - j - 1]);\n }\n }\n\n // vertical slider\n if (!horizontal || !carousel) { removeAttrs(innerWrapper, ['style']); }\n\n // gallery\n if (!carousel) {\n for (var i = index, l = index + slideCount; i < l; i++) {\n var item = slideItems[i];\n removeAttrs(item, ['style']);\n removeClass(item, animateIn);\n removeClass(item, animateNormal);\n }\n }\n\n // update tools\n disableUI();\n\n disabled = true;\n }\n\n function enableSlider () {\n if (!disabled) { return; }\n\n sheet.disabled = false;\n container.className += newContainerClasses;\n doContainerTransformSilent();\n\n if (loop) {\n for (var j = cloneCount; j--;) {\n if (carousel) { showElement(slideItems[j]); }\n showElement(slideItems[slideCountNew - j - 1]);\n }\n }\n\n // gallery\n if (!carousel) {\n for (var i = index, l = index + slideCount; i < l; i++) {\n var item = slideItems[i],\n classN = i < index + items ? animateIn : animateNormal;\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, classN);\n }\n }\n\n // update tools\n enableUI();\n\n disabled = false;\n }\n\n function updateLiveRegion () {\n var str = getLiveRegionStr();\n if (liveregionCurrent.innerHTML !== str) { liveregionCurrent.innerHTML = str; }\n }\n\n function getLiveRegionStr () {\n var arr = getVisibleSlideRange(),\n start = arr[0] + 1,\n end = arr[1] + 1;\n return start === end ? start + '' : start + ' to ' + end;\n }\n\n function getVisibleSlideRange (val) {\n if (val == null) { val = getContainerTransformValue(); }\n var start = index, end, rangestart, rangeend;\n\n // get range start, range end for autoWidth and fixedWidth\n if (center || edgePadding) {\n if (autoWidth || fixedWidth) {\n rangestart = - (parseFloat(val) + edgePadding);\n rangeend = rangestart + viewport + edgePadding * 2;\n }\n } else {\n if (autoWidth) {\n rangestart = slidePositions[index];\n rangeend = rangestart + viewport;\n }\n }\n\n // get start, end\n // - check auto width\n if (autoWidth) {\n slidePositions.forEach(function(point, i) {\n if (i < slideCountNew) {\n if ((center || edgePadding) && point <= rangestart + 0.5) { start = i; }\n if (rangeend - point >= 0.5) { end = i; }\n }\n });\n\n // - check percentage width, fixed width\n } else {\n\n if (fixedWidth) {\n var cell = fixedWidth + gutter;\n if (center || edgePadding) {\n start = Math.floor(rangestart/cell);\n end = Math.ceil(rangeend/cell - 1);\n } else {\n end = start + Math.ceil(viewport/cell) - 1;\n }\n\n } else {\n if (center || edgePadding) {\n var a = items - 1;\n if (center) {\n start -= a / 2;\n end = index + a / 2;\n } else {\n end = index + a;\n }\n\n if (edgePadding) {\n var b = edgePadding * items / viewport;\n start -= b;\n end += b;\n }\n\n start = Math.floor(start);\n end = Math.ceil(end);\n } else {\n end = start + items - 1;\n }\n }\n\n start = Math.max(start, 0);\n end = Math.min(end, slideCountNew - 1);\n }\n\n return [start, end];\n }\n\n function doLazyLoad () {\n if (lazyload && !disable) {\n var arg = getVisibleSlideRange();\n arg.push(lazyloadSelector);\n\n getImageArray.apply(null, arg).forEach(function (img) {\n if (!hasClass(img, imgCompleteClass)) {\n // stop propagation transitionend event to container\n var eve = {};\n eve[TRANSITIONEND] = function (e) { e.stopPropagation(); };\n addEvents(img, eve);\n\n addEvents(img, imgEvents);\n\n // update src\n img.src = getAttr(img, 'data-src');\n\n // update srcset\n var srcset = getAttr(img, 'data-srcset');\n if (srcset) { img.srcset = srcset; }\n\n addClass(img, 'loading');\n }\n });\n }\n }\n\n function onImgLoaded (e) {\n imgLoaded(getTarget(e));\n }\n\n function onImgFailed (e) {\n imgFailed(getTarget(e));\n }\n\n function imgLoaded (img) {\n addClass(img, 'loaded');\n imgCompleted(img);\n }\n\n function imgFailed (img) {\n addClass(img, 'failed');\n imgCompleted(img);\n }\n\n function imgCompleted (img) {\n addClass(img, imgCompleteClass);\n removeClass(img, 'loading');\n removeEvents(img, imgEvents);\n }\n\n function getImageArray (start, end, imgSelector) {\n var imgs = [];\n if (!imgSelector) { imgSelector = 'img'; }\n\n while (start <= end) {\n forEach(slideItems[start].querySelectorAll(imgSelector), function (img) { imgs.push(img); });\n start++;\n }\n\n return imgs;\n }\n\n // check if all visible images are loaded\n // and update container height if it's done\n function doAutoHeight () {\n var imgs = getImageArray.apply(null, getVisibleSlideRange());\n raf(function(){ imgsLoadedCheck(imgs, updateInnerWrapperHeight); });\n }\n\n function imgsLoadedCheck (imgs, cb) {\n // execute callback function if all images are complete\n if (imgsComplete) { return cb(); }\n\n // check image classes\n imgs.forEach(function (img, index) {\n if (!lazyload && img.complete) { imgCompleted(img); } // Check image.complete\n if (hasClass(img, imgCompleteClass)) { imgs.splice(index, 1); }\n });\n\n // execute callback function if selected images are all complete\n if (!imgs.length) { return cb(); }\n\n // otherwise execute this functiona again\n raf(function(){ imgsLoadedCheck(imgs, cb); });\n }\n\n function additionalUpdates () {\n doLazyLoad();\n updateSlideStatus();\n updateLiveRegion();\n updateControlsStatus();\n updateNavStatus();\n }\n\n\n function update_carousel_transition_duration () {\n if (carousel && autoHeight) {\n middleWrapper.style[TRANSITIONDURATION] = speed / 1000 + 's';\n }\n }\n\n function getMaxSlideHeight (slideStart, slideRange) {\n var heights = [];\n for (var i = slideStart, l = Math.min(slideStart + slideRange, slideCountNew); i < l; i++) {\n heights.push(slideItems[i].offsetHeight);\n }\n\n return Math.max.apply(null, heights);\n }\n\n // update inner wrapper height\n // 1. get the max-height of the visible slides\n // 2. set transitionDuration to speed\n // 3. update inner wrapper height to max-height\n // 4. set transitionDuration to 0s after transition done\n function updateInnerWrapperHeight () {\n var maxHeight = autoHeight ? getMaxSlideHeight(index, items) : getMaxSlideHeight(cloneCount, slideCount),\n wp = middleWrapper ? middleWrapper : innerWrapper;\n\n if (wp.style.height !== maxHeight) { wp.style.height = maxHeight + 'px'; }\n }\n\n // get the distance from the top edge of the first slide to each slide\n // (init) => slidePositions\n function setSlidePositions () {\n slidePositions = [0];\n var attr = horizontal ? 'left' : 'top',\n attr2 = horizontal ? 'right' : 'bottom',\n base = slideItems[0].getBoundingClientRect()[attr];\n\n forEach(slideItems, function(item, i) {\n // skip the first slide\n if (i) { slidePositions.push(item.getBoundingClientRect()[attr] - base); }\n // add the end edge\n if (i === slideCountNew - 1) { slidePositions.push(item.getBoundingClientRect()[attr2] - base); }\n });\n }\n\n // update slide\n function updateSlideStatus () {\n var range = getVisibleSlideRange(),\n start = range[0],\n end = range[1];\n\n forEach(slideItems, function(item, i) {\n // show slides\n if (i >= start && i <= end) {\n if (hasAttr(item, 'aria-hidden')) {\n removeAttrs(item, ['aria-hidden', 'tabindex']);\n addClass(item, slideActiveClass);\n }\n // hide slides\n } else {\n if (!hasAttr(item, 'aria-hidden')) {\n setAttrs(item, {\n 'aria-hidden': 'true',\n 'tabindex': '-1'\n });\n removeClass(item, slideActiveClass);\n }\n }\n });\n }\n\n // gallery: update slide position\n function updateGallerySlidePositions () {\n var l = index + Math.min(slideCount, items);\n for (var i = slideCountNew; i--;) {\n var item = slideItems[i];\n\n if (i >= index && i < l) {\n // add transitions to visible slides when adjusting their positions\n addClass(item, 'tns-moving');\n\n item.style.left = (i - index) * 100 / items + '%';\n addClass(item, animateIn);\n removeClass(item, animateNormal);\n } else if (item.style.left) {\n item.style.left = '';\n addClass(item, animateNormal);\n removeClass(item, animateIn);\n }\n\n // remove outlet animation\n removeClass(item, animateOut);\n }\n\n // removing '.tns-moving'\n setTimeout(function() {\n forEach(slideItems, function(el) {\n removeClass(el, 'tns-moving');\n });\n }, 300);\n }\n\n // set tabindex on Nav\n function updateNavStatus () {\n // get current nav\n if (nav) {\n navCurrentIndex = navClicked >= 0 ? navClicked : getCurrentNavIndex();\n navClicked = -1;\n\n if (navCurrentIndex !== navCurrentIndexCached) {\n var navPrev = navItems[navCurrentIndexCached],\n navCurrent = navItems[navCurrentIndex];\n\n setAttrs(navPrev, {\n 'tabindex': '-1',\n 'aria-label': navStr + (navCurrentIndexCached + 1)\n });\n removeClass(navPrev, navActiveClass);\n\n setAttrs(navCurrent, {'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent});\n removeAttrs(navCurrent, 'tabindex');\n addClass(navCurrent, navActiveClass);\n\n navCurrentIndexCached = navCurrentIndex;\n }\n }\n }\n\n function getLowerCaseNodeName (el) {\n return el.nodeName.toLowerCase();\n }\n\n function isButton (el) {\n return getLowerCaseNodeName(el) === 'button';\n }\n\n function isAriaDisabled (el) {\n return el.getAttribute('aria-disabled') === 'true';\n }\n\n function disEnableElement (isButton, el, val) {\n if (isButton) {\n el.disabled = val;\n } else {\n el.setAttribute('aria-disabled', val.toString());\n }\n }\n\n // set 'disabled' to true on controls when reach the edges\n function updateControlsStatus () {\n if (!controls || rewind || loop) { return; }\n\n var prevDisabled = (prevIsButton) ? prevButton.disabled : isAriaDisabled(prevButton),\n nextDisabled = (nextIsButton) ? nextButton.disabled : isAriaDisabled(nextButton),\n disablePrev = (index <= indexMin) ? true : false,\n disableNext = (!rewind && index >= indexMax) ? true : false;\n\n if (disablePrev && !prevDisabled) {\n disEnableElement(prevIsButton, prevButton, true);\n }\n if (!disablePrev && prevDisabled) {\n disEnableElement(prevIsButton, prevButton, false);\n }\n if (disableNext && !nextDisabled) {\n disEnableElement(nextIsButton, nextButton, true);\n }\n if (!disableNext && nextDisabled) {\n disEnableElement(nextIsButton, nextButton, false);\n }\n }\n\n // set duration\n function resetDuration (el, str) {\n if (TRANSITIONDURATION) { el.style[TRANSITIONDURATION] = str; }\n }\n\n function getSliderWidth () {\n return fixedWidth ? (fixedWidth + gutter) * slideCountNew : slidePositions[slideCountNew];\n }\n\n function getCenterGap (num) {\n if (num == null) { num = index; }\n\n var gap = edgePadding ? gutter : 0;\n return autoWidth ? ((viewport - gap) - (slidePositions[num + 1] - slidePositions[num] - gutter))/2 :\n fixedWidth ? (viewport - fixedWidth) / 2 :\n (items - 1) / 2;\n }\n\n function getRightBoundary () {\n var gap = edgePadding ? gutter : 0,\n result = (viewport + gap) - getSliderWidth();\n\n if (center && !loop) {\n result = fixedWidth ? - (fixedWidth + gutter) * (slideCountNew - 1) - getCenterGap() :\n getCenterGap(slideCountNew - 1) - slidePositions[slideCountNew - 1];\n }\n if (result > 0) { result = 0; }\n\n return result;\n }\n\n function getContainerTransformValue (num) {\n if (num == null) { num = index; }\n\n var val;\n if (horizontal && !autoWidth) {\n if (fixedWidth) {\n val = - (fixedWidth + gutter) * num;\n if (center) { val += getCenterGap(); }\n } else {\n var denominator = TRANSFORM ? slideCountNew : items;\n if (center) { num -= getCenterGap(); }\n val = - num * 100 / denominator;\n }\n } else {\n val = - slidePositions[num];\n if (center && autoWidth) {\n val += getCenterGap();\n }\n }\n\n if (hasRightDeadZone) { val = Math.max(val, rightBoundary); }\n\n val += (horizontal && !autoWidth && !fixedWidth) ? '%' : 'px';\n\n return val;\n }\n\n function doContainerTransformSilent (val) {\n resetDuration(container, '0s');\n doContainerTransform(val);\n }\n\n function doContainerTransform (val) {\n if (val == null) { val = getContainerTransformValue(); }\n container.style[transformAttr] = transformPrefix + val + transformPostfix;\n }\n\n function animateSlide (number, classOut, classIn, isOut) {\n var l = number + items;\n if (!loop) { l = Math.min(l, slideCountNew); }\n\n for (var i = number; i < l; i++) {\n var item = slideItems[i];\n\n // set item positions\n if (!isOut) { item.style.left = (i - index) * 100 / items + '%'; }\n\n if (animateDelay && TRANSITIONDELAY) {\n item.style[TRANSITIONDELAY] = item.style[ANIMATIONDELAY] = animateDelay * (i - number) / 1000 + 's';\n }\n removeClass(item, classOut);\n addClass(item, classIn);\n\n if (isOut) { slideItemsOut.push(item); }\n }\n }\n\n // make transfer after click/drag:\n // 1. change 'transform' property for mordern browsers\n // 2. change 'left' property for legacy browsers\n var transformCore = (function () {\n return carousel ?\n function () {\n resetDuration(container, '');\n if (TRANSITIONDURATION || !speed) {\n // for morden browsers with non-zero duration or\n // zero duration for all browsers\n doContainerTransform();\n // run fallback function manually\n // when duration is 0 / container is hidden\n if (!speed || !isVisible(container)) { onTransitionEnd(); }\n\n } else {\n // for old browser with non-zero duration\n jsTransform(container, transformAttr, transformPrefix, transformPostfix, getContainerTransformValue(), speed, onTransitionEnd);\n }\n\n if (!horizontal) { updateContentWrapperHeight(); }\n } :\n function () {\n slideItemsOut = [];\n\n var eve = {};\n eve[TRANSITIONEND] = eve[ANIMATIONEND] = onTransitionEnd;\n removeEvents(slideItems[indexCached], eve);\n addEvents(slideItems[index], eve);\n\n animateSlide(indexCached, animateIn, animateOut, true);\n animateSlide(index, animateNormal, animateIn);\n\n // run fallback function manually\n // when transition or animation not supported / duration is 0\n if (!TRANSITIONEND || !ANIMATIONEND || !speed || !isVisible(container)) { onTransitionEnd(); }\n };\n })();\n\n function render (e, sliderMoved) {\n if (updateIndexBeforeTransform) { updateIndex(); }\n\n // render when slider was moved (touch or drag) even though index may not change\n if (index !== indexCached || sliderMoved) {\n // events\n events.emit('indexChanged', info());\n events.emit('transitionStart', info());\n if (autoHeight) { doAutoHeight(); }\n\n // pause autoplay when click or keydown from user\n if (animating && e && ['click', 'keydown'].indexOf(e.type) >= 0) { stopAutoplay(); }\n\n running = true;\n transformCore();\n }\n }\n\n /*\n * Transfer prefixed properties to the same format\n * CSS: -Webkit-Transform => webkittransform\n * JS: WebkitTransform => webkittransform\n * @param {string} str - property\n *\n */\n function strTrans (str) {\n return str.toLowerCase().replace(/-/g, '');\n }\n\n // AFTER TRANSFORM\n // Things need to be done after a transfer:\n // 1. check index\n // 2. add classes to visible slide\n // 3. disable controls buttons when reach the first/last slide in non-loop slider\n // 4. update nav status\n // 5. lazyload images\n // 6. update container height\n function onTransitionEnd (event) {\n // check running on gallery mode\n // make sure trantionend/animationend events run only once\n if (carousel || running) {\n events.emit('transitionEnd', info(event));\n\n if (!carousel && slideItemsOut.length > 0) {\n for (var i = 0; i < slideItemsOut.length; i++) {\n var item = slideItemsOut[i];\n // set item positions\n item.style.left = '';\n\n if (ANIMATIONDELAY && TRANSITIONDELAY) {\n item.style[ANIMATIONDELAY] = '';\n item.style[TRANSITIONDELAY] = '';\n }\n removeClass(item, animateOut);\n addClass(item, animateNormal);\n }\n }\n\n /* update slides, nav, controls after checking ...\n * => legacy browsers who don't support 'event'\n * have to check event first, otherwise event.target will cause an error\n * => or 'gallery' mode:\n * + event target is slide item\n * => or 'carousel' mode:\n * + event target is container,\n * + event.property is the same with transform attribute\n */\n if (!event ||\n !carousel && event.target.parentNode === container ||\n event.target === container && strTrans(event.propertyName) === strTrans(transformAttr)) {\n\n if (!updateIndexBeforeTransform) {\n var indexTem = index;\n updateIndex();\n if (index !== indexTem) {\n events.emit('indexChanged', info());\n\n doContainerTransformSilent();\n }\n }\n\n if (nested === 'inner') { events.emit('innerLoaded', info()); }\n running = false;\n indexCached = index;\n }\n }\n\n }\n\n // # ACTIONS\n function goTo (targetIndex, e) {\n if (freeze) { return; }\n\n // prev slideBy\n if (targetIndex === 'prev') {\n onControlsClick(e, -1);\n\n // next slideBy\n } else if (targetIndex === 'next') {\n onControlsClick(e, 1);\n\n // go to exact slide\n } else {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n var absIndex = getAbsIndex(),\n indexGap = 0;\n\n if (targetIndex === 'first') {\n indexGap = - absIndex;\n } else if (targetIndex === 'last') {\n indexGap = carousel ? slideCount - items - absIndex : slideCount - 1 - absIndex;\n } else {\n if (typeof targetIndex !== 'number') { targetIndex = parseInt(targetIndex); }\n\n if (!isNaN(targetIndex)) {\n // from directly called goTo function\n if (!e) { targetIndex = Math.max(0, Math.min(slideCount - 1, targetIndex)); }\n\n indexGap = targetIndex - absIndex;\n }\n }\n\n // gallery: make sure new page won't overlap with current page\n if (!carousel && indexGap && Math.abs(indexGap) < items) {\n var factor = indexGap > 0 ? 1 : -1;\n indexGap += (index + indexGap - slideCount) >= indexMin ? slideCount * factor : slideCount * 2 * factor * -1;\n }\n\n index += indexGap;\n\n // make sure index is in range\n if (carousel && loop) {\n if (index < indexMin) { index += slideCount; }\n if (index > indexMax) { index -= slideCount; }\n }\n\n // if index is changed, start rendering\n if (getAbsIndex(index) !== getAbsIndex(indexCached)) {\n render(e);\n }\n\n }\n }\n\n // on controls click\n function onControlsClick (e, dir) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n var passEventObject;\n\n if (!dir) {\n e = getEvent(e);\n var target = getTarget(e);\n\n while (target !== controlsContainer && [prevButton, nextButton].indexOf(target) < 0) { target = target.parentNode; }\n\n var targetIn = [prevButton, nextButton].indexOf(target);\n if (targetIn >= 0) {\n passEventObject = true;\n dir = targetIn === 0 ? -1 : 1;\n }\n }\n\n if (rewind) {\n if (index === indexMin && dir === -1) {\n goTo('last', e);\n return;\n } else if (index === indexMax && dir === 1) {\n goTo('first', e);\n return;\n }\n }\n\n if (dir) {\n index += slideBy * dir;\n if (autoWidth) { index = Math.floor(index); }\n // pass e when click control buttons or keydown\n render((passEventObject || (e && e.type === 'keydown')) ? e : null);\n }\n }\n\n // on nav click\n function onNavClick (e) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n e = getEvent(e);\n var target = getTarget(e), navIndex;\n\n // find the clicked nav item\n while (target !== navContainer && !hasAttr(target, 'data-nav')) { target = target.parentNode; }\n if (hasAttr(target, 'data-nav')) {\n var navIndex = navClicked = Number(getAttr(target, 'data-nav')),\n targetIndexBase = fixedWidth || autoWidth ? navIndex * slideCount / pages : navIndex * items,\n targetIndex = navAsThumbnails ? navIndex : Math.min(Math.ceil(targetIndexBase), slideCount - 1);\n goTo(targetIndex, e);\n\n if (navCurrentIndex === navIndex) {\n if (animating) { stopAutoplay(); }\n navClicked = -1; // reset navClicked\n }\n }\n }\n\n // autoplay functions\n function setAutoplayTimer () {\n autoplayTimer = setInterval(function () {\n onControlsClick(null, autoplayDirection);\n }, autoplayTimeout);\n\n animating = true;\n }\n\n function stopAutoplayTimer () {\n clearInterval(autoplayTimer);\n animating = false;\n }\n\n function updateAutoplayButton (action, txt) {\n setAttrs(autoplayButton, {'data-action': action});\n autoplayButton.innerHTML = autoplayHtmlStrings[0] + action + autoplayHtmlStrings[1] + txt;\n }\n\n function startAutoplay () {\n setAutoplayTimer();\n if (autoplayButton) { updateAutoplayButton('stop', autoplayText[1]); }\n }\n\n function stopAutoplay () {\n stopAutoplayTimer();\n if (autoplayButton) { updateAutoplayButton('start', autoplayText[0]); }\n }\n\n // programaitcally play/pause the slider\n function play () {\n if (autoplay && !animating) {\n startAutoplay();\n autoplayUserPaused = false;\n }\n }\n function pause () {\n if (animating) {\n stopAutoplay();\n autoplayUserPaused = true;\n }\n }\n\n function toggleAutoplay () {\n if (animating) {\n stopAutoplay();\n autoplayUserPaused = true;\n } else {\n startAutoplay();\n autoplayUserPaused = false;\n }\n }\n\n function onVisibilityChange () {\n if (doc.hidden) {\n if (animating) {\n stopAutoplayTimer();\n autoplayVisibilityPaused = true;\n }\n } else if (autoplayVisibilityPaused) {\n setAutoplayTimer();\n autoplayVisibilityPaused = false;\n }\n }\n\n function mouseoverPause () {\n if (animating) {\n stopAutoplayTimer();\n autoplayHoverPaused = true;\n }\n }\n\n function mouseoutRestart () {\n if (autoplayHoverPaused) {\n setAutoplayTimer();\n autoplayHoverPaused = false;\n }\n }\n\n // keydown events on document\n function onDocumentKeydown (e) {\n e = getEvent(e);\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);\n\n if (keyIndex >= 0) {\n onControlsClick(e, keyIndex === 0 ? -1 : 1);\n }\n }\n\n // on key control\n function onControlsKeydown (e) {\n e = getEvent(e);\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);\n\n if (keyIndex >= 0) {\n if (keyIndex === 0) {\n if (!prevButton.disabled) { onControlsClick(e, -1); }\n } else if (!nextButton.disabled) {\n onControlsClick(e, 1);\n }\n }\n }\n\n // set focus\n function setFocus (el) {\n el.focus();\n }\n\n // on key nav\n function onNavKeydown (e) {\n e = getEvent(e);\n var curElement = doc.activeElement;\n if (!hasAttr(curElement, 'data-nav')) { return; }\n\n // var code = e.keyCode,\n var keyIndex = [KEYS.LEFT, KEYS.RIGHT, KEYS.ENTER, KEYS.SPACE].indexOf(e.keyCode),\n navIndex = Number(getAttr(curElement, 'data-nav'));\n\n if (keyIndex >= 0) {\n if (keyIndex === 0) {\n if (navIndex > 0) { setFocus(navItems[navIndex - 1]); }\n } else if (keyIndex === 1) {\n if (navIndex < pages - 1) { setFocus(navItems[navIndex + 1]); }\n } else {\n navClicked = navIndex;\n goTo(navIndex, e);\n }\n }\n }\n\n function getEvent (e) {\n e = e || win.event;\n return isTouchEvent(e) ? e.changedTouches[0] : e;\n }\n function getTarget (e) {\n return e.target || win.event.srcElement;\n }\n\n function isTouchEvent (e) {\n return e.type.indexOf('touch') >= 0;\n }\n\n function preventDefaultBehavior (e) {\n e.preventDefault ? e.preventDefault() : e.returnValue = false;\n }\n\n function getMoveDirectionExpected () {\n return getTouchDirection(toDegree(lastPosition.y - initPosition.y, lastPosition.x - initPosition.x), swipeAngle) === options.axis;\n }\n\n function onPanStart (e) {\n if (running) {\n if (preventActionWhenRunning) { return; } else { onTransitionEnd(); }\n }\n\n if (autoplay && animating) { stopAutoplayTimer(); }\n\n panStart = true;\n if (rafIndex) {\n caf(rafIndex);\n rafIndex = null;\n }\n\n var $ = getEvent(e);\n events.emit(isTouchEvent(e) ? 'touchStart' : 'dragStart', info(e));\n\n if (!isTouchEvent(e) && ['img', 'a'].indexOf(getLowerCaseNodeName(getTarget(e))) >= 0) {\n preventDefaultBehavior(e);\n }\n\n lastPosition.x = initPosition.x = $.clientX;\n lastPosition.y = initPosition.y = $.clientY;\n if (carousel) {\n translateInit = parseFloat(container.style[transformAttr].replace(transformPrefix, ''));\n resetDuration(container, '0s');\n }\n }\n\n function onPanMove (e) {\n if (panStart) {\n var $ = getEvent(e);\n lastPosition.x = $.clientX;\n lastPosition.y = $.clientY;\n\n if (carousel) {\n if (!rafIndex) { rafIndex = raf(function(){ panUpdate(e); }); }\n } else {\n if (moveDirectionExpected === '?') { moveDirectionExpected = getMoveDirectionExpected(); }\n if (moveDirectionExpected) { preventScroll = true; }\n }\n\n if ((typeof e.cancelable !== 'boolean' || e.cancelable) && preventScroll) {\n e.preventDefault();\n }\n }\n }\n\n function panUpdate (e) {\n if (!moveDirectionExpected) {\n panStart = false;\n return;\n }\n caf(rafIndex);\n if (panStart) { rafIndex = raf(function(){ panUpdate(e); }); }\n\n if (moveDirectionExpected === '?') { moveDirectionExpected = getMoveDirectionExpected(); }\n if (moveDirectionExpected) {\n if (!preventScroll && isTouchEvent(e)) { preventScroll = true; }\n\n try {\n if (e.type) { events.emit(isTouchEvent(e) ? 'touchMove' : 'dragMove', info(e)); }\n } catch(err) {}\n\n var x = translateInit,\n dist = getDist(lastPosition, initPosition);\n if (!horizontal || fixedWidth || autoWidth) {\n x += dist;\n x += 'px';\n } else {\n var percentageX = TRANSFORM ? dist * items * 100 / ((viewport + gutter) * slideCountNew): dist * 100 / (viewport + gutter);\n x += percentageX;\n x += '%';\n }\n\n container.style[transformAttr] = transformPrefix + x + transformPostfix;\n }\n }\n\n function onPanEnd (e) {\n if (panStart) {\n if (rafIndex) {\n caf(rafIndex);\n rafIndex = null;\n }\n if (carousel) { resetDuration(container, ''); }\n panStart = false;\n\n var $ = getEvent(e);\n lastPosition.x = $.clientX;\n lastPosition.y = $.clientY;\n var dist = getDist(lastPosition, initPosition);\n\n if (Math.abs(dist)) {\n // drag vs click\n if (!isTouchEvent(e)) {\n // prevent \"click\"\n var target = getTarget(e);\n addEvents(target, {'click': function preventClick (e) {\n preventDefaultBehavior(e);\n removeEvents(target, {'click': preventClick});\n }});\n }\n\n if (carousel) {\n rafIndex = raf(function() {\n if (horizontal && !autoWidth) {\n var indexMoved = - dist * items / (viewport + gutter);\n indexMoved = dist > 0 ? Math.floor(indexMoved) : Math.ceil(indexMoved);\n index += indexMoved;\n } else {\n var moved = - (translateInit + dist);\n if (moved <= 0) {\n index = indexMin;\n } else if (moved >= slidePositions[slideCountNew - 1]) {\n index = indexMax;\n } else {\n var i = 0;\n while (i < slideCountNew && moved >= slidePositions[i]) {\n index = i;\n if (moved > slidePositions[i] && dist < 0) { index += 1; }\n i++;\n }\n }\n }\n\n render(e, dist);\n events.emit(isTouchEvent(e) ? 'touchEnd' : 'dragEnd', info(e));\n });\n } else {\n if (moveDirectionExpected) {\n onControlsClick(e, dist > 0 ? -1 : 1);\n }\n }\n }\n }\n\n // reset\n if (options.preventScrollOnTouch === 'auto') { preventScroll = false; }\n if (swipeAngle) { moveDirectionExpected = '?'; }\n if (autoplay && !animating) { setAutoplayTimer(); }\n }\n\n // === RESIZE FUNCTIONS === //\n // (slidePositions, index, items) => vertical_conentWrapper.height\n function updateContentWrapperHeight () {\n var wp = middleWrapper ? middleWrapper : innerWrapper;\n wp.style.height = slidePositions[index + items] - slidePositions[index] + 'px';\n }\n\n function getPages () {\n var rough = fixedWidth ? (fixedWidth + gutter) * slideCount / viewport : slideCount / items;\n return Math.min(Math.ceil(rough), slideCount);\n }\n\n /*\n * 1. update visible nav items list\n * 2. add \"hidden\" attributes to previous visible nav items\n * 3. remove \"hidden\" attrubutes to new visible nav items\n */\n function updateNavVisibility () {\n if (!nav || navAsThumbnails) { return; }\n\n if (pages !== pagesCached) {\n var min = pagesCached,\n max = pages,\n fn = showElement;\n\n if (pagesCached > pages) {\n min = pages;\n max = pagesCached;\n fn = hideElement;\n }\n\n while (min < max) {\n fn(navItems[min]);\n min++;\n }\n\n // cache pages\n pagesCached = pages;\n }\n }\n\n function info (e) {\n return {\n container: container,\n slideItems: slideItems,\n navContainer: navContainer,\n navItems: navItems,\n controlsContainer: controlsContainer,\n hasControls: hasControls,\n prevButton: prevButton,\n nextButton: nextButton,\n items: items,\n slideBy: slideBy,\n cloneCount: cloneCount,\n slideCount: slideCount,\n slideCountNew: slideCountNew,\n index: index,\n indexCached: indexCached,\n displayIndex: getCurrentSlide(),\n navCurrentIndex: navCurrentIndex,\n navCurrentIndexCached: navCurrentIndexCached,\n pages: pages,\n pagesCached: pagesCached,\n sheet: sheet,\n isOn: isOn,\n event: e || {},\n };\n }\n\n return {\n version: '2.9.4',\n getInfo: info,\n events: events,\n goTo: goTo,\n play: play,\n pause: pause,\n isOn: isOn,\n updateSliderHeight: updateInnerWrapperHeight,\n refresh: initSliderTransform,\n destroy: destroy,\n rebuild: function() {\n return tns(extend(options, optionsElements));\n }\n };\n};\n","// get css-calc \n// @return - false | calc | -webkit-calc | -moz-calc\n// @usage - var calc = getCalc(); \nimport { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function calc() {\n var doc = document, \n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'), \n result = false;\n\n body.appendChild(div);\n try {\n var str = '(10px * 10)',\n vals = ['calc' + str, '-moz-calc' + str, '-webkit-calc' + str],\n val;\n for (var i = 0; i < 3; i++) {\n val = vals[i];\n div.style.width = val;\n if (div.offsetWidth === 100) { \n result = val.replace(str, ''); \n break;\n }\n }\n } catch (e) {}\n \n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n\n return result;\n}","// get subpixel support value\n// @return - boolean\nimport { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function percentageLayout() {\n // check subpixel layout supporting\n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n wrapper = doc.createElement('div'),\n outer = doc.createElement('div'),\n str = '',\n count = 70,\n perPage = 3,\n supported = false;\n\n wrapper.className = \"tns-t-subp2\";\n outer.className = \"tns-t-ct\";\n\n for (var i = 0; i < count; i++) {\n str += '
';\n }\n\n outer.innerHTML = str;\n wrapper.appendChild(outer);\n body.appendChild(wrapper);\n\n supported = Math.abs(wrapper.getBoundingClientRect().left - outer.children[count - perPage].getBoundingClientRect().left) < 2;\n\n body.fake ? resetFakeBody(body, docOverflow) : wrapper.remove();\n\n return supported;\n}","import { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function mediaquerySupport () {\n if (window.matchMedia || window.msMatchMedia) {\n return true;\n }\n \n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n div = doc.createElement('div'),\n style = doc.createElement('style'),\n rule = '@media all and (min-width:1px){.tns-mq-test{position:absolute}}',\n position;\n\n style.type = 'text/css';\n div.className = 'tns-mq-test';\n\n body.appendChild(style);\n body.appendChild(div);\n\n if (style.styleSheet) {\n style.styleSheet.cssText = rule;\n } else {\n style.appendChild(doc.createTextNode(rule));\n }\n\n position = window.getComputedStyle ? window.getComputedStyle(div).position : div.currentStyle['position'];\n\n body.fake ? resetFakeBody(body, docOverflow) : div.remove();\n\n return position === \"absolute\";\n}\n","import { getBody } from './getBody.js';\nimport { setFakeBody } from './setFakeBody.js';\nimport { resetFakeBody } from './resetFakeBody.js';\n\nexport function has3DTransforms(tf){\n if (!tf) { return false; }\n if (!window.getComputedStyle) { return false; }\n \n var doc = document,\n body = getBody(),\n docOverflow = setFakeBody(body),\n el = doc.createElement('p'),\n has3d,\n cssTF = tf.length > 9 ? '-' + tf.slice(0, -9).toLowerCase() + '-' : '';\n\n cssTF += 'transform';\n\n // Add it to the body to get the computed style\n body.insertBefore(el, null);\n\n el.style[tf] = 'translate3d(1px,1px,1px)';\n has3d = window.getComputedStyle(el).getPropertyValue(cssTF);\n\n body.fake ? resetFakeBody(body, docOverflow) : el.remove();\n\n return (has3d !== undefined && has3d.length > 0 && has3d !== \"none\");\n}\n","export function getSlideId() {\n var id = window.tnsId;\n window.tnsId = !id ? 1 : id + 1;\n \n return 'tns' + window.tnsId;\n}","// create and append style sheet\nexport function createStyleSheet (media, nonce) {\n // Create the