{"version":3,"file":"./index.bundle.js","mappings":"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","sources":["webpack://stl-2021/webpack/runtime/create fake namespace object","webpack://stl-2021/webpack/runtime/load script","webpack://stl-2021/./scripts/elements/customHTMLElement.js","webpack://stl-2021/./node_modules/delegate/src/closest.js","webpack://stl-2021/./node_modules/delegate/src/delegate.js","webpack://stl-2021/./scripts/elements/templates/faqSearchSuggestion.handlebars","webpack://stl-2021/./scripts/elements/templates/searchSuggestion.handlebars","webpack://stl-2021/./node_modules/handlebars/dist/cjs/handlebars.runtime.js","webpack://stl-2021/./node_modules/handlebars/dist/cjs/handlebars/base.js","webpack://stl-2021/./node_modules/handlebars/dist/cjs/handlebars/decorators.js","webpack://stl-2021/./node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js","webpack://stl-2021/./node_modules/handlebars/dist/cjs/handlebars/exception.js","webpack://stl-2021/./node_modules/handlebars/dist/cjs/handlebars/helpers.js","webpack://stl-2021/./node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js","webpack://stl-2021/./node_modules/handlebars/dist/cjs/handlebars/helpers/each.js","webpack://stl-2021/./node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js","webpack://stl-2021/./node_modules/handlebars/dist/cjs/handlebars/helpers/if.js","webpack://stl-2021/./node_modules/handlebars/dist/cjs/handlebars/helpers/log.js","webpack://stl-2021/./node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js","webpack://stl-2021/./node_modules/handlebars/dist/cjs/handlebars/helpers/with.js","webpack://stl-2021/./node_modules/handlebars/dist/cjs/handlebars/internal/create-new-lookup-object.js","webpack://stl-2021/./node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js","webpack://stl-2021/./node_modules/handlebars/dist/cjs/handlebars/internal/wrapHelper.js","webpack://stl-2021/./node_modules/handlebars/dist/cjs/handlebars/logger.js","webpack://stl-2021/./node_modules/handlebars/dist/cjs/handlebars/no-conflict.js","webpack://stl-2021/./node_modules/handlebars/dist/cjs/handlebars/runtime.js","webpack://stl-2021/./node_modules/handlebars/dist/cjs/handlebars/safe-string.js","webpack://stl-2021/./node_modules/handlebars/dist/cjs/handlebars/utils.js","webpack://stl-2021/./node_modules/handlebars/runtime.js","webpack://stl-2021/./node_modules/js-cookie/src/js.cookie.js","webpack://stl-2021/./node_modules/lazysizes/lazysizes.js","webpack://stl-2021/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://stl-2021/./node_modules/@babel/runtime/helpers/typeof.js","webpack://stl-2021/./node_modules/@babel/runtime/regenerator/index.js","webpack://stl-2021/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://stl-2021/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://stl-2021/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://stl-2021/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://stl-2021/./node_modules/@babel/runtime/helpers/esm/get.js","webpack://stl-2021/./node_modules/@babel/runtime/helpers/esm/superPropBase.js","webpack://stl-2021/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://stl-2021/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://stl-2021/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://stl-2021/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://stl-2021/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://stl-2021/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://stl-2021/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://stl-2021/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://stl-2021/webpack/bootstrap","webpack://stl-2021/webpack/runtime/compat get default export","webpack://stl-2021/webpack/runtime/define property getters","webpack://stl-2021/webpack/runtime/ensure chunk","webpack://stl-2021/webpack/runtime/get javascript chunk filename","webpack://stl-2021/webpack/runtime/global","webpack://stl-2021/webpack/runtime/hasOwnProperty shorthand","webpack://stl-2021/webpack/runtime/make namespace object","webpack://stl-2021/webpack/runtime/publicPath","webpack://stl-2021/webpack/runtime/jsonp chunk loading","webpack://stl-2021/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://stl-2021/./node_modules/promise-polyfill/src/finally.js","webpack://stl-2021/./node_modules/promise-polyfill/src/allSettled.js","webpack://stl-2021/./node_modules/promise-polyfill/src/any.js","webpack://stl-2021/./node_modules/promise-polyfill/src/index.js","webpack://stl-2021/./node_modules/promise-polyfill/src/polyfill.js","webpack://stl-2021/./scripts/app.js","webpack://stl-2021/./scripts/controllers/polyfill.js","webpack://stl-2021/./scripts/controllers/gtm.js","webpack://stl-2021/./scripts/controllers/api/baseApi.js","webpack://stl-2021/./scripts/controllers/api/api.js","webpack://stl-2021/./scripts/controllers/ribbon.js","webpack://stl-2021/./scripts/controllers/stickycta.js","webpack://stl-2021/./scripts/elements/searchSuggestion.js","webpack://stl-2021/./scripts/controllers/search.js","webpack://stl-2021/./scripts/controllers/header.js","webpack://stl-2021/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://stl-2021/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://stl-2021/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://stl-2021/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://stl-2021/./scripts/controllers/video.js","webpack://stl-2021/./scripts/elements/faqSearchSuggestion.js","webpack://stl-2021/./scripts/controllers/faqSearchController.js","webpack://stl-2021/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://stl-2021/./scripts/controllers/infoGuideAnchorMenu.js","webpack://stl-2021/./node_modules/slim-select/dist/slimselect.es.js","webpack://stl-2021/./scripts/controllers/slimSelect.js","webpack://stl-2021/./scripts/controllers/share/share.js","webpack://stl-2021/./scripts/controllers/share/controller.js","webpack://stl-2021/./scripts/controllers/tabbedBlockController.js","webpack://stl-2021/./scripts/index.js"],"sourcesContent":["var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"stl-2021:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(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 || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { 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\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(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(function(fn) { return 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};","/**\r\n * Class representing an HTML element\r\n */\r\nexport default class CustomHTMLElement {\r\n /**\r\n * Creates the CustomHTMLElement\r\n * @param {object} defaultProperties - List of default element properties\r\n */\r\n\tconstructor(defaultProperties = {}) {\r\n\t\tif (window.HTMLID === undefined) {\r\n\t\t\twindow.HTMLID = 0;\r\n\t\t}\r\n\t\twindow.HTMLID++;\r\n\t\tthis._id = '_' + window.HTMLID;\r\n\t\tthis._template = null;\r\n\t\tthis._html = null;\r\n\t\tthis._object = null;\r\n\r\n\t\tthis._properties = defaultProperties;\r\n\t}\r\n\r\n /**\r\n * Either returns a generated HTMLElement or creates a new one\r\n * @param {boolean} [forceCreate=false] - Forces a new HTMLElement to be created\r\n * @returns {HTMLElement}\r\n */\r\n\t getOrCreate(forceCreate = false) {\r\n\t\tif (this._template === null) {\r\n\t\t\tthrow new Error('No template was set');\r\n\t\t}\r\n\r\n\t\tif (this._object !== null && !forceCreate) {\r\n\t\t\treturn this._object;\r\n\t\t} else {\r\n\t\t\tlet containerElement = document.createElement('div');\r\n\t\t\tthis._html = this._template(this._properties);\r\n\t\t\tcontainerElement.innerHTML = this._html;\r\n\t\t\tthis._object = containerElement.firstChild;\r\n\r\n\t\t\treturn this._object;\r\n\t\t}\r\n\t}\r\n\r\n\tgenerate(forceRenew = false) {\r\n\t\treturn this.getOrCreate(forceRenew);\r\n\t}\r\n\r\n /**\r\n * Set properties for the element\r\n * @param {object} properties - List of properties that can be set on creating a new element\r\n */\r\n\tsetProperties(properties) {\r\n\t\tif (Object.keys(properties).length > 0) {\r\n\t\t\tObject.keys(properties).forEach(key => {\r\n\t\t\t\tif ((typeof this[`set${key.charAt(0).toUpperCase()}${key.substring(1)}`]) === 'function') {\r\n\t\t\t\t\tthis[`set${key.charAt(0).toUpperCase()}${key.substring(1)}`](properties[key]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis._properties[key] = properties[key];\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n /**\r\n * Sets and returns one of the element's properties\r\n * @param {string} key - The property's name\r\n * @param {*} value - The property's value\r\n * @returns {*}\r\n */\r\n\t_property(key, value) {\r\n\t\tif (value === undefined) {\r\n\t\t\treturn this._properties[key];\r\n\t\t} else {\r\n\t\t\tthis._properties[key] = value;\r\n\t\t\treturn this._properties[key];\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Creates getters and setters for all available properties\r\n\t */\r\n\t _createPropertyMethods() {\r\n\t\tObject.keys(this._properties).forEach(propertyKey => {\r\n\t\t\tlet setKeyMethodName = `set${propertyKey.charAt(0).toUpperCase()}${propertyKey.substring(1)}`;\r\n\r\n\t\t\t// Creates the set{Keyname} property. This one should do some basic type verification to make sure a string stays a string etc.\r\n\t\t\tif (!(setKeyMethodName in this)) {\r\n\t\t\t\tObject.defineProperty(this, setKeyMethodName, {\r\n\t\t\t\t\tvalue: (givenValue = this._property(propertyKey)) => {\r\n\t\t\t\t\t\treturn this._property(propertyKey, this._ensureType(givenValue, typeof this._property(propertyKey)));\r\n\t\t\t\t\t},\r\n\t\t\t\t\tenumerable: true,\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Normal getter and setter. Setter passes the value to the set{Keyname} method\r\n\t\t\tObject.defineProperty(this, propertyKey, {\r\n\t\t\t\tget: () => this._property(propertyKey),\r\n\t\t\t\tset: (givenValue = this._property(propertyKey)) => {\r\n\t\t\t\t\treturn this[setKeyMethodName](givenValue);\r\n\t\t\t\t},\r\n\t\t\t\tenumerable: true,\r\n\t\t\t\tconfigurable: true\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Ensures the property's primitive type stays the same when updating it. Strings stay strings, numbers stay numbers etc.\r\n\t * @param {*} value The value as received from the setter\r\n\t * @param {String} type The primitive the value's supposed to be\r\n\t * @returns {*} The value, possibly converted to the original's primitve\r\n\t */\r\n\t_ensureType(value, type) {\r\n\t\tswitch (type) {\r\n\t\t\tcase 'string':\r\n\t\t\t\treturn (value ? `${value}` : '');\r\n\t\t\tcase 'number':\r\n\t\t\t\treturn (isNaN(parseFloat(value)) ? 0 : parseFloat(value));\r\n\t\t\tcase 'boolean':\r\n\t\t\t\treturn (value.toString().toLowerCase() == 'true');\r\n\t\t\tdefault:\r\n\t\t\t\treturn value;\r\n\t\t}\r\n\t}\r\n}","var DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' &&\n element.matches(selector)) {\n return element;\n }\n element = element.parentNode;\n }\n}\n\nmodule.exports = closest;\n","var closest = require('./closest');\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n }\n\n // Handle Element-less usage, it defaults to global delegation\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n }\n\n // Handle Selector-based usage\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n }\n\n // Handle Array-like based usage\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n","var Handlebars = require(\"../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
  • \\r\\n \\r\\n \"\n + ((stack1 = alias1((depth0 != null ? lookupProperty(depth0,\"title\") : depth0), depth0)) != null ? stack1 : \"\")\n + \"\\r\\n \"\n + ((stack1 = alias1((depth0 != null ? lookupProperty(depth0,\"category\") : depth0), depth0)) != null ? stack1 : \"\")\n + \"\\r\\n \\r\\n
  • \\r\\n\";\n},\"useData\":true});","var Handlebars = require(\"../../../node_modules/handlebars/runtime.js\");\nfunction __default(obj) { return obj && (obj.__esModule ? obj[\"default\"] : obj); }\nmodule.exports = (Handlebars[\"default\"] || Handlebars).template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
  • \\r\\n \\r\\n \"\n + ((stack1 = alias1((depth0 != null ? lookupProperty(depth0,\"name\") : depth0), depth0)) != null ? stack1 : \"\")\n + \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
  • \\r\\n\";\n},\"useData\":true});","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\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 _handlebarsBase = require('./handlebars/base');\n\nvar base = _interopRequireWildcard(_handlebarsBase);\n\n// Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\n\nvar _handlebarsSafeString = require('./handlebars/safe-string');\n\nvar _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);\n\nvar _handlebarsException = require('./handlebars/exception');\n\nvar _handlebarsException2 = _interopRequireDefault(_handlebarsException);\n\nvar _handlebarsUtils = require('./handlebars/utils');\n\nvar Utils = _interopRequireWildcard(_handlebarsUtils);\n\nvar _handlebarsRuntime = require('./handlebars/runtime');\n\nvar runtime = _interopRequireWildcard(_handlebarsRuntime);\n\nvar _handlebarsNoConflict = require('./handlebars/no-conflict');\n\nvar _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);\n\n// For compatibility and usage outside of module systems, make the Handlebars object a namespace\nfunction create() {\n var hb = new base.HandlebarsEnvironment();\n\n Utils.extend(hb, base);\n hb.SafeString = _handlebarsSafeString2['default'];\n hb.Exception = _handlebarsException2['default'];\n hb.Utils = Utils;\n hb.escapeExpression = Utils.escapeExpression;\n\n hb.VM = runtime;\n hb.template = function (spec) {\n return runtime.template(spec, hb);\n };\n\n return hb;\n}\n\nvar inst = create();\ninst.create = create;\n\n_handlebarsNoConflict2['default'](inst);\n\ninst['default'] = inst;\n\nexports['default'] = inst;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9oYW5kbGViYXJzLnJ1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OEJBQXNCLG1CQUFtQjs7SUFBN0IsSUFBSTs7Ozs7b0NBSU8sMEJBQTBCOzs7O21DQUMzQix3QkFBd0I7Ozs7K0JBQ3ZCLG9CQUFvQjs7SUFBL0IsS0FBSzs7aUNBQ1Esc0JBQXNCOztJQUFuQyxPQUFPOztvQ0FFSSwwQkFBMEI7Ozs7O0FBR2pELFNBQVMsTUFBTSxHQUFHO0FBQ2hCLE1BQUksRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7O0FBRTFDLE9BQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZCLElBQUUsQ0FBQyxVQUFVLG9DQUFhLENBQUM7QUFDM0IsSUFBRSxDQUFDLFNBQVMsbUNBQVksQ0FBQztBQUN6QixJQUFFLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNqQixJQUFFLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDOztBQUU3QyxJQUFFLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUNoQixJQUFFLENBQUMsUUFBUSxHQUFHLFVBQVMsSUFBSSxFQUFFO0FBQzNCLFdBQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7R0FDbkMsQ0FBQzs7QUFFRixTQUFPLEVBQUUsQ0FBQztDQUNYOztBQUVELElBQUksSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDOztBQUVyQixrQ0FBVyxJQUFJLENBQUMsQ0FBQzs7QUFFakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQzs7cUJBRVIsSUFBSSIsImZpbGUiOiJoYW5kbGViYXJzLnJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBiYXNlIGZyb20gJy4vaGFuZGxlYmFycy9iYXNlJztcblxuLy8gRWFjaCBvZiB0aGVzZSBhdWdtZW50IHRoZSBIYW5kbGViYXJzIG9iamVjdC4gTm8gbmVlZCB0byBzZXR1cCBoZXJlLlxuLy8gKFRoaXMgaXMgZG9uZSB0byBlYXNpbHkgc2hhcmUgY29kZSBiZXR3ZWVuIGNvbW1vbmpzIGFuZCBicm93c2UgZW52cylcbmltcG9ydCBTYWZlU3RyaW5nIGZyb20gJy4vaGFuZGxlYmFycy9zYWZlLXN0cmluZyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4vaGFuZGxlYmFycy9leGNlcHRpb24nO1xuaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi9oYW5kbGViYXJzL3V0aWxzJztcbmltcG9ydCAqIGFzIHJ1bnRpbWUgZnJvbSAnLi9oYW5kbGViYXJzL3J1bnRpbWUnO1xuXG5pbXBvcnQgbm9Db25mbGljdCBmcm9tICcuL2hhbmRsZWJhcnMvbm8tY29uZmxpY3QnO1xuXG4vLyBGb3IgY29tcGF0aWJpbGl0eSBhbmQgdXNhZ2Ugb3V0c2lkZSBvZiBtb2R1bGUgc3lzdGVtcywgbWFrZSB0aGUgSGFuZGxlYmFycyBvYmplY3QgYSBuYW1lc3BhY2VcbmZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgbGV0IGhiID0gbmV3IGJhc2UuSGFuZGxlYmFyc0Vudmlyb25tZW50KCk7XG5cbiAgVXRpbHMuZXh0ZW5kKGhiLCBiYXNlKTtcbiAgaGIuU2FmZVN0cmluZyA9IFNhZmVTdHJpbmc7XG4gIGhiLkV4Y2VwdGlvbiA9IEV4Y2VwdGlvbjtcbiAgaGIuVXRpbHMgPSBVdGlscztcbiAgaGIuZXNjYXBlRXhwcmVzc2lvbiA9IFV0aWxzLmVzY2FwZUV4cHJlc3Npb247XG5cbiAgaGIuVk0gPSBydW50aW1lO1xuICBoYi50ZW1wbGF0ZSA9IGZ1bmN0aW9uKHNwZWMpIHtcbiAgICByZXR1cm4gcnVudGltZS50ZW1wbGF0ZShzcGVjLCBoYik7XG4gIH07XG5cbiAgcmV0dXJuIGhiO1xufVxuXG5sZXQgaW5zdCA9IGNyZWF0ZSgpO1xuaW5zdC5jcmVhdGUgPSBjcmVhdGU7XG5cbm5vQ29uZmxpY3QoaW5zdCk7XG5cbmluc3RbJ2RlZmF1bHQnXSA9IGluc3Q7XG5cbmV4cG9ydCBkZWZhdWx0IGluc3Q7XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.HandlebarsEnvironment = HandlebarsEnvironment;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('./utils');\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _helpers = require('./helpers');\n\nvar _decorators = require('./decorators');\n\nvar _logger = require('./logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _internalProtoAccess = require('./internal/proto-access');\n\nvar VERSION = '4.7.8';\nexports.VERSION = VERSION;\nvar COMPILER_REVISION = 8;\nexports.COMPILER_REVISION = COMPILER_REVISION;\nvar LAST_COMPATIBLE_COMPILER_REVISION = 7;\n\nexports.LAST_COMPATIBLE_COMPILER_REVISION = LAST_COMPATIBLE_COMPILER_REVISION;\nvar REVISION_CHANGES = {\n 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '== 1.x.x',\n 5: '== 2.0.0-alpha.x',\n 6: '>= 2.0.0-beta.1',\n 7: '>= 4.0.0 <4.3.0',\n 8: '>= 4.3.0'\n};\n\nexports.REVISION_CHANGES = REVISION_CHANGES;\nvar objectType = '[object Object]';\n\nfunction HandlebarsEnvironment(helpers, partials, decorators) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n this.decorators = decorators || {};\n\n _helpers.registerDefaultHelpers(this);\n _decorators.registerDefaultDecorators(this);\n}\n\nHandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n\n logger: _logger2['default'],\n log: _logger2['default'].log,\n\n registerHelper: function registerHelper(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple helpers');\n }\n _utils.extend(this.helpers, name);\n } else {\n this.helpers[name] = fn;\n }\n },\n unregisterHelper: function unregisterHelper(name) {\n delete this.helpers[name];\n },\n\n registerPartial: function registerPartial(name, partial) {\n if (_utils.toString.call(name) === objectType) {\n _utils.extend(this.partials, name);\n } else {\n if (typeof partial === 'undefined') {\n throw new _exception2['default']('Attempting to register a partial called \"' + name + '\" as undefined');\n }\n this.partials[name] = partial;\n }\n },\n unregisterPartial: function unregisterPartial(name) {\n delete this.partials[name];\n },\n\n registerDecorator: function registerDecorator(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple decorators');\n }\n _utils.extend(this.decorators, name);\n } else {\n this.decorators[name] = fn;\n }\n },\n unregisterDecorator: function unregisterDecorator(name) {\n delete this.decorators[name];\n },\n /**\n * Reset the memory of illegal property accesses that have already been logged.\n * @deprecated should only be used in handlebars test-cases\n */\n resetLoggedPropertyAccesses: function resetLoggedPropertyAccesses() {\n _internalProtoAccess.resetLoggedProperties();\n }\n};\n\nvar log = _logger2['default'].log;\n\nexports.log = log;\nexports.createFrame = _utils.createFrame;\nexports.logger = _logger2['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2Jhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7cUJBQThDLFNBQVM7O3lCQUNqQyxhQUFhOzs7O3VCQUNJLFdBQVc7OzBCQUNSLGNBQWM7O3NCQUNyQyxVQUFVOzs7O21DQUNTLHlCQUF5Qjs7QUFFeEQsSUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDOztBQUN4QixJQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQzs7QUFDNUIsSUFBTSxpQ0FBaUMsR0FBRyxDQUFDLENBQUM7OztBQUU1QyxJQUFNLGdCQUFnQixHQUFHO0FBQzlCLEdBQUMsRUFBRSxhQUFhO0FBQ2hCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxVQUFVO0FBQ2IsR0FBQyxFQUFFLGtCQUFrQjtBQUNyQixHQUFDLEVBQUUsaUJBQWlCO0FBQ3BCLEdBQUMsRUFBRSxpQkFBaUI7QUFDcEIsR0FBQyxFQUFFLFVBQVU7Q0FDZCxDQUFDOzs7QUFFRixJQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQzs7QUFFOUIsU0FBUyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRTtBQUNuRSxNQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDN0IsTUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksRUFBRSxDQUFDO0FBQy9CLE1BQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJLEVBQUUsQ0FBQzs7QUFFbkMsa0NBQXVCLElBQUksQ0FBQyxDQUFDO0FBQzdCLHdDQUEwQixJQUFJLENBQUMsQ0FBQztDQUNqQzs7QUFFRCxxQkFBcUIsQ0FBQyxTQUFTLEdBQUc7QUFDaEMsYUFBVyxFQUFFLHFCQUFxQjs7QUFFbEMsUUFBTSxxQkFBUTtBQUNkLEtBQUcsRUFBRSxvQkFBTyxHQUFHOztBQUVmLGdCQUFjLEVBQUUsd0JBQVMsSUFBSSxFQUFFLEVBQUUsRUFBRTtBQUNqQyxRQUFJLGdCQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVLEVBQUU7QUFDdEMsVUFBSSxFQUFFLEVBQUU7QUFDTixjQUFNLDJCQUFjLHlDQUF5QyxDQUFDLENBQUM7T0FDaEU7QUFDRCxvQkFBTyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzVCLE1BQU07QUFDTCxVQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUN6QjtHQUNGO0FBQ0Qsa0JBQWdCLEVBQUUsMEJBQVMsSUFBSSxFQUFFO0FBQy9CLFdBQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztHQUMzQjs7QUFFRCxpQkFBZSxFQUFFLHlCQUFTLElBQUksRUFBRSxPQUFPLEVBQUU7QUFDdkMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLG9CQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDN0IsTUFBTTtBQUNMLFVBQUksT0FBTyxPQUFPLEtBQUssV0FBVyxFQUFFO0FBQ2xDLGNBQU0seUVBQ3dDLElBQUksb0JBQ2pELENBQUM7T0FDSDtBQUNELFVBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDO0tBQy9CO0dBQ0Y7QUFDRCxtQkFBaUIsRUFBRSwyQkFBUyxJQUFJLEVBQUU7QUFDaEMsV0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0dBQzVCOztBQUVELG1CQUFpQixFQUFFLDJCQUFTLElBQUksRUFBRSxFQUFFLEVBQUU7QUFDcEMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLFVBQUksRUFBRSxFQUFFO0FBQ04sY0FBTSwyQkFBYyw0Q0FBNEMsQ0FBQyxDQUFDO09BQ25FO0FBQ0Qsb0JBQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUMvQixNQUFNO0FBQ0wsVUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDNUI7R0FDRjtBQUNELHFCQUFtQixFQUFFLDZCQUFTLElBQUksRUFBRTtBQUNsQyxXQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7R0FDOUI7Ozs7O0FBS0QsNkJBQTJCLEVBQUEsdUNBQUc7QUFDNUIsZ0RBQXVCLENBQUM7R0FDekI7Q0FDRixDQUFDOztBQUVLLElBQUksR0FBRyxHQUFHLG9CQUFPLEdBQUcsQ0FBQzs7O1FBRW5CLFdBQVc7UUFBRSxNQUFNIiwiZmlsZSI6ImJhc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVGcmFtZSwgZXh0ZW5kLCB0b1N0cmluZyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuL2V4Y2VwdGlvbic7XG5pbXBvcnQgeyByZWdpc3RlckRlZmF1bHRIZWxwZXJzIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IHJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnMgfSBmcm9tICcuL2RlY29yYXRvcnMnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyByZXNldExvZ2dlZFByb3BlcnRpZXMgfSBmcm9tICcuL2ludGVybmFsL3Byb3RvLWFjY2Vzcyc7XG5cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuNy44JztcbmV4cG9ydCBjb25zdCBDT01QSUxFUl9SRVZJU0lPTiA9IDg7XG5leHBvcnQgY29uc3QgTEFTVF9DT01QQVRJQkxFX0NPTVBJTEVSX1JFVklTSU9OID0gNztcblxuZXhwb3J0IGNvbnN0IFJFVklTSU9OX0NIQU5HRVMgPSB7XG4gIDE6ICc8PSAxLjAucmMuMicsIC8vIDEuMC5yYy4yIGlzIGFjdHVhbGx5IHJldjIgYnV0IGRvZXNuJ3QgcmVwb3J0IGl0XG4gIDI6ICc9PSAxLjAuMC1yYy4zJyxcbiAgMzogJz09IDEuMC4wLXJjLjQnLFxuICA0OiAnPT0gMS54LngnLFxuICA1OiAnPT0gMi4wLjAtYWxwaGEueCcsXG4gIDY6ICc+PSAyLjAuMC1iZXRhLjEnLFxuICA3OiAnPj0gNC4wLjAgPDQuMy4wJyxcbiAgODogJz49IDQuMy4wJ1xufTtcblxuY29uc3Qgb2JqZWN0VHlwZSA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG5leHBvcnQgZnVuY3Rpb24gSGFuZGxlYmFyc0Vudmlyb25tZW50KGhlbHBlcnMsIHBhcnRpYWxzLCBkZWNvcmF0b3JzKSB7XG4gIHRoaXMuaGVscGVycyA9IGhlbHBlcnMgfHwge307XG4gIHRoaXMucGFydGlhbHMgPSBwYXJ0aWFscyB8fCB7fTtcbiAgdGhpcy5kZWNvcmF0b3JzID0gZGVjb3JhdG9ycyB8fCB7fTtcblxuICByZWdpc3RlckRlZmF1bHRIZWxwZXJzKHRoaXMpO1xuICByZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzKHRoaXMpO1xufVxuXG5IYW5kbGViYXJzRW52aXJvbm1lbnQucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogSGFuZGxlYmFyc0Vudmlyb25tZW50LFxuXG4gIGxvZ2dlcjogbG9nZ2VyLFxuICBsb2c6IGxvZ2dlci5sb2csXG5cbiAgcmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUsIGZuKSB7XG4gICAgaWYgKHRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUpIHtcbiAgICAgIGlmIChmbikge1xuICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdBcmcgbm90IHN1cHBvcnRlZCB3aXRoIG11bHRpcGxlIGhlbHBlcnMnKTtcbiAgICAgIH1cbiAgICAgIGV4dGVuZCh0aGlzLmhlbHBlcnMsIG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhlbHBlcnNbbmFtZV0gPSBmbjtcbiAgICB9XG4gIH0sXG4gIHVucmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5oZWxwZXJzW25hbWVdO1xuICB9LFxuXG4gIHJlZ2lzdGVyUGFydGlhbDogZnVuY3Rpb24obmFtZSwgcGFydGlhbCkge1xuICAgIGlmICh0b1N0cmluZy5jYWxsKG5hbWUpID09PSBvYmplY3RUeXBlKSB7XG4gICAgICBleHRlbmQodGhpcy5wYXJ0aWFscywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0eXBlb2YgcGFydGlhbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICAgICBgQXR0ZW1wdGluZyB0byByZWdpc3RlciBhIHBhcnRpYWwgY2FsbGVkIFwiJHtuYW1lfVwiIGFzIHVuZGVmaW5lZGBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGFydGlhbHNbbmFtZV0gPSBwYXJ0aWFsO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5wYXJ0aWFsc1tuYW1lXTtcbiAgfSxcblxuICByZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSwgZm4pIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgaWYgKGZuKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0FyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgZGVjb3JhdG9ycycpO1xuICAgICAgfVxuICAgICAgZXh0ZW5kKHRoaXMuZGVjb3JhdG9ycywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVjb3JhdG9yc1tuYW1lXSA9IGZuO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSkge1xuICAgIGRlbGV0ZSB0aGlzLmRlY29yYXRvcnNbbmFtZV07XG4gIH0sXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgbWVtb3J5IG9mIGlsbGVnYWwgcHJvcGVydHkgYWNjZXNzZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBsb2dnZWQuXG4gICAqIEBkZXByZWNhdGVkIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gaGFuZGxlYmFycyB0ZXN0LWNhc2VzXG4gICAqL1xuICByZXNldExvZ2dlZFByb3BlcnR5QWNjZXNzZXMoKSB7XG4gICAgcmVzZXRMb2dnZWRQcm9wZXJ0aWVzKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBsZXQgbG9nID0gbG9nZ2VyLmxvZztcblxuZXhwb3J0IHsgY3JlYXRlRnJhbWUsIGxvZ2dlciB9O1xuIl19\n","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultDecorators = registerDefaultDecorators;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _decoratorsInline = require('./decorators/inline');\n\nvar _decoratorsInline2 = _interopRequireDefault(_decoratorsInline);\n\nfunction registerDefaultDecorators(instance) {\n _decoratorsInline2['default'](instance);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Z0NBQTJCLHFCQUFxQjs7OztBQUV6QyxTQUFTLHlCQUF5QixDQUFDLFFBQVEsRUFBRTtBQUNsRCxnQ0FBZSxRQUFRLENBQUMsQ0FBQztDQUMxQiIsImZpbGUiOiJkZWNvcmF0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVySW5saW5lIGZyb20gJy4vZGVjb3JhdG9ycy9pbmxpbmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycyhpbnN0YW5jZSkge1xuICByZWdpc3RlcklubGluZShpbnN0YW5jZSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerDecorator('inline', function (fn, props, container, options) {\n var ret = fn;\n if (!props.partials) {\n props.partials = {};\n ret = function (context, options) {\n // Create a new partials stack frame prior to exec.\n var original = container.partials;\n container.partials = _utils.extend({}, original, props.partials);\n var ret = fn(context, options);\n container.partials = original;\n return ret;\n };\n }\n\n props.partials[options.args[0]] = options.fn;\n\n return ret;\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMvaW5saW5lLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQXVCLFVBQVU7O3FCQUVsQixVQUFTLFFBQVEsRUFBRTtBQUNoQyxVQUFRLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFO0FBQzNFLFFBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNiLFFBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO0FBQ25CLFdBQUssQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLFNBQUcsR0FBRyxVQUFTLE9BQU8sRUFBRSxPQUFPLEVBQUU7O0FBRS9CLFlBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFDbEMsaUJBQVMsQ0FBQyxRQUFRLEdBQUcsY0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRCxZQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQy9CLGlCQUFTLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUM5QixlQUFPLEdBQUcsQ0FBQztPQUNaLENBQUM7S0FDSDs7QUFFRCxTQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUU3QyxXQUFPLEdBQUcsQ0FBQztHQUNaLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImlubGluZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4dGVuZCB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJEZWNvcmF0b3IoJ2lubGluZScsIGZ1bmN0aW9uKGZuLCBwcm9wcywgY29udGFpbmVyLCBvcHRpb25zKSB7XG4gICAgbGV0IHJldCA9IGZuO1xuICAgIGlmICghcHJvcHMucGFydGlhbHMpIHtcbiAgICAgIHByb3BzLnBhcnRpYWxzID0ge307XG4gICAgICByZXQgPSBmdW5jdGlvbihjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBwYXJ0aWFscyBzdGFjayBmcmFtZSBwcmlvciB0byBleGVjLlxuICAgICAgICBsZXQgb3JpZ2luYWwgPSBjb250YWluZXIucGFydGlhbHM7XG4gICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGV4dGVuZCh7fSwgb3JpZ2luYWwsIHByb3BzLnBhcnRpYWxzKTtcbiAgICAgICAgbGV0IHJldCA9IGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgICAgICBjb250YWluZXIucGFydGlhbHMgPSBvcmlnaW5hbDtcbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMucGFydGlhbHNbb3B0aW9ucy5hcmdzWzBdXSA9IG9wdGlvbnMuZm47XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nvar errorProps = ['description', 'fileName', 'lineNumber', 'endLineNumber', 'message', 'name', 'number', 'stack'];\n\nfunction Exception(message, node) {\n var loc = node && node.loc,\n line = undefined,\n endLineNumber = undefined,\n column = undefined,\n endColumn = undefined;\n\n if (loc) {\n line = loc.start.line;\n endLineNumber = loc.end.line;\n column = loc.start.column;\n endColumn = loc.end.column;\n\n message += ' - ' + line + ':' + column;\n }\n\n var tmp = Error.prototype.constructor.call(this, message);\n\n // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n for (var idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n\n /* istanbul ignore else */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Exception);\n }\n\n try {\n if (loc) {\n this.lineNumber = line;\n this.endLineNumber = endLineNumber;\n\n // Work around issue under safari where we can't directly set the column value\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(this, 'column', {\n value: column,\n enumerable: true\n });\n Object.defineProperty(this, 'endColumn', {\n value: endColumn,\n enumerable: true\n });\n } else {\n this.column = column;\n this.endColumn = endColumn;\n }\n }\n } catch (nop) {\n /* Ignore if the browser is very particular */\n }\n}\n\nException.prototype = new Error();\n\nexports['default'] = Exception;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2V4Y2VwdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFNLFVBQVUsR0FBRyxDQUNqQixhQUFhLEVBQ2IsVUFBVSxFQUNWLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsT0FBTyxDQUNSLENBQUM7O0FBRUYsU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtBQUNoQyxNQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUc7TUFDeEIsSUFBSSxZQUFBO01BQ0osYUFBYSxZQUFBO01BQ2IsTUFBTSxZQUFBO01BQ04sU0FBUyxZQUFBLENBQUM7O0FBRVosTUFBSSxHQUFHLEVBQUU7QUFDUCxRQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7QUFDdEIsaUJBQWEsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztBQUM3QixVQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDMUIsYUFBUyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDOztBQUUzQixXQUFPLElBQUksS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDO0dBQ3hDOztBQUVELE1BQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7OztBQUcxRCxPQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUNoRCxRQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0dBQzlDOzs7QUFHRCxNQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRTtBQUMzQixTQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQzFDOztBQUVELE1BQUk7QUFDRixRQUFJLEdBQUcsRUFBRTtBQUNQLFVBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCLFVBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDOzs7O0FBSW5DLFVBQUksTUFBTSxDQUFDLGNBQWMsRUFBRTtBQUN6QixjQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7QUFDcEMsZUFBSyxFQUFFLE1BQU07QUFDYixvQkFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO0FBQ0gsY0FBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ3ZDLGVBQUssRUFBRSxTQUFTO0FBQ2hCLG9CQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7T0FDSixNQUFNO0FBQ0wsWUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDckIsWUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7T0FDNUI7S0FDRjtHQUNGLENBQUMsT0FBTyxHQUFHLEVBQUU7O0dBRWI7Q0FDRjs7QUFFRCxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7O3FCQUVuQixTQUFTIiwiZmlsZSI6ImV4Y2VwdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGVycm9yUHJvcHMgPSBbXG4gICdkZXNjcmlwdGlvbicsXG4gICdmaWxlTmFtZScsXG4gICdsaW5lTnVtYmVyJyxcbiAgJ2VuZExpbmVOdW1iZXInLFxuICAnbWVzc2FnZScsXG4gICduYW1lJyxcbiAgJ251bWJlcicsXG4gICdzdGFjaydcbl07XG5cbmZ1bmN0aW9uIEV4Y2VwdGlvbihtZXNzYWdlLCBub2RlKSB7XG4gIGxldCBsb2MgPSBub2RlICYmIG5vZGUubG9jLFxuICAgIGxpbmUsXG4gICAgZW5kTGluZU51bWJlcixcbiAgICBjb2x1bW4sXG4gICAgZW5kQ29sdW1uO1xuXG4gIGlmIChsb2MpIHtcbiAgICBsaW5lID0gbG9jLnN0YXJ0LmxpbmU7XG4gICAgZW5kTGluZU51bWJlciA9IGxvYy5lbmQubGluZTtcbiAgICBjb2x1bW4gPSBsb2Muc3RhcnQuY29sdW1uO1xuICAgIGVuZENvbHVtbiA9IGxvYy5lbmQuY29sdW1uO1xuXG4gICAgbWVzc2FnZSArPSAnIC0gJyArIGxpbmUgKyAnOicgKyBjb2x1bW47XG4gIH1cblxuICBsZXQgdG1wID0gRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLmNhbGwodGhpcywgbWVzc2FnZSk7XG5cbiAgLy8gVW5mb3J0dW5hdGVseSBlcnJvcnMgYXJlIG5vdCBlbnVtZXJhYmxlIGluIENocm9tZSAoYXQgbGVhc3QpLCBzbyBgZm9yIHByb3AgaW4gdG1wYCBkb2Vzbid0IHdvcmsuXG4gIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGVycm9yUHJvcHMubGVuZ3RoOyBpZHgrKykge1xuICAgIHRoaXNbZXJyb3JQcm9wc1tpZHhdXSA9IHRtcFtlcnJvclByb3BzW2lkeF1dO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgRXhjZXB0aW9uKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgaWYgKGxvYykge1xuICAgICAgdGhpcy5saW5lTnVtYmVyID0gbGluZTtcbiAgICAgIHRoaXMuZW5kTGluZU51bWJlciA9IGVuZExpbmVOdW1iZXI7XG5cbiAgICAgIC8vIFdvcmsgYXJvdW5kIGlzc3VlIHVuZGVyIHNhZmFyaSB3aGVyZSB3ZSBjYW4ndCBkaXJlY3RseSBzZXQgdGhlIGNvbHVtbiB2YWx1ZVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdjb2x1bW4nLCB7XG4gICAgICAgICAgdmFsdWU6IGNvbHVtbixcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2VuZENvbHVtbicsIHtcbiAgICAgICAgICB2YWx1ZTogZW5kQ29sdW1uLFxuICAgICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgdGhpcy5lbmRDb2x1bW4gPSBlbmRDb2x1bW47XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChub3ApIHtcbiAgICAvKiBJZ25vcmUgaWYgdGhlIGJyb3dzZXIgaXMgdmVyeSBwYXJ0aWN1bGFyICovXG4gIH1cbn1cblxuRXhjZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpO1xuXG5leHBvcnQgZGVmYXVsdCBFeGNlcHRpb247XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultHelpers = registerDefaultHelpers;\nexports.moveHelperToHooks = moveHelperToHooks;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _helpersBlockHelperMissing = require('./helpers/block-helper-missing');\n\nvar _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing);\n\nvar _helpersEach = require('./helpers/each');\n\nvar _helpersEach2 = _interopRequireDefault(_helpersEach);\n\nvar _helpersHelperMissing = require('./helpers/helper-missing');\n\nvar _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing);\n\nvar _helpersIf = require('./helpers/if');\n\nvar _helpersIf2 = _interopRequireDefault(_helpersIf);\n\nvar _helpersLog = require('./helpers/log');\n\nvar _helpersLog2 = _interopRequireDefault(_helpersLog);\n\nvar _helpersLookup = require('./helpers/lookup');\n\nvar _helpersLookup2 = _interopRequireDefault(_helpersLookup);\n\nvar _helpersWith = require('./helpers/with');\n\nvar _helpersWith2 = _interopRequireDefault(_helpersWith);\n\nfunction registerDefaultHelpers(instance) {\n _helpersBlockHelperMissing2['default'](instance);\n _helpersEach2['default'](instance);\n _helpersHelperMissing2['default'](instance);\n _helpersIf2['default'](instance);\n _helpersLog2['default'](instance);\n _helpersLookup2['default'](instance);\n _helpersWith2['default'](instance);\n}\n\nfunction moveHelperToHooks(instance, helperName, keepHelper) {\n if (instance.helpers[helperName]) {\n instance.hooks[helperName] = instance.helpers[helperName];\n if (!keepHelper) {\n delete instance.helpers[helperName];\n }\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O3lDQUF1QyxnQ0FBZ0M7Ozs7MkJBQzlDLGdCQUFnQjs7OztvQ0FDUCwwQkFBMEI7Ozs7eUJBQ3JDLGNBQWM7Ozs7MEJBQ2IsZUFBZTs7Ozs2QkFDWixrQkFBa0I7Ozs7MkJBQ3BCLGdCQUFnQjs7OztBQUVsQyxTQUFTLHNCQUFzQixDQUFDLFFBQVEsRUFBRTtBQUMvQyx5Q0FBMkIsUUFBUSxDQUFDLENBQUM7QUFDckMsMkJBQWEsUUFBUSxDQUFDLENBQUM7QUFDdkIsb0NBQXNCLFFBQVEsQ0FBQyxDQUFDO0FBQ2hDLHlCQUFXLFFBQVEsQ0FBQyxDQUFDO0FBQ3JCLDBCQUFZLFFBQVEsQ0FBQyxDQUFDO0FBQ3RCLDZCQUFlLFFBQVEsQ0FBQyxDQUFDO0FBQ3pCLDJCQUFhLFFBQVEsQ0FBQyxDQUFDO0NBQ3hCOztBQUVNLFNBQVMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUU7QUFDbEUsTUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQ2hDLFlBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMxRCxRQUFJLENBQUMsVUFBVSxFQUFFO0FBQ2YsYUFBTyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQ3JDO0dBQ0Y7Q0FDRiIsImZpbGUiOiJoZWxwZXJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVyQmxvY2tIZWxwZXJNaXNzaW5nIGZyb20gJy4vaGVscGVycy9ibG9jay1oZWxwZXItbWlzc2luZyc7XG5pbXBvcnQgcmVnaXN0ZXJFYWNoIGZyb20gJy4vaGVscGVycy9lYWNoJztcbmltcG9ydCByZWdpc3RlckhlbHBlck1pc3NpbmcgZnJvbSAnLi9oZWxwZXJzL2hlbHBlci1taXNzaW5nJztcbmltcG9ydCByZWdpc3RlcklmIGZyb20gJy4vaGVscGVycy9pZic7XG5pbXBvcnQgcmVnaXN0ZXJMb2cgZnJvbSAnLi9oZWxwZXJzL2xvZyc7XG5pbXBvcnQgcmVnaXN0ZXJMb29rdXAgZnJvbSAnLi9oZWxwZXJzL2xvb2t1cCc7XG5pbXBvcnQgcmVnaXN0ZXJXaXRoIGZyb20gJy4vaGVscGVycy93aXRoJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRGVmYXVsdEhlbHBlcnMoaW5zdGFuY2UpIHtcbiAgcmVnaXN0ZXJCbG9ja0hlbHBlck1pc3NpbmcoaW5zdGFuY2UpO1xuICByZWdpc3RlckVhY2goaW5zdGFuY2UpO1xuICByZWdpc3RlckhlbHBlck1pc3NpbmcoaW5zdGFuY2UpO1xuICByZWdpc3RlcklmKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJMb2coaW5zdGFuY2UpO1xuICByZWdpc3Rlckxvb2t1cChpbnN0YW5jZSk7XG4gIHJlZ2lzdGVyV2l0aChpbnN0YW5jZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlSGVscGVyVG9Ib29rcyhpbnN0YW5jZSwgaGVscGVyTmFtZSwga2VlcEhlbHBlcikge1xuICBpZiAoaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXSkge1xuICAgIGluc3RhbmNlLmhvb2tzW2hlbHBlck5hbWVdID0gaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXTtcbiAgICBpZiAoIWtlZXBIZWxwZXIpIHtcbiAgICAgIGRlbGV0ZSBpbnN0YW5jZS5oZWxwZXJzW2hlbHBlck5hbWVdO1xuICAgIH1cbiAgfVxufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerHelper('blockHelperMissing', function (context, options) {\n var inverse = options.inverse,\n fn = options.fn;\n\n if (context === true) {\n return fn(this);\n } else if (context === false || context == null) {\n return inverse(this);\n } else if (_utils.isArray(context)) {\n if (context.length > 0) {\n if (options.ids) {\n options.ids = [options.name];\n }\n\n return instance.helpers.each(context, options);\n } else {\n return inverse(this);\n }\n } else {\n if (options.data && options.ids) {\n var data = _utils.createFrame(options.data);\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name);\n options = { data: data };\n }\n\n return fn(context, options);\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztxQkFBd0QsVUFBVTs7cUJBRW5ELFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3ZFLFFBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPO1FBQzNCLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUVsQixRQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7QUFDcEIsYUFBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDakIsTUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtBQUMvQyxhQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN0QixNQUFNLElBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUMzQixVQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3RCLFlBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNmLGlCQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlCOztBQUVELGVBQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO09BQ2hELE1BQU07QUFDTCxlQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztPQUN0QjtLQUNGLE1BQU07QUFDTCxVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixZQUFJLElBQUksR0FBRyxtQkFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckMsWUFBSSxDQUFDLFdBQVcsR0FBRyx5QkFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQ2IsQ0FBQztBQUNGLGVBQU8sR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztPQUMxQjs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDN0I7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJibG9jay1oZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFwcGVuZENvbnRleHRQYXRoLCBjcmVhdGVGcmFtZSwgaXNBcnJheSB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2Jsb2NrSGVscGVyTWlzc2luZycsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBsZXQgaW52ZXJzZSA9IG9wdGlvbnMuaW52ZXJzZSxcbiAgICAgIGZuID0gb3B0aW9ucy5mbjtcblxuICAgIGlmIChjb250ZXh0ID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gZm4odGhpcyk7XG4gICAgfSBlbHNlIGlmIChjb250ZXh0ID09PSBmYWxzZSB8fCBjb250ZXh0ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheShjb250ZXh0KSkge1xuICAgICAgaWYgKGNvbnRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICAgICAgICBvcHRpb25zLmlkcyA9IFtvcHRpb25zLm5hbWVdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluc3RhbmNlLmhlbHBlcnMuZWFjaChjb250ZXh0LCBvcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIGxldCBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCxcbiAgICAgICAgICBvcHRpb25zLm5hbWVcbiAgICAgICAgKTtcbiAgICAgICAgb3B0aW9ucyA9IHsgZGF0YTogZGF0YSB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm4oY29udGV4dCwgb3B0aW9ucyk7XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('each', function (context, options) {\n if (!options) {\n throw new _exception2['default']('Must pass iterator to #each');\n }\n\n var fn = options.fn,\n inverse = options.inverse,\n i = 0,\n ret = '',\n data = undefined,\n contextPath = undefined;\n\n if (options.data && options.ids) {\n contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n }\n\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n\n if (options.data) {\n data = _utils.createFrame(options.data);\n }\n\n function execIteration(field, index, last) {\n if (data) {\n data.key = field;\n data.index = index;\n data.first = index === 0;\n data.last = !!last;\n\n if (contextPath) {\n data.contextPath = contextPath + field;\n }\n }\n\n ret = ret + fn(context[field], {\n data: data,\n blockParams: _utils.blockParams([context[field], field], [contextPath + field, null])\n });\n }\n\n if (context && typeof context === 'object') {\n if (_utils.isArray(context)) {\n for (var j = context.length; i < j; i++) {\n if (i in context) {\n execIteration(i, i, i === context.length - 1);\n }\n }\n } else if (typeof Symbol === 'function' && context[Symbol.iterator]) {\n var newContext = [];\n var iterator = context[Symbol.iterator]();\n for (var it = iterator.next(); !it.done; it = iterator.next()) {\n newContext.push(it.value);\n }\n context = newContext;\n for (var j = context.length; i < j; i++) {\n execIteration(i, i, i === context.length - 1);\n }\n } else {\n (function () {\n var priorKey = undefined;\n\n Object.keys(context).forEach(function (key) {\n // We're running the iterations one step out of sync so we can detect\n // the last iteration without have to scan the object twice and create\n // an itermediate keys array.\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1);\n }\n priorKey = key;\n i++;\n });\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1, true);\n }\n })();\n }\n }\n\n if (i === 0) {\n ret = inverse(this);\n }\n\n return ret;\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvZWFjaC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3FCQU1PLFVBQVU7O3lCQUNLLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVMsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUN6RCxRQUFJLENBQUMsT0FBTyxFQUFFO0FBQ1osWUFBTSwyQkFBYyw2QkFBNkIsQ0FBQyxDQUFDO0tBQ3BEOztBQUVELFFBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFO1FBQ2pCLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTztRQUN6QixDQUFDLEdBQUcsQ0FBQztRQUNMLEdBQUcsR0FBRyxFQUFFO1FBQ1IsSUFBSSxZQUFBO1FBQ0osV0FBVyxZQUFBLENBQUM7O0FBRWQsUUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUU7QUFDL0IsaUJBQVcsR0FDVCx5QkFBa0IsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztLQUNyRTs7QUFFRCxRQUFJLGtCQUFXLE9BQU8sQ0FBQyxFQUFFO0FBQ3ZCLGFBQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCOztBQUVELFFBQUksT0FBTyxDQUFDLElBQUksRUFBRTtBQUNoQixVQUFJLEdBQUcsbUJBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2xDOztBQUVELGFBQVMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0FBQ3pDLFVBQUksSUFBSSxFQUFFO0FBQ1IsWUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFDakIsWUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDbkIsWUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLFlBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQzs7QUFFbkIsWUFBSSxXQUFXLEVBQUU7QUFDZixjQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsR0FBRyxLQUFLLENBQUM7U0FDeEM7T0FDRjs7QUFFRCxTQUFHLEdBQ0QsR0FBRyxHQUNILEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDakIsWUFBSSxFQUFFLElBQUk7QUFDVixtQkFBVyxFQUFFLG1CQUNYLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUN2QixDQUFDLFdBQVcsR0FBRyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQzVCO09BQ0YsQ0FBQyxDQUFDO0tBQ047O0FBRUQsUUFBSSxPQUFPLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFO0FBQzFDLFVBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUNwQixhQUFLLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN2QyxjQUFJLENBQUMsSUFBSSxPQUFPLEVBQUU7QUFDaEIseUJBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1dBQy9DO1NBQ0Y7T0FDRixNQUFNLElBQUksT0FBTyxNQUFNLEtBQUssVUFBVSxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDbkUsWUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLFlBQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztBQUM1QyxhQUFLLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRTtBQUM3RCxvQkFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDM0I7QUFDRCxlQUFPLEdBQUcsVUFBVSxDQUFDO0FBQ3JCLGFBQUssSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3ZDLHVCQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMvQztPQUNGLE1BQU07O0FBQ0wsY0FBSSxRQUFRLFlBQUEsQ0FBQzs7QUFFYixnQkFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxHQUFHLEVBQUk7Ozs7QUFJbEMsZ0JBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtBQUMxQiwyQkFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDaEM7QUFDRCxvQkFBUSxHQUFHLEdBQUcsQ0FBQztBQUNmLGFBQUMsRUFBRSxDQUFDO1dBQ0wsQ0FBQyxDQUFDO0FBQ0gsY0FBSSxRQUFRLEtBQUssU0FBUyxFQUFFO0FBQzFCLHlCQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7V0FDdEM7O09BQ0Y7S0FDRjs7QUFFRCxRQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDWCxTQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3JCOztBQUVELFdBQU8sR0FBRyxDQUFDO0dBQ1osQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoiZWFjaC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFwcGVuZENvbnRleHRQYXRoLFxuICBibG9ja1BhcmFtcyxcbiAgY3JlYXRlRnJhbWUsXG4gIGlzQXJyYXksXG4gIGlzRnVuY3Rpb25cbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuLi9leGNlcHRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignZWFjaCcsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ011c3QgcGFzcyBpdGVyYXRvciB0byAjZWFjaCcpO1xuICAgIH1cblxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm4sXG4gICAgICBpbnZlcnNlID0gb3B0aW9ucy5pbnZlcnNlLFxuICAgICAgaSA9IDAsXG4gICAgICByZXQgPSAnJyxcbiAgICAgIGRhdGEsXG4gICAgICBjb250ZXh0UGF0aDtcblxuICAgIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5pZHMpIHtcbiAgICAgIGNvbnRleHRQYXRoID1cbiAgICAgICAgYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoLCBvcHRpb25zLmlkc1swXSkgKyAnLic7XG4gICAgfVxuXG4gICAgaWYgKGlzRnVuY3Rpb24oY29udGV4dCkpIHtcbiAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZGF0YSkge1xuICAgICAgZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXhlY0l0ZXJhdGlvbihmaWVsZCwgaW5kZXgsIGxhc3QpIHtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIGRhdGEua2V5ID0gZmllbGQ7XG4gICAgICAgIGRhdGEuaW5kZXggPSBpbmRleDtcbiAgICAgICAgZGF0YS5maXJzdCA9IGluZGV4ID09PSAwO1xuICAgICAgICBkYXRhLmxhc3QgPSAhIWxhc3Q7XG5cbiAgICAgICAgaWYgKGNvbnRleHRQYXRoKSB7XG4gICAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGNvbnRleHRQYXRoICsgZmllbGQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0ID1cbiAgICAgICAgcmV0ICtcbiAgICAgICAgZm4oY29udGV4dFtmaWVsZF0sIHtcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIGJsb2NrUGFyYW1zOiBibG9ja1BhcmFtcyhcbiAgICAgICAgICAgIFtjb250ZXh0W2ZpZWxkXSwgZmllbGRdLFxuICAgICAgICAgICAgW2NvbnRleHRQYXRoICsgZmllbGQsIG51bGxdXG4gICAgICAgICAgKVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoY29udGV4dCAmJiB0eXBlb2YgY29udGV4dCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc0FycmF5KGNvbnRleHQpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBjb250ZXh0Lmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgICAgIGlmIChpIGluIGNvbnRleHQpIHtcbiAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24oaSwgaSwgaSA9PT0gY29udGV4dC5sZW5ndGggLSAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBjb250ZXh0W1N5bWJvbC5pdGVyYXRvcl0pIHtcbiAgICAgICAgY29uc3QgbmV3Q29udGV4dCA9IFtdO1xuICAgICAgICBjb25zdCBpdGVyYXRvciA9IGNvbnRleHRbU3ltYm9sLml0ZXJhdG9yXSgpO1xuICAgICAgICBmb3IgKGxldCBpdCA9IGl0ZXJhdG9yLm5leHQoKTsgIWl0LmRvbmU7IGl0ID0gaXRlcmF0b3IubmV4dCgpKSB7XG4gICAgICAgICAgbmV3Q29udGV4dC5wdXNoKGl0LnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBjb250ZXh0ID0gbmV3Q29udGV4dDtcbiAgICAgICAgZm9yIChsZXQgaiA9IGNvbnRleHQubGVuZ3RoOyBpIDwgajsgaSsrKSB7XG4gICAgICAgICAgZXhlY0l0ZXJhdGlvbihpLCBpLCBpID09PSBjb250ZXh0Lmxlbmd0aCAtIDEpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgcHJpb3JLZXk7XG5cbiAgICAgICAgT2JqZWN0LmtleXMoY29udGV4dCkuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgIC8vIFdlJ3JlIHJ1bm5pbmcgdGhlIGl0ZXJhdGlvbnMgb25lIHN0ZXAgb3V0IG9mIHN5bmMgc28gd2UgY2FuIGRldGVjdFxuICAgICAgICAgIC8vIHRoZSBsYXN0IGl0ZXJhdGlvbiB3aXRob3V0IGhhdmUgdG8gc2NhbiB0aGUgb2JqZWN0IHR3aWNlIGFuZCBjcmVhdGVcbiAgICAgICAgICAvLyBhbiBpdGVybWVkaWF0ZSBrZXlzIGFycmF5LlxuICAgICAgICAgIGlmIChwcmlvcktleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBleGVjSXRlcmF0aW9uKHByaW9yS2V5LCBpIC0gMSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHByaW9yS2V5ID0ga2V5O1xuICAgICAgICAgIGkrKztcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChwcmlvcktleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZXhlY0l0ZXJhdGlvbihwcmlvcktleSwgaSAtIDEsIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGkgPT09IDApIHtcbiAgICAgIHJldCA9IGludmVyc2UodGhpcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldDtcbiAgfSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('helperMissing', function () /* [args, ]options */{\n if (arguments.length === 1) {\n // A missing field in a {{foo}} construct.\n return undefined;\n } else {\n // Someone is actually trying to call something, blow up.\n throw new _exception2['default']('Missing helper: \"' + arguments[arguments.length - 1].name + '\"');\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozt5QkFBc0IsY0FBYzs7OztxQkFFckIsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsaUNBQWdDO0FBQ3ZFLFFBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7O0FBRTFCLGFBQU8sU0FBUyxDQUFDO0tBQ2xCLE1BQU07O0FBRUwsWUFBTSwyQkFDSixtQkFBbUIsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUNqRSxDQUFDO0tBQ0g7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJoZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2hlbHBlck1pc3NpbmcnLCBmdW5jdGlvbigvKiBbYXJncywgXW9wdGlvbnMgKi8pIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgLy8gQSBtaXNzaW5nIGZpZWxkIGluIGEge3tmb299fSBjb25zdHJ1Y3QuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTb21lb25lIGlzIGFjdHVhbGx5IHRyeWluZyB0byBjYWxsIHNvbWV0aGluZywgYmxvdyB1cC5cbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oXG4gICAgICAgICdNaXNzaW5nIGhlbHBlcjogXCInICsgYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXS5uYW1lICsgJ1wiJ1xuICAgICAgKTtcbiAgICB9XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('if', function (conditional, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#if requires exactly one argument');\n }\n if (_utils.isFunction(conditional)) {\n conditional = conditional.call(this);\n }\n\n // Default behavior is to render the positive path if the value is truthy and not empty.\n // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) {\n return options.inverse(this);\n } else {\n return options.fn(this);\n }\n });\n\n instance.registerHelper('unless', function (conditional, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#unless requires exactly one argument');\n }\n return instance.helpers['if'].call(this, conditional, {\n fn: options.inverse,\n inverse: options.fn,\n hash: options.hash\n });\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaWYuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztxQkFBb0MsVUFBVTs7eUJBQ3hCLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVMsV0FBVyxFQUFFLE9BQU8sRUFBRTtBQUMzRCxRQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3pCLFlBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztLQUMxRDtBQUNELFFBQUksa0JBQVcsV0FBVyxDQUFDLEVBQUU7QUFDM0IsaUJBQVcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3RDOzs7OztBQUtELFFBQUksQUFBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxJQUFLLGVBQVEsV0FBVyxDQUFDLEVBQUU7QUFDdkUsYUFBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDekI7R0FDRixDQUFDLENBQUM7O0FBRUgsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxXQUFXLEVBQUUsT0FBTyxFQUFFO0FBQy9ELFFBQUksU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7QUFDekIsWUFBTSwyQkFBYyx1Q0FBdUMsQ0FBQyxDQUFDO0tBQzlEO0FBQ0QsV0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ3BELFFBQUUsRUFBRSxPQUFPLENBQUMsT0FBTztBQUNuQixhQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUU7QUFDbkIsVUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO0tBQ25CLENBQUMsQ0FBQztHQUNKLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImlmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNFbXB0eSwgaXNGdW5jdGlvbiB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2lmJywgZnVuY3Rpb24oY29uZGl0aW9uYWwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCcjaWYgcmVxdWlyZXMgZXhhY3RseSBvbmUgYXJndW1lbnQnKTtcbiAgICB9XG4gICAgaWYgKGlzRnVuY3Rpb24oY29uZGl0aW9uYWwpKSB7XG4gICAgICBjb25kaXRpb25hbCA9IGNvbmRpdGlvbmFsLmNhbGwodGhpcyk7XG4gICAgfVxuXG4gICAgLy8gRGVmYXVsdCBiZWhhdmlvciBpcyB0byByZW5kZXIgdGhlIHBvc2l0aXZlIHBhdGggaWYgdGhlIHZhbHVlIGlzIHRydXRoeSBhbmQgbm90IGVtcHR5LlxuICAgIC8vIFRoZSBgaW5jbHVkZVplcm9gIG9wdGlvbiBtYXkgYmUgc2V0IHRvIHRyZWF0IHRoZSBjb25kdGlvbmFsIGFzIHB1cmVseSBub3QgZW1wdHkgYmFzZWQgb24gdGhlXG4gICAgLy8gYmVoYXZpb3Igb2YgaXNFbXB0eS4gRWZmZWN0aXZlbHkgdGhpcyBkZXRlcm1pbmVzIGlmIDAgaXMgaGFuZGxlZCBieSB0aGUgcG9zaXRpdmUgcGF0aCBvciBuZWdhdGl2ZS5cbiAgICBpZiAoKCFvcHRpb25zLmhhc2guaW5jbHVkZVplcm8gJiYgIWNvbmRpdGlvbmFsKSB8fCBpc0VtcHR5KGNvbmRpdGlvbmFsKSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuaW52ZXJzZSh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuZm4odGhpcyk7XG4gICAgfVxuICB9KTtcblxuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcigndW5sZXNzJywgZnVuY3Rpb24oY29uZGl0aW9uYWwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCcjdW5sZXNzIHJlcXVpcmVzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZS5oZWxwZXJzWydpZiddLmNhbGwodGhpcywgY29uZGl0aW9uYWwsIHtcbiAgICAgIGZuOiBvcHRpb25zLmludmVyc2UsXG4gICAgICBpbnZlcnNlOiBvcHRpb25zLmZuLFxuICAgICAgaGFzaDogb3B0aW9ucy5oYXNoXG4gICAgfSk7XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('log', function () /* message, options */{\n var args = [undefined],\n options = arguments[arguments.length - 1];\n for (var i = 0; i < arguments.length - 1; i++) {\n args.push(arguments[i]);\n }\n\n var level = 1;\n if (options.hash.level != null) {\n level = options.hash.level;\n } else if (options.data && options.data.level != null) {\n level = options.data.level;\n }\n args[0] = level;\n\n instance.log.apply(instance, args);\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsa0NBQWlDO0FBQzlELFFBQUksSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ3BCLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM1QyxTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDN0MsVUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN6Qjs7QUFFRCxRQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDZCxRQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtBQUM5QixXQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7S0FDNUIsTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO0FBQ3JELFdBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztLQUM1QjtBQUNELFFBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRWhCLFlBQVEsQ0FBQyxHQUFHLE1BQUEsQ0FBWixRQUFRLEVBQVEsSUFBSSxDQUFDLENBQUM7R0FDdkIsQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoibG9nLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2xvZycsIGZ1bmN0aW9uKC8qIG1lc3NhZ2UsIG9wdGlvbnMgKi8pIHtcbiAgICBsZXQgYXJncyA9IFt1bmRlZmluZWRdLFxuICAgICAgb3B0aW9ucyA9IGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV07XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICBhcmdzLnB1c2goYXJndW1lbnRzW2ldKTtcbiAgICB9XG5cbiAgICBsZXQgbGV2ZWwgPSAxO1xuICAgIGlmIChvcHRpb25zLmhhc2gubGV2ZWwgIT0gbnVsbCkge1xuICAgICAgbGV2ZWwgPSBvcHRpb25zLmhhc2gubGV2ZWw7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5kYXRhLmxldmVsICE9IG51bGwpIHtcbiAgICAgIGxldmVsID0gb3B0aW9ucy5kYXRhLmxldmVsO1xuICAgIH1cbiAgICBhcmdzWzBdID0gbGV2ZWw7XG5cbiAgICBpbnN0YW5jZS5sb2coLi4uYXJncyk7XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('lookup', function (obj, field, options) {\n if (!obj) {\n // Note for 5.0: Change to \"obj == null\" in 5.0\n return obj;\n }\n return options.lookupProperty(obj, field);\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9va3VwLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtBQUM5RCxRQUFJLENBQUMsR0FBRyxFQUFFOztBQUVSLGFBQU8sR0FBRyxDQUFDO0tBQ1o7QUFDRCxXQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0dBQzNDLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6Imxvb2t1cC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdsb29rdXAnLCBmdW5jdGlvbihvYmosIGZpZWxkLCBvcHRpb25zKSB7XG4gICAgaWYgKCFvYmopIHtcbiAgICAgIC8vIE5vdGUgZm9yIDUuMDogQ2hhbmdlIHRvIFwib2JqID09IG51bGxcIiBpbiA1LjBcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zLmxvb2t1cFByb3BlcnR5KG9iaiwgZmllbGQpO1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('with', function (context, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#with requires exactly one argument');\n }\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n\n var fn = options.fn;\n\n if (!_utils.isEmpty(context)) {\n var data = options.data;\n if (options.data && options.ids) {\n data = _utils.createFrame(options.data);\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]);\n }\n\n return fn(context, {\n data: data,\n blockParams: _utils.blockParams([context], [data && data.contextPath])\n });\n } else {\n return options.inverse(this);\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvd2l0aC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3FCQU1PLFVBQVU7O3lCQUNLLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVMsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUN6RCxRQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3pCLFlBQU0sMkJBQWMscUNBQXFDLENBQUMsQ0FBQztLQUM1RDtBQUNELFFBQUksa0JBQVcsT0FBTyxDQUFDLEVBQUU7QUFDdkIsYUFBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUI7O0FBRUQsUUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQzs7QUFFcEIsUUFBSSxDQUFDLGVBQVEsT0FBTyxDQUFDLEVBQUU7QUFDckIsVUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztBQUN4QixVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixZQUFJLEdBQUcsbUJBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pDLFlBQUksQ0FBQyxXQUFXLEdBQUcseUJBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7T0FDSDs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUU7QUFDakIsWUFBSSxFQUFFLElBQUk7QUFDVixtQkFBVyxFQUFFLG1CQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO09BQ2hFLENBQUMsQ0FBQztLQUNKLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUI7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJ3aXRoLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYXBwZW5kQ29udGV4dFBhdGgsXG4gIGJsb2NrUGFyYW1zLFxuICBjcmVhdGVGcmFtZSxcbiAgaXNFbXB0eSxcbiAgaXNGdW5jdGlvblxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4uL2V4Y2VwdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCd3aXRoJywgZnVuY3Rpb24oY29udGV4dCwgb3B0aW9ucykge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoICE9IDIpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJyN3aXRoIHJlcXVpcmVzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIGlmIChpc0Z1bmN0aW9uKGNvbnRleHQpKSB7XG4gICAgICBjb250ZXh0ID0gY29udGV4dC5jYWxsKHRoaXMpO1xuICAgIH1cblxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm47XG5cbiAgICBpZiAoIWlzRW1wdHkoY29udGV4dCkpIHtcbiAgICAgIGxldCBkYXRhID0gb3B0aW9ucy5kYXRhO1xuICAgICAgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmlkcykge1xuICAgICAgICBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCxcbiAgICAgICAgICBvcHRpb25zLmlkc1swXVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm4oY29udGV4dCwge1xuICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICBibG9ja1BhcmFtczogYmxvY2tQYXJhbXMoW2NvbnRleHRdLCBbZGF0YSAmJiBkYXRhLmNvbnRleHRQYXRoXSlcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5pbnZlcnNlKHRoaXMpO1xuICAgIH1cbiAgfSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.createNewLookupObject = createNewLookupObject;\n\nvar _utils = require('../utils');\n\n/**\n * Create a new object with \"null\"-prototype to avoid truthy results on prototype properties.\n * The resulting object can be used with \"object[property]\" to check if a property exists\n * @param {...object} sources a varargs parameter of source objects that will be merged\n * @returns {object}\n */\n\nfunction createNewLookupObject() {\n for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n return _utils.extend.apply(undefined, [Object.create(null)].concat(sources));\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL2NyZWF0ZS1uZXctbG9va3VwLW9iamVjdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztxQkFBdUIsVUFBVTs7Ozs7Ozs7O0FBUTFCLFNBQVMscUJBQXFCLEdBQWE7b0NBQVQsT0FBTztBQUFQLFdBQU87OztBQUM5QyxTQUFPLGdDQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQUssT0FBTyxFQUFDLENBQUM7Q0FDaEQiLCJmaWxlIjoiY3JlYXRlLW5ldy1sb29rdXAtb2JqZWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0ZW5kIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBvYmplY3Qgd2l0aCBcIm51bGxcIi1wcm90b3R5cGUgdG8gYXZvaWQgdHJ1dGh5IHJlc3VsdHMgb24gcHJvdG90eXBlIHByb3BlcnRpZXMuXG4gKiBUaGUgcmVzdWx0aW5nIG9iamVjdCBjYW4gYmUgdXNlZCB3aXRoIFwib2JqZWN0W3Byb3BlcnR5XVwiIHRvIGNoZWNrIGlmIGEgcHJvcGVydHkgZXhpc3RzXG4gKiBAcGFyYW0gey4uLm9iamVjdH0gc291cmNlcyBhIHZhcmFyZ3MgcGFyYW1ldGVyIG9mIHNvdXJjZSBvYmplY3RzIHRoYXQgd2lsbCBiZSBtZXJnZWRcbiAqIEByZXR1cm5zIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOZXdMb29rdXBPYmplY3QoLi4uc291cmNlcykge1xuICByZXR1cm4gZXh0ZW5kKE9iamVjdC5jcmVhdGUobnVsbCksIC4uLnNvdXJjZXMpO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\nexports.createProtoAccessControl = createProtoAccessControl;\nexports.resultIsAllowed = resultIsAllowed;\nexports.resetLoggedProperties = resetLoggedProperties;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _createNewLookupObject = require('./create-new-lookup-object');\n\nvar _logger = require('../logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar loggedProperties = Object.create(null);\n\nfunction createProtoAccessControl(runtimeOptions) {\n var defaultMethodWhiteList = Object.create(null);\n defaultMethodWhiteList['constructor'] = false;\n defaultMethodWhiteList['__defineGetter__'] = false;\n defaultMethodWhiteList['__defineSetter__'] = false;\n defaultMethodWhiteList['__lookupGetter__'] = false;\n\n var defaultPropertyWhiteList = Object.create(null);\n // eslint-disable-next-line no-proto\n defaultPropertyWhiteList['__proto__'] = false;\n\n return {\n properties: {\n whitelist: _createNewLookupObject.createNewLookupObject(defaultPropertyWhiteList, runtimeOptions.allowedProtoProperties),\n defaultValue: runtimeOptions.allowProtoPropertiesByDefault\n },\n methods: {\n whitelist: _createNewLookupObject.createNewLookupObject(defaultMethodWhiteList, runtimeOptions.allowedProtoMethods),\n defaultValue: runtimeOptions.allowProtoMethodsByDefault\n }\n };\n}\n\nfunction resultIsAllowed(result, protoAccessControl, propertyName) {\n if (typeof result === 'function') {\n return checkWhiteList(protoAccessControl.methods, propertyName);\n } else {\n return checkWhiteList(protoAccessControl.properties, propertyName);\n }\n}\n\nfunction checkWhiteList(protoAccessControlForType, propertyName) {\n if (protoAccessControlForType.whitelist[propertyName] !== undefined) {\n return protoAccessControlForType.whitelist[propertyName] === true;\n }\n if (protoAccessControlForType.defaultValue !== undefined) {\n return protoAccessControlForType.defaultValue;\n }\n logUnexpecedPropertyAccessOnce(propertyName);\n return false;\n}\n\nfunction logUnexpecedPropertyAccessOnce(propertyName) {\n if (loggedProperties[propertyName] !== true) {\n loggedProperties[propertyName] = true;\n _logger2['default'].log('error', 'Handlebars: Access has been denied to resolve the property \"' + propertyName + '\" because it is not an \"own property\" of its parent.\\n' + 'You can add a runtime option to disable the check or this warning:\\n' + 'See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details');\n }\n}\n\nfunction resetLoggedProperties() {\n Object.keys(loggedProperties).forEach(function (propertyName) {\n delete loggedProperties[propertyName];\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL3Byb3RvLWFjY2Vzcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O3FDQUFzQyw0QkFBNEI7O3NCQUMvQyxXQUFXOzs7O0FBRTlCLElBQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFdEMsU0FBUyx3QkFBd0IsQ0FBQyxjQUFjLEVBQUU7QUFDdkQsTUFBSSxzQkFBc0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pELHdCQUFzQixDQUFDLGFBQWEsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUM5Qyx3QkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUNuRCx3QkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUNuRCx3QkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLEtBQUssQ0FBQzs7QUFFbkQsTUFBSSx3QkFBd0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDOztBQUVuRCwwQkFBd0IsQ0FBQyxXQUFXLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRTlDLFNBQU87QUFDTCxjQUFVLEVBQUU7QUFDVixlQUFTLEVBQUUsNkNBQ1Qsd0JBQXdCLEVBQ3hCLGNBQWMsQ0FBQyxzQkFBc0IsQ0FDdEM7QUFDRCxrQkFBWSxFQUFFLGNBQWMsQ0FBQyw2QkFBNkI7S0FDM0Q7QUFDRCxXQUFPLEVBQUU7QUFDUCxlQUFTLEVBQUUsNkNBQ1Qsc0JBQXNCLEVBQ3RCLGNBQWMsQ0FBQyxtQkFBbUIsQ0FDbkM7QUFDRCxrQkFBWSxFQUFFLGNBQWMsQ0FBQywwQkFBMEI7S0FDeEQ7R0FDRixDQUFDO0NBQ0g7O0FBRU0sU0FBUyxlQUFlLENBQUMsTUFBTSxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRTtBQUN4RSxNQUFJLE9BQU8sTUFBTSxLQUFLLFVBQVUsRUFBRTtBQUNoQyxXQUFPLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7R0FDakUsTUFBTTtBQUNMLFdBQU8sY0FBYyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQztHQUNwRTtDQUNGOztBQUVELFNBQVMsY0FBYyxDQUFDLHlCQUF5QixFQUFFLFlBQVksRUFBRTtBQUMvRCxNQUFJLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsS0FBSyxTQUFTLEVBQUU7QUFDbkUsV0FBTyx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssSUFBSSxDQUFDO0dBQ25FO0FBQ0QsTUFBSSx5QkFBeUIsQ0FBQyxZQUFZLEtBQUssU0FBUyxFQUFFO0FBQ3hELFdBQU8seUJBQXlCLENBQUMsWUFBWSxDQUFDO0dBQy9DO0FBQ0QsZ0NBQThCLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDN0MsU0FBTyxLQUFLLENBQUM7Q0FDZDs7QUFFRCxTQUFTLDhCQUE4QixDQUFDLFlBQVksRUFBRTtBQUNwRCxNQUFJLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksRUFBRTtBQUMzQyxvQkFBZ0IsQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDdEMsd0JBQU8sR0FBRyxDQUNSLE9BQU8sRUFDUCxpRUFBK0QsWUFBWSxvSUFDSCxvSEFDMkMsQ0FDcEgsQ0FBQztHQUNIO0NBQ0Y7O0FBRU0sU0FBUyxxQkFBcUIsR0FBRztBQUN0QyxRQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsT0FBTyxDQUFDLFVBQUEsWUFBWSxFQUFJO0FBQ3BELFdBQU8sZ0JBQWdCLENBQUMsWUFBWSxDQUFDLENBQUM7R0FDdkMsQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoicHJvdG8tYWNjZXNzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlTmV3TG9va3VwT2JqZWN0IH0gZnJvbSAnLi9jcmVhdGUtbmV3LWxvb2t1cC1vYmplY3QnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuLi9sb2dnZXInO1xuXG5jb25zdCBsb2dnZWRQcm9wZXJ0aWVzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVByb3RvQWNjZXNzQ29udHJvbChydW50aW1lT3B0aW9ucykge1xuICBsZXQgZGVmYXVsdE1ldGhvZFdoaXRlTGlzdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIGRlZmF1bHRNZXRob2RXaGl0ZUxpc3RbJ2NvbnN0cnVjdG9yJ10gPSBmYWxzZTtcbiAgZGVmYXVsdE1ldGhvZFdoaXRlTGlzdFsnX19kZWZpbmVHZXR0ZXJfXyddID0gZmFsc2U7XG4gIGRlZmF1bHRNZXRob2RXaGl0ZUxpc3RbJ19fZGVmaW5lU2V0dGVyX18nXSA9IGZhbHNlO1xuICBkZWZhdWx0TWV0aG9kV2hpdGVMaXN0WydfX2xvb2t1cEdldHRlcl9fJ10gPSBmYWxzZTtcblxuICBsZXQgZGVmYXVsdFByb3BlcnR5V2hpdGVMaXN0ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvXG4gIGRlZmF1bHRQcm9wZXJ0eVdoaXRlTGlzdFsnX19wcm90b19fJ10gPSBmYWxzZTtcblxuICByZXR1cm4ge1xuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIHdoaXRlbGlzdDogY3JlYXRlTmV3TG9va3VwT2JqZWN0KFxuICAgICAgICBkZWZhdWx0UHJvcGVydHlXaGl0ZUxpc3QsXG4gICAgICAgIHJ1bnRpbWVPcHRpb25zLmFsbG93ZWRQcm90b1Byb3BlcnRpZXNcbiAgICAgICksXG4gICAgICBkZWZhdWx0VmFsdWU6IHJ1bnRpbWVPcHRpb25zLmFsbG93UHJvdG9Qcm9wZXJ0aWVzQnlEZWZhdWx0XG4gICAgfSxcbiAgICBtZXRob2RzOiB7XG4gICAgICB3aGl0ZWxpc3Q6IGNyZWF0ZU5ld0xvb2t1cE9iamVjdChcbiAgICAgICAgZGVmYXVsdE1ldGhvZFdoaXRlTGlzdCxcbiAgICAgICAgcnVudGltZU9wdGlvbnMuYWxsb3dlZFByb3RvTWV0aG9kc1xuICAgICAgKSxcbiAgICAgIGRlZmF1bHRWYWx1ZTogcnVudGltZU9wdGlvbnMuYWxsb3dQcm90b01ldGhvZHNCeURlZmF1bHRcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXN1bHRJc0FsbG93ZWQocmVzdWx0LCBwcm90b0FjY2Vzc0NvbnRyb2wsIHByb3BlcnR5TmFtZSkge1xuICBpZiAodHlwZW9mIHJlc3VsdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBjaGVja1doaXRlTGlzdChwcm90b0FjY2Vzc0NvbnRyb2wubWV0aG9kcywgcHJvcGVydHlOYW1lKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY2hlY2tXaGl0ZUxpc3QocHJvdG9BY2Nlc3NDb250cm9sLnByb3BlcnRpZXMsIHByb3BlcnR5TmFtZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tXaGl0ZUxpc3QocHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZSwgcHJvcGVydHlOYW1lKSB7XG4gIGlmIChwcm90b0FjY2Vzc0NvbnRyb2xGb3JUeXBlLndoaXRlbGlzdFtwcm9wZXJ0eU5hbWVdICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZS53aGl0ZWxpc3RbcHJvcGVydHlOYW1lXSA9PT0gdHJ1ZTtcbiAgfVxuICBpZiAocHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZS5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBwcm90b0FjY2Vzc0NvbnRyb2xGb3JUeXBlLmRlZmF1bHRWYWx1ZTtcbiAgfVxuICBsb2dVbmV4cGVjZWRQcm9wZXJ0eUFjY2Vzc09uY2UocHJvcGVydHlOYW1lKTtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBsb2dVbmV4cGVjZWRQcm9wZXJ0eUFjY2Vzc09uY2UocHJvcGVydHlOYW1lKSB7XG4gIGlmIChsb2dnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5TmFtZV0gIT09IHRydWUpIHtcbiAgICBsb2dnZWRQcm9wZXJ0aWVzW3Byb3BlcnR5TmFtZV0gPSB0cnVlO1xuICAgIGxvZ2dlci5sb2coXG4gICAgICAnZXJyb3InLFxuICAgICAgYEhhbmRsZWJhcnM6IEFjY2VzcyBoYXMgYmVlbiBkZW5pZWQgdG8gcmVzb2x2ZSB0aGUgcHJvcGVydHkgXCIke3Byb3BlcnR5TmFtZX1cIiBiZWNhdXNlIGl0IGlzIG5vdCBhbiBcIm93biBwcm9wZXJ0eVwiIG9mIGl0cyBwYXJlbnQuXFxuYCArXG4gICAgICAgIGBZb3UgY2FuIGFkZCBhIHJ1bnRpbWUgb3B0aW9uIHRvIGRpc2FibGUgdGhlIGNoZWNrIG9yIHRoaXMgd2FybmluZzpcXG5gICtcbiAgICAgICAgYFNlZSBodHRwczovL2hhbmRsZWJhcnNqcy5jb20vYXBpLXJlZmVyZW5jZS9ydW50aW1lLW9wdGlvbnMuaHRtbCNvcHRpb25zLXRvLWNvbnRyb2wtcHJvdG90eXBlLWFjY2VzcyBmb3IgZGV0YWlsc2BcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNldExvZ2dlZFByb3BlcnRpZXMoKSB7XG4gIE9iamVjdC5rZXlzKGxvZ2dlZFByb3BlcnRpZXMpLmZvckVhY2gocHJvcGVydHlOYW1lID0+IHtcbiAgICBkZWxldGUgbG9nZ2VkUHJvcGVydGllc1twcm9wZXJ0eU5hbWVdO1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.wrapHelper = wrapHelper;\n\nfunction wrapHelper(helper, transformOptionsFn) {\n if (typeof helper !== 'function') {\n // This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639\n // We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function.\n return helper;\n }\n var wrapper = function wrapper() /* dynamic arguments */{\n var options = arguments[arguments.length - 1];\n arguments[arguments.length - 1] = transformOptionsFn(options);\n return helper.apply(this, arguments);\n };\n return wrapper;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL3dyYXBIZWxwZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUU7QUFDckQsTUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUU7OztBQUdoQyxXQUFPLE1BQU0sQ0FBQztHQUNmO0FBQ0QsTUFBSSxPQUFPLEdBQUcsU0FBVixPQUFPLDBCQUFxQztBQUM5QyxRQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNoRCxhQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5RCxXQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQ3RDLENBQUM7QUFDRixTQUFPLE9BQU8sQ0FBQztDQUNoQiIsImZpbGUiOiJ3cmFwSGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHdyYXBIZWxwZXIoaGVscGVyLCB0cmFuc2Zvcm1PcHRpb25zRm4pIHtcbiAgaWYgKHR5cGVvZiBoZWxwZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBUaGlzIHNob3VsZCBub3QgaGFwcGVuLCBidXQgYXBwYXJlbnRseSBpdCBkb2VzIGluIGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMvMTYzOVxuICAgIC8vIFdlIHRyeSB0byBtYWtlIHRoZSB3cmFwcGVyIGxlYXN0LWludmFzaXZlIGJ5IG5vdCB3cmFwcGluZyBpdCwgaWYgdGhlIGhlbHBlciBpcyBub3QgYSBmdW5jdGlvbi5cbiAgICByZXR1cm4gaGVscGVyO1xuICB9XG4gIGxldCB3cmFwcGVyID0gZnVuY3Rpb24oLyogZHluYW1pYyBhcmd1bWVudHMgKi8pIHtcbiAgICBjb25zdCBvcHRpb25zID0gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXTtcbiAgICBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdID0gdHJhbnNmb3JtT3B0aW9uc0ZuKG9wdGlvbnMpO1xuICAgIHJldHVybiBoZWxwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbiAgcmV0dXJuIHdyYXBwZXI7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('./utils');\n\nvar logger = {\n methodMap: ['debug', 'info', 'warn', 'error'],\n level: 'info',\n\n // Maps a given level value to the `methodMap` indexes above.\n lookupLevel: function lookupLevel(level) {\n if (typeof level === 'string') {\n var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase());\n if (levelMap >= 0) {\n level = levelMap;\n } else {\n level = parseInt(level, 10);\n }\n }\n\n return level;\n },\n\n // Can be overridden in the host environment\n log: function log(level) {\n level = logger.lookupLevel(level);\n\n if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {\n var method = logger.methodMap[level];\n // eslint-disable-next-line no-console\n if (!console[method]) {\n method = 'log';\n }\n\n for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n message[_key - 1] = arguments[_key];\n }\n\n console[method].apply(console, message); // eslint-disable-line no-console\n }\n }\n};\n\nexports['default'] = logger;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2xvZ2dlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O3FCQUF3QixTQUFTOztBQUVqQyxJQUFJLE1BQU0sR0FBRztBQUNYLFdBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztBQUM3QyxPQUFLLEVBQUUsTUFBTTs7O0FBR2IsYUFBVyxFQUFFLHFCQUFTLEtBQUssRUFBRTtBQUMzQixRQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUM3QixVQUFJLFFBQVEsR0FBRyxlQUFRLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDOUQsVUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFO0FBQ2pCLGFBQUssR0FBRyxRQUFRLENBQUM7T0FDbEIsTUFBTTtBQUNMLGFBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO09BQzdCO0tBQ0Y7O0FBRUQsV0FBTyxLQUFLLENBQUM7R0FDZDs7O0FBR0QsS0FBRyxFQUFFLGFBQVMsS0FBSyxFQUFjO0FBQy9CLFNBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDOztBQUVsQyxRQUNFLE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFDOUIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxFQUN6QztBQUNBLFVBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7O0FBRXJDLFVBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDcEIsY0FBTSxHQUFHLEtBQUssQ0FBQztPQUNoQjs7d0NBWG1CLE9BQU87QUFBUCxlQUFPOzs7QUFZM0IsYUFBTyxDQUFDLE1BQU0sT0FBQyxDQUFmLE9BQU8sRUFBWSxPQUFPLENBQUMsQ0FBQztLQUM3QjtHQUNGO0NBQ0YsQ0FBQzs7cUJBRWEsTUFBTSIsImZpbGUiOiJsb2dnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmRleE9mIH0gZnJvbSAnLi91dGlscyc7XG5cbmxldCBsb2dnZXIgPSB7XG4gIG1ldGhvZE1hcDogWydkZWJ1ZycsICdpbmZvJywgJ3dhcm4nLCAnZXJyb3InXSxcbiAgbGV2ZWw6ICdpbmZvJyxcblxuICAvLyBNYXBzIGEgZ2l2ZW4gbGV2ZWwgdmFsdWUgdG8gdGhlIGBtZXRob2RNYXBgIGluZGV4ZXMgYWJvdmUuXG4gIGxvb2t1cExldmVsOiBmdW5jdGlvbihsZXZlbCkge1xuICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICBsZXQgbGV2ZWxNYXAgPSBpbmRleE9mKGxvZ2dlci5tZXRob2RNYXAsIGxldmVsLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgaWYgKGxldmVsTWFwID49IDApIHtcbiAgICAgICAgbGV2ZWwgPSBsZXZlbE1hcDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldmVsID0gcGFyc2VJbnQobGV2ZWwsIDEwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGV2ZWw7XG4gIH0sXG5cbiAgLy8gQ2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGhvc3QgZW52aXJvbm1lbnRcbiAgbG9nOiBmdW5jdGlvbihsZXZlbCwgLi4ubWVzc2FnZSkge1xuICAgIGxldmVsID0gbG9nZ2VyLmxvb2t1cExldmVsKGxldmVsKTtcblxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgbG9nZ2VyLmxvb2t1cExldmVsKGxvZ2dlci5sZXZlbCkgPD0gbGV2ZWxcbiAgICApIHtcbiAgICAgIGxldCBtZXRob2QgPSBsb2dnZXIubWV0aG9kTWFwW2xldmVsXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBpZiAoIWNvbnNvbGVbbWV0aG9kXSkge1xuICAgICAgICBtZXRob2QgPSAnbG9nJztcbiAgICAgIH1cbiAgICAgIGNvbnNvbGVbbWV0aG9kXSguLi5tZXNzYWdlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2dnZXI7XG4iXX0=\n","/* global globalThis */\n'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (Handlebars) {\n /* istanbul ignore next */\n // https://mathiasbynens.be/notes/globalthis\n (function () {\n if (typeof globalThis === 'object') return;\n Object.prototype.__defineGetter__('__magic__', function () {\n return this;\n });\n __magic__.globalThis = __magic__; // eslint-disable-line no-undef\n delete Object.prototype.__magic__;\n })();\n\n var $Handlebars = globalThis.Handlebars;\n\n /* istanbul ignore next */\n Handlebars.noConflict = function () {\n if (globalThis.Handlebars === Handlebars) {\n globalThis.Handlebars = $Handlebars;\n }\n return Handlebars;\n };\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL25vLWNvbmZsaWN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O3FCQUNlLFVBQVMsVUFBVSxFQUFFOzs7QUFHbEMsR0FBQyxZQUFXO0FBQ1YsUUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUUsT0FBTztBQUMzQyxVQUFNLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxZQUFXO0FBQ3hELGFBQU8sSUFBSSxDQUFDO0tBQ2IsQ0FBQyxDQUFDO0FBQ0gsYUFBUyxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7QUFDakMsV0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztHQUNuQyxDQUFBLEVBQUcsQ0FBQzs7QUFFTCxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDOzs7QUFHMUMsWUFBVSxDQUFDLFVBQVUsR0FBRyxZQUFXO0FBQ2pDLFFBQUksVUFBVSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7QUFDeEMsZ0JBQVUsQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDO0tBQ3JDO0FBQ0QsV0FBTyxVQUFVLENBQUM7R0FDbkIsQ0FBQztDQUNIIiwiZmlsZSI6Im5vLWNvbmZsaWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogZ2xvYmFsIGdsb2JhbFRoaXMgKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKEhhbmRsZWJhcnMpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgLy8gaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2dsb2JhbHRoaXNcbiAgKGZ1bmN0aW9uKCkge1xuICAgIGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybjtcbiAgICBPYmplY3QucHJvdG90eXBlLl9fZGVmaW5lR2V0dGVyX18oJ19fbWFnaWNfXycsIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfSk7XG4gICAgX19tYWdpY19fLmdsb2JhbFRoaXMgPSBfX21hZ2ljX187IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiAgICBkZWxldGUgT2JqZWN0LnByb3RvdHlwZS5fX21hZ2ljX187XG4gIH0pKCk7XG5cbiAgY29uc3QgJEhhbmRsZWJhcnMgPSBnbG9iYWxUaGlzLkhhbmRsZWJhcnM7XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgSGFuZGxlYmFycy5ub0NvbmZsaWN0ID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKGdsb2JhbFRoaXMuSGFuZGxlYmFycyA9PT0gSGFuZGxlYmFycykge1xuICAgICAgZ2xvYmFsVGhpcy5IYW5kbGViYXJzID0gJEhhbmRsZWJhcnM7XG4gICAgfVxuICAgIHJldHVybiBIYW5kbGViYXJzO1xuICB9O1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\nexports.checkRevision = checkRevision;\nexports.template = template;\nexports.wrapProgram = wrapProgram;\nexports.resolvePartial = resolvePartial;\nexports.invokePartial = invokePartial;\nexports.noop = noop;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\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 _utils = require('./utils');\n\nvar Utils = _interopRequireWildcard(_utils);\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _base = require('./base');\n\nvar _helpers = require('./helpers');\n\nvar _internalWrapHelper = require('./internal/wrapHelper');\n\nvar _internalProtoAccess = require('./internal/proto-access');\n\nfunction checkRevision(compilerInfo) {\n var compilerRevision = compilerInfo && compilerInfo[0] || 1,\n currentRevision = _base.COMPILER_REVISION;\n\n if (compilerRevision >= _base.LAST_COMPATIBLE_COMPILER_REVISION && compilerRevision <= _base.COMPILER_REVISION) {\n return;\n }\n\n if (compilerRevision < _base.LAST_COMPATIBLE_COMPILER_REVISION) {\n var runtimeVersions = _base.REVISION_CHANGES[currentRevision],\n compilerVersions = _base.REVISION_CHANGES[compilerRevision];\n throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').');\n } else {\n // Use the embedded version info since the runtime doesn't know about this revision yet\n throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').');\n }\n}\n\nfunction template(templateSpec, env) {\n /* istanbul ignore next */\n if (!env) {\n throw new _exception2['default']('No environment passed to template');\n }\n if (!templateSpec || !templateSpec.main) {\n throw new _exception2['default']('Unknown template object: ' + typeof templateSpec);\n }\n\n templateSpec.main.decorator = templateSpec.main_d;\n\n // Note: Using env.VM references rather than local var references throughout this section to allow\n // for external users to override these as pseudo-supported APIs.\n env.VM.checkRevision(templateSpec.compiler);\n\n // backwards compatibility for precompiled templates with compiler-version 7 (<4.3.0)\n var templateWasPrecompiledWithCompilerV7 = templateSpec.compiler && templateSpec.compiler[0] === 7;\n\n function invokePartialWrapper(partial, context, options) {\n if (options.hash) {\n context = Utils.extend({}, context, options.hash);\n if (options.ids) {\n options.ids[0] = true;\n }\n }\n partial = env.VM.resolvePartial.call(this, partial, context, options);\n\n var extendedOptions = Utils.extend({}, options, {\n hooks: this.hooks,\n protoAccessControl: this.protoAccessControl\n });\n\n var result = env.VM.invokePartial.call(this, partial, context, extendedOptions);\n\n if (result == null && env.compile) {\n options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);\n result = options.partials[options.name](context, extendedOptions);\n }\n if (result != null) {\n if (options.indent) {\n var lines = result.split('\\n');\n for (var i = 0, l = lines.length; i < l; i++) {\n if (!lines[i] && i + 1 === l) {\n break;\n }\n\n lines[i] = options.indent + lines[i];\n }\n result = lines.join('\\n');\n }\n return result;\n } else {\n throw new _exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode');\n }\n }\n\n // Just add water\n var container = {\n strict: function strict(obj, name, loc) {\n if (!obj || !(name in obj)) {\n throw new _exception2['default']('\"' + name + '\" not defined in ' + obj, {\n loc: loc\n });\n }\n return container.lookupProperty(obj, name);\n },\n lookupProperty: function lookupProperty(parent, propertyName) {\n var result = parent[propertyName];\n if (result == null) {\n return result;\n }\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return result;\n }\n\n if (_internalProtoAccess.resultIsAllowed(result, container.protoAccessControl, propertyName)) {\n return result;\n }\n return undefined;\n },\n lookup: function lookup(depths, name) {\n var len = depths.length;\n for (var i = 0; i < len; i++) {\n var result = depths[i] && container.lookupProperty(depths[i], name);\n if (result != null) {\n return depths[i][name];\n }\n }\n },\n lambda: function lambda(current, context) {\n return typeof current === 'function' ? current.call(context) : current;\n },\n\n escapeExpression: Utils.escapeExpression,\n invokePartial: invokePartialWrapper,\n\n fn: function fn(i) {\n var ret = templateSpec[i];\n ret.decorator = templateSpec[i + '_d'];\n return ret;\n },\n\n programs: [],\n program: function program(i, data, declaredBlockParams, blockParams, depths) {\n var programWrapper = this.programs[i],\n fn = this.fn(i);\n if (data || depths || blockParams || declaredBlockParams) {\n programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths);\n } else if (!programWrapper) {\n programWrapper = this.programs[i] = wrapProgram(this, i, fn);\n }\n return programWrapper;\n },\n\n data: function data(value, depth) {\n while (value && depth--) {\n value = value._parent;\n }\n return value;\n },\n mergeIfNeeded: function mergeIfNeeded(param, common) {\n var obj = param || common;\n\n if (param && common && param !== common) {\n obj = Utils.extend({}, common, param);\n }\n\n return obj;\n },\n // An empty object to use as replacement for null-contexts\n nullContext: Object.seal({}),\n\n noop: env.VM.noop,\n compilerInfo: templateSpec.compiler\n };\n\n function ret(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var data = options.data;\n\n ret._setup(options);\n if (!options.partial && templateSpec.useData) {\n data = initData(context, data);\n }\n var depths = undefined,\n blockParams = templateSpec.useBlockParams ? [] : undefined;\n if (templateSpec.useDepths) {\n if (options.depths) {\n depths = context != options.depths[0] ? [context].concat(options.depths) : options.depths;\n } else {\n depths = [context];\n }\n }\n\n function main(context /*, options*/) {\n return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);\n }\n\n main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);\n return main(context, options);\n }\n\n ret.isTop = true;\n\n ret._setup = function (options) {\n if (!options.partial) {\n var mergedHelpers = Utils.extend({}, env.helpers, options.helpers);\n wrapHelpersToPassLookupProperty(mergedHelpers, container);\n container.helpers = mergedHelpers;\n\n if (templateSpec.usePartial) {\n // Use mergeIfNeeded here to prevent compiling global partials multiple times\n container.partials = container.mergeIfNeeded(options.partials, env.partials);\n }\n if (templateSpec.usePartial || templateSpec.useDecorators) {\n container.decorators = Utils.extend({}, env.decorators, options.decorators);\n }\n\n container.hooks = {};\n container.protoAccessControl = _internalProtoAccess.createProtoAccessControl(options);\n\n var keepHelperInHelpers = options.allowCallsToHelperMissing || templateWasPrecompiledWithCompilerV7;\n _helpers.moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);\n _helpers.moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);\n } else {\n container.protoAccessControl = options.protoAccessControl; // internal option\n container.helpers = options.helpers;\n container.partials = options.partials;\n container.decorators = options.decorators;\n container.hooks = options.hooks;\n }\n };\n\n ret._child = function (i, data, blockParams, depths) {\n if (templateSpec.useBlockParams && !blockParams) {\n throw new _exception2['default']('must pass block params');\n }\n if (templateSpec.useDepths && !depths) {\n throw new _exception2['default']('must pass parent depths');\n }\n\n return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths);\n };\n return ret;\n}\n\nfunction wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) {\n function prog(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var currentDepths = depths;\n if (depths && context != depths[0] && !(context === container.nullContext && depths[0] === null)) {\n currentDepths = [context].concat(depths);\n }\n\n return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths);\n }\n\n prog = executeDecorators(fn, prog, container, depths, data, blockParams);\n\n prog.program = i;\n prog.depth = depths ? depths.length : 0;\n prog.blockParams = declaredBlockParams || 0;\n return prog;\n}\n\n/**\n * This is currently part of the official API, therefore implementation details should not be changed.\n */\n\nfunction resolvePartial(partial, context, options) {\n if (!partial) {\n if (options.name === '@partial-block') {\n partial = options.data['partial-block'];\n } else {\n partial = options.partials[options.name];\n }\n } else if (!partial.call && !options.name) {\n // This is a dynamic partial that returned a string\n options.name = partial;\n partial = options.partials[partial];\n }\n return partial;\n}\n\nfunction invokePartial(partial, context, options) {\n // Use the current closure context to save the partial-block if this partial\n var currentPartialBlock = options.data && options.data['partial-block'];\n options.partial = true;\n if (options.ids) {\n options.data.contextPath = options.ids[0] || options.data.contextPath;\n }\n\n var partialBlock = undefined;\n if (options.fn && options.fn !== noop) {\n (function () {\n options.data = _base.createFrame(options.data);\n // Wrapper function to get access to currentPartialBlock from the closure\n var fn = options.fn;\n partialBlock = options.data['partial-block'] = function partialBlockWrapper(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n // Restore the partial-block from the closure for the execution of the block\n // i.e. the part inside the block of the partial call.\n options.data = _base.createFrame(options.data);\n options.data['partial-block'] = currentPartialBlock;\n return fn(context, options);\n };\n if (fn.partials) {\n options.partials = Utils.extend({}, options.partials, fn.partials);\n }\n })();\n }\n\n if (partial === undefined && partialBlock) {\n partial = partialBlock;\n }\n\n if (partial === undefined) {\n throw new _exception2['default']('The partial ' + options.name + ' could not be found');\n } else if (partial instanceof Function) {\n return partial(context, options);\n }\n}\n\nfunction noop() {\n return '';\n}\n\nfunction initData(context, data) {\n if (!data || !('root' in data)) {\n data = data ? _base.createFrame(data) : {};\n data.root = context;\n }\n return data;\n}\n\nfunction executeDecorators(fn, prog, container, depths, data, blockParams) {\n if (fn.decorator) {\n var props = {};\n prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths);\n Utils.extend(prog, props);\n }\n return prog;\n}\n\nfunction wrapHelpersToPassLookupProperty(mergedHelpers, container) {\n Object.keys(mergedHelpers).forEach(function (helperName) {\n var helper = mergedHelpers[helperName];\n mergedHelpers[helperName] = passLookupPropertyOption(helper, container);\n });\n}\n\nfunction passLookupPropertyOption(helper, container) {\n var lookupProperty = container.lookupProperty;\n return _internalWrapHelper.wrapHelper(helper, function (options) {\n return Utils.extend({ lookupProperty: lookupProperty }, options);\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3J1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7cUJBQXVCLFNBQVM7O0lBQXBCLEtBQUs7O3lCQUNLLGFBQWE7Ozs7b0JBTTVCLFFBQVE7O3VCQUNtQixXQUFXOztrQ0FDbEIsdUJBQXVCOzttQ0FJM0MseUJBQXlCOztBQUV6QixTQUFTLGFBQWEsQ0FBQyxZQUFZLEVBQUU7QUFDMUMsTUFBTSxnQkFBZ0IsR0FBRyxBQUFDLFlBQVksSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUssQ0FBQztNQUM3RCxlQUFlLDBCQUFvQixDQUFDOztBQUV0QyxNQUNFLGdCQUFnQiwyQ0FBcUMsSUFDckQsZ0JBQWdCLDJCQUFxQixFQUNyQztBQUNBLFdBQU87R0FDUjs7QUFFRCxNQUFJLGdCQUFnQiwwQ0FBb0MsRUFBRTtBQUN4RCxRQUFNLGVBQWUsR0FBRyx1QkFBaUIsZUFBZSxDQUFDO1FBQ3ZELGdCQUFnQixHQUFHLHVCQUFpQixnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3hELFVBQU0sMkJBQ0oseUZBQXlGLEdBQ3ZGLHFEQUFxRCxHQUNyRCxlQUFlLEdBQ2YsbURBQW1ELEdBQ25ELGdCQUFnQixHQUNoQixJQUFJLENBQ1AsQ0FBQztHQUNILE1BQU07O0FBRUwsVUFBTSwyQkFDSix3RkFBd0YsR0FDdEYsaURBQWlELEdBQ2pELFlBQVksQ0FBQyxDQUFDLENBQUMsR0FDZixJQUFJLENBQ1AsQ0FBQztHQUNIO0NBQ0Y7O0FBRU0sU0FBUyxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTs7QUFFMUMsTUFBSSxDQUFDLEdBQUcsRUFBRTtBQUNSLFVBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztHQUMxRDtBQUNELE1BQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFO0FBQ3ZDLFVBQU0sMkJBQWMsMkJBQTJCLEdBQUcsT0FBTyxZQUFZLENBQUMsQ0FBQztH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QUFDbkMsV0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsY0FBYyxFQUFkLGNBQWMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0dBQ2xELENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6InJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBVdGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi9leGNlcHRpb24nO1xuaW1wb3J0IHtcbiAgQ09NUElMRVJfUkVWSVNJT04sXG4gIGNyZWF0ZUZyYW1lLFxuICBMQVNUX0NPTVBBVElCTEVfQ09NUElMRVJfUkVWSVNJT04sXG4gIFJFVklTSU9OX0NIQU5HRVNcbn0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IG1vdmVIZWxwZXJUb0hvb2tzIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IHdyYXBIZWxwZXIgfSBmcm9tICcuL2ludGVybmFsL3dyYXBIZWxwZXInO1xuaW1wb3J0IHtcbiAgY3JlYXRlUHJvdG9BY2Nlc3NDb250cm9sLFxuICByZXN1bHRJc0FsbG93ZWRcbn0gZnJvbSAnLi9pbnRlcm5hbC9wcm90by1hY2Nlc3MnO1xuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tSZXZpc2lvbihjb21waWxlckluZm8pIHtcbiAgY29uc3QgY29tcGlsZXJSZXZpc2lvbiA9IChjb21waWxlckluZm8gJiYgY29tcGlsZXJJbmZvWzBdKSB8fCAxLFxuICAgIGN1cnJlbnRSZXZpc2lvbiA9IENPTVBJTEVSX1JFVklTSU9OO1xuXG4gIGlmIChcbiAgICBjb21waWxlclJldmlzaW9uID49IExBU1RfQ09NUEFUSUJMRV9DT01QSUxFUl9SRVZJU0lPTiAmJlxuICAgIGNvbXBpbGVyUmV2aXNpb24gPD0gQ09NUElMRVJfUkVWSVNJT05cbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGNvbXBpbGVyUmV2aXNpb24gPCBMQVNUX0NPTVBBVElCTEVfQ09NUElMRVJfUkVWSVNJT04pIHtcbiAgICBjb25zdCBydW50aW1lVmVyc2lvbnMgPSBSRVZJU0lPTl9DSEFOR0VTW2N1cnJlbnRSZXZpc2lvbl0sXG4gICAgICBjb21waWxlclZlcnNpb25zID0gUkVWSVNJT05fQ0hBTkdFU1tjb21waWxlclJldmlzaW9uXTtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFxuICAgICAgJ1RlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGFuIG9sZGVyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50IHJ1bnRpbWUuICcgK1xuICAgICAgICAnUGxlYXNlIHVwZGF0ZSB5b3VyIHByZWNvbXBpbGVyIHRvIGEgbmV3ZXIgdmVyc2lvbiAoJyArXG4gICAgICAgIHJ1bnRpbWVWZXJzaW9ucyArXG4gICAgICAgICcpIG9yIGRvd25ncmFkZSB5b3VyIHJ1bnRpbWUgdG8gYW4gb2xkZXIgdmVyc2lvbiAoJyArXG4gICAgICAgIGNvbXBpbGVyVmVyc2lvbnMgK1xuICAgICAgICAnKS4nXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBVc2UgdGhlIGVtYmVkZGVkIHZlcnNpb24gaW5mbyBzaW5jZSB0aGUgcnVudGltZSBkb2Vzbid0IGtub3cgYWJvdXQgdGhpcyByZXZpc2lvbiB5ZXRcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFxuICAgICAgJ1RlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGEgbmV3ZXIgdmVyc2lvbiBvZiBIYW5kbGViYXJzIHRoYW4gdGhlIGN1cnJlbnQgcnVudGltZS4gJyArXG4gICAgICAgICdQbGVhc2UgdXBkYXRlIHlvdXIgcnVudGltZSB0byBhIG5ld2VyIHZlcnNpb24gKCcgK1xuICAgICAgICBjb21waWxlckluZm9bMV0gK1xuICAgICAgICAnKS4nXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVtcGxhdGUodGVtcGxhdGVTcGVjLCBlbnYpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgaWYgKCFlbnYpIHtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdObyBlbnZpcm9ubWVudCBwYXNzZWQgdG8gdGVtcGxhdGUnKTtcbiAgfVxuICBpZiAoIXRlbXBsYXRlU3BlYyB8fCAhdGVtcGxhdGVTcGVjLm1haW4pIHtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdVbmtub3duIHRlbXBsYXRlIG9iamVjdDogJyArIHR5cGVvZiB0ZW1wbGF0ZVNwZWMpO1xuICB9XG5cbiAgdGVtcGxhdGVTcGVjLm1haW4uZGVjb3JhdG9yID0gdGVtcGxhdGVTcGVjLm1haW5fZDtcblxuICAvLyBOb3RlOiBVc2luZyBlbnYuVk0gcmVmZXJlbmNlcyByYXRoZXIgdGhhbiBsb2NhbCB2YXIgcmVmZXJlbmNlcyB0aHJvdWdob3V0IHRoaXMgc2VjdGlvbiB0byBhbGxvd1xuICAvLyBmb3IgZXh0ZXJuYWwgdXNlcnMgdG8gb3ZlcnJpZGUgdGhlc2UgYXMgcHNldWRvLXN1cHBvcnRlZCBBUElzLlxuICBlbnYuVk0uY2hlY2tSZXZpc2lvbih0ZW1wbGF0ZVNwZWMuY29tcGlsZXIpO1xuXG4gIC8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGZvciBwcmVjb21waWxlZCB0ZW1wbGF0ZXMgd2l0aCBjb21waWxlci12ZXJzaW9uIDcgKDw0LjMuMClcbiAgY29uc3QgdGVtcGxhdGVXYXNQcmVjb21waWxlZFdpdGhDb21waWxlclY3ID1cbiAgICB0ZW1wbGF0ZVNwZWMuY29tcGlsZXIgJiYgdGVtcGxhdGVTcGVjLmNvbXBpbGVyWzBdID09PSA3O1xuXG4gIGZ1bmN0aW9uIGludm9rZVBhcnRpYWxXcmFwcGVyKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5oYXNoKSB7XG4gICAgICBjb250ZXh0ID0gVXRpbHMuZXh0ZW5kKHt9LCBjb250ZXh0LCBvcHRpb25zLmhhc2gpO1xuICAgICAgaWYgKG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIG9wdGlvbnMuaWRzWzBdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcGFydGlhbCA9IGVudi5WTS5yZXNvbHZlUGFydGlhbC5jYWxsKHRoaXMsIHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpO1xuXG4gICAgbGV0IGV4dGVuZGVkT3B0aW9ucyA9IFV0aWxzLmV4dGVuZCh7fSwgb3B0aW9ucywge1xuICAgICAgaG9va3M6IHRoaXMuaG9va3MsXG4gICAgICBwcm90b0FjY2Vzc0NvbnRyb2w6IHRoaXMucHJvdG9BY2Nlc3NDb250cm9sXG4gICAgfSk7XG5cbiAgICBsZXQgcmVzdWx0ID0gZW52LlZNLmludm9rZVBhcnRpYWwuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICBwYXJ0aWFsLFxuICAgICAgY29udGV4dCxcbiAgICAgIGV4dGVuZGVkT3B0aW9uc1xuICAgICk7XG5cbiAgICBpZiAocmVzdWx0ID09IG51bGwgJiYgZW52LmNvbXBpbGUpIHtcbiAgICAgIG9wdGlvbnMucGFydGlhbHNbb3B0aW9ucy5uYW1lXSA9IGVudi5jb21waWxlKFxuICAgICAgICBwYXJ0aWFsLFxuICAgICAgICB0ZW1wbGF0ZVNwZWMuY29tcGlsZXJPcHRpb25zLFxuICAgICAgICBlbnZcbiAgICAgICk7XG4gICAgICByZXN1bHQgPSBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV0oY29udGV4dCwgZXh0ZW5kZWRPcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XG4gICAgICBpZiAob3B0aW9ucy5pbmRlbnQpIHtcbiAgICAgICAgbGV0IGxpbmVzID0gcmVzdWx0LnNwbGl0KCdcXG4nKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBsaW5lcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICBpZiAoIWxpbmVzW2ldICYmIGkgKyAxID09PSBsKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsaW5lc1tpXSA9IG9wdGlvbnMuaW5kZW50ICsgbGluZXNbaV07XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gbGluZXMuam9pbignXFxuJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFxuICAgICAgICAnVGhlIHBhcnRpYWwgJyArXG4gICAgICAgICAgb3B0aW9ucy5uYW1lICtcbiAgICAgICAgICAnIGNvdWxkIG5vdCBiZSBjb21waWxlZCB3aGVuIHJ1bm5pbmcgaW4gcnVudGltZS1vbmx5IG1vZGUnXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIEp1c3QgYWRkIHdhdGVyXG4gIGxldCBjb250YWluZXIgPSB7XG4gICAgc3RyaWN0OiBmdW5jdGlvbihvYmosIG5hbWUsIGxvYykge1xuICAgICAgaWYgKCFvYmogfHwgIShuYW1lIGluIG9iaikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignXCInICsgbmFtZSArICdcIiBub3QgZGVmaW5lZCBpbiAnICsgb2JqLCB7XG4gICAgICAgICAgbG9jOiBsb2NcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29udGFpbmVyLmxvb2t1cFByb3BlcnR5KG9iaiwgbmFtZSk7XG4gICAgfSxcbiAgICBsb29rdXBQcm9wZXJ0eTogZnVuY3Rpb24ocGFyZW50LCBwcm9wZXJ0eU5hbWUpIHtcbiAgICAgIGxldCByZXN1bHQgPSBwYXJlbnRbcHJvcGVydHlOYW1lXTtcbiAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwYXJlbnQsIHByb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3VsdElzQWxsb3dlZChyZXN1bHQsIGNvbnRhaW5lci5wcm90b0FjY2Vzc0NvbnRyb2wsIHByb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSxcbiAgICBsb29rdXA6IGZ1bmN0aW9uKGRlcHRocywgbmFtZSkge1xuICAgICAgY29uc3QgbGVuID0gZGVwdGhzLmxlbmd0aDtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IGRlcHRoc1tpXSAmJiBjb250YWluZXIubG9va3VwUHJvcGVydHkoZGVwdGhzW2ldLCBuYW1lKTtcbiAgICAgICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGRlcHRoc1tpXVtuYW1lXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgbGFtYmRhOiBmdW5jdGlvbihjdXJyZW50LCBjb250ZXh0KSB7XG4gICAgICByZXR1cm4gdHlwZW9mIGN1cnJlbnQgPT09ICdmdW5jdGlvbicgPyBjdXJyZW50LmNhbGwoY29udGV4dCkgOiBjdXJyZW50O1xuICAgIH0sXG5cbiAgICBlc2NhcGVFeHByZXNzaW9uOiBVdGlscy5lc2NhcGVFeHByZXNzaW9uLFxuICAgIGludm9rZVBhcnRpYWw6IGludm9rZVBhcnRpYWxXcmFwcGVyLFxuXG4gICAgZm46IGZ1bmN0aW9uKGkpIHtcbiAgICAgIGxldCByZXQgPSB0ZW1wbGF0ZVNwZWNbaV07XG4gICAgICByZXQuZGVjb3JhdG9yID0gdGVtcGxhdGVTcGVjW2kgKyAnX2QnXTtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSxcblxuICAgIHByb2dyYW1zOiBbXSxcbiAgICBwcm9ncmFtOiBmdW5jdGlvbihpLCBkYXRhLCBkZWNsYXJlZEJsb2NrUGFyYW1zLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7XG4gICAgICBsZXQgcHJvZ3JhbVdyYXBwZXIgPSB0aGlzLnByb2dyYW1zW2ldLFxuICAgICAgICBmbiA9IHRoaXMuZm4oaSk7XG4gICAgICBpZiAoZGF0YSB8fCBkZXB0aHMgfHwgYmxvY2tQYXJhbXMgfHwgZGVjbGFyZWRCbG9ja1BhcmFtcykge1xuICAgICAgICBwcm9ncmFtV3JhcHBlciA9IHdyYXBQcm9ncmFtKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgaSxcbiAgICAgICAgICBmbixcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGRlY2xhcmVkQmxvY2tQYXJhbXMsXG4gICAgICAgICAgYmxvY2tQYXJhbXMsXG4gICAgICAgICAgZGVwdGhzXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKCFwcm9ncmFtV3JhcHBlcikge1xuICAgICAgICBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0gPSB3cmFwUHJvZ3JhbSh0aGlzLCBpLCBmbik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJvZ3JhbVdyYXBwZXI7XG4gICAgfSxcblxuICAgIGRhdGE6IGZ1bmN0aW9uKHZhbHVlLCBkZXB0aCkge1xuICAgICAgd2hpbGUgKHZhbHVlICYmIGRlcHRoLS0pIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5fcGFyZW50O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0sXG4gICAgbWVyZ2VJZk5lZWRlZDogZnVuY3Rpb24ocGFyYW0sIGNvbW1vbikge1xuICAgICAgbGV0IG9iaiA9IHBhcmFtIHx8IGNvbW1vbjtcblxuICAgICAgaWYgKHBhcmFtICYmIGNvbW1vbiAmJiBwYXJhbSAhPT0gY29tbW9uKSB7XG4gICAgICAgIG9iaiA9IFV0aWxzLmV4dGVuZCh7fSwgY29tbW9uLCBwYXJhbSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSxcbiAgICAvLyBBbiBlbXB0eSBvYmplY3QgdG8gdXNlIGFzIHJlcGxhY2VtZW50IGZvciBudWxsLWNvbnRleHRzXG4gICAgbnVsbENvbnRleHQ6IE9iamVjdC5zZWFsKHt9KSxcblxuICAgIG5vb3A6IGVudi5WTS5ub29wLFxuICAgIGNvbXBpbGVySW5mbzogdGVtcGxhdGVTcGVjLmNvbXBpbGVyXG4gIH07XG5cbiAgZnVuY3Rpb24gcmV0KGNvbnRleHQsIG9wdGlvbnMgPSB7fSkge1xuICAgIGxldCBkYXRhID0gb3B0aW9ucy5kYXRhO1xuXG4gICAgcmV0Ll9zZXR1cChvcHRpb25zKTtcbiAgICBpZiAoIW9wdGlvbnMucGFydGlhbCAmJiB0ZW1wbGF0ZVNwZWMudXNlRGF0YSkge1xuICAgICAgZGF0YSA9IGluaXREYXRhKGNvbnRleHQsIGRhdGEpO1xuICAgIH1cbiAgICBsZXQgZGVwdGhzLFxuICAgICAgYmxvY2tQYXJhbXMgPSB0ZW1wbGF0ZVNwZWMudXNlQmxvY2tQYXJhbXMgPyBbXSA6IHVuZGVmaW5lZDtcbiAgICBpZiAodGVtcGxhdGVTcGVjLnVzZURlcHRocykge1xuICAgICAgaWYgKG9wdGlvbnMuZGVwdGhzKSB7XG4gICAgICAgIGRlcHRocyA9XG4gICAgICAgICAgY29udGV4dCAhPSBvcHRpb25zLmRlcHRoc1swXVxuICAgICAgICAgICAgPyBbY29udGV4dF0uY29uY2F0KG9wdGlvbnMuZGVwdGhzKVxuICAgICAgICAgICAgOiBvcHRpb25zLmRlcHRocztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlcHRocyA9IFtjb250ZXh0XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWluKGNvbnRleHQgLyosIG9wdGlvbnMqLykge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgJycgK1xuICAgICAgICB0ZW1wbGF0ZVNwZWMubWFpbihcbiAgICAgICAgICBjb250YWluZXIsXG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICBjb250YWluZXIuaGVscGVycyxcbiAgICAgICAgICBjb250YWluZXIucGFydGlhbHMsXG4gICAgICAgICAgZGF0YSxcbiAgICAgICAgICBibG9ja1BhcmFtcyxcbiAgICAgICAgICBkZXB0aHNcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBtYWluID0gZXhlY3V0ZURlY29yYXRvcnMoXG4gICAgICB0ZW1wbGF0ZVNwZWMubWFpbixcbiAgICAgIG1haW4sXG4gICAgICBjb250YWluZXIsXG4gICAgICBvcHRpb25zLmRlcHRocyB8fCBbXSxcbiAgICAgIGRhdGEsXG4gICAgICBibG9ja1BhcmFtc1xuICAgICk7XG4gICAgcmV0dXJuIG1haW4oY29udGV4dCwgb3B0aW9ucyk7XG4gIH1cblxuICByZXQuaXNUb3AgPSB0cnVlO1xuXG4gIHJldC5fc2V0dXAgPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgaWYgKCFvcHRpb25zLnBhcnRpYWwpIHtcbiAgICAgIGxldCBtZXJnZWRIZWxwZXJzID0gVXRpbHMuZXh0ZW5kKHt9LCBlbnYuaGVscGVycywgb3B0aW9ucy5oZWxwZXJzKTtcbiAgICAgIHdyYXBIZWxwZXJzVG9QYXNzTG9va3VwUHJvcGVydHkobWVyZ2VkSGVscGVycywgY29udGFpbmVyKTtcbiAgICAgIGNvbnRhaW5lci5oZWxwZXJzID0gbWVyZ2VkSGVscGVycztcblxuICAgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VQYXJ0aWFsKSB7XG4gICAgICAgIC8vIFVzZSBtZXJnZUlmTmVlZGVkIGhlcmUgdG8gcHJldmVudCBjb21waWxpbmcgZ2xvYmFsIHBhcnRpYWxzIG11bHRpcGxlIHRpbWVzXG4gICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGNvbnRhaW5lci5tZXJnZUlmTmVlZGVkKFxuICAgICAgICAgIG9wdGlvbnMucGFydGlhbHMsXG4gICAgICAgICAgZW52LnBhcnRpYWxzXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZVBhcnRpYWwgfHwgdGVtcGxhdGVTcGVjLnVzZURlY29yYXRvcnMpIHtcbiAgICAgICAgY29udGFpbmVyLmRlY29yYXRvcnMgPSBVdGlscy5leHRlbmQoXG4gICAgICAgICAge30sXG4gICAgICAgICAgZW52LmRlY29yYXRvcnMsXG4gICAgICAgICAgb3B0aW9ucy5kZWNvcmF0b3JzXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRhaW5lci5ob29rcyA9IHt9O1xuICAgICAgY29udGFpbmVyLnByb3RvQWNjZXNzQ29udHJvbCA9IGNyZWF0ZVByb3RvQWNjZXNzQ29udHJvbChvcHRpb25zKTtcblxuICAgICAgbGV0IGtlZXBIZWxwZXJJbkhlbHBlcnMgPVxuICAgICAgICBvcHRpb25zLmFsbG93Q2FsbHNUb0hlbHBlck1pc3NpbmcgfHxcbiAgICAgICAgdGVtcGxhdGVXYXNQcmVjb21waWxlZFdpdGhDb21waWxlclY3O1xuICAgICAgbW92ZUhlbHBlclRvSG9va3MoY29udGFpbmVyLCAnaGVscGVyTWlzc2luZycsIGtlZXBIZWxwZXJJbkhlbHBlcnMpO1xuICAgICAgbW92ZUhlbHBlclRvSG9va3MoY29udGFpbmVyLCAnYmxvY2tIZWxwZXJNaXNzaW5nJywga2VlcEhlbHBlckluSGVscGVycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRhaW5lci5wcm90b0FjY2Vzc0NvbnRyb2wgPSBvcHRpb25zLnByb3RvQWNjZXNzQ29udHJvbDsgLy8gaW50ZXJuYWwgb3B0aW9uXG4gICAgICBjb250YWluZXIuaGVscGVycyA9IG9wdGlvbnMuaGVscGVycztcbiAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IG9wdGlvbnMucGFydGlhbHM7XG4gICAgICBjb250YWluZXIuZGVjb3JhdG9ycyA9IG9wdGlvbnMuZGVjb3JhdG9ycztcbiAgICAgIGNvbnRhaW5lci5ob29rcyA9IG9wdGlvbnMuaG9va3M7XG4gICAgfVxuICB9O1xuXG4gIHJldC5fY2hpbGQgPSBmdW5jdGlvbihpLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7XG4gICAgaWYgKHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyAmJiAhYmxvY2tQYXJhbXMpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ211c3QgcGFzcyBibG9jayBwYXJhbXMnKTtcbiAgICB9XG4gICAgaWYgKHRlbXBsYXRlU3BlYy51c2VEZXB0aHMgJiYgIWRlcHRocykge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignbXVzdCBwYXNzIHBhcmVudCBkZXB0aHMnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gd3JhcFByb2dyYW0oXG4gICAgICBjb250YWluZXIsXG4gICAgICBpLFxuICAgICAgdGVtcGxhdGVTcGVjW2ldLFxuICAgICAgZGF0YSxcbiAgICAgIDAsXG4gICAgICBibG9ja1BhcmFtcyxcbiAgICAgIGRlcHRoc1xuICAgICk7XG4gIH07XG4gIHJldHVybiByZXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cmFwUHJvZ3JhbShcbiAgY29udGFpbmVyLFxuICBpLFxuICBmbixcbiAgZGF0YSxcbiAgZGVjbGFyZWRCbG9ja1BhcmFtcyxcbiAgYmxvY2tQYXJhbXMsXG4gIGRlcHRoc1xuKSB7XG4gIGZ1bmN0aW9uIHByb2coY29udGV4dCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGN1cnJlbnREZXB0aHMgPSBkZXB0aHM7XG4gICAgaWYgKFxuICAgICAgZGVwdGhzICYmXG4gICAgICBjb250ZXh0ICE9IGRlcHRoc1swXSAmJlxuICAgICAgIShjb250ZXh0ID09PSBjb250YWluZXIubnVsbENvbnRleHQgJiYgZGVwdGhzWzBdID09PSBudWxsKVxuICAgICkge1xuICAgICAgY3VycmVudERlcHRocyA9IFtjb250ZXh0XS5jb25jYXQoZGVwdGhzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm4oXG4gICAgICBjb250YWluZXIsXG4gICAgICBjb250ZXh0LFxuICAgICAgY29udGFpbmVyLmhlbHBlcnMsXG4gICAgICBjb250YWluZXIucGFydGlhbHMsXG4gICAgICBvcHRpb25zLmRhdGEgfHwgZGF0YSxcbiAgICAgIGJsb2NrUGFyYW1zICYmIFtvcHRpb25zLmJsb2NrUGFyYW1zXS5jb25jYXQoYmxvY2tQYXJhbXMpLFxuICAgICAgY3VycmVudERlcHRoc1xuICAgICk7XG4gIH1cblxuICBwcm9nID0gZXhlY3V0ZURlY29yYXRvcnMoZm4sIHByb2csIGNvbnRhaW5lciwgZGVwdGhzLCBkYXRhLCBibG9ja1BhcmFtcyk7XG5cbiAgcHJvZy5wcm9ncmFtID0gaTtcbiAgcHJvZy5kZXB0aCA9IGRlcHRocyA/IGRlcHRocy5sZW5ndGggOiAwO1xuICBwcm9nLmJsb2NrUGFyYW1zID0gZGVjbGFyZWRCbG9ja1BhcmFtcyB8fCAwO1xuICByZXR1cm4gcHJvZztcbn1cblxuLyoqXG4gKiBUaGlzIGlzIGN1cnJlbnRseSBwYXJ0IG9mIHRoZSBvZmZpY2lhbCBBUEksIHRoZXJlZm9yZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHNob3VsZCBub3QgYmUgY2hhbmdlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVQYXJ0aWFsKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgaWYgKCFwYXJ0aWFsKSB7XG4gICAgaWYgKG9wdGlvbnMubmFtZSA9PT0gJ0BwYXJ0aWFsLWJsb2NrJykge1xuICAgICAgcGFydGlhbCA9IG9wdGlvbnMuZGF0YVsncGFydGlhbC1ibG9jayddO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0aWFsID0gb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdO1xuICAgIH1cbiAgfSBlbHNlIGlmICghcGFydGlhbC5jYWxsICYmICFvcHRpb25zLm5hbWUpIHtcbiAgICAvLyBUaGlzIGlzIGEgZHluYW1pYyBwYXJ0aWFsIHRoYXQgcmV0dXJuZWQgYSBzdHJpbmdcbiAgICBvcHRpb25zLm5hbWUgPSBwYXJ0aWFsO1xuICAgIHBhcnRpYWwgPSBvcHRpb25zLnBhcnRpYWxzW3BhcnRpYWxdO1xuICB9XG4gIHJldHVybiBwYXJ0aWFsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlUGFydGlhbChwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKSB7XG4gIC8vIFVzZSB0aGUgY3VycmVudCBjbG9zdXJlIGNvbnRleHQgdG8gc2F2ZSB0aGUgcGFydGlhbC1ibG9jayBpZiB0aGlzIHBhcnRpYWxcbiAgY29uc3QgY3VycmVudFBhcnRpYWxCbG9jayA9IG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXTtcbiAgb3B0aW9ucy5wYXJ0aWFsID0gdHJ1ZTtcbiAgaWYgKG9wdGlvbnMuaWRzKSB7XG4gICAgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoID0gb3B0aW9ucy5pZHNbMF0gfHwgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoO1xuICB9XG5cbiAgbGV0IHBhcnRpYWxCbG9jaztcbiAgaWYgKG9wdGlvbnMuZm4gJiYgb3B0aW9ucy5mbiAhPT0gbm9vcCkge1xuICAgIG9wdGlvbnMuZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgLy8gV3JhcHBlciBmdW5jdGlvbiB0byBnZXQgYWNjZXNzIHRvIGN1cnJlbnRQYXJ0aWFsQmxvY2sgZnJvbSB0aGUgY2xvc3VyZVxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm47XG4gICAgcGFydGlhbEJsb2NrID0gb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBmdW5jdGlvbiBwYXJ0aWFsQmxvY2tXcmFwcGVyKFxuICAgICAgY29udGV4dCxcbiAgICAgIG9wdGlvbnMgPSB7fVxuICAgICkge1xuICAgICAgLy8gUmVzdG9yZSB0aGUgcGFydGlhbC1ibG9jayBmcm9tIHRoZSBjbG9zdXJlIGZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9ja1xuICAgICAgLy8gaS5lLiB0aGUgcGFydCBpbnNpZGUgdGhlIGJsb2NrIG9mIHRoZSBwYXJ0aWFsIGNhbGwuXG4gICAgICBvcHRpb25zLmRhdGEgPSBjcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpO1xuICAgICAgb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBjdXJyZW50UGFydGlhbEJsb2NrO1xuICAgICAgcmV0dXJuIGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgIH07XG4gICAgaWYgKGZuLnBhcnRpYWxzKSB7XG4gICAgICBvcHRpb25zLnBhcnRpYWxzID0gVXRpbHMuZXh0ZW5kKHt9LCBvcHRpb25zLnBhcnRpYWxzLCBmbi5wYXJ0aWFscyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHBhcnRpYWwgPT09IHVuZGVmaW5lZCAmJiBwYXJ0aWFsQmxvY2spIHtcbiAgICBwYXJ0aWFsID0gcGFydGlhbEJsb2NrO1xuICB9XG5cbiAgaWYgKHBhcnRpYWwgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1RoZSBwYXJ0aWFsICcgKyBvcHRpb25zLm5hbWUgKyAnIGNvdWxkIG5vdCBiZSBmb3VuZCcpO1xuICB9IGVsc2UgaWYgKHBhcnRpYWwgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgIHJldHVybiBwYXJ0aWFsKGNvbnRleHQsIG9wdGlvbnMpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub29wKCkge1xuICByZXR1cm4gJyc7XG59XG5cbmZ1bmN0aW9uIGluaXREYXRhKGNvbnRleHQsIGRhdGEpIHtcbiAgaWYgKCFkYXRhIHx8ICEoJ3Jvb3QnIGluIGRhdGEpKSB7XG4gICAgZGF0YSA9IGRhdGEgPyBjcmVhdGVGcmFtZShkYXRhKSA6IHt9O1xuICAgIGRhdGEucm9vdCA9IGNvbnRleHQ7XG4gIH1cbiAgcmV0dXJuIGRhdGE7XG59XG5cbmZ1bmN0aW9uIGV4ZWN1dGVEZWNvcmF0b3JzKGZuLCBwcm9nLCBjb250YWluZXIsIGRlcHRocywgZGF0YSwgYmxvY2tQYXJhbXMpIHtcbiAgaWYgKGZuLmRlY29yYXRvcikge1xuICAgIGxldCBwcm9wcyA9IHt9O1xuICAgIHByb2cgPSBmbi5kZWNvcmF0b3IoXG4gICAgICBwcm9nLFxuICAgICAgcHJvcHMsXG4gICAgICBjb250YWluZXIsXG4gICAgICBkZXB0aHMgJiYgZGVwdGhzWzBdLFxuICAgICAgZGF0YSxcbiAgICAgIGJsb2NrUGFyYW1zLFxuICAgICAgZGVwdGhzXG4gICAgKTtcbiAgICBVdGlscy5leHRlbmQocHJvZywgcHJvcHMpO1xuICB9XG4gIHJldHVybiBwcm9nO1xufVxuXG5mdW5jdGlvbiB3cmFwSGVscGVyc1RvUGFzc0xvb2t1cFByb3BlcnR5KG1lcmdlZEhlbHBlcnMsIGNvbnRhaW5lcikge1xuICBPYmplY3Qua2V5cyhtZXJnZWRIZWxwZXJzKS5mb3JFYWNoKGhlbHBlck5hbWUgPT4ge1xuICAgIGxldCBoZWxwZXIgPSBtZXJnZWRIZWxwZXJzW2hlbHBlck5hbWVdO1xuICAgIG1lcmdlZEhlbHBlcnNbaGVscGVyTmFtZV0gPSBwYXNzTG9va3VwUHJvcGVydHlPcHRpb24oaGVscGVyLCBjb250YWluZXIpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcGFzc0xvb2t1cFByb3BlcnR5T3B0aW9uKGhlbHBlciwgY29udGFpbmVyKSB7XG4gIGNvbnN0IGxvb2t1cFByb3BlcnR5ID0gY29udGFpbmVyLmxvb2t1cFByb3BlcnR5O1xuICByZXR1cm4gd3JhcEhlbHBlcihoZWxwZXIsIG9wdGlvbnMgPT4ge1xuICAgIHJldHVybiBVdGlscy5leHRlbmQoeyBsb29rdXBQcm9wZXJ0eSB9LCBvcHRpb25zKTtcbiAgfSk7XG59XG4iXX0=\n","// Build out our basic SafeString type\n'use strict';\n\nexports.__esModule = true;\nfunction SafeString(string) {\n this.string = string;\n}\n\nSafeString.prototype.toString = SafeString.prototype.toHTML = function () {\n return '' + this.string;\n};\n\nexports['default'] = SafeString;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3NhZmUtc3RyaW5nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUU7QUFDMUIsTUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Q0FDdEI7O0FBRUQsVUFBVSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsWUFBVztBQUN2RSxTQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0NBQ3pCLENBQUM7O3FCQUVhLFVBQVUiLCJmaWxlIjoic2FmZS1zdHJpbmcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBCdWlsZCBvdXQgb3VyIGJhc2ljIFNhZmVTdHJpbmcgdHlwZVxuZnVuY3Rpb24gU2FmZVN0cmluZyhzdHJpbmcpIHtcbiAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG59XG5cblNhZmVTdHJpbmcucHJvdG90eXBlLnRvU3RyaW5nID0gU2FmZVN0cmluZy5wcm90b3R5cGUudG9IVE1MID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAnJyArIHRoaXMuc3RyaW5nO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2FmZVN0cmluZztcbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.extend = extend;\nexports.indexOf = indexOf;\nexports.escapeExpression = escapeExpression;\nexports.isEmpty = isEmpty;\nexports.createFrame = createFrame;\nexports.blockParams = blockParams;\nexports.appendContextPath = appendContextPath;\nvar escape = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`',\n '=': '='\n};\n\nvar badChars = /[&<>\"'`=]/g,\n possible = /[&<>\"'`=]/;\n\nfunction escapeChar(chr) {\n return escape[chr];\n}\n\nfunction extend(obj /* , ...source */) {\n for (var i = 1; i < arguments.length; i++) {\n for (var key in arguments[i]) {\n if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n obj[key] = arguments[i][key];\n }\n }\n }\n\n return obj;\n}\n\nvar toString = Object.prototype.toString;\n\nexports.toString = toString;\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n/* eslint-disable func-style */\nvar isFunction = function isFunction(value) {\n return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\n/* istanbul ignore next */\nif (isFunction(/x/)) {\n exports.isFunction = isFunction = function (value) {\n return typeof value === 'function' && toString.call(value) === '[object Function]';\n };\n}\nexports.isFunction = isFunction;\n\n/* eslint-enable func-style */\n\n/* istanbul ignore next */\nvar isArray = Array.isArray || function (value) {\n return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;\n};\n\nexports.isArray = isArray;\n// Older IE versions do not directly support indexOf so we must implement our own, sadly.\n\nfunction indexOf(array, value) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n}\n\nfunction escapeExpression(string) {\n if (typeof string !== 'string') {\n // don't escape SafeStrings, since they're already safe\n if (string && string.toHTML) {\n return string.toHTML();\n } else if (string == null) {\n return '';\n } else if (!string) {\n return string + '';\n }\n\n // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n string = '' + string;\n }\n\n if (!possible.test(string)) {\n return string;\n }\n return string.replace(badChars, escapeChar);\n}\n\nfunction isEmpty(value) {\n if (!value && value !== 0) {\n return true;\n } else if (isArray(value) && value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction createFrame(object) {\n var frame = extend({}, object);\n frame._parent = object;\n return frame;\n}\n\nfunction blockParams(params, ids) {\n params.path = ids;\n return params;\n}\n\nfunction appendContextPath(contextPath, id) {\n return (contextPath ? contextPath + '.' : '') + id;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3V0aWxzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFNLE1BQU0sR0FBRztBQUNiLEtBQUcsRUFBRSxPQUFPO0FBQ1osS0FBRyxFQUFFLE1BQU07QUFDWCxLQUFHLEVBQUUsTUFBTTtBQUNYLEtBQUcsRUFBRSxRQUFRO0FBQ2IsS0FBRyxFQUFFLFFBQVE7QUFDYixLQUFHLEVBQUUsUUFBUTtBQUNiLEtBQUcsRUFBRSxRQUFRO0NBQ2QsQ0FBQzs7QUFFRixJQUFNLFFBQVEsR0FBRyxZQUFZO0lBQzNCLFFBQVEsR0FBRyxXQUFXLENBQUM7O0FBRXpCLFNBQVMsVUFBVSxDQUFDLEdBQUcsRUFBRTtBQUN2QixTQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNwQjs7QUFFTSxTQUFTLE1BQU0sQ0FBQyxHQUFHLG9CQUFvQjtBQUM1QyxPQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6QyxTQUFLLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUM1QixVQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDM0QsV0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztPQUM5QjtLQUNGO0dBQ0Y7O0FBRUQsU0FBTyxHQUFHLENBQUM7Q0FDWjs7QUFFTSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQzs7Ozs7O0FBS2hELElBQUksVUFBVSxHQUFHLG9CQUFTLEtBQUssRUFBRTtBQUMvQixTQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztDQUNwQyxDQUFDOzs7QUFHRixJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNuQixVQU9PLFVBQVUsR0FQakIsVUFBVSxHQUFHLFVBQVMsS0FBSyxFQUFFO0FBQzNCLFdBQ0UsT0FBTyxLQUFLLEtBQUssVUFBVSxJQUMzQixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLG1CQUFtQixDQUM1QztHQUNILENBQUM7Q0FDSDtRQUNRLFVBQVUsR0FBVixVQUFVOzs7OztBQUlaLElBQU0sT0FBTyxHQUNsQixLQUFLLENBQUMsT0FBTyxJQUNiLFVBQVMsS0FBSyxFQUFFO0FBQ2QsU0FBTyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxHQUNyQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLGdCQUFnQixHQUN6QyxLQUFLLENBQUM7Q0FDWCxDQUFDOzs7OztBQUdHLFNBQVMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDcEMsT0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNoRCxRQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFDdEIsYUFBTyxDQUFDLENBQUM7S0FDVjtHQUNGO0FBQ0QsU0FBTyxDQUFDLENBQUMsQ0FBQztDQUNYOztBQUVNLFNBQVMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFO0FBQ3ZDLE1BQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFOztBQUU5QixRQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO0FBQzNCLGFBQU8sTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQ3hCLE1BQU0sSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO0FBQ3pCLGFBQU8sRUFBRSxDQUFDO0tBQ1gsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ2xCLGFBQU8sTUFBTSxHQUFHLEVBQUUsQ0FBQztLQUNwQjs7Ozs7QUFLRCxVQUFNLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQztHQUN0Qjs7QUFFRCxNQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUMxQixXQUFPLE1BQU0sQ0FBQztHQUNmO0FBQ0QsU0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztDQUM3Qzs7QUFFTSxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDN0IsTUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQ3pCLFdBQU8sSUFBSSxDQUFDO0dBQ2IsTUFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUMvQyxXQUFPLElBQUksQ0FBQztHQUNiLE1BQU07QUFDTCxXQUFPLEtBQUssQ0FBQztHQUNkO0NBQ0Y7O0FBRU0sU0FBUyxXQUFXLENBQUMsTUFBTSxFQUFFO0FBQ2xDLE1BQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0IsT0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7QUFDdkIsU0FBTyxLQUFLLENBQUM7Q0FDZDs7QUFFTSxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO0FBQ3ZDLFFBQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBQ2xCLFNBQU8sTUFBTSxDQUFDO0NBQ2Y7O0FBRU0sU0FBUyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFO0FBQ2pELFNBQU8sQ0FBQyxXQUFXLEdBQUcsV0FBVyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUEsR0FBSSxFQUFFLENBQUM7Q0FDcEQiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBlc2NhcGUgPSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJzwnOiAnJmx0OycsXG4gICc+JzogJyZndDsnLFxuICAnXCInOiAnJnF1b3Q7JyxcbiAgXCInXCI6ICcmI3gyNzsnLFxuICAnYCc6ICcmI3g2MDsnLFxuICAnPSc6ICcmI3gzRDsnXG59O1xuXG5jb25zdCBiYWRDaGFycyA9IC9bJjw+XCInYD1dL2csXG4gIHBvc3NpYmxlID0gL1smPD5cIidgPV0vO1xuXG5mdW5jdGlvbiBlc2NhcGVDaGFyKGNocikge1xuICByZXR1cm4gZXNjYXBlW2Nocl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmQob2JqIC8qICwgLi4uc291cmNlICovKSB7XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgZm9yIChsZXQga2V5IGluIGFyZ3VtZW50c1tpXSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhcmd1bWVudHNbaV0sIGtleSkpIHtcbiAgICAgICAgb2JqW2tleV0gPSBhcmd1bWVudHNbaV1ba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG5leHBvcnQgbGV0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuLy8gU291cmNlZCBmcm9tIGxvZGFzaFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Jlc3RpZWpzL2xvZGFzaC9ibG9iL21hc3Rlci9MSUNFTlNFLnR4dFxuLyogZXNsaW50LWRpc2FibGUgZnVuYy1zdHlsZSAqL1xubGV0IGlzRnVuY3Rpb24gPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xufTtcbi8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9ucyBvZiBDaHJvbWUgYW5kIFNhZmFyaVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmlmIChpc0Z1bmN0aW9uKC94LykpIHtcbiAgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSdcbiAgICApO1xuICB9O1xufVxuZXhwb3J0IHsgaXNGdW5jdGlvbiB9O1xuLyogZXNsaW50LWVuYWJsZSBmdW5jLXN0eWxlICovXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5leHBvcnQgY29uc3QgaXNBcnJheSA9XG4gIEFycmF5LmlzQXJyYXkgfHxcbiAgZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0J1xuICAgICAgPyB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXldJ1xuICAgICAgOiBmYWxzZTtcbiAgfTtcblxuLy8gT2xkZXIgSUUgdmVyc2lvbnMgZG8gbm90IGRpcmVjdGx5IHN1cHBvcnQgaW5kZXhPZiBzbyB3ZSBtdXN0IGltcGxlbWVudCBvdXIgb3duLCBzYWRseS5cbmV4cG9ydCBmdW5jdGlvbiBpbmRleE9mKGFycmF5LCB2YWx1ZSkge1xuICBmb3IgKGxldCBpID0gMCwgbGVuID0gYXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoYXJyYXlbaV0gPT09IHZhbHVlKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlRXhwcmVzc2lvbihzdHJpbmcpIHtcbiAgaWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZG9uJ3QgZXNjYXBlIFNhZmVTdHJpbmdzLCBzaW5jZSB0aGV5J3JlIGFscmVhZHkgc2FmZVxuICAgIGlmIChzdHJpbmcgJiYgc3RyaW5nLnRvSFRNTCkge1xuICAgICAgcmV0dXJuIHN0cmluZy50b0hUTUwoKTtcbiAgICB9IGVsc2UgaWYgKHN0cmluZyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSBlbHNlIGlmICghc3RyaW5nKSB7XG4gICAgICByZXR1cm4gc3RyaW5nICsgJyc7XG4gICAgfVxuXG4gICAgLy8gRm9yY2UgYSBzdHJpbmcgY29udmVyc2lvbiBhcyB0aGlzIHdpbGwgYmUgZG9uZSBieSB0aGUgYXBwZW5kIHJlZ2FyZGxlc3MgYW5kXG4gICAgLy8gdGhlIHJlZ2V4IHRlc3Qgd2lsbCBkbyB0aGlzIHRyYW5zcGFyZW50bHkgYmVoaW5kIHRoZSBzY2VuZXMsIGNhdXNpbmcgaXNzdWVzIGlmXG4gICAgLy8gYW4gb2JqZWN0J3MgdG8gc3RyaW5nIGhhcyBlc2NhcGVkIGNoYXJhY3RlcnMgaW4gaXQuXG4gICAgc3RyaW5nID0gJycgKyBzdHJpbmc7XG4gIH1cblxuICBpZiAoIXBvc3NpYmxlLnRlc3Qoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKGJhZENoYXJzLCBlc2NhcGVDaGFyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAhPT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2UgaWYgKGlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRnJhbWUob2JqZWN0KSB7XG4gIGxldCBmcmFtZSA9IGV4dGVuZCh7fSwgb2JqZWN0KTtcbiAgZnJhbWUuX3BhcmVudCA9IG9iamVjdDtcbiAgcmV0dXJuIGZyYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmxvY2tQYXJhbXMocGFyYW1zLCBpZHMpIHtcbiAgcGFyYW1zLnBhdGggPSBpZHM7XG4gIHJldHVybiBwYXJhbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRDb250ZXh0UGF0aChjb250ZXh0UGF0aCwgaWQpIHtcbiAgcmV0dXJuIChjb250ZXh0UGF0aCA/IGNvbnRleHRQYXRoICsgJy4nIDogJycpICsgaWQ7XG59XG4iXX0=\n","// Create a simple path alias to allow browserify to resolve\n// the runtime on a supported path.\nmodule.exports = require('./dist/cjs/handlebars.runtime')['default'];\n","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t// character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","(function(window, factory) {\n\tvar lazySizes = factory(window, window.document, Date);\n\twindow.lazySizes = lazySizes;\n\tif(typeof module == 'object' && module.exports){\n\t\tmodule.exports = lazySizes;\n\t}\n}(typeof window != 'undefined' ?\n window : {}, \n/**\n * import(\"./types/global\")\n * @typedef { import(\"./types/lazysizes-config\").LazySizesConfigPartial } LazySizesConfigPartial\n */\nfunction l(window, document, Date) { // Pass in the window Date function also for SSR because the Date class can be lost\n\t'use strict';\n\t/*jshint eqnull:true */\n\n\tvar lazysizes,\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tlazySizesCfg;\n\n\t(function(){\n\t\tvar prop;\n\n\t\tvar lazySizesDefaults = {\n\t\t\tlazyClass: 'lazyload',\n\t\t\tloadedClass: 'lazyloaded',\n\t\t\tloadingClass: 'lazyloading',\n\t\t\tpreloadClass: 'lazypreload',\n\t\t\terrorClass: 'lazyerror',\n\t\t\t//strictClass: 'lazystrict',\n\t\t\tautosizesClass: 'lazyautosizes',\n\t\t\tfastLoadedClass: 'ls-is-cached',\n\t\t\tiframeLoadMode: 0,\n\t\t\tsrcAttr: 'data-src',\n\t\t\tsrcsetAttr: 'data-srcset',\n\t\t\tsizesAttr: 'data-sizes',\n\t\t\t//preloadAfterLoad: false,\n\t\t\tminSize: 40,\n\t\t\tcustomMedia: {},\n\t\t\tinit: true,\n\t\t\texpFactor: 1.5,\n\t\t\thFac: 0.8,\n\t\t\tloadMode: 2,\n\t\t\tloadHidden: true,\n\t\t\tricTimeout: 0,\n\t\t\tthrottleDelay: 125,\n\t\t};\n\n\t\tlazySizesCfg = window.lazySizesConfig || window.lazysizesConfig || {};\n\n\t\tfor(prop in lazySizesDefaults){\n\t\t\tif(!(prop in lazySizesCfg)){\n\t\t\t\tlazySizesCfg[prop] = lazySizesDefaults[prop];\n\t\t\t}\n\t\t}\n\t})();\n\n\tif (!document || !document.getElementsByClassName) {\n\t\treturn {\n\t\t\tinit: function () {},\n\t\t\t/**\n\t\t\t * @type { LazySizesConfigPartial }\n\t\t\t */\n\t\t\tcfg: lazySizesCfg,\n\t\t\t/**\n\t\t\t * @type { true }\n\t\t\t */\n\t\t\tnoSupport: true,\n\t\t};\n\t}\n\n\tvar docElem = document.documentElement;\n\n\tvar supportPicture = window.HTMLPictureElement;\n\n\tvar _addEventListener = 'addEventListener';\n\n\tvar _getAttribute = 'getAttribute';\n\n\t/**\n\t * Update to bind to window because 'this' becomes null during SSR\n\t * builds.\n\t */\n\tvar addEventListener = window[_addEventListener].bind(window);\n\n\tvar setTimeout = window.setTimeout;\n\n\tvar requestAnimationFrame = window.requestAnimationFrame || setTimeout;\n\n\tvar requestIdleCallback = window.requestIdleCallback;\n\n\tvar regPicture = /^picture$/i;\n\n\tvar loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];\n\n\tvar regClassCache = {};\n\n\tvar forEach = Array.prototype.forEach;\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar hasClass = function(ele, cls) {\n\t\tif(!regClassCache[cls]){\n\t\t\tregClassCache[cls] = new RegExp('(\\\\s|^)'+cls+'(\\\\s|$)');\n\t\t}\n\t\treturn regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar addClass = function(ele, cls) {\n\t\tif (!hasClass(ele, cls)){\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);\n\t\t}\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar removeClass = function(ele, cls) {\n\t\tvar reg;\n\t\tif ((reg = hasClass(ele,cls))) {\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));\n\t\t}\n\t};\n\n\tvar addRemoveLoadEvents = function(dom, fn, add){\n\t\tvar action = add ? _addEventListener : 'removeEventListener';\n\t\tif(add){\n\t\t\taddRemoveLoadEvents(dom, fn);\n\t\t}\n\t\tloadEvents.forEach(function(evt){\n\t\t\tdom[action](evt, fn);\n\t\t});\n\t};\n\n\t/**\n\t * @param elem { Element }\n\t * @param name { string }\n\t * @param detail { any }\n\t * @param noBubbles { boolean }\n\t * @param noCancelable { boolean }\n\t * @returns { CustomEvent }\n\t */\n\tvar triggerEvent = function(elem, name, detail, noBubbles, noCancelable){\n\t\tvar event = document.createEvent('Event');\n\n\t\tif(!detail){\n\t\t\tdetail = {};\n\t\t}\n\n\t\tdetail.instance = lazysizes;\n\n\t\tevent.initEvent(name, !noBubbles, !noCancelable);\n\n\t\tevent.detail = detail;\n\n\t\telem.dispatchEvent(event);\n\t\treturn event;\n\t};\n\n\tvar updatePolyfill = function (el, full){\n\t\tvar polyfill;\n\t\tif( !supportPicture && ( polyfill = (window.picturefill || lazySizesCfg.pf) ) ){\n\t\t\tif(full && full.src && !el[_getAttribute]('srcset')){\n\t\t\t\tel.setAttribute('srcset', full.src);\n\t\t\t}\n\t\t\tpolyfill({reevaluate: true, elements: [el]});\n\t\t} else if(full && full.src){\n\t\t\tel.src = full.src;\n\t\t}\n\t};\n\n\tvar getCSS = function (elem, style){\n\t\treturn (getComputedStyle(elem, null) || {})[style];\n\t};\n\n\t/**\n\t *\n\t * @param elem { Element }\n\t * @param parent { Element }\n\t * @param [width] {number}\n\t * @returns {number}\n\t */\n\tvar getWidth = function(elem, parent, width){\n\t\twidth = width || elem.offsetWidth;\n\n\t\twhile(width < lazySizesCfg.minSize && parent && !elem._lazysizesWidth){\n\t\t\twidth = parent.offsetWidth;\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tvar rAF = (function(){\n\t\tvar running, waiting;\n\t\tvar firstFns = [];\n\t\tvar secondFns = [];\n\t\tvar fns = firstFns;\n\n\t\tvar run = function(){\n\t\t\tvar runFns = fns;\n\n\t\t\tfns = firstFns.length ? secondFns : firstFns;\n\n\t\t\trunning = true;\n\t\t\twaiting = false;\n\n\t\t\twhile(runFns.length){\n\t\t\t\trunFns.shift()();\n\t\t\t}\n\n\t\t\trunning = false;\n\t\t};\n\n\t\tvar rafBatch = function(fn, queue){\n\t\t\tif(running && !queue){\n\t\t\t\tfn.apply(this, arguments);\n\t\t\t} else {\n\t\t\t\tfns.push(fn);\n\n\t\t\t\tif(!waiting){\n\t\t\t\t\twaiting = true;\n\t\t\t\t\t(document.hidden ? setTimeout : requestAnimationFrame)(run);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\trafBatch._lsFlush = run;\n\n\t\treturn rafBatch;\n\t})();\n\n\tvar rAFIt = function(fn, simple){\n\t\treturn simple ?\n\t\t\tfunction() {\n\t\t\t\trAF(fn);\n\t\t\t} :\n\t\t\tfunction(){\n\t\t\t\tvar that = this;\n\t\t\t\tvar args = arguments;\n\t\t\t\trAF(function(){\n\t\t\t\t\tfn.apply(that, args);\n\t\t\t\t});\n\t\t\t}\n\t\t;\n\t};\n\n\tvar throttle = function(fn){\n\t\tvar running;\n\t\tvar lastTime = 0;\n\t\tvar gDelay = lazySizesCfg.throttleDelay;\n\t\tvar rICTimeout = lazySizesCfg.ricTimeout;\n\t\tvar run = function(){\n\t\t\trunning = false;\n\t\t\tlastTime = Date.now();\n\t\t\tfn();\n\t\t};\n\t\tvar idleCallback = requestIdleCallback && rICTimeout > 49 ?\n\t\t\tfunction(){\n\t\t\t\trequestIdleCallback(run, {timeout: rICTimeout});\n\n\t\t\t\tif(rICTimeout !== lazySizesCfg.ricTimeout){\n\t\t\t\t\trICTimeout = lazySizesCfg.ricTimeout;\n\t\t\t\t}\n\t\t\t} :\n\t\t\trAFIt(function(){\n\t\t\t\tsetTimeout(run);\n\t\t\t}, true)\n\t\t;\n\n\t\treturn function(isPriority){\n\t\t\tvar delay;\n\n\t\t\tif((isPriority = isPriority === true)){\n\t\t\t\trICTimeout = 33;\n\t\t\t}\n\n\t\t\tif(running){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trunning = true;\n\n\t\t\tdelay = gDelay - (Date.now() - lastTime);\n\n\t\t\tif(delay < 0){\n\t\t\t\tdelay = 0;\n\t\t\t}\n\n\t\t\tif(isPriority || delay < 9){\n\t\t\t\tidleCallback();\n\t\t\t} else {\n\t\t\t\tsetTimeout(idleCallback, delay);\n\t\t\t}\n\t\t};\n\t};\n\n\t//based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html\n\tvar debounce = function(func) {\n\t\tvar timeout, timestamp;\n\t\tvar wait = 99;\n\t\tvar run = function(){\n\t\t\ttimeout = null;\n\t\t\tfunc();\n\t\t};\n\t\tvar later = function() {\n\t\t\tvar last = Date.now() - timestamp;\n\n\t\t\tif (last < wait) {\n\t\t\t\tsetTimeout(later, wait - last);\n\t\t\t} else {\n\t\t\t\t(requestIdleCallback || run)(run);\n\t\t\t}\n\t\t};\n\n\t\treturn function() {\n\t\t\ttimestamp = Date.now();\n\n\t\t\tif (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t}\n\t\t};\n\t};\n\n\tvar loader = (function(){\n\t\tvar preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;\n\n\t\tvar eLvW, elvH, eLtop, eLleft, eLright, eLbottom, isBodyHidden;\n\n\t\tvar regImg = /^img$/i;\n\t\tvar regIframe = /^iframe$/i;\n\n\t\tvar supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));\n\n\t\tvar shrinkExpand = 0;\n\t\tvar currentExpand = 0;\n\n\t\tvar isLoading = 0;\n\t\tvar lowRuns = -1;\n\n\t\tvar resetPreloading = function(e){\n\t\t\tisLoading--;\n\t\t\tif(!e || isLoading < 0 || !e.target){\n\t\t\t\tisLoading = 0;\n\t\t\t}\n\t\t};\n\n\t\tvar isVisible = function (elem) {\n\t\t\tif (isBodyHidden == null) {\n\t\t\t\tisBodyHidden = getCSS(document.body, 'visibility') == 'hidden';\n\t\t\t}\n\n\t\t\treturn isBodyHidden || !(getCSS(elem.parentNode, 'visibility') == 'hidden' && getCSS(elem, 'visibility') == 'hidden');\n\t\t};\n\n\t\tvar isNestedVisible = function(elem, elemExpand){\n\t\t\tvar outerRect;\n\t\t\tvar parent = elem;\n\t\t\tvar visible = isVisible(elem);\n\n\t\t\teLtop -= elemExpand;\n\t\t\teLbottom += elemExpand;\n\t\t\teLleft -= elemExpand;\n\t\t\teLright += elemExpand;\n\n\t\t\twhile(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){\n\t\t\t\tvisible = ((getCSS(parent, 'opacity') || 1) > 0);\n\n\t\t\t\tif(visible && getCSS(parent, 'overflow') != 'visible'){\n\t\t\t\t\touterRect = parent.getBoundingClientRect();\n\t\t\t\t\tvisible = eLright > outerRect.left &&\n\t\t\t\t\t\teLleft < outerRect.right &&\n\t\t\t\t\t\teLbottom > outerRect.top - 1 &&\n\t\t\t\t\t\teLtop < outerRect.bottom + 1\n\t\t\t\t\t;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn visible;\n\t\t};\n\n\t\tvar checkElements = function() {\n\t\t\tvar eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal,\n\t\t\t\tbeforeExpandVal, defaultExpand, preloadExpand, hFac;\n\t\t\tvar lazyloadElems = lazysizes.elements;\n\n\t\t\tif((loadMode = lazySizesCfg.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){\n\n\t\t\t\ti = 0;\n\n\t\t\t\tlowRuns++;\n\n\t\t\t\tfor(; i < eLlen; i++){\n\n\t\t\t\t\tif(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}\n\n\t\t\t\t\tif(!supportScroll || (lazysizes.prematureUnveil && lazysizes.prematureUnveil(lazyloadElems[i]))){unveilElement(lazyloadElems[i]);continue;}\n\n\t\t\t\t\tif(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){\n\t\t\t\t\t\telemExpand = currentExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!defaultExpand) {\n\t\t\t\t\t\tdefaultExpand = (!lazySizesCfg.expand || lazySizesCfg.expand < 1) ?\n\t\t\t\t\t\t\tdocElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370 :\n\t\t\t\t\t\t\tlazySizesCfg.expand;\n\n\t\t\t\t\t\tlazysizes._defEx = defaultExpand;\n\n\t\t\t\t\t\tpreloadExpand = defaultExpand * lazySizesCfg.expFactor;\n\t\t\t\t\t\thFac = lazySizesCfg.hFac;\n\t\t\t\t\t\tisBodyHidden = null;\n\n\t\t\t\t\t\tif(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){\n\t\t\t\t\t\t\tcurrentExpand = preloadExpand;\n\t\t\t\t\t\t\tlowRuns = 0;\n\t\t\t\t\t\t} else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){\n\t\t\t\t\t\t\tcurrentExpand = defaultExpand;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcurrentExpand = shrinkExpand;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(beforeExpandVal !== elemExpand){\n\t\t\t\t\t\teLvW = innerWidth + (elemExpand * hFac);\n\t\t\t\t\t\telvH = innerHeight + elemExpand;\n\t\t\t\t\t\telemNegativeExpand = elemExpand * -1;\n\t\t\t\t\t\tbeforeExpandVal = elemExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\trect = lazyloadElems[i].getBoundingClientRect();\n\n\t\t\t\t\tif ((eLbottom = rect.bottom) >= elemNegativeExpand &&\n\t\t\t\t\t\t(eLtop = rect.top) <= elvH &&\n\t\t\t\t\t\t(eLright = rect.right) >= elemNegativeExpand * hFac &&\n\t\t\t\t\t\t(eLleft = rect.left) <= eLvW &&\n\t\t\t\t\t\t(eLbottom || eLright || eLleft || eLtop) &&\n\t\t\t\t\t\t(lazySizesCfg.loadHidden || isVisible(lazyloadElems[i])) &&\n\t\t\t\t\t\t((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){\n\t\t\t\t\t\tunveilElement(lazyloadElems[i]);\n\t\t\t\t\t\tloadedSomething = true;\n\t\t\t\t\t\tif(isLoading > 9){break;}\n\t\t\t\t\t} else if(!loadedSomething && isCompleted && !autoLoadElem &&\n\t\t\t\t\t\tisLoading < 4 && lowRuns < 4 && loadMode > 2 &&\n\t\t\t\t\t\t(preloadElems[0] || lazySizesCfg.preloadAfterLoad) &&\n\t\t\t\t\t\t(preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesCfg.sizesAttr) != 'auto')))){\n\t\t\t\t\t\tautoLoadElem = preloadElems[0] || lazyloadElems[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(autoLoadElem && !loadedSomething){\n\t\t\t\t\tunveilElement(autoLoadElem);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar throttledCheckElements = throttle(checkElements);\n\n\t\tvar switchLoadingClass = function(e){\n\t\t\tvar elem = e.target;\n\n\t\t\tif (elem._lazyCache) {\n\t\t\t\tdelete elem._lazyCache;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresetPreloading(e);\n\t\t\taddClass(elem, lazySizesCfg.loadedClass);\n\t\t\tremoveClass(elem, lazySizesCfg.loadingClass);\n\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass);\n\t\t\ttriggerEvent(elem, 'lazyloaded');\n\t\t};\n\t\tvar rafedSwitchLoadingClass = rAFIt(switchLoadingClass);\n\t\tvar rafSwitchLoadingClass = function(e){\n\t\t\trafedSwitchLoadingClass({target: e.target});\n\t\t};\n\n\t\tvar changeIframeSrc = function(elem, src){\n\t\t\tvar loadMode = elem.getAttribute('data-load-mode') || lazySizesCfg.iframeLoadMode;\n\n\t\t\t// loadMode can be also a string!\n\t\t\tif (loadMode == 0) {\n\t\t\t\telem.contentWindow.location.replace(src);\n\t\t\t} else if (loadMode == 1) {\n\t\t\t\telem.src = src;\n\t\t\t}\n\t\t};\n\n\t\tvar handleSources = function(source){\n\t\t\tvar customMedia;\n\n\t\t\tvar sourceSrcset = source[_getAttribute](lazySizesCfg.srcsetAttr);\n\n\t\t\tif( (customMedia = lazySizesCfg.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){\n\t\t\t\tsource.setAttribute('media', customMedia);\n\t\t\t}\n\n\t\t\tif(sourceSrcset){\n\t\t\t\tsource.setAttribute('srcset', sourceSrcset);\n\t\t\t}\n\t\t};\n\n\t\tvar lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){\n\t\t\tvar src, srcset, parent, isPicture, event, firesLoad;\n\n\t\t\tif(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){\n\n\t\t\t\tif(sizes){\n\t\t\t\t\tif(isAuto){\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.autosizesClass);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.setAttribute('sizes', sizes);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsrcset = elem[_getAttribute](lazySizesCfg.srcsetAttr);\n\t\t\t\tsrc = elem[_getAttribute](lazySizesCfg.srcAttr);\n\n\t\t\t\tif(isImg) {\n\t\t\t\t\tparent = elem.parentNode;\n\t\t\t\t\tisPicture = parent && regPicture.test(parent.nodeName || '');\n\t\t\t\t}\n\n\t\t\t\tfiresLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));\n\n\t\t\t\tevent = {target: elem};\n\n\t\t\t\taddClass(elem, lazySizesCfg.loadingClass);\n\n\t\t\t\tif(firesLoad){\n\t\t\t\t\tclearTimeout(resetPreloadingTimer);\n\t\t\t\t\tresetPreloadingTimer = setTimeout(resetPreloading, 2500);\n\t\t\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass, true);\n\t\t\t\t}\n\n\t\t\t\tif(isPicture){\n\t\t\t\t\tforEach.call(parent.getElementsByTagName('source'), handleSources);\n\t\t\t\t}\n\n\t\t\t\tif(srcset){\n\t\t\t\t\telem.setAttribute('srcset', srcset);\n\t\t\t\t} else if(src && !isPicture){\n\t\t\t\t\tif(regIframe.test(elem.nodeName)){\n\t\t\t\t\t\tchangeIframeSrc(elem, src);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.src = src;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(isImg && (srcset || isPicture)){\n\t\t\t\t\tupdatePolyfill(elem, {src: src});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(elem._lazyRace){\n\t\t\t\tdelete elem._lazyRace;\n\t\t\t}\n\t\t\tremoveClass(elem, lazySizesCfg.lazyClass);\n\n\t\t\trAF(function(){\n\t\t\t\t// Part of this can be removed as soon as this fix is older: https://bugs.chromium.org/p/chromium/issues/detail?id=7731 (2015)\n\t\t\t\tvar isLoaded = elem.complete && elem.naturalWidth > 1;\n\n\t\t\t\tif( !firesLoad || isLoaded){\n\t\t\t\t\tif (isLoaded) {\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.fastLoadedClass);\n\t\t\t\t\t}\n\t\t\t\t\tswitchLoadingClass(event);\n\t\t\t\t\telem._lazyCache = true;\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\tif ('_lazyCache' in elem) {\n\t\t\t\t\t\t\tdelete elem._lazyCache;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 9);\n\t\t\t\t}\n\t\t\t\tif (elem.loading == 'lazy') {\n\t\t\t\t\tisLoading--;\n\t\t\t\t}\n\t\t\t}, true);\n\t\t});\n\n\t\t/**\n\t\t *\n\t\t * @param elem { Element }\n\t\t */\n\t\tvar unveilElement = function (elem){\n\t\t\tif (elem._lazyRace) {return;}\n\t\t\tvar detail;\n\n\t\t\tvar isImg = regImg.test(elem.nodeName);\n\n\t\t\t//allow using sizes=\"auto\", but don't use. it's invalid. Use data-sizes=\"auto\" or a valid value for sizes instead (i.e.: sizes=\"80vw\")\n\t\t\tvar sizes = isImg && (elem[_getAttribute](lazySizesCfg.sizesAttr) || elem[_getAttribute]('sizes'));\n\t\t\tvar isAuto = sizes == 'auto';\n\n\t\t\tif( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesCfg.errorClass) && hasClass(elem, lazySizesCfg.lazyClass)){return;}\n\n\t\t\tdetail = triggerEvent(elem, 'lazyunveilread').detail;\n\n\t\t\tif(isAuto){\n\t\t\t\t autoSizer.updateElem(elem, true, elem.offsetWidth);\n\t\t\t}\n\n\t\t\telem._lazyRace = true;\n\t\t\tisLoading++;\n\n\t\t\tlazyUnveil(elem, detail, isAuto, sizes, isImg);\n\t\t};\n\n\t\tvar afterScroll = debounce(function(){\n\t\t\tlazySizesCfg.loadMode = 3;\n\t\t\tthrottledCheckElements();\n\t\t});\n\n\t\tvar altLoadmodeScrollListner = function(){\n\t\t\tif(lazySizesCfg.loadMode == 3){\n\t\t\t\tlazySizesCfg.loadMode = 2;\n\t\t\t}\n\t\t\tafterScroll();\n\t\t};\n\n\t\tvar onload = function(){\n\t\t\tif(isCompleted){return;}\n\t\t\tif(Date.now() - started < 999){\n\t\t\t\tsetTimeout(onload, 999);\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\tisCompleted = true;\n\n\t\t\tlazySizesCfg.loadMode = 3;\n\n\t\t\tthrottledCheckElements();\n\n\t\t\taddEventListener('scroll', altLoadmodeScrollListner, true);\n\t\t};\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tstarted = Date.now();\n\n\t\t\t\tlazysizes.elements = document.getElementsByClassName(lazySizesCfg.lazyClass);\n\t\t\t\tpreloadElems = document.getElementsByClassName(lazySizesCfg.lazyClass + ' ' + lazySizesCfg.preloadClass);\n\n\t\t\t\taddEventListener('scroll', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('resize', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('pageshow', function (e) {\n\t\t\t\t\tif (e.persisted) {\n\t\t\t\t\t\tvar loadingElements = document.querySelectorAll('.' + lazySizesCfg.loadingClass);\n\n\t\t\t\t\t\tif (loadingElements.length && loadingElements.forEach) {\n\t\t\t\t\t\t\trequestAnimationFrame(function () {\n\t\t\t\t\t\t\t\tloadingElements.forEach( function (img) {\n\t\t\t\t\t\t\t\t\tif (img.complete) {\n\t\t\t\t\t\t\t\t\t\tunveilElement(img);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\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\tif(window.MutationObserver){\n\t\t\t\t\tnew MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );\n\t\t\t\t} else {\n\t\t\t\t\tdocElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);\n\t\t\t\t\tdocElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);\n\t\t\t\t\tsetInterval(throttledCheckElements, 999);\n\t\t\t\t}\n\n\t\t\t\taddEventListener('hashchange', throttledCheckElements, true);\n\n\t\t\t\t//, 'fullscreenchange'\n\t\t\t\t['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend'].forEach(function(name){\n\t\t\t\t\tdocument[_addEventListener](name, throttledCheckElements, true);\n\t\t\t\t});\n\n\t\t\t\tif((/d$|^c/.test(document.readyState))){\n\t\t\t\t\tonload();\n\t\t\t\t} else {\n\t\t\t\t\taddEventListener('load', onload);\n\t\t\t\t\tdocument[_addEventListener]('DOMContentLoaded', throttledCheckElements);\n\t\t\t\t\tsetTimeout(onload, 20000);\n\t\t\t\t}\n\n\t\t\t\tif(lazysizes.elements.length){\n\t\t\t\t\tcheckElements();\n\t\t\t\t\trAF._lsFlush();\n\t\t\t\t} else {\n\t\t\t\t\tthrottledCheckElements();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcheckElems: throttledCheckElements,\n\t\t\tunveil: unveilElement,\n\t\t\t_aLSL: altLoadmodeScrollListner,\n\t\t};\n\t})();\n\n\n\tvar autoSizer = (function(){\n\t\tvar autosizesElems;\n\n\t\tvar sizeElement = rAFIt(function(elem, parent, event, width){\n\t\t\tvar sources, i, len;\n\t\t\telem._lazysizesWidth = width;\n\t\t\twidth += 'px';\n\n\t\t\telem.setAttribute('sizes', width);\n\n\t\t\tif(regPicture.test(parent.nodeName || '')){\n\t\t\t\tsources = parent.getElementsByTagName('source');\n\t\t\t\tfor(i = 0, len = sources.length; i < len; i++){\n\t\t\t\t\tsources[i].setAttribute('sizes', width);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!event.detail.dataAttr){\n\t\t\t\tupdatePolyfill(elem, event.detail);\n\t\t\t}\n\t\t});\n\t\t/**\n\t\t *\n\t\t * @param elem {Element}\n\t\t * @param dataAttr\n\t\t * @param [width] { number }\n\t\t */\n\t\tvar getSizeElement = function (elem, dataAttr, width){\n\t\t\tvar event;\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif(parent){\n\t\t\t\twidth = getWidth(elem, parent, width);\n\t\t\t\tevent = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});\n\n\t\t\t\tif(!event.defaultPrevented){\n\t\t\t\t\twidth = event.detail.width;\n\n\t\t\t\t\tif(width && width !== elem._lazysizesWidth){\n\t\t\t\t\t\tsizeElement(elem, parent, event, width);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar updateElementsSizes = function(){\n\t\t\tvar i;\n\t\t\tvar len = autosizesElems.length;\n\t\t\tif(len){\n\t\t\t\ti = 0;\n\n\t\t\t\tfor(; i < len; i++){\n\t\t\t\t\tgetSizeElement(autosizesElems[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar debouncedUpdateElementsSizes = debounce(updateElementsSizes);\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tautosizesElems = document.getElementsByClassName(lazySizesCfg.autosizesClass);\n\t\t\t\taddEventListener('resize', debouncedUpdateElementsSizes);\n\t\t\t},\n\t\t\tcheckElems: debouncedUpdateElementsSizes,\n\t\t\tupdateElem: getSizeElement\n\t\t};\n\t})();\n\n\tvar init = function(){\n\t\tif(!init.i && document.getElementsByClassName){\n\t\t\tinit.i = true;\n\t\t\tautoSizer._();\n\t\t\tloader._();\n\t\t}\n\t};\n\n\tsetTimeout(function(){\n\t\tif(lazySizesCfg.init){\n\t\t\tinit();\n\t\t}\n\t});\n\n\tlazysizes = {\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tcfg: lazySizesCfg,\n\t\tautoSizer: autoSizer,\n\t\tloader: loader,\n\t\tinit: init,\n\t\tuP: updatePolyfill,\n\t\taC: addClass,\n\t\trC: removeClass,\n\t\thC: hasClass,\n\t\tfire: triggerEvent,\n\t\tgW: getWidth,\n\t\trAF: rAF,\n\t};\n\n\treturn lazysizes;\n}\n));\n","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw new Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw new Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n return desc.value;\n };\n }\n return _get.apply(this, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\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 = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(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 = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(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 = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"./\" + ({\"22\":\"modules/slider\",\"79\":\"modules/quiz\",\"114\":\"modules/poll\",\"183\":\"modules/gridColumnList\",\"276\":\"modules/quickstart\",\"297\":\"modules/filterableList\",\"344\":\"modules/dropdown\",\"363\":\"modules/generateAnchorList\",\"370\":\"modules/filterEducatorController\",\"388\":\"modules/vimeo\",\"391\":\"modules/decisionTree\",\"399\":\"modules/tabs\",\"426\":\"polyfills/url\",\"448\":\"polyfills/objectFit\",\"459\":\"modules/gallery\",\"502\":\"polyfills/fetch\",\"530\":\"modules/jquery\",\"641\":\"modules/feedback\",\"679\":\"polyfills/intersectionobserver\",\"721\":\"polyfills/proxy\",\"802\":\"modules/console\",\"825\":\"modules/accordion\",\"838\":\"polyfills/abortController\",\"878\":\"modules/tooltip\",\"884\":\"modules/videoGallery\",\"887\":\"modules/tripCalculator\"}[chunkId] || chunkId) + \".bundle.js\";\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 = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(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 = \"/scripts/\";","// 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\t826: 0\n};\n\n__webpack_require__.f.j = function(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(function(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 = function(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 = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\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(function(id) { return 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[\"webpackChunkstl_2021\"] = self[\"webpackChunkstl_2021\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","/**\n * @this {Promise}\n */\nfunction finallyConstructor(callback) {\n var constructor = this.constructor;\n return this.then(\n function(value) {\n // @ts-ignore\n return constructor.resolve(callback()).then(function() {\n return value;\n });\n },\n function(reason) {\n // @ts-ignore\n return constructor.resolve(callback()).then(function() {\n // @ts-ignore\n return constructor.reject(reason);\n });\n }\n );\n}\n\nexport default finallyConstructor;\n","function allSettled(arr) {\n var P = this;\n return new P(function(resolve, reject) {\n if (!(arr && typeof arr.length !== 'undefined')) {\n return reject(\n new TypeError(\n typeof arr +\n ' ' +\n arr +\n ' is not iterable(cannot read property Symbol(Symbol.iterator))'\n )\n );\n }\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n\n function res(i, val) {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(\n val,\n function(val) {\n res(i, val);\n },\n function(e) {\n args[i] = { status: 'rejected', reason: e };\n if (--remaining === 0) {\n resolve(args);\n }\n }\n );\n return;\n }\n }\n args[i] = { status: 'fulfilled', value: val };\n if (--remaining === 0) {\n resolve(args);\n }\n }\n\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n}\n\nexport default allSettled;\n","/**\n * @constructor\n */\nfunction AggregateError(errors, message) {\n (this.name = 'AggregateError'), (this.errors = errors);\n this.message = message || '';\n}\nAggregateError.prototype = Error.prototype;\n\nfunction any(arr) {\n var P = this;\n return new P(function(resolve, reject) {\n if (!(arr && typeof arr.length !== 'undefined')) {\n return reject(new TypeError('Promise.any accepts an array'));\n }\n\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return reject();\n\n var rejectionReasons = [];\n for (var i = 0; i < args.length; i++) {\n try {\n P.resolve(args[i])\n .then(resolve)\n .catch(function(error) {\n rejectionReasons.push(error);\n if (rejectionReasons.length === args.length) {\n reject(\n new AggregateError(\n rejectionReasons,\n 'All promises were rejected'\n )\n );\n }\n });\n } catch (ex) {\n reject(ex);\n }\n }\n });\n}\n\nexport default any;\n","import promiseFinally from './finally';\nimport allSettled from './allSettled';\nimport any from './any';\n\n// Store setTimeout reference so promise-polyfill will be unaffected by\n// other code modifying setTimeout (like sinon.useFakeTimers())\nvar setTimeoutFunc = setTimeout;\n\nfunction isArray(x) {\n return Boolean(x && typeof x.length !== 'undefined');\n}\n\nfunction noop() {}\n\n// Polyfill for Function.prototype.bind\nfunction bind(fn, thisArg) {\n return function() {\n fn.apply(thisArg, arguments);\n };\n}\n\n/**\n * @constructor\n * @param {Function} fn\n */\nfunction Promise(fn) {\n if (!(this instanceof Promise))\n throw new TypeError('Promises must be constructed via new');\n if (typeof fn !== 'function') throw new TypeError('not a function');\n /** @type {!number} */\n this._state = 0;\n /** @type {!boolean} */\n this._handled = false;\n /** @type {Promise|undefined} */\n this._value = undefined;\n /** @type {!Array} */\n this._deferreds = [];\n\n doResolve(fn, this);\n}\n\nfunction handle(self, deferred) {\n while (self._state === 3) {\n self = self._value;\n }\n if (self._state === 0) {\n self._deferreds.push(deferred);\n return;\n }\n self._handled = true;\n Promise._immediateFn(function() {\n var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n (self._state === 1 ? resolve : reject)(deferred.promise, self._value);\n return;\n }\n var ret;\n try {\n ret = cb(self._value);\n } catch (e) {\n reject(deferred.promise, e);\n return;\n }\n resolve(deferred.promise, ret);\n });\n}\n\nfunction resolve(self, newValue) {\n try {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self)\n throw new TypeError('A promise cannot be resolved with itself.');\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = newValue.then;\n if (newValue instanceof Promise) {\n self._state = 3;\n self._value = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(bind(then, newValue), self);\n return;\n }\n }\n self._state = 1;\n self._value = newValue;\n finale(self);\n } catch (e) {\n reject(self, e);\n }\n}\n\nfunction reject(self, newValue) {\n self._state = 2;\n self._value = newValue;\n finale(self);\n}\n\nfunction finale(self) {\n if (self._state === 2 && self._deferreds.length === 0) {\n Promise._immediateFn(function() {\n if (!self._handled) {\n Promise._unhandledRejectionFn(self._value);\n }\n });\n }\n\n for (var i = 0, len = self._deferreds.length; i < len; i++) {\n handle(self, self._deferreds[i]);\n }\n self._deferreds = null;\n}\n\n/**\n * @constructor\n */\nfunction Handler(onFulfilled, onRejected, promise) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, self) {\n var done = false;\n try {\n fn(\n function(value) {\n if (done) return;\n done = true;\n resolve(self, value);\n },\n function(reason) {\n if (done) return;\n done = true;\n reject(self, reason);\n }\n );\n } catch (ex) {\n if (done) return;\n done = true;\n reject(self, ex);\n }\n}\n\nPromise.prototype['catch'] = function(onRejected) {\n return this.then(null, onRejected);\n};\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n // @ts-ignore\n var prom = new this.constructor(noop);\n\n handle(this, new Handler(onFulfilled, onRejected, prom));\n return prom;\n};\n\nPromise.prototype['finally'] = promiseFinally;\n\nPromise.all = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!isArray(arr)) {\n return reject(new TypeError('Promise.all accepts an array'));\n }\n\n var args = Array.prototype.slice.call(arr);\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n\n function res(i, val) {\n try {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n var then = val.then;\n if (typeof then === 'function') {\n then.call(\n val,\n function(val) {\n res(i, val);\n },\n reject\n );\n return;\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n } catch (ex) {\n reject(ex);\n }\n }\n\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.any = any;\n\nPromise.allSettled = allSettled;\n\nPromise.resolve = function(value) {\n if (value && typeof value === 'object' && value.constructor === Promise) {\n return value;\n }\n\n return new Promise(function(resolve) {\n resolve(value);\n });\n};\n\nPromise.reject = function(value) {\n return new Promise(function(resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function(arr) {\n return new Promise(function(resolve, reject) {\n if (!isArray(arr)) {\n return reject(new TypeError('Promise.race accepts an array'));\n }\n\n for (var i = 0, len = arr.length; i < len; i++) {\n Promise.resolve(arr[i]).then(resolve, reject);\n }\n });\n};\n\n// Use polyfill for setImmediate for performance gains\nPromise._immediateFn =\n // @ts-ignore\n (typeof setImmediate === 'function' &&\n function(fn) {\n // @ts-ignore\n setImmediate(fn);\n }) ||\n function(fn) {\n setTimeoutFunc(fn, 0);\n };\n\nPromise._unhandledRejectionFn = function _unhandledRejectionFn(err) {\n if (typeof console !== 'undefined' && console) {\n console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n }\n};\n\nexport default Promise;\n","import Promise from './index';\nimport promiseFinally from './finally';\nimport allSettled from './allSettled';\nimport any from './any';\n\n/** @suppress {undefinedVars} */\nvar globalNS = (function() {\n // the only reliable means to get the global object is\n // `Function('return this')()`\n // However, this causes CSP violations in Chrome apps.\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('unable to locate global object');\n})();\n\n// Expose the polyfill if Promise is undefined or set to a\n// non-function value. The latter can be due to a named HTMLElement\n// being exposed by browsers for legacy reasons.\n// https://github.com/taylorhakes/promise-polyfill/issues/114\nif (typeof globalNS['Promise'] !== 'function') {\n globalNS['Promise'] = Promise;\n} else {\n if (!globalNS.Promise.prototype['finally']) {\n globalNS.Promise.prototype['finally'] = promiseFinally;\n }\n if (!globalNS.Promise.allSettled) {\n globalNS.Promise.allSettled = allSettled;\n }\n if (!globalNS.Promise.any) {\n globalNS.Promise.any = any;\n }\n}\n","export default class App {\r\n\tconstructor() {\r\n\t\tthis._resizeFunctionsArr = [];\r\n\t\tthis._resizeFunctions = {};\r\n\t\tthis._resizeFunctionsCounter = 0;\r\n\t\tthis._resizeTimeout = null;\r\n\t\tthis.resizeThrottle = false;\r\n\r\n\t\tthis._scrollFunctionsArr = [];\r\n\t\tthis._scrollFunctions = {};\r\n\t\tthis._scrollFunctionsCounter = 0;\r\n\t\tthis._scrollTimeout = null;\r\n\t\tthis.scrollThrottle = false;\r\n\r\n\t\tthis._resizeAnimationPreventerTimeout = 200;\r\n\r\n\t\tthis.newPageWarning = true;\r\n\r\n\t\tthis.selectricCBs = [];\r\n\r\n\t\tthis.breakpoints = {\r\n\t\t\txs: {\r\n\t\t\t\tgutter: 40,\r\n\t\t\t\tsize: 0,\r\n\t\t\t},\r\n\t\t\tsm: {\r\n\t\t\t\tgutter: 40,\r\n\t\t\t\tsize: 375,\r\n\t\t\t},\r\n\t\t\tmd: {\r\n\t\t\t\tgutter: 40,\r\n\t\t\t\tsize: 768,\r\n\t\t\t},\r\n\t\t\tml: {\r\n\t\t\t\tgutter: 40,\r\n\t\t\t\tsize: 1024,\r\n\t\t\t},\r\n\t\t\tlg: {\r\n\t\t\t\tgutter: 40,\r\n\t\t\t\tsize: 1224,\r\n\t\t\t},\r\n\t\t}\r\n\r\n\t\tthis.animationDuration = 300;\r\n\t}\r\n\r\n\tinit() {\r\n\t\tthis.detectBrowser();\r\n\t\tthis.setEventListeners();\r\n\t\tthis.fullHeightListener();\r\n\t\tthis.resizeAnimationPreventer();\r\n\t\tthis.initCSSBreakpoints();\r\n\t\tthis.addNewWindowTitles();\r\n\t\tthis.addNoOpener();\r\n\t\tthis.addAnchorEnhancement();\r\n\t\tthis.initSelectric();\r\n\t\tthis.initTippy();\r\n\t\tthis.initCopy();\r\n\t\tthis.initScrollTo();\r\n\t\tthis.initToTop();\r\n\t\t// this.initScrollToTop();\r\n\t\tthis.initPrintListener();\r\n\t\tthis.initLabelClick();\r\n\t\t// this.initSlimSelect();\r\n\t\t\r\n\t\treturn true;\r\n\t}\r\n\r\n\tsetEventListeners() {\r\n\t\twindow.addEventListener('resize', this.resize.bind(this), {\r\n\t\t\tpassive: true\r\n\t\t});\r\n\t\tdocument.addEventListener('scroll', this.scroll.bind(this), {\r\n\t\t\tpassive: true\r\n\t\t});\r\n\r\n\t\tdocument.querySelectorAll('main form label').forEach(label => {\r\n\t\t\tlabel.addEventListener('keydown', e => {\r\n\t\t\t\tif (e.key.toLowerCase().substr(0, 3) == 'ent') {\r\n\t\t\t\t\tlabel.click();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tArray.from(document.querySelectorAll('a')).filter(a => !a.hasAttribute('href')).forEach(a => {\r\n\t\t\tif (!a.hasAttribute('tabindex')) {\r\n\t\t\t\ta.setAttribute('tabindex', '0');\r\n\t\t\t}\r\n\r\n\t\t\ta.addEventListener('keydown', e => {\r\n\t\t\t\tif (e.key.toLowerCase().substr(0, 3) == 'ent') {\r\n\t\t\t\t\ta.click();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tresize() {\r\n\t\tconst runFunctions = () => {\r\n\t\t\tfor (let i = 0, length = this._resizeFunctionsArr.length; i < length; i++) {\r\n\t\t\t\tthis._resizeFunctionsArr[i]();\r\n\t\t\t}\r\n\t\t};\r\n\t\tif (this._resizeTimeout !== null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\trunFunctions();\r\n\t\tif (this.resizeThrottle) {\r\n\t\t\tthis._resizeTimeout = setTimeout(() => {\r\n\t\t\t\tthis._resizeTimeout = null;\r\n\t\t\t\trunFunctions();\r\n\t\t\t}, this.resizeThrottle);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @param {function} func Function to be called on a resize event\r\n\t */\r\n\tregisterResizeEvent(func) {\r\n\t\tthis._resizeFunctions[this._resizeFunctionsCounter] = func;\r\n\t\tthis._resizeFunctionsCounter = this._resizeFunctionsCounter + 1;\r\n\r\n\t\t// Rebuild array of events\r\n\t\tthis._resizeFunctionsArr = [];\r\n\t\tObject.keys(this._resizeFunctions).forEach(key => {\r\n\t\t\tthis._resizeFunctionsArr.push(this._resizeFunctions[key]);\r\n\t\t});\r\n\r\n\t\treturn this._resizeFunctionsCounter - 1;\r\n\t}\r\n\r\n\t/**\r\n\t * @param {Number} func Function's ID to be removed from the resize functions\r\n\t */\r\n\tunregisterResizeEvent(func) {\r\n\t\tif (this._resizeFunctions[func]) {\r\n\t\t\t// Found\r\n\t\t\tdelete this._resizeFunctions[func];\r\n\r\n\t\t\t// Rebuild array of events\r\n\t\t\tthis._resizeFunctionsArr = [];\r\n\t\t\tObject.keys(this._resizeFunctions).forEach(key => {\r\n\t\t\t\tthis._resizeFunctionsArr.push(this._resizeFunctions[key]);\r\n\t\t\t});\r\n\r\n\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\t// Not found\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @description Fires all registered events for a scroll event in the document\r\n\t */\r\n\tscroll() {\r\n\t\tconst runFunctions = () => {\r\n\t\t\tfor (let i = 0, length = this._scrollFunctionsArr.length; i < length; i++) {\r\n\t\t\t\tthis._scrollFunctionsArr[i]();\r\n\t\t\t}\r\n\t\t};\r\n\t\tif (this._scrollTimeout !== null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\trunFunctions();\r\n\t\tif (this.scrollThrottle) {\r\n\t\t\tthis._scrollTimeout = setTimeout(() => {\r\n\t\t\t\tthis._scrollTimeout = null;\r\n\t\t\t\trunFunctions();\r\n\t\t\t}, this.scrollThrottle);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @param {function} func Function to be called on a scroll event\r\n\t */\r\n\tregisterScrollEvent(func) {\r\n\t\tthis._scrollFunctions[this._scrollFunctionsCounter] = func;\r\n\t\tthis._scrollFunctionsCounter = this._scrollFunctionsCounter + 1;\r\n\r\n\t\t// Rebuild array of events\r\n\t\tthis._scrollFunctionsArr = [];\r\n\t\tObject.keys(this._scrollFunctions).forEach(key => {\r\n\t\t\tthis._scrollFunctionsArr.push(this._scrollFunctions[key]);\r\n\t\t});\r\n\r\n\t\treturn this._scrollFunctionsCounter - 1;\r\n\t}\r\n\r\n\t/**\r\n\t * @param {Number} func Function's ID to be removed from the scroll functions\r\n\t */\r\n\tunregisterScrollEvent(func) {\r\n\t\tif (this._scrollFunctions[func]) {\r\n\t\t\t// Found\r\n\t\t\tdelete this._scrollFunctions[func];\r\n\r\n\t\t\t// Rebuild array of events\r\n\t\t\tthis._scrollFunctionsArr = [];\r\n\t\t\tObject.keys(this._scrollFunctions).forEach(key => {\r\n\t\t\t\tthis._scrollFunctionsArr.push(this._scrollFunctions[key]);\r\n\t\t\t});\r\n\r\n\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\t// Not found\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @description Adds a 'preventAnimations' class to the html tag on resizing\r\n\t */\r\n\tresizeAnimationPreventer() {\r\n\t\tthis.resizeTimer = null;\r\n\t\tthis.windowWidth = window.innerWidth;\r\n\t\tthis.registerResizeEvent(() => {\r\n\t\t\tif (window.innerWidth !== this.windowWidth) {\r\n\t\t\t\tdocument.documentElement.classList.add('preventAnimations');\r\n\t\t\t\tclearTimeout(this.resizeTimer);\r\n\r\n\t\t\t\tthis.resizeTimer = setTimeout(() => {\r\n\t\t\t\t\tdocument.documentElement.classList.remove('preventAnimations');\r\n\t\t\t\t}, this._resizeAnimationPreventerTimeout);\r\n\r\n\t\t\t\tthis.windowWidth = window.innerWidth;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * @description Adds a CSS variable '--fullHeight' to the html tag that creates an 'accurate 100vh'\r\n\t */\r\n\tfullHeightListener() {\r\n\t\tconst fullHeight = () => {\r\n\t\t\tdocument.documentElement.style.setProperty('--fullHeight', `${window.innerHeight}px`);\r\n\t\t};\r\n\t\tthis.registerResizeEvent(fullHeight);\r\n\t\tfullHeight();\r\n\t}\r\n\r\n\t/**\r\n\t * @description Adds a browser-specific class to the html tag\r\n\t */\r\n\tdetectBrowser() {\r\n\t\t// Opera 8.0+\r\n\t\tlet isOpera = (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;\r\n\r\n\t\t// Firefox 1.0+\r\n\t\tlet isFirefox = typeof InstallTrigger !== 'undefined';\r\n\r\n\t\tlet isIphone = window.navigator.userAgent.match(/iPhone/i);\r\n\r\n\t\tlet isIpad = window.navigator.userAgent.match(/iPad/i);\r\n\r\n\t\tlet isSafari = window.navigator.userAgent.match(/Safari/i) && (window.navigator.userAgent.match(/iPhone/i) || window.navigator.userAgent.match(/iPad/i) || window.navigator.userAgent.match(/macOS/i));\r\n\r\n\t\t// Internet Explorer 6-11\r\n\t\tlet isIE = /*@cc_on!@*/ false || !!document.documentMode;\r\n\r\n\t\t// Edge 20+\r\n\t\tlet isEdge = !isIE && !!window.StyleMedia;\r\n\r\n\t\t// Chrome\r\n\t\tlet isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);\r\n\r\n\t\t// Blink engine detection\r\n\t\tlet isBlink = (isChrome || isOpera) && !!window.CSS;\r\n\r\n\t\tif (isOpera) {\r\n\t\t\tdocument.documentElement.classList.add('opera');\r\n\t\t}\r\n\r\n\t\tif (isFirefox) {\r\n\t\t\tdocument.documentElement.classList.add('firefox');\r\n\t\t}\r\n\r\n\t\tif (isSafari) {\r\n\t\t\tdocument.documentElement.classList.add('safari');\r\n\t\t}\r\n\r\n\t\tif (isIphone) {\r\n\t\t\tdocument.documentElement.classList.add('iphone');\r\n\t\t}\r\n\r\n\t\tif (isIpad) {\r\n\t\t\tdocument.documentElement.classList.add('ipad');\r\n\t\t}\r\n\r\n\t\tif (isIE) {\r\n\t\t\tdocument.documentElement.classList.add('ie');\r\n\t\t}\r\n\r\n\t\tif (isEdge) {\r\n\t\t\tdocument.documentElement.classList.add('edge');\r\n\t\t}\r\n\r\n\t\tif (isChrome) {\r\n\t\t\tdocument.documentElement.classList.add('chrome');\r\n\t\t}\r\n\r\n\t\tif (isBlink) {\r\n\t\t\tdocument.documentElement.classList.add('blink');\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @description Attempts to load bootstrap breakpoint settings from the CSS variables\r\n\t */\r\n\tinitCSSBreakpoints() {\r\n\t\tif (window.getComputedStyle) {\r\n\t\t\tconst documentStyling = getComputedStyle(document.documentElement);\r\n\t\t\tObject.keys(this.breakpoints).forEach(breakpoint => {\r\n\t\t\t\tif (documentStyling.getPropertyValue(`--breakpoint-${breakpoint}-size`)\r\n\t\t\t\t\t&& parseInt(documentStyling.getPropertyValue(`--breakpoint-${breakpoint}-size`)) !== NaN) {\r\n\t\t\t\t\tthis.breakpoints[breakpoint].size = parseInt(documentStyling.getPropertyValue(`--breakpoint-${breakpoint}-size`));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (documentStyling.getPropertyValue(`--breakpoint-${breakpoint}-gutter`)\r\n\t\t\t\t\t&& parseInt(documentStyling.getPropertyValue(`--breakpoint-${breakpoint}-gutter`)) !== NaN) {\r\n\t\t\t\t\tthis.breakpoints[breakpoint].gutter = parseInt(documentStyling.getPropertyValue(`--breakpoint-${breakpoint}-gutter`));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// Also check if we can save animationDuration\r\n\t\t\tif (documentStyling.getPropertyValue(`--animationDuration`)\r\n\t\t\t\t\t&& parseInt(documentStyling.getPropertyValue(`--animationDuration`)) !== NaN) {\r\n\t\t\t\tthis.animationDuration = parseInt(documentStyling.getPropertyValue(`--animationDuration`));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @description Appends text to a tags that tells the user it'll open in a new tab/window. Add a tag with `data-new-window-text` property to change the appended text\r\n\t */\r\n\taddNewWindowTitles() {\r\n\t\tlet text = '(opent in een nieuw scherm)';\r\n\t\tif (document.querySelector('[data-new-window-text]')) {\r\n\t\t\ttext = document.querySelector('[data-new-window-text]').dataset.newWindowText;\r\n\t\t}\r\n\r\n\t\tdocument.querySelectorAll('a[target=\"_blank\"]').forEach(a => {\r\n\t\t\ta.setAttribute('title', `${a.getAttribute('title') ? a.getAttribute('title') : ''} ${text}`.trim().replace(/ /g, \" \"));\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * @description Adds the attribute 'rel' set to 'noopener' on external links; This is for security reasons/best practices\r\n\t */\r\n\taddNoOpener() {\r\n\t\tdocument.querySelectorAll('a').forEach(a => {\r\n\t\t\tif (a.href && !a.hasAttribute('rel')) {\r\n\t\t\t\tif (a.hostname != location.hostname) {\r\n\t\t\t\t\ta.setAttribute('rel', 'noopener');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * @description Makes sure anchored tags get a class for it, so offsetting scroll is possible. Also edit anchor links to get the [data-scroll-to] attribute\r\n\t */\r\n\taddAnchorEnhancement() {\r\n\t\t// Enhance anchors\r\n\t\tArray.from(document.querySelectorAll('a[id]')).filter(a => !a.href).forEach(a => {\r\n\t\t\t// Get parent element, add 'anchored' class\r\n\t\t\tif (a.parentElement) {\r\n\t\t\t\ta.parentElement.classList.add('anchored');\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Enhance anchor links\r\n\t\tArray.from(document.querySelectorAll('a[href]')).filter(a => a.hash && a.hash != '' && a.getAttribute('href').substr(0, 1) == '#' && !a.dataset.scrollTo).forEach(a => {\r\n\t\t\ta.dataset.scrollTo = a.hash;\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * @description Scroll element into view\r\n\t */\r\n\tinitScrollTo() {\r\n\t\tif (window.scrollTo) {\r\n\t\t\tdocument.querySelectorAll('[data-scroll-to]').forEach(el => {\r\n\t\t\t\tel.addEventListener('click', e => {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tconst target = document.querySelector(el.dataset.scrollTo);\r\n\t\t\t\t\tconsole.log(target);\r\n\t\r\n\t\t\t\t\tconst scrollPosition = this.elementCoords(target).top - (window.innerWidth > this.breakpoints.md.size ? 150 : 70);\r\n\t\t\t\t\twindow.scrollTo({\r\n\t\t\t\t\t\ttop: scrollPosition,\r\n\t\t\t\t\t\tbehavior: 'smooth',\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tscrollTo(selector) {\r\n\t\tlet target;\r\n\t\tif (typeof selector == 'string') {\r\n\t\t\ttarget = document.querySelector(selector);\r\n\t\t} else {\r\n\t\t\ttarget = selector;\r\n\t\t}\r\n\t\r\n\t\tif (target) {\r\n\t\t\tconst scrollPosition = this.elementCoords(target).top - (window.innerWidth > this.breakpoints.md.size ? 150 : 70);\r\n\t\t\twindow.scrollTo({\r\n\t\t\t\ttop: scrollPosition,\r\n\t\t\t\tbehavior: 'smooth',\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @description Basic random number generator\r\n\t * @param {Number} min \r\n\t * @param {Number} max \r\n\t * @returns {Number}\r\n\t */\r\n\trandom(min, max) {\r\n\t\treturn Math.floor(Math.random() * (max - min + 1) + min);\r\n\t}\r\n\r\n\t/**\r\n\t * @description Basic random string generator\r\n\t * @param {Number} length\r\n\t * @returns {String}\r\n\t */\r\n\trandomString(length) {\r\n\t\tlet result = '';\r\n\t\tconst characters = 'AB CDE FG HIJKLM NO PQRST UVWXYZa bcde fghi jklmnop qrstuvwx yz0 12345 6789';\r\n\t\tconst charactersLength = characters.length;\r\n\t\tfor (let i = 0; i < length; i++) {\r\n\t\t \tresult += characters.charAt(Math.floor(Math.random() * charactersLength));\r\n\t \t}\r\n\t \treturn result.trim().replace(/\\s\\s/g, ' ');\r\n\t}\r\n\r\n\tuuid() {\r\n\t\tlet\r\n\t\t\td = new Date().getTime(),\r\n\t\t\td2 = (performance && performance.now && (performance.now() * 1000)) || 0;\r\n\t\treturn 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\r\n\t\t\tlet r = Math.random() * 16;\r\n\t\t\tif (d > 0) {\r\n\t\t\t\tr = (d + r) % 16 | 0;\r\n\t\t\t\td = Math.floor(d / 16);\r\n\t\t\t} else {\r\n\t\t\t\tr = (d2 + r) % 16 | 0;\r\n\t\t\t\td2 = Math.floor(d2 / 16);\r\n\t\t\t}\r\n\t\t\treturn (c == 'x' ? r : (r & 0x7 | 0x8)).toString(16);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * @description Retrieves absolute position of an element relative to the page\r\n\t * @param {HTMLElement} el \r\n\t * @returns {Object}\r\n\t */\r\n\telementCoords(el) {\r\n\t\tconst box = el.getBoundingClientRect();\r\n\r\n\t\tconst body = document.body;\r\n\t\tconst docEl = document.documentElement;\r\n\r\n\t\tconst scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop;\r\n\t\tconst scrollLeft = window.pageXOffset || docEl.scrollLeft || body.scrollLeft;\r\n\r\n\t\tconst clientTop = docEl.clientTop || body.clientTop || 0;\r\n\t\tconst clientLeft = docEl.clientLeft || body.clientLeft || 0;\r\n\r\n\t\tconst top = box.top + scrollTop - clientTop;\r\n\t\tconst left = box.left + scrollLeft - clientLeft;\r\n\r\n\t\treturn { top: Math.round(top), left: Math.round(left) };\r\n\t}\r\n\r\n\tinitScrollToTop() {\r\n\t\tthis.scrollToTopContainer = document.querySelector('.scrollToTop');\r\n\r\n\t\tif (this.scrollToTopContainer) {\r\n\t\t\tconst button = this.scrollToTopContainer.querySelector('button');\r\n\t\t\tconst scroll = () => {\r\n\t\t\t\tif (document.documentElement.scrollTop > 400) {\r\n\t\t\t\t\tthis.scrollToTopContainer.classList.add('active');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.scrollToTopContainer.classList.remove('active');\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tthis.registerScrollEvent(scroll.bind(this));\r\n\r\n\t\t\tbutton.addEventListener('click', () => {\r\n\t\t\t\tthis.scrollToTopContainer.classList.add('moving');\r\n\t\t\t\tbutton.blur();\r\n\t\t\t\twindow.scrollTo({\r\n\t\t\t\t\ttop: 0,\r\n\t\t\t\t\tbehavior: 'smooth',\r\n\t\t\t\t});\r\n\t\t\t\tsetTimeout(() => this.scrollToTopContainer.classList.remove('moving'), 1500);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tloadjQuery() {\r\n\t\treturn new Promise((resolve) => {\r\n\t\t\tif (window.$) {\r\n\t\t\t\tresolve(true);\r\n\t\t\t} else if (this.jqueryImport) {\r\n\t\t\t\treturn this.jqueryImport;\r\n\t\t\t} else {\r\n\t\t\t\tthis.jqueryImport = import( /* webpackChunkName: \"modules/jquery\" */ 'jquery').then(e => {\r\n\t\t\t\t\twindow.$ = e.default;\r\n\t\t\t\t\tdelete this.jqueryImport;\r\n\t\t\t\t\tresolve(true);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tinitSelectric() {\r\n\t\tif (document.querySelectorAll('select[selectric=\"true\"]').length) {\r\n\t\t\ttry {\r\n\t\t\t\tthis.loadjQuery().then(() => {\r\n\t\t\t\t\timport( /* webpackChunkName: \"modules/dropdown\" */ 'selectric').then(() => {\r\n\r\n\t\t\t\t\t\tdocument.querySelectorAll('select[selectric=\"true\"]').forEach(select => {\r\n\t\t\t\t\t\t\t$(select).selectric({\r\n\t\t\t\t\t\t\t\tarrowButtonMarkup: ``\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t// Add a hidden label around the selectric input for accessibility.\r\n\t\t\t\t\t\t\t$('.selectric-input').wrap('');\r\n\t\r\n\t\t\t\t\t\t\tthis.selectricCBs.forEach(cb => {\r\n\t\t\t\t\t\t\t\tcb();\r\n\t\t\t\t\t\t\t});\r\n\t\r\n\t\t\t\t\t\t\tthis.selectricCBs = [];\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t} catch (e) {\r\n\t\t\t\tconsole.error(e);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @description Tooltip library\r\n\t */\r\n\tinitTippy() {\r\n\t\tif (document.querySelectorAll('[data-tippy-content]').length || document.querySelectorAll('[data-tippy-source]').length) {\r\n\t\t\ttry {\r\n\t\t\t\timport( /* webpackChunkName: \"modules/tooltip\" */ 'tippy.js').then(e => {\r\n\t\t\t\t\tconst tippy = e.default;\r\n\t\t\t\t\ttippy('[data-tippy-content]');\r\n\r\n\t\t\t\t\tif (document.querySelectorAll('[data-tippy-source]').forEach(source => {\r\n\t\t\t\t\t\t\tconst target = document.querySelector(`[data-tippy-target=\"${source.dataset.tippySource}\"]`);\r\n\t\t\t\t\t\t\tif (target) {\r\n\t\t\t\t\t\t\t\ttippy(source, {\r\n\t\t\t\t\t\t\t\t\tallowHTML: true,\r\n\t\t\t\t\t\t\t\t\tcontent: target.innerHTML,\r\n\t\t\t\t\t\t\t\t\tinteractive: target.querySelectorAll('a, button').length > 0\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}));\r\n\t\t\t\t});\r\n\t\t\t} catch (e) {\r\n\t\t\t\tconsole.error(e);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @description Makes tags with the data-copy property clickable, copies its content to the clipboard\r\n\t */\r\n\tinitCopy() {\r\n\t\tdocument.querySelectorAll('[data-copy]').forEach(el => {\r\n\t\t\tel.addEventListener('click', () => {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tconst copyContent = el.dataset.copy;\r\n\t\t\t\t\tconst input = document.createElement('input');\r\n\r\n\t\t\t\t\tinput.type = 'text';\r\n\t\t\t\t\tinput.style.position = 'absolute';\r\n\t\t\t\t\tinput.style.height = 0;\r\n\t\t\t\t\tinput.style.overflow = 'hidden';\r\n\t\t\t\t\tinput.value = copyContent;\r\n\r\n\t\t\t\t\tdocument.body.appendChild(input);\r\n\t\t\t\t\tinput.select();\r\n\t\t\t\t\tdocument.execCommand('copy');\r\n\t\t\t\t\tinput.parentNode.removeChild(input);\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\tthis.toast('Something unexpected went wrong', 'error');\r\n\t\t\t\t\tconsole.error(e);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tinitPrintListener() {\r\n\t\tthis.printTexts = Array.from(document.querySelectorAll('[data-print]'));\r\n\r\n\t\tif (this.printTexts.length) {\r\n\t\t\tlet printElements = [];\r\n\r\n\t\t\twindow.addEventListener('beforeprint', e => {\r\n\t\t\t\tthis.printTexts.forEach(printParent => {\r\n\t\t\t\t\tlet span = document.createElement('span');\r\n\t\t\t\t\tspan.innerHTML = printParent.dataset.print;\r\n\t\t\t\t\tspan.classList.add('printText');\r\n\r\n\t\t\t\t\tprintElements.push(span);\r\n\r\n\t\t\t\t\tprintParent.appendChild(span);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\twindow.addEventListener('afterprint', e => {\r\n\t\t\t\tprintElements.forEach(printElement => {\r\n\t\t\t\t\tprintElement.remove();\r\n\t\t\t\t});\r\n\r\n\t\t\t\tprintElements = [];\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tinitToTop(){\r\n\t\t// const toTopButton = document.querySelector('.toTop');\r\n\r\n\t\t// if(toTopButton){\r\n\t\t// \ttoTopButton.addEventListener('click', e => {\r\n\t\t// \t\tthis.scroll(0,0);\r\n\t\t// \t})\r\n\t\t// }\r\n\r\n\t\tthis.scrollToTopContainer = document.querySelector('.toTop');\r\n\r\n\t\tif (this.scrollToTopContainer) {\r\n\t\t\tconst scroll = () => {\r\n\t\t\t\tif (document.documentElement.scrollTop > 400) {\r\n\t\t\t\t\tthis.scrollToTopContainer.classList.add('active');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.scrollToTopContainer.classList.remove('active');\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tthis.registerScrollEvent(scroll.bind(this));\r\n\r\n\t\t\tthis.scrollToTopContainer.addEventListener('click', () => {\r\n\t\t\t\tthis.scrollToTopContainer.classList.add('moving');\r\n\t\t\t\twindow.scrollTo({\r\n\t\t\t\t\ttop: 0,\r\n\t\t\t\t\tbehavior: 'smooth',\r\n\t\t\t\t});\r\n\t\t\t\tsetTimeout(() => this.scrollToTopContainer.classList.remove('moving'), 1500);\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t}\r\n\r\n\tinitLabelClick() {\r\n\t\tdocument.querySelectorAll('label[for]').forEach(label => {\r\n\t\t\tlabel.addEventListener('keydown', e => {\r\n\r\n\t\t\t\tswitch (e.key.toLowerCase()) {\r\n\t\t\t\t\tcase ' ':\r\n\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tcase 'space':\r\n\t\t\t\t\tcase 'enter':\r\n\t\t\t\t\t\tlabel.click();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\t// initSlimSelect() {\r\n\t// \tif(document.querySelector('.slimSelect')){\r\n\t// \t\tconsole.log('Slim select found!');\r\n\t// \t\timport( /* webpackChunkName: \"modules/tooltip\" */ 'tippy.js').then(e => {\r\n\t\t\t\t\r\n\t// \t\t});\r\n\r\n\r\n\t// \t\tnew SlimSelect({\r\n\t// \t\t\tselect: '#single'\r\n\t// \t \t})\r\n\t// \t}\r\n\t// }\r\n\r\n\t// initAutoplayOnHover() {\r\n\t// \tthis.videoBlocks = this.videoBlocks || [];\r\n\r\n\t// \tArray.from(document.querySelectorAll('.promotionBlock, .videoBlock')).forEach(block => {\r\n\t// \t\tif (block.querySelector('video') && !block.classList.contains('autoThumbnail')) {\r\n\t// \t\t\tconst video = block.querySelector('video');\r\n\t// \t\t\tvideo.src = video.src + '#t=0.001';\r\n\t// \t\t\tvideo.muted = true;\r\n\t// \t\t\tvideo.loop = true;\r\n\t// \t\t\tvideo.preload = 'metadata';\r\n\t// \t\t\tvideo.controls = false;\r\n\t\r\n\t// \t\t\t['mouseenter', 'touchstart'].forEach(event => {\r\n\t// \t\t\t\tblock.addEventListener(event, e => {\r\n\t// \t\t\t\t\tvideo.play();\r\n\t// \t\t\t\t});\r\n\t// \t\t\t});\r\n\r\n\t// \t\t\t['mouseleave', 'touchend'].forEach(event => {\r\n\t// \t\t\t\tblock.addEventListener(event, e => {\r\n\t// \t\t\t\t\tvideo.pause();\r\n\t// \t\t\t\t});\r\n\t// \t\t\t});\r\n\t\r\n\t// \t\t\tthis.videoBlocks.push({\r\n\t// \t\t\t\tblock,\r\n\t// \t\t\t\tvideo,\r\n\t// \t\t\t});\r\n\r\n\t// \t\t\tblock.classList.add('autoThumbnail');\r\n\t// \t\t}\r\n\t// \t});\r\n\t// }\r\n\r\n\tgetCurrentBreakpoint() {\r\n\t\tconst width = window.innerWidth;\r\n\t\tconst breakpoints = Object.keys(this.breakpoints).reverse();\r\n\r\n\t\tlet currentBreakpoint = breakpoints[breakpoints.length - 1];\r\n\r\n\t\tbreakpoints.forEach(breakpoint => {\r\n\t\t\tif (width <= this.breakpoints[breakpoint].size) {\r\n\t\t\t\tcurrentBreakpoint = breakpoint;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn currentBreakpoint;\r\n\t}\r\n\r\n\ttoast(message, type = 'success') {\r\n\t\tif (this.ToastController) {\r\n\t\t\tthis.ToastController.new(message, type);\r\n\t\t} else {\r\n\t\t\tconsole.error('ToastController not available. Message below');\r\n\t\t\tconsole.log(`[${type}] ${message}`);\r\n\t\t}\r\n\t}\r\n\r\n\tgetParameter(name) {\r\n\t\tlet result = null,\r\n\t\t\ttmp = [];\r\n\t\tlet items = location.search.substr(1).split(\"&\");\r\n\t\tfor (let index = 0; index < items.length; index++) {\r\n\t\t\ttmp = items[index].split(\"=\");\r\n\t\t\tif (tmp[0] === name) {\r\n\t\t\t\tresult = decodeURIComponent(tmp[1]);\r\n\t\t\t}\r\n\t\t\tif (result === 'undefined') {\r\n\t\t\t\tresult = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result;\r\n\t}\r\n\r\n\tinsertTesters() {\r\n\t\tthis.insertBreakpointIndicator();\r\n\t\tthis.insertColumnTester();\r\n\t}\r\n\r\n\tinsertColumnTester() {\r\n\t\tlet tester = document.createElement('div');\r\n\t\ttester.classList.add('columnTester');\r\n\t\tlet cols = ``;\r\n\t\tfor (let i=0;i<12;i++) {\r\n\t\t\tcols += `
    `;\r\n\t\t}\r\n\t\ttester.innerHTML = `
    ${cols}
    `;\r\n\t\tdocument.body.appendChild(tester);\r\n\t}\r\n\r\n\tinsertBreakpointIndicator() {\r\n\t\tconst breakpoints = Object.keys(this.breakpoints);\r\n\t\tlet blocks = ``;\r\n\t\tbreakpoints.forEach((breakpoint, index) => {\r\n\t\t\tlet classes = 'col ';\r\n\t\t\tif (index == 0) {\r\n\t\t\t\tclasses += `d-${breakpoints[index + 1]}-none`;\r\n\t\t\t} else if (index == breakpoints.length - 1) {\r\n\t\t\t\tclasses += `d-none d-${breakpoint}-block`;\r\n\t\t\t} else {\r\n\t\t\t\tclasses += `d-none d-${breakpoint}-block d-${breakpoints[index + 1]}-none`;\r\n\t\t\t}\r\n\t\t\tblocks += `
    ${breakpoint}
    `;\r\n\t\t});\r\n\r\n\t\t\r\n\t\tlet tester = document.createElement('div');\r\n\t\ttester.classList.add('breakpointIndicators');\r\n\r\n\t\ttester.innerHTML = `
    ${blocks}
    `;\r\n\t\tdocument.body.appendChild(tester);\r\n\t}\r\n\r\n\t/**\r\n\t * @description Part of the pagecontroller, makes sure newPage methods get executed in other controllers as well\r\n\t */\r\n\t newPage() {\r\n\t\t// Reset App's cache\r\n\t\tthis._resizeFunctionsArr = [];\r\n\t\tthis._resizeFunctions = {};\r\n\t\tthis._resizeFunctionsCounter = 0;\r\n\r\n\t\tthis._scrollFunctionsArr = [];\r\n\t\tthis._scrollFunctions = {};\r\n\t\tthis._scrollFunctionsCounter = 0;\r\n\r\n\t\t// Trigger slimmage\r\n\t\twindow.slimmage.cr();\r\n\r\n\t\t// Trigger newPage in controllers\r\n let incompleteControllers = [];\r\n Object.keys(this).forEach(key => {\r\n if (this.hasOwnProperty(key) && key.indexOf('Controller') > -1) {\r\n const obj = this[key];\r\n if (obj != null && obj.newPage && typeof obj.newPage == 'function') {\r\n obj.newPage();\r\n } else {\r\n if (this.newPageWarning) {\r\n incompleteControllers.push(key);\r\n }\r\n }\r\n }\r\n });\r\n\r\n\t\t// Warn (once) if there are controllers without a newPage method\r\n if (this.newPageWarning && incompleteControllers.length) {\r\n console.warn(`The following controllers are missing a %cnewPage`, 'color: orange;', `method:\\n\\n `, incompleteControllers.join('\\n '), `\\n\\nMake sure these can handle loading a new page`);\r\n delete this.newPageWarning;\r\n }\r\n }\r\n\r\n\treset() {\r\n\t\t// this.initAutoplayOnHover();\r\n\t}\r\n}","export default class PolyfillController {\r\n constructor() {\r\n this.polyfills = [];\r\n this.loaded = [];\r\n }\r\n\r\n init() {\r\n this.loadPolyfills();\r\n\r\n return Promise.all(this.polyfills);\r\n }\r\n\r\n loadPolyfills() {\r\n this.forEach();\r\n this.from();\r\n this.includes();\r\n this.intersectionObserver();\r\n this.fetch();\r\n this.proxy();\r\n this.closest();\r\n this.before();\r\n this.remove();\r\n this.entries();\r\n this.assign();\r\n this.customEvent();\r\n this.url();\r\n this.objectFit();\r\n }\r\n\r\n forEach() {\r\n if (window.NodeList && !NodeList.prototype.forEach) {\r\n NodeList.prototype.forEach = Array.prototype.forEach;\r\n this.loaded.push('forEach');\r\n }\r\n }\r\n\r\n from() {\r\n if (!Array.from) {\r\n Array.from = (function () {\r\n let symbolIterator;\r\n try {\r\n symbolIterator = Symbol.iterator ?\r\n Symbol.iterator :\r\n 'Symbol(Symbol.iterator)';\r\n } catch (e) {\r\n symbolIterator = 'Symbol(Symbol.iterator)';\r\n }\r\n\r\n let toStr = Object.prototype.toString;\r\n var isCallable = function (fn) {\r\n return (\r\n typeof fn === 'function' ||\r\n toStr.call(fn) === '[object Function]'\r\n );\r\n };\r\n let toInteger = function (value) {\r\n let number = Number(value);\r\n if (isNaN(number)) return 0;\r\n if (number === 0 || !isFinite(number)) return number;\r\n return (number > 0 ? 1 : -1) * Math.floor(Math.abs(number));\r\n };\r\n let maxSafeInteger = Math.pow(2, 53) - 1;\r\n let toLength = function (value) {\r\n var len = toInteger(value);\r\n return Math.min(Math.max(len, 0), maxSafeInteger);\r\n };\r\n\r\n let setGetItemHandler = function setGetItemHandler(isIterator, items) {\r\n let iterator = isIterator && items[symbolIterator]();\r\n return function getItem(k) {\r\n return isIterator ? iterator.next() : items[k];\r\n };\r\n };\r\n\r\n let getArray = function getArray(\r\n T,\r\n A,\r\n len,\r\n getItem,\r\n isIterator,\r\n mapFn\r\n ) {\r\n // 16. Let k be 0.\r\n let k = 0;\r\n\r\n // 17. Repeat, while k < len… or while iterator is done (also steps a - h)\r\n while (k < len || isIterator) {\r\n let item = getItem(k);\r\n let kValue = isIterator ? item.value : item;\r\n\r\n if (isIterator && item.done) {\r\n return A;\r\n } else {\r\n if (mapFn) {\r\n A[k] =\r\n typeof T === 'undefined' ?\r\n mapFn(kValue, k) :\r\n mapFn.call(T, kValue, k);\r\n } else {\r\n A[k] = kValue;\r\n }\r\n }\r\n k += 1;\r\n }\r\n\r\n if (isIterator) {\r\n throw new TypeError(\r\n 'Array.from: provided arrayLike or iterator has length more then 2 ** 52 - 1'\r\n );\r\n } else {\r\n A.length = len;\r\n }\r\n\r\n return A;\r\n };\r\n\r\n // The length property of the from method is 1.\r\n return function from(arrayLikeOrIterator /*, mapFn, thisArg */ ) {\r\n // 1. Let C be the this value.\r\n var C = this;\r\n\r\n // 2. Let items be ToObject(arrayLikeOrIterator).\r\n var items = Object(arrayLikeOrIterator);\r\n var isIterator = isCallable(items[symbolIterator]);\r\n\r\n // 3. ReturnIfAbrupt(items).\r\n if (arrayLikeOrIterator == null && !isIterator) {\r\n throw new TypeError(\r\n 'Array.from requires an array-like object or iterator - not null or undefined'\r\n );\r\n }\r\n\r\n // 4. If mapfn is undefined, then let mapping be false.\r\n var mapFn = arguments.length > 1 ? arguments[1] : void undefined;\r\n var T;\r\n if (typeof mapFn !== 'undefined') {\r\n // 5. else\r\n // 5. a If IsCallable(mapfn) is false, throw a TypeError exception.\r\n if (!isCallable(mapFn)) {\r\n throw new TypeError(\r\n 'Array.from: when provided, the second argument must be a function'\r\n );\r\n }\r\n\r\n // 5. b. If thisArg was supplied, let T be thisArg; else let T be undefined.\r\n if (arguments.length > 2) {\r\n T = arguments[2];\r\n }\r\n }\r\n\r\n // 10. Let lenValue be Get(items, \"length\").\r\n // 11. Let len be ToLength(lenValue).\r\n var len = toLength(items.length);\r\n\r\n // 13. If IsConstructor(C) is true, then\r\n // 13. a. Let A be the result of calling the [[Construct]] internal method\r\n // of C with an argument list containing the single item len.\r\n // 14. a. Else, Let A be ArrayCreate(len).\r\n var A = isCallable(C) ? Object(new C(len)) : new Array(len);\r\n\r\n return getArray(\r\n T,\r\n A,\r\n len,\r\n setGetItemHandler(isIterator, items),\r\n isIterator,\r\n mapFn\r\n );\r\n };\r\n })();\r\n\r\n this.loaded.push('from');\r\n }\r\n }\r\n\r\n includes() {\r\n if (!String.prototype.includes) {\r\n String.prototype.includes = function (search, start) {\r\n 'use strict';\r\n if (typeof start !== 'number') {\r\n start = 0;\r\n }\r\n\r\n if (start + search.length > this.length) {\r\n return false;\r\n } else {\r\n return this.indexOf(search, start) !== -1;\r\n }\r\n };\r\n\r\n this.loaded.push('String.includes');\r\n }\r\n\r\n if (!Array.prototype.includes) {\r\n Object.defineProperty(Array.prototype, \"includes\", {\r\n enumerable: false,\r\n value: function (obj) {\r\n var newArr = this.filter(function (el) {\r\n return el == obj;\r\n });\r\n return newArr.length > 0;\r\n }\r\n });\r\n\r\n this.loaded.push('Array.includes');\r\n }\r\n }\r\n\r\n intersectionObserver() {\r\n if (!('IntersectionObserver' in window)) {\r\n this.polyfills.push(import( /* webpackChunkName: \"polyfills/intersectionobserver\" */ 'intersection-observer'));\r\n this.loaded.push('intersectionObserver');\r\n }\r\n }\r\n\r\n fetch() {\r\n if (!window.fetch) {\r\n this.polyfills.push(import( /* webpackChunkName: \"polyfills/fetch\" */ 'whatwg-fetch'));\r\n this.loaded.push('fetch');\r\n }\r\n }\r\n\r\n abortController() {\r\n if (typeof AbortController == 'undefined') {\r\n this.polyfills.push(import( /* webpackChunkName: \"polyfills/abortController\" */ 'abortcontroller-polyfill/dist/polyfill-patch-fetch'));\r\n this.loaded.push('abortController');\r\n }\r\n }\r\n\r\n proxy() {\r\n if (!('Proxy' in window)) {\r\n this.polyfills.push(import( /* webpackChunkName: \"polyfills/proxy\" */ 'es6-proxy-polyfill'));\r\n this.loaded.push('proxy');\r\n }\r\n }\r\n\r\n closest() {\r\n if (!Element.prototype.matches) {\r\n Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\r\n this.loaded.push('matches');\r\n }\r\n\r\n if (!Element.prototype.closest) {\r\n Element.prototype.closest = function (s) {\r\n var el = this;\r\n do {\r\n if (el.matches(s)) return el;\r\n el = el.parentElement || el.parentNode;\r\n } while (el !== null && el.nodeType === 1);\r\n return null;\r\n };\r\n this.loaded.push('closest');\r\n }\r\n }\r\n\r\n before() {\r\n (arr => {\r\n arr.forEach(function (item) {\r\n if (item.hasOwnProperty('before')) {\r\n return;\r\n }\r\n Object.defineProperty(item, 'before', {\r\n configurable: true,\r\n enumerable: true,\r\n writable: true,\r\n value: function before() {\r\n var argArr = Array.prototype.slice.call(arguments),\r\n docFrag = document.createDocumentFragment();\r\n\r\n argArr.forEach(function (argItem) {\r\n var isNode = argItem instanceof Node;\r\n docFrag.appendChild(isNode ? argItem : document.createTextNode(String(argItem)));\r\n });\r\n\r\n this.parentNode.insertBefore(docFrag, this);\r\n }\r\n });\r\n });\r\n this.loaded.push('before');\r\n })([Element.prototype, CharacterData.prototype, DocumentType.prototype]);\r\n }\r\n\r\n remove() {\r\n (arr => {\r\n arr.forEach(function (item) {\r\n if (item.hasOwnProperty('remove')) {\r\n return;\r\n }\r\n Object.defineProperty(item, 'remove', {\r\n configurable: true,\r\n enumerable: true,\r\n writable: true,\r\n value: function remove() {\r\n if (this.parentNode === null) {\r\n return;\r\n }\r\n this.parentNode.removeChild(this);\r\n }\r\n });\r\n });\r\n this.loaded.push('remove');\r\n })([Element.prototype, CharacterData.prototype, DocumentType.prototype]);\r\n }\r\n\r\n entries() {\r\n if (!Object.entries) {\r\n Object.entries = function (obj) {\r\n var ownProps = Object.keys(obj),\r\n i = ownProps.length,\r\n resArray = new Array(i); // preallocate the Array\r\n while (i--)\r\n resArray[i] = [ownProps[i], obj[ownProps[i]]];\r\n\r\n return resArray;\r\n };\r\n this.loaded.push('entries');\r\n }\r\n }\r\n\r\n assign() {\r\n if (typeof Object.assign !== 'function') {\r\n // Must be writable: true, enumerable: false, configurable: true\r\n Object.defineProperty(Object, \"assign\", {\r\n value: function assign(target, varArgs) { // .length of function is 2\r\n 'use strict';\r\n if (target === null || target === undefined) {\r\n throw new TypeError('Cannot convert undefined or null to object');\r\n }\r\n\r\n let to = Object(target);\r\n\r\n for (let index = 1; index < arguments.length; index++) {\r\n let nextSource = arguments[index];\r\n\r\n if (nextSource !== null && nextSource !== undefined) {\r\n for (let nextKey in nextSource) {\r\n // Avoid bugs when hasOwnProperty is shadowed\r\n if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {\r\n to[nextKey] = nextSource[nextKey];\r\n }\r\n }\r\n }\r\n }\r\n return to;\r\n },\r\n writable: true,\r\n configurable: true\r\n });\r\n this.loaded.push('assign');\r\n }\r\n }\r\n\r\n customEvent() {\r\n if (typeof (Event) === 'object') {\r\n function CustomEvent(event, params) {\r\n params = params || {\r\n bubbles: false,\r\n cancelable: false,\r\n detail: undefined\r\n };\r\n let evt = document.createEvent('CustomEvent');\r\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\r\n return evt;\r\n }\r\n\r\n CustomEvent.prototype = window.Event.prototype;\r\n\r\n window.CustomEvent = CustomEvent;\r\n window.Event = CustomEvent;\r\n this.loaded.push('Custom Event');\r\n }\r\n }\r\n\r\n url() {\r\n if (typeof window.URLSearchParams == 'undefined') {\r\n this.polyfills.push(import( /* webpackChunkName: \"polyfills/url\" */ 'url-polyfill'));\r\n this.loaded.push('url');\r\n }\r\n }\r\n\r\n objectFit() {\r\n if ('objectFit' in document.documentElement.style === false) {\r\n this.polyfills.push(import( /* webpackChunkName: \"polyfills/objectFit\" */ 'objectFitPolyfill').then(e => {\r\n window.objectFitPolyfill();\r\n return true;\r\n }));\r\n this.loaded.push('objectFit');\r\n }\r\n }\r\n}","export default class GTMController {\r\n constructor() {\r\n this.type = this.decideType();\r\n this.data = this.getData();\r\n window.dataLayer = window.dataLayer || [];\r\n\r\n this.dataReady();\r\n }\r\n\r\n // Shortcut to getting the dataLayer\r\n get dl() {\r\n return window.dataLayer;\r\n }\r\n\r\n decideType() {\r\n // Assume it's universal\r\n let type = 'universal';\r\n\r\n // Try to determine type from URL\r\n let pathname = window.location.pathname.toLowerCase() || '';\r\n switch (pathname.split('/')[1]) {\r\n case 'werknemers':\r\n type = 'employee';\r\n break;\r\n case 'werkgevers':\r\n type = 'employer';\r\n break;\r\n }\r\n\r\n return type;\r\n }\r\n\r\n getData() {\r\n let data = {};\r\n if (document.querySelector('.gtmInfo')) {\r\n const info = document.querySelector('.gtmInfo');\r\n data = Object.assign({}, info.dataset);\r\n\r\n // Manual overrides\r\n data.pageType = info.dataset.pageType ? info.dataset.pageType.replace('STL.', '') : undefined;\r\n }\r\n\r\n // We collect all info from the GTMinfo element as data to use in here\r\n return data;\r\n }\r\n\r\n // Generic calls\r\n\r\n dataReady() {\r\n // As per MaxLead's instructions, clear the page object on page navigation.\r\n this.dl.push({page: null});\r\n\r\n const data = {\r\n event: `data_ready`,\r\n user: {\r\n user_id: undefined,\r\n user_type: undefined,\r\n user_logged_in: \"0\",\r\n },\r\n page: {\r\n page_id: this.data.pageId,\r\n page_type: this.data.pageType,\r\n page_label_1: this.data.pageLabel1 || this.type, // Depends on audience\r\n page_label_2: this.data.pageLabel2, // Whatever relevant, depends on topic\r\n page_location: location.href || location.host || undefined, // only used for virtual pageviews\r\n page_variant: this.data.pageVariant,\r\n page_country: this.data.pageCountry || 'nl', // Assuming Dutch\r\n page_language: this.data.pageLanguage || 'nl-nl', // Assuming Dutch\r\n },\r\n technology: {\r\n platform: 'web',\r\n ip_address: this.data.technologyIp || undefined,\r\n }\r\n };\r\n\r\n this.dl.push(data);\r\n this.debugLog(data, `dataReady`);\r\n }\r\n\r\n // End of generic calls\r\n\r\n // Decision tree calls\r\n // Calls are handled by the DecisionTree objects (app.decisionTreeController.instances)\r\n \r\n /**\r\n * @param {String} location Panel title\r\n */\r\n decisionTreeOpen(location) {\r\n const data = {\r\n event: 'begin_choice_helper',\r\n component_type: `choice helper ${this.type}`,\r\n component_location: location, \r\n component_category: 'choice' // Due to the first panel always being a choice and not a result\r\n };\r\n\r\n this.dl.push(data);\r\n this.debugLog(data, 'Decision Tree');\r\n }\r\n\r\n /**\r\n * @param {String} location Panel title where action took place\r\n * @param {String} category Either 'navigation' or 'no results', depends if user navigates or used an option from a no results panel\r\n * @param {String} componentName Title of selected option, action, or contact option from no results panel\r\n */\r\n decisionTreeInteraction(location, category, componentName) {\r\n const data = {\r\n event: 'choice_helper_interaction',\r\n component_type: `choice helper ${this.type}`,\r\n component_location: location,\r\n component_category: category,\r\n component_name: componentName.substring(0, 100),\r\n };\r\n\r\n this.dl.push(data);\r\n this.debugLog(data, 'Decision Tree');\r\n }\r\n\r\n // End of decision tree calls\r\n\r\n // Quiz calls\r\n // Calls are handled by the quiz objects (app.quizController.instances)\r\n\r\n /**\r\n * \r\n * @param {String} location Panel title\r\n */\r\n quizOpen(location, type = 'quiz') {\r\n const data = {\r\n event: `begin_${type}`,\r\n component_type: `${type} ${this.type}`,\r\n component_location: location,\r\n component_category: 'navigation',\r\n };\r\n \r\n this.dl.push(data);\r\n this.debugLog(data, `Quiz`);\r\n }\r\n\r\n /**\r\n * \r\n * @param {String} location Panel title where action took place\r\n * @param {String} category Either 'navigation' or 'results' ('navigation' when selecting an answer, 'results' when selecting something from the results panel)\r\n * @param {String} componentName Title of selected option or action\r\n */\r\n quizInteraction(location, category, componentName, type = 'quiz') {\r\n const data = {\r\n event: `${type}_interaction`,\r\n component_type: `${type} ${this.type}`,\r\n component_location: location,\r\n component_category: category,\r\n component_name: componentName.substring(0, 100),\r\n };\r\n\r\n this.dl.push(data);\r\n this.debugLog(data, `Quiz`);\r\n }\r\n\r\n /**\r\n * \r\n * @param {String} location Panel title where action took place\r\n * @param {String} category Either 'navigation' or 'results' ('navigation' when at an answer, 'results' when at the results panel)\r\n */\r\n quizClose(location, category, type = 'quiz') {\r\n const data = {\r\n event: `end_${type}`,\r\n component_type: `${type} ${this.type}`,\r\n component_location: location,\r\n component_category: category,\r\n };\r\n\r\n this.dl.push(data);\r\n this.debugLog(data, `Quiz`);\r\n }\r\n\r\n quizResults(location, score, type = 'quiz') {\r\n const data = {\r\n event: `results_${type}`,\r\n component_type: `${type} ${this.type}`,\r\n component_location: location,\r\n component_category: 'results',\r\n component_data: score\r\n };\r\n\r\n this.dl.push(data);\r\n this.debugLog(data, `Quiz`);\r\n }\r\n\r\n // End of quiz calls\r\n\r\n // FAQ calls\r\n // Calls are handled by the accordion object which determines if it's an FAQ item or not\r\n\r\n /**\r\n * @param {String} question \r\n * @param {String} category Category FAQ is in. Generic if undetermined\r\n */\r\n faqSelect(question, category = 'generic') {\r\n const data = {\r\n event: 'select_faq',\r\n component_type: 'faq',\r\n component_category: category,\r\n component_name: question.substring(0, 100),\r\n };\r\n\r\n this.dl.push(data);\r\n this.debugLog(data, 'FAQ select');\r\n }\r\n\r\n // End of FAQ calls\r\n\r\n // Headersearch calls\r\n // Calls are handled by the HeaderSearch controller\r\n\r\n headerSearchClick(query, link) {\r\n const data = {\r\n event: 'header_search_click',\r\n component_type: 'search',\r\n search_query: query,\r\n search_link: link\r\n };\r\n\r\n this.dl.push(data);\r\n this.debugLog(data, 'Headersearch suggestion click');\r\n }\r\n\r\n // End of headersearch calls\r\n\r\n debugLog(data, title = null) {\r\n return;\r\n console.log(`------ ${title ? title : 'GTM Data'} ------`);\r\n console.log(data);\r\n }\r\n}","export default class BaseApi {\r\n constructor() {\r\n this._baseUrl = null;\r\n\r\n this.methods = {\r\n post: 'POST',\r\n get: 'GET',\r\n put: 'PUT',\r\n patch: 'PATCH',\r\n delete: 'DELETE',\r\n };\r\n\r\n // Methods that can contain a body\r\n this._bodyMethods = [\r\n this.methods.post,\r\n this.methods.put,\r\n ];\r\n\r\n this._headers = {};\r\n }\r\n\r\n set url(url) {\r\n this._baseUrl = url;\r\n }\r\n \r\n get url() {\r\n return this._baseUrl;\r\n }\r\n \r\n fetch(url, method = this.methods.get, data = {}, headers = {}, properties = {}) {\r\n if (this._baseUrl === null) {\r\n throw Error(`No API URL specified`);\r\n }\r\n\r\n let urlToCall = this._baseUrl + url;\r\n\r\n try {\r\n urlToCall = new URL(urlToCall);\r\n } catch(e) {\r\n // No need to do anything, probably an URL without hostname \r\n }\r\n\r\n let newHeaders = Object.assign({}, this._headers);\r\n\r\n const fetchProperties = Object.assign({\r\n mode: 'cors',\r\n referrer: 'no-referrer',\r\n headers: newHeaders,\r\n method: method,\r\n }, properties);\r\n\r\n if (Object.keys(headers).length > 0) {\r\n Object.keys(headers).forEach(header => {\r\n fetchProperties.headers[header] = headers[header];\r\n });\r\n }\r\n\r\n if (this._bodyMethods.includes(method)) {\r\n // let formData = new FormData();\r\n // Object.keys(data).forEach(dataKey => {\r\n // formData.append(dataKey, data[dataKey]);\r\n // });\r\n // fetchProperties.headers['Content-Type'] = 'multipart/form-data';\r\n fetchProperties.body = JSON.stringify(data);\r\n } else {\r\n if (urlToCall instanceof URL) {\r\n Object.keys(data).forEach(dataKey => urlToCall.searchParams.append(dataKey, data[dataKey]));\r\n } else {\r\n urlToCall += '?' + (new URLSearchParams(data)).toString();\r\n }\r\n }\r\n\r\n return fetch(urlToCall, fetchProperties).then(response => {\r\n if (!response.ok) {\r\n throw new Error(response);\r\n }\r\n\r\n return response.json();\r\n });\r\n }\r\n\r\n test(data, url = false) {\r\n if (url) {\r\n console.log(`${this._baseUrl}${url}`);\r\n }\r\n return new Promise(resolve => {\r\n setTimeout(() => {\r\n resolve(data);\r\n }, window.app.random(2000, 8000));\r\n });\r\n }\r\n}","import BaseApi from './baseApi';\r\n\r\nexport default class Api extends BaseApi {\r\n constructor() {\r\n super();\r\n this.test = false;\r\n this.url = '/api/';\r\n }\r\n\r\n /**\r\n * @param {String} id GUID of decision tree\r\n */\r\n getDecisionTree(id) {\r\n return super.fetch(\r\n `decisiontree/tree`,\r\n this.methods.get,\r\n {\r\n id\r\n }\r\n )\r\n }\r\n\r\n /**\r\n * @param {String} id GUID of decision tree\r\n */\r\n getQuiz(id) {\r\n return super.fetch(\r\n `quiz`,\r\n this.methods.get,\r\n {\r\n id\r\n }\r\n )\r\n }\r\n\r\n /**\r\n * @param {String} path Path of url feedback was posted from\r\n * @param {String} feedback Either \"Positive\" or \"Negative\"\r\n * @param {String} comment Optional comment from user\r\n */\r\n postFeedback(path, feedback, comment = false) {\r\n const data = {\r\n Path: path,\r\n Feedback: feedback\r\n };\r\n\r\n if (comment && comment.toString().trim().length) {\r\n data.Comment = comment.toString().trim();\r\n }\r\n\r\n return super.fetch(\r\n `feedback/submit`,\r\n this.methods.post,\r\n data,\r\n {\r\n 'Content-Type': 'application/json'\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * @param {String} id \r\n * @param {String} voteId\r\n */\r\n getPoll(id, voteId = false) {\r\n const data = {\r\n PollId: id,\r\n };\r\n if (voteId) {\r\n data.VoteId = voteId;\r\n }\r\n\r\n return super.fetch(\r\n `poll/find`,\r\n this.methods.get,\r\n data\r\n );\r\n }\r\n\r\n /**\r\n * \r\n * @param {String} pollId \r\n * @param {String} answerId \r\n * @param {String} path \r\n */\r\n postPoll(pollId, answerId, path) {\r\n return super.fetch(\r\n `poll/submit`,\r\n this.methods.post,\r\n {\r\n PollId: pollId,\r\n AnswerId: answerId,\r\n Path: path,\r\n },\r\n {\r\n 'Content-Type': 'application/json'\r\n }\r\n );\r\n }\r\n}","import Cookie from 'js-cookie';\r\n\r\nexport default class RibbonController {\r\n constructor() {\r\n this.container = null;\r\n this.resizeFunc = null;\r\n\r\n if (document.querySelector('.ribbonWrapper')) {\r\n this.container = document.querySelector('.ribbonWrapper');\r\n\r\n this.init();\r\n }\r\n }\r\n\r\n init() {\r\n // Decide wether it needs to be shown or not\r\n const id = this.container.dataset.id;\r\n const cookie = Cookie.get(`ribbon_${id}`);\r\n\r\n if (cookie === undefined) {\r\n this.setEventListener();\r\n this.show();\r\n }\r\n }\r\n\r\n setEventListener() {\r\n this.container.querySelector('.close').addEventListener('click', e => {\r\n e.preventDefault();\r\n this.hide();\r\n });\r\n }\r\n\r\n show() {\r\n this.container.classList.remove('d-none');\r\n void this.container.offsetWidth;\r\n\r\n const ribbon = this.container.querySelector('.ribbon');\r\n\r\n const resize = () => {\r\n let height = this.container.getBoundingClientRect().height || 0;\r\n document.documentElement.style.setProperty('--ribbonHeight', `${height}px`);\r\n }\r\n this.resizeFunc = window.app.registerResizeEvent(resize.bind(this));\r\n void this.container.offsetWidth;\r\n this.container.classList.add('animate');\r\n document.documentElement.classList.add('ribbonActive');\r\n\r\n resize();\r\n setTimeout(() => {\r\n this.container.classList.add('active');\r\n this.container.classList.remove('animate');\r\n resize();\r\n }, app.animationDuration);\r\n }\r\n\r\n hide() {\r\n const id = this.container.dataset.id;\r\n Cookie.set(`ribbon_${id}`, 1, {\r\n expires: 1,\r\n });\r\n\r\n this.container.classList.add('disable');\r\n document.documentElement.classList.remove('ribbonActive');\r\n document.documentElement.style.setProperty('--ribbonHeight', `0px`);\r\n ['transitionend', 'animationend'].forEach(event => {\r\n this.container.addEventListener(event, () => {\r\n this.container.remove();\r\n });\r\n });\r\n window.app.unregisterResizeEvent(this.resizeFunc);\r\n }\r\n}","export default class StickyCTAController {\r\n constructor() {\r\n this.container = null;\r\n\r\n if (document.querySelector('.stickyctaWrapper')) {\r\n this.container = document.querySelector('.stickyctaWrapper');\r\n this.init();\r\n }\r\n }\r\n\r\n init() {\r\n this.setEventListener();\r\n }\r\n\r\n setEventListener() {\r\n if (document.querySelector('[class^=\"hero\"]')) {\r\n document.addEventListener('scroll', (e) => {\r\n const hero = document.querySelector('[class^=\"hero\"]').getBoundingClientRect();\r\n const herobottom = hero.bottom;\r\n \r\n if (herobottom < 0) {\r\n this.show();\r\n } else {\r\n this.hide();\r\n }\r\n \r\n\r\n if (this.bottomVisible()) {\r\n this.container.classList.add('darkBlue');\r\n }\r\n else {\r\n this.container.classList.remove('darkBlue');\r\n }\r\n\r\n });\r\n } \r\n }\r\n\r\n show() {\r\n this.container.classList.remove('hidden', 'd-none');\r\n }\r\n\r\n hide() {\r\n this.container.classList.add('hidden');\r\n }\r\n\r\n bottomVisible() {\r\n return document.documentElement.clientHeight + window.scrollY >=\r\n (document.documentElement.scrollHeight ||\r\n document.documentElement.clientHeight);\r\n \r\n }\r\n}","import CustomHTMLElement from './customHTMLElement';\r\n\r\nexport default class SearchSuggestion extends CustomHTMLElement {\r\n /**\r\n * @param {Object} properties \r\n * @param {String} properties.url\r\n * @param {String} properties.name\r\n */\r\n\tconstructor(properties = {}) {\r\n\t\tsuper({\r\n url: '',\r\n title: '',\r\n name: '',\r\n\t\t});\r\n\t\tthis.setProperties(properties);\r\n this._createPropertyMethods();\r\n\r\n\t\tthis._template = require('./templates/searchSuggestion.handlebars');\r\n }\r\n}","import SearchSuggestion from '../elements/searchSuggestion';\r\nimport delegate from 'delegate';\r\n// import Mark from 'mark.js';\r\n\r\nexport default class HeaderSearchController {\r\n constructor() {\r\n this.formContainer = null;\r\n this.form = null;\r\n this.formInput = null;\r\n this.searchResultsContainer = null;\r\n this.mobileSearchbutton = null;\r\n this.apiEndpoint = '/api/search/find?query=';\r\n this.apiContext;\r\n\r\n this.abortController = null; // Will contain an AbortController when making a new API call\r\n this.waiterTime = 250; // Time in MS to wait with making a new API call\r\n this.changeWaiter = null; // Clearable timeout handler\r\n this.minInput = 3; // Minimal amount of characters before a search is triggered\r\n\r\n this.originalSearchSuggestions = [];\r\n this.originalSearchTitle = '';\r\n\r\n this.videos = [];\r\n\r\n // this.mark = null;\r\n\r\n if (document.querySelector('.headerSearchContainer')) {\r\n this.init();\r\n }\r\n }\r\n\r\n init() {\r\n this.formContainer = document.querySelector('.headerSearchContainer');\r\n this.form = this.formContainer.querySelector('form');\r\n this.formInput = this.form.querySelector('input[name=\"q\"]');\r\n if (this.formInput.dataset.context) {\r\n this.apiContext = this.formInput.dataset.context;\r\n }\r\n this.searchResultsContainer = this.formContainer;\r\n\r\n this.videos = document.querySelectorAll('video');\r\n \r\n // this.mark = new Mark(this.searchResultsContainer.querySelector('ul'));\r\n \r\n if ('AbortController' in window) {\r\n this.abortController = new AbortController();\r\n }\r\n\r\n // Make a copy of the search suggestions for restore ability\r\n this.searchResultsContainer.querySelectorAll('ul li').forEach(li => this.originalSearchSuggestions.push(li.cloneNode(true)));\r\n\r\n // Copy original title\r\n this.originalSearchTitle = this.searchResultsContainer.querySelector('#searchResultsTitle').innerText;\r\n\r\n this.setEventListeners();\r\n this.formContainer.removeAttribute(\"style\");\r\n }\r\n\r\n setEventListeners() {\r\n // Opening\r\n this.formInput.addEventListener('focus', this.showSearchResults.bind(this));\r\n this.formInput.addEventListener('click', this.showSearchResults.bind(this));\r\n if (document.querySelector('.headerMenu .search')) {\r\n document.querySelector('.headerMenu .search').addEventListener('click', () => {\r\n if (document.querySelector('body > header').classList.contains('searchActive')) {\r\n this.hideSearchResults();\r\n } else {\r\n this.showSearchResults();\r\n this.formInput.focus();\r\n }\r\n });\r\n }\r\n\r\n if(document.querySelector('#hero-search')) {\r\n document.querySelector('#hero-search').addEventListener('click', (e) => {\r\n e.preventDefault();\r\n \r\n if (document.querySelector('body > header').classList.contains('searchActive')) {\r\n this.hideSearchResults();\r\n } else {\r\n this.showSearchResults();\r\n this.formInput.focus();\r\n }\r\n });\r\n }\r\n\r\n // Changing\r\n this.formInput.addEventListener('input', this.handleInputChange.bind(this));\r\n\r\n // Submitting\r\n this.searchResultsContainer.querySelector('a.fullSearch').addEventListener('click', () => this.form.submit());\r\n this.form.addEventListener('submit', e => {\r\n console.log('Submit');\r\n if (!this.formInput.value.trim()) {\r\n e.preventDefault();\r\n this.formInput.focus();\r\n return false;\r\n }\r\n return true;\r\n });\r\n\r\n // Resetting\r\n this.form.addEventListener('reset', e => {\r\n console.log('Reset');\r\n this.resetResults();\r\n this.formInput.focus();\r\n });\r\n\r\n // Closing\r\n this.searchResultsContainer.querySelectorAll('.closeButton').forEach(closeButton => {\r\n closeButton.addEventListener('click', e => {\r\n this.hideSearchResults();\r\n this.formInput.blur();\r\n })\r\n });\r\n\r\n this.searchResultsContainer.querySelectorAll('.close, .closeSearch').forEach(button => {\r\n button.addEventListener('click', e => {\r\n this.hideSearchResults();\r\n this.formInput.blur();\r\n });\r\n });\r\n\r\n document.addEventListener('keydown', e => {\r\n\t\t\tif (e.key.toLowerCase().substr(0, 3) == 'esc') {\r\n this.hideSearchResults();\r\n this.formInput.blur();\r\n }\r\n });\r\n\r\n this.formContainer.addEventListener('click', e => {\r\n // Should only trigger if clicked outside the panel\r\n if (e.target.contains(this.formContainer.querySelector('.panelWrapper'))) {\r\n this.hideSearchResults();\r\n this.formInput.blur();\r\n }\r\n });\r\n\r\n // Others\r\n const focusButton = this.form.querySelector('button.focus');\r\n if (focusButton) {\r\n focusButton.addEventListener('click', () => this.formInput.focus());\r\n }\r\n\r\n const clearButton = this.form.querySelector('button[type=\"reset\"]');\r\n if (clearButton) {\r\n clearButton.addEventListener('click', () => {\r\n this.resetResults();\r\n this.formInput.focus();\r\n\r\n if (focusButton) {\r\n clearButton.setAttribute('disabled', 'disabled');\r\n focusButton.setAttribute('disabled', 'disabled');\r\n }\r\n });\r\n }\r\n\r\n this.formInput.addEventListener('keydown', e => {\r\n if (e.key.toLowerCase() == 'arrowdown') {\r\n e.preventDefault();\r\n this.searchResultsContainer.querySelector('ul li a').focus();\r\n }\r\n });\r\n\r\n delegate('.headerSearchContainer ul li a', 'keydown', e => {\r\n if (e.key.toLowerCase() == 'arrowup') {\r\n e.preventDefault();\r\n this.arrowUp(e.delegateTarget.parentNode);\r\n } else if (e.key.toLowerCase() == 'arrowdown') {\r\n e.preventDefault();\r\n this.arrowDown(e.delegateTarget.parentNode);\r\n }\r\n });\r\n\r\n delegate('.headerSearchContainer a.fullSearch', 'keydown', e => {\r\n if (e.key.toLowerCase() == 'arrowup') {\r\n e.preventDefault();\r\n this.arrowUp(e.delegateTarget);\r\n } else if (e.key.toLowerCase() == 'arrowdown') {\r\n e.preventDefault();\r\n this.arrowDown(e.delegateTarget);\r\n }\r\n });\r\n\r\n // GTM\r\n delegate('.headerSearchContainer ul li a', 'click', e => {\r\n const query = this.formInput.value.trim();\r\n if (query) {\r\n let a = e.delegateTarget;\r\n app.GTM.headerSearchClick(query, a.href);\r\n }\r\n });\r\n\r\n // Searchpage specific\r\n if (document.querySelector('section.searchFilters')) {\r\n const form = document.querySelector('section.searchFilters form');\r\n\r\n const selectricEvents = () => {\r\n form.querySelectorAll('select').forEach(select => {\r\n ['change', 'selectric-change'].forEach(eventName => {\r\n $(select).on(eventName, e => {\r\n form.submit();\r\n });\r\n });\r\n });\r\n }\r\n\r\n if (window.$ && $.fn.selectric) {\r\n selectricEvents();\r\n } else {\r\n app.selectricCBs.push(() => {\r\n selectricEvents();\r\n });\r\n }\r\n\r\n form.querySelectorAll('.audienceTabs .tabHeader button').forEach(button => {\r\n button.addEventListener('click', e => {\r\n e.preventDefault();\r\n\r\n let select = form.querySelector(`select[data-name=\"audience\"]`);\r\n select.querySelectorAll('option').forEach((option, index) => {\r\n if (option.value == button.value) {\r\n $(select).prop('selectedIndex', index).selectric('refresh');\r\n form.submit();\r\n }\r\n });\r\n });\r\n });\r\n }\r\n\r\n const infoGuideMobileSearch = document.querySelector('.panel.floatingPanel span.infoGuideMobileSearch');\r\n const infoGuideMobileClose = document.querySelector('.panel.floatingPanel button.closePanel.mobile');\r\n if(infoGuideMobileSearch && infoGuideMobileClose){\r\n console.log('Set mobile clicker');\r\n infoGuideMobileSearch.addEventListener('click', () => {\r\n infoGuideMobileClose.click(); \r\n document.querySelector('.headerMenu .search').click();\r\n }); \r\n \r\n }\r\n }\r\n\r\n /**\r\n * @param {HTMLElement} li \r\n */\r\n arrowDown(el) {\r\n console.log(el);\r\n if (el.nextElementSibling && el.nextElementSibling.querySelector('a')) {\r\n el.nextElementSibling.querySelector('a').focus();\r\n } else if (!this.searchResultsContainer.querySelector('a.fullSearch').classList.contains('inactive')) {\r\n this.searchResultsContainer.querySelector('a.fullSearch').focus();\r\n } else if (el == this.searchResultsContainer.querySelector('a.fullSearch')) {\r\n this.formInput.focus();\r\n }\r\n }\r\n\r\n /**\r\n * @param {HTMLElement} li \r\n */\r\n arrowUp(el) {\r\n console.log(el);\r\n if (el.previousElementSibling && el.previousElementSibling.querySelector('a')) {\r\n el.previousElementSibling.querySelector('a').focus();\r\n } else if (el == this.formInput && !this.searchResultsContainer.querySelector('a.fullSearch').classList.contains('inactive')) {\r\n this.searchResultsContainer.querySelector('a.fullSearch').focus();\r\n } else if (el == this.searchResultsContainer.querySelector('a.fullSearch')) {\r\n this.searchResultsContainer.querySelector('ul li:last-of-type a').focus();\r\n } else {\r\n this.formInput.focus();\r\n }\r\n }\r\n\r\n handleInputChange() {\r\n let query = this.formInput.value.trim();\r\n const clearButton = this.form.querySelector('button[type=\"reset\"]');\r\n const focusButton = this.form.querySelector('button.focus');\r\n\r\n if (query && query.length >= this.minInput) {\r\n // Update status button to show\r\n this.updateResults(query);\r\n focusButton.removeAttribute('disabled');\r\n clearButton.removeAttribute('disabled');\r\n } \r\n \r\n if (query) {\r\n // User entered less than 3 characters\r\n focusButton.removeAttribute('disabled');\r\n clearButton.removeAttribute('disabled');\r\n } else {\r\n focusButton.setAttribute('disabled', 'disabled');\r\n clearButton.setAttribute('disabled', 'disabled');\r\n this.resetResults();\r\n }\r\n }\r\n\r\n showSearchResults() {\r\n document.querySelector('body > header').classList.add('searchActive');\r\n this.searchResultsContainer.classList.add('active');\r\n \r\n this.searchResultsContainer.setAttribute('aria-expanded', true);\r\n this.searchResultsContainer.setAttribute('aria-hidden', false);\r\n \r\n document.documentElement.classList.add('blurSearch');\r\n document.documentElement.classList.add('disableScroll');\r\n\r\n //WEB-796 video pauzeren bij openen menu panel\r\n\t\tthis.videos.forEach(video => {\r\n\t\t\tvideo.pause();\r\n\t\t});\r\n\r\n // Enable tabbing on all items\r\n this.searchResultsContainer.querySelectorAll('a, button, input').forEach(clickable => {\r\n clickable.setAttribute('tabindex', '0');\r\n clickable.setAttribute('aria-hidden', 'false');\r\n });\r\n }\r\n\r\n hideSearchResults() {\r\n document.querySelector('body > header').classList.remove('searchActive');\r\n this.searchResultsContainer.classList.remove('active');\r\n\r\n this.searchResultsContainer.setAttribute('aria-expanded', false);\r\n this.searchResultsContainer.setAttribute('aria-hidden', true);\r\n\r\n document.documentElement.classList.remove('blurSearch');\r\n document.documentElement.classList.remove('disableScroll');\r\n\r\n setTimeout(() => {\r\n if (!this.searchResultsContainer.classList.contains('active')) {\r\n this.resetResults();\r\n }\r\n }, 400);\r\n\r\n //WEB-796 video pauzeren bij openen menu panel\r\n\t\tthis.videos.forEach(video => {\r\n\t\t\tvideo.play();\r\n\t\t});\r\n\r\n // Disable tabbing on all items\r\n this.searchResultsContainer.querySelectorAll('a, button, input').forEach(clickable => {\r\n clickable.setAttribute('tabindex', '-1');\r\n clickable.setAttribute('aria-hidden', 'true');\r\n });\r\n }\r\n\r\n updateResults(query) {\r\n // Reset waiter to prevent unnessecary calls\r\n if (this.changeWaiter !== null) {\r\n clearTimeout(this.changeWaiter);\r\n }\r\n\r\n this.changeWaiter = setTimeout(() => {\r\n this.searchResultsContainer.querySelector('ul').classList.add('loading');\r\n\r\n // If there's a call going on, abort it and create a new abortcontroller to reuse\r\n if ('AbortController' in window && this.abortController) {\r\n this.abortController.abort();\r\n this.abortController = new AbortController();\r\n }\r\n\r\n // Fetch new results\r\n this.fetchResults(query).then(data => {\r\n this.insertSearchSuggestions(data, query);\r\n }).catch(e => {\r\n console.error(e);\r\n }).finally(() => {\r\n this.searchResultsContainer.querySelector('ul').classList.remove('loading');\r\n });\r\n \r\n this.changeWaiter = null;\r\n }, this.waiterTime);\r\n }\r\n\r\n insertSearchSuggestions(data, query = null) {\r\n // Data should be an array containing nothing but keywords. So create listitems that will search for that\r\n let suggestions = [];\r\n if (data.results) {\r\n data.results.forEach(item => {\r\n let suggestion = new SearchSuggestion({\r\n name: item.highlightedTitle || item.title || item.url,\r\n title: item.title || item.highlightedTitle || item.url,\r\n url: item.url\r\n });\r\n \r\n suggestions.push(suggestion.generate());\r\n });\r\n } \r\n\r\n // Clear current suggestion list\r\n this.searchResultsContainer.querySelector('ul').innerHTML = '';\r\n\r\n // Add class\r\n this.searchResultsContainer.querySelector('ul').classList.add('searchResults');\r\n \r\n // Insert the newly made suggestions\r\n suggestions.forEach(suggestion => this.searchResultsContainer.querySelector('ul').appendChild(suggestion));\r\n\r\n // Highlight text matching with query\r\n // if (query) {\r\n // this.mark.mark(query);\r\n // }\r\n\r\n // Hide title\r\n this.searchResultsContainer.querySelector('.status').classList.add('d-none');\r\n\r\n // Update fullSearch button\r\n if (data.totalItems) {\r\n this.searchResultsContainer.querySelector('a.fullSearch').classList.remove('inactive');\r\n\r\n if (data.totalItems > 1) {\r\n this.searchResultsContainer.querySelector('a.fullSearch span').innerHTML = `Bekijk alle ${data.totalItems} resultaten`;\r\n } else {\r\n this.searchResultsContainer.querySelector('a.fullSearch span').innerHTML = `Bekijk resultaat`;\r\n }\r\n } else {\r\n this.searchResultsContainer.querySelector('a.fullSearch').classList.add('inactive');\r\n this.searchResultsContainer.querySelector('.status').classList.remove('d-none');\r\n }\r\n\r\n // Update button text\r\n if (data.totalItems > 1) {\r\n this.searchResultsContainer.querySelector('a.fullSearch span').innerHTML = `Bekijk alle ${data.totalItems} resultaten`;\r\n } else {\r\n this.searchResultsContainer.querySelector('a.fullSearch span').innerHTML = `Bekijk alle resultaten`;\r\n }\r\n\r\n // Update title\r\n this.searchResultsContainer.querySelector('#searchResultsTitle').innerHTML = `${data.totalItems == 0 ? 'Geen' : data.totalItems} ${data.totalItems == 1 ? 'resultaat' : 'resultaten'} gevonden`;\r\n }\r\n\r\n resetResults() {\r\n // Cancel any ongoing call\r\n if ('AbortController' in window && this.abortController) {\r\n this.abortController.abort();\r\n this.abortController = new AbortController();\r\n }\r\n\r\n // Clear input\r\n this.formInput.value = '';\r\n\r\n // Clear suggestion list\r\n this.searchResultsContainer.querySelector('ul').innerHTML = '';\r\n\r\n // Reset class\r\n this.searchResultsContainer.querySelector('ul').classList.remove('searchResults');\r\n \r\n // Insert backed up suggestions and title\r\n this.originalSearchSuggestions.forEach(suggestion => this.searchResultsContainer.querySelector('ul').appendChild(suggestion));\r\n this.searchResultsContainer.querySelector('#searchResultsTitle').innerHTML = this.originalSearchTitle;\r\n this.searchResultsContainer.querySelector('.status').classList.remove('d-none');\r\n this.searchResultsContainer.querySelector('ul').classList.remove('loading');\r\n this.searchResultsContainer.querySelector('a.fullSearch').classList.add('inactive');\r\n }\r\n\r\n fetchResults(query) {\r\n let options = {};\r\n if ('AbortController' in window && this.abortController) {\r\n options.signal = this.abortController.signal;\r\n }\r\n\r\n let url = `${this.apiEndpoint}${encodeURIComponent(query)}&pageSize=5`;\r\n if (this.apiContext) {\r\n url += `&context=${this.apiContext}`;\r\n }\r\n\r\n return fetch(url, options).then(response => {\r\n return response.json();\r\n });\r\n }\r\n\r\n newPage() {\r\n this.form = null;\r\n this.formInput = null;\r\n this.searchResultsContainer = null;\r\n\r\n this.abortController = null; // Will contain an AbortController when making a new API call\r\n this.changeWaiter = null; // Clearable timeout handler\r\n\r\n this.originalSearchSuggestions = [];\r\n this.originalSearchTitle = '';\r\n\r\n this.mark = null;\r\n\r\n if (document.querySelector('form.headerSearchForm')) {\r\n this.init();\r\n }\r\n }\r\n}","/**\r\n * @format\r\n */\r\nimport SearchController from './search';\r\n\r\n// import TinyGesture from 'tinygesture';\r\nexport default class HeaderController {\r\n constructor() {\r\n this.header = null;\r\n this.panelContainer = null;\r\n this.panels = [];\r\n this.activePanel = null;\r\n\r\n this.videos = [];\r\n\r\n this.previousScroll = 0;\r\n this.scrollCounter = 0;\r\n this.threshold = 500;\r\n\r\n this.init();\r\n this.resize();\r\n this.scroll();\r\n\r\n this.searchController = new SearchController();\r\n }\r\n\r\n init() {\r\n this.header = document.querySelector('body > header');\r\n this.panelContainer = document.querySelector('.menuPanels');\r\n this.panelContainer\r\n .querySelectorAll('.panel')\r\n .forEach(panel => this.panels.push(panel));\r\n this.videos = document.querySelectorAll('video');\r\n\r\n this.previousScroll = window.pageYOffset;\r\n\r\n // Update background in advance\r\n // this.updateBackgroundSize();\r\n\r\n // Register events\r\n window.app.registerResizeEvent(this.resize.bind(this));\r\n window.app.registerScrollEvent(this.scroll.bind(this));\r\n\r\n // Click events\r\n this.header\r\n .querySelectorAll('[data-panel-opens]')\r\n .forEach(panelOpener => {\r\n let panelId = panelOpener.dataset.panelOpens;\r\n if (\r\n this.panels\r\n .map(panel => panel.dataset.panel)\r\n .includes(panelId)\r\n ) {\r\n panelOpener.addEventListener('click', e => {\r\n e.preventDefault();\r\n this.openPanel(panelId);\r\n });\r\n }\r\n });\r\n this.panels.forEach(panel => {\r\n panel\r\n .querySelectorAll('[data-panel-opens]')\r\n .forEach(panelOpener => {\r\n let panelId = panelOpener.dataset.panelOpens;\r\n if (\r\n this.panels\r\n .map(panel => panel.dataset.panel)\r\n .includes(panelId)\r\n ) {\r\n panelOpener.addEventListener('click', e => {\r\n e.preventDefault();\r\n this.openPanel(panelId);\r\n });\r\n }\r\n });\r\n\r\n panel\r\n .querySelectorAll('button.closePanel')\r\n .forEach(button =>\r\n button.addEventListener(\r\n 'click',\r\n this.closePanels.bind(this)\r\n )\r\n );\r\n });\r\n\r\n // this.swipeDetector = new TinyGesture(this.mobileMenu);\r\n // this.swipeDetector.on('swiperight', e => {\r\n\r\n // });\r\n\r\n window.addEventListener('keydown', e => {\r\n if (\r\n e.key &&\r\n e.key.substr(0, 3).toLowerCase() == 'esc' &&\r\n document.documentElement.classList.contains('menuPanelOpened')\r\n ) {\r\n this.closePanels();\r\n }\r\n });\r\n\r\n this.initFloatingPanels();\r\n }\r\n\r\n initFloatingPanels() {\r\n const floatingPanels = this.panels.filter(panel =>\r\n panel.classList.contains('floatingPanel')\r\n );\r\n\r\n if (floatingPanels.length) {\r\n floatingPanels.forEach(fPanel => {\r\n // Find a matching 'data-panel-float'\r\n const trigger = this.header.querySelector(\r\n `[data-panel-float=\"${fPanel.dataset.panel}\"]`\r\n );\r\n if (trigger) {\r\n // Start tracking stuff\r\n const handleResize = () => {\r\n // Find x position of trigger, add it as CSS variable to the floating panel\r\n const x = trigger.getBoundingClientRect().left;\r\n const y = trigger.getBoundingClientRect().bottom;\r\n fPanel.style.setProperty('--x', `${x}px`);\r\n fPanel.style.setProperty('--y', `${y}px`);\r\n };\r\n // app.registerResizeEvent(handleResize);\r\n handleResize();\r\n\t\t\t\t\tsetTimeout(handleResize.bind(this), 500);\r\n const resizeObserver = new ResizeObserver(() => {\r\n handleResize();\r\n });\r\n resizeObserver.observe(document.body);\r\n }\r\n });\r\n }\r\n }\r\n\r\n openPanel(panelId) {\r\n console.log(`Opening panel ${panelId}`);\r\n\r\n const activatePanel = panel => {\r\n panel.classList.add('active');\r\n panel.classList.add('replacer');\r\n document.documentElement.classList.add('disableScrollMenu');\r\n this.panelContainer.classList.add('panelActive');\r\n\t\t\tif (panel.classList.contains('floatingPanel')) {\r\n\t\t\t\tthis.panelContainer.classList.add('isFloatingPanel');\r\n\t\t\t} else {\r\n\t\t\t\tdocument.documentElement.classList.add('menuPanelOpened');\r\n\t\t\t}\r\n this.updateBackgroundSize(panel);\r\n };\r\n this.panels.forEach(panel => {\r\n panel.querySelectorAll('[data-panel-opens]').forEach(link => {\r\n link.classList.remove('panelActive');\r\n });\r\n panel\r\n .querySelectorAll(`[data-panel-opens=\"${panelId}\"]`)\r\n .forEach(link => {\r\n link.classList.add('panelActive');\r\n });\r\n });\r\n\r\n this.header.querySelectorAll('[data-panel-opens]').forEach(link => {\r\n link.classList.remove('panelActive');\r\n });\r\n this.header\r\n .querySelectorAll(`[data-panel-opens=\"${panelId}\"]`)\r\n .forEach(link => {\r\n link.classList.add('panelActive');\r\n });\r\n let panel = this.panels.filter(\r\n panel => panel.dataset.panel == panelId\r\n )[0];\r\n // debugger;\r\n if (panel) {\r\n if (!panel.classList.contains('active')) {\r\n // Open panel\r\n let activePanels = this.panels.filter(panel =>\r\n panel.classList.contains('active')\r\n );\r\n if (activePanels.length) {\r\n activePanels.forEach(panel => {\r\n panel.classList.add('replacing');\r\n panel.classList.remove('active');\r\n panel.classList.remove('replacer');\r\n\r\n setTimeout(() => {\r\n panel.classList.remove('replacing');\r\n }, app.animationDuration);\r\n });\r\n activatePanel(panel);\r\n this.videos.forEach(video => {\r\n video.pause();\r\n });\r\n } else {\r\n activatePanel(panel);\r\n this.videos.forEach(video => {\r\n video.pause();\r\n });\r\n }\r\n } else {\r\n // Close panel\r\n panel.classList.remove('active');\r\n document.documentElement.classList.remove('menuPanelOpened');\r\n document.documentElement.classList.remove('disableScrollMenu');\r\n panel.classList.remove('replacer');\r\n\r\n this.panels.forEach(panel => {\r\n panel.querySelectorAll('.panelActive').forEach(link => {\r\n link.classList.remove('panelActive');\r\n });\r\n });\r\n\r\n this.header.querySelectorAll('.panelActive').forEach(link => {\r\n link.classList.remove('panelActive');\r\n });\r\n this.panelContainer.classList.remove('panelActive');\r\n\r\n //WEB-796 video pauzeren bij openen menu panel\r\n this.videos.forEach(video => {\r\n video.play();\r\n });\r\n }\r\n }\r\n }\r\n\r\n closePanels() {\r\n this.panels.forEach(panel => {\r\n panel.classList.remove('replacing');\r\n panel.classList.remove('replacer');\r\n panel.classList.remove('active');\r\n });\r\n document.documentElement.classList.remove('menuPanelOpened');\r\n document.documentElement.classList.remove('disableScrollMenu');\r\n\r\n this.panels.forEach(panel => {\r\n panel.querySelectorAll('.panelActive').forEach(link => {\r\n link.classList.remove('panelActive');\r\n });\r\n });\r\n\r\n this.header.querySelectorAll('.panelActive').forEach(link => {\r\n link.classList.remove('panelActive');\r\n });\r\n\r\n this.panelContainer.classList.remove('panelActive');\r\n this.panelContainer.classList.remove('isFloatingPanel');\r\n\r\n //WEB-796 video hervatten bij sluiten menu panel\r\n this.videos.forEach(video => {\r\n video.play();\r\n });\r\n }\r\n\r\n updateBackgroundSize(panel) {\r\n // Get highest panel's height\r\n let height = 0;\r\n if (panel) {\r\n height = panel.clientHeight;\r\n } else {\r\n height = Math.max(...this.panels.map(panel => panel.clientHeight));\r\n }\r\n this.panelContainer.style.setProperty(\r\n '--panelHeight',\r\n `${height - this.header.clientHeight}px`\r\n );\r\n }\r\n\r\n resize() {\r\n this.previousScroll = window.pageYOffset;\r\n this.threshold = this.header.clientHeight;\r\n\r\n this.scroll();\r\n }\r\n\r\n scroll() {\r\n // First, decide if it's up or down\r\n if (this.previousScroll > window.pageYOffset) {\r\n // Up\r\n if (this.scrollCounter > 0) {\r\n this.scrollCounter = 0;\r\n }\r\n\r\n this.scrollCounter += window.pageYOffset - this.previousScroll;\r\n } else if (this.previousScroll < window.pageYOffset) {\r\n // Down\r\n if (this.scrollCounter < 0) {\r\n this.scrollCounter = 0;\r\n }\r\n\r\n this.scrollCounter += window.pageYOffset - this.previousScroll;\r\n }\r\n\r\n if (!document.documentElement.classList.contains('mobileMenuActive')) {\r\n if (window.pageYOffset < this.threshold) {\r\n this.show();\r\n } else {\r\n if (this.scrollCounter > this.threshold) {\r\n this.hide();\r\n }\r\n\r\n if (this.scrollCounter < this.threshold * -1) {\r\n this.show();\r\n }\r\n }\r\n }\r\n\r\n this.previousScroll = window.pageYOffset;\r\n }\r\n\r\n hide() {\r\n this.header.classList.add('hidden');\r\n }\r\n\r\n show() {\r\n this.header.classList.remove('hidden');\r\n }\r\n}\r\n","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default class VideoController {\r\n constructor() {\r\n this.instances = [];\r\n this.vimeoPlayer = null;\r\n\r\n this.init();\r\n }\r\n\r\n init() {\r\n if (document.querySelector('section.video[data-type=\"youtube\"]')) {\r\n const loadApi = this.loadYouTubeApi(); // Promise\r\n\r\n document.querySelectorAll('section.video[data-type=\"youtube\"]').forEach(videoSection => {\r\n if (videoSection.classList.contains('initialized')) {\r\n return;\r\n }\r\n videoSection.classList.add('initialized');\r\n \r\n const instance = {\r\n type: 'YouTube',\r\n section: videoSection\r\n };\r\n\r\n this.instances.push(instance);\r\n\r\n const trigger = videoSection.querySelector('a, button');\r\n trigger.addEventListener('click', e => {\r\n console.log(\"clicked\");\r\n e.preventDefault();\r\n console.log(\"preventDefault\");\r\n // Prepare video\r\n //videoSection.classList.add('loading');\r\n \r\n const playerId = `video_${Math.random().toString(16).slice(2)}_${videoSection.dataset.id}`;\r\n videoSection.querySelector('.player').id = playerId;\r\n \r\n loadApi.then(() => {\r\n console.log(\"loadapi\");\r\n instance.player = new YT.Player(playerId, {\r\n height: '500',\r\n width: '888',\r\n videoId: videoSection.dataset.id,\r\n playerVars: {\r\n 'playsinline': 1,\r\n },\r\n events: {\r\n onReady: evt => {\r\n evt.target.playVideo();\r\n trigger.remove();\r\n },\r\n onError: evt => {\r\n console.log(\"onError\");\r\n videoSection.classList.add('error');\r\n trigger.classList.add('d-none');\r\n }\r\n }\r\n });\r\n });\r\n });\r\n });\r\n }\r\n\r\n if (document.querySelector('section.video[data-type=\"vimeo\"]')) {\r\n const loadApi = this.loadVimeoApi(); // Promise\r\n\r\n document.querySelectorAll('section.video[data-type=\"vimeo\"]').forEach(videoSection => {\r\n const instance = {\r\n type: 'Vimeo',\r\n section: videoSection\r\n };\r\n\r\n this.instances.push(instance);\r\n\r\n const trigger = videoSection.querySelector('a, button');\r\n trigger.addEventListener('click', e => {\r\n\r\n // Prepare video\r\n videoSection.classList.add('loading');\r\n \r\n const playerId = `video_${Math.random().toString(16).slice(2)}_${videoSection.dataset.id}`;\r\n videoSection.querySelector('.player').id = playerId;\r\n\r\n loadApi.then(() => {\r\n instance.player = new this.vimeoPlayer(playerId, {\r\n height: '500',\r\n width: '888',\r\n id: videoSection.dataset.id,\r\n });\r\n\r\n videoSection.classList.remove('loading');\r\n trigger.classList.add('toHide');\r\n setTimeout(() => {\r\n trigger.classList.add('d-none');\r\n }, 600);\r\n\r\n instance.player.ready().then(() => {\r\n instance.player.play();\r\n });\r\n });\r\n });\r\n });\r\n }\r\n }\r\n\r\n loadYouTubeApi() {\r\n return new Promise(resolve => {\r\n if (window.YT && window.YT.Player) {\r\n resolve();\r\n } else {\r\n window.onYouTubeIframeAPIReady = resolve; //window.onYouTubeIframeAPIReady ||\r\n const tag = document.createElement('script');\r\n tag.src = 'https://www.youtube.com/iframe_api';\r\n const firstScriptTag = document.getElementsByTagName('script')[0];\r\n firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\r\n }\r\n });\r\n }\r\n\r\n loadVimeoApi() {\r\n return new Promise(resolve => {\r\n if (this.vimeoPlayer) {\r\n resolve();\r\n } else {\r\n import( /* webpackChunkName: \"modules/vimeo\" */ '@vimeo/player').then(e => {\r\n this.vimeoPlayer = e.default;\r\n resolve();\r\n });\r\n }\r\n });\r\n }\r\n}","import CustomHTMLElement from './customHTMLElement';\r\n\r\nexport default class FaqSearchSuggestion extends CustomHTMLElement {\r\n /**\r\n * @param {Object} properties \r\n * @param {String} properties.url\r\n * @param {String} properties.title\r\n * @param {String} properties.category\r\n */\r\n\tconstructor(properties = {}) {\r\n\t\tsuper({\r\n url: '',\r\n title: '',\r\n category: '', \r\n\t\t});\r\n\t\tthis.setProperties(properties);\r\n this._createPropertyMethods();\r\n\r\n\t\tthis._template = require('./templates/faqSearchSuggestion.handlebars');\r\n }\r\n}","import FaqSearchSuggestion from '../elements/faqSearchSuggestion';\r\nimport delegate from 'delegate';\r\n\r\nexport default class faqSearchController {\r\n constructor() {\r\n this.formContainer = null;\r\n this.form = null;\r\n this.formInput = null;\r\n this.searchResultsContainer = null;\r\n this.allSubjects = null;\r\n this.totalSubjects = 0;\r\n this.apiEndpoint = '/api/autocomplete/faq';\r\n\r\n this.abortController = null; // Will contain an AbortController when making a new API call\r\n this.waiterTime = 250; // Time in MS to wait with making a new API call\r\n this.changeWaiter = null; // Clearable timeout handler\r\n this.minInput = 3; // Minimal amount of characters before a search is triggered\r\n\r\n this.originalSearchSuggestions = [];\r\n // this.originalSearchTitle = '';\r\n\r\n this.mark = null;\r\n\r\n if (document.querySelector('.faqSearch')) {\r\n this.getData();\r\n this.init();\r\n }\r\n }\r\n\r\n init() {\r\n this.formContainer = document.querySelector('.faqSearch');\r\n this.form = this.formContainer.querySelector('form');\r\n this.formInput = this.form.querySelector('input[name=\"q\"]');\r\n this.searchResultsContainer = this.formContainer.querySelector('.searchResultsContainer');\r\n \r\n if ('AbortController' in window) {\r\n this.abortController = new AbortController();\r\n }\r\n\r\n // Make a copy of the search suggestions for restore ability\r\n this.searchResultsContainer.querySelectorAll('ul li').forEach(li => this.originalSearchSuggestions.push(li.cloneNode(true)));\r\n\r\n this.setEventListeners();\r\n this.formContainer.removeAttribute(\"style\");\r\n }\r\n\r\n setEventListeners() {\r\n // Opening\r\n this.formInput.addEventListener('focus', this.showSearchResults.bind(this));\r\n this.formInput.addEventListener('click', this.showSearchResults.bind(this));\r\n\r\n // Changing\r\n this.formInput.addEventListener('input', this.handleInputChange.bind(this));\r\n\r\n // Submitting\r\n this.searchResultsContainer.querySelector('a.fullSearch').addEventListener('click', () => this.form.submit());\r\n this.form.addEventListener('submit', e => {\r\n if (!this.formInput.value.trim()) {\r\n e.preventDefault();\r\n this.formInput.focus();\r\n return false;\r\n }\r\n return true;\r\n });\r\n\r\n // Resetting\r\n this.form.addEventListener('reset', e => {\r\n this.resetResults();\r\n this.formInput.focus();\r\n });\r\n\r\n // Others\r\n const focusButton = this.form.querySelector('button.focus');\r\n if (focusButton) {\r\n focusButton.addEventListener('click', () => this.formInput.focus());\r\n }\r\n\r\n const clearButton = this.form.querySelector('button[type=\"reset\"]');\r\n if (clearButton) {\r\n clearButton.addEventListener('click', () => {\r\n this.resetResults();\r\n this.formInput.focus();\r\n\r\n if (focusButton) {\r\n clearButton.setAttribute('disabled', 'disabled');\r\n focusButton.setAttribute('disabled', 'disabled');\r\n }\r\n });\r\n } \r\n\r\n this.formInput.addEventListener('keydown', e => {\r\n if (e.key.toLowerCase() == 'arrowdown') {\r\n e.preventDefault();\r\n this.searchResultsContainer.querySelector('ul li a').focus();\r\n }\r\n });\r\n\r\n delegate('.faqSearch ul li a', 'keydown', e => {\r\n if (e.key.toLowerCase() == 'arrowup') {\r\n e.preventDefault();\r\n this.arrowUp(e.delegateTarget.parentNode);\r\n } else if (e.key.toLowerCase() == 'arrowdown') {\r\n e.preventDefault();\r\n this.arrowDown(e.delegateTarget.parentNode);\r\n }\r\n });\r\n\r\n delegate('.faqSearch a.fullSearch', 'keydown', e => {\r\n if (e.key.toLowerCase() == 'arrowup') {\r\n e.preventDefault();\r\n this.arrowUp(e.delegateTarget);\r\n } else if (e.key.toLowerCase() == 'arrowdown') {\r\n e.preventDefault();\r\n this.arrowDown(e.delegateTarget);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * @param {HTMLElement} li \r\n */\r\n arrowDown(el) {\r\n console.log(el);\r\n if (el.nextElementSibling && el.nextElementSibling.querySelector('a')) {\r\n el.nextElementSibling.querySelector('a').focus();\r\n } else if (!this.searchResultsContainer.querySelector('a.fullSearch').classList.contains('inactive')) {\r\n this.searchResultsContainer.querySelector('a.fullSearch').focus();\r\n } else if (el == this.searchResultsContainer.querySelector('a.fullSearch')) {\r\n this.formInput.focus();\r\n }\r\n }\r\n\r\n /**\r\n * @param {HTMLElement} li \r\n */\r\n arrowUp(el) {\r\n console.log(el);\r\n if (el.previousElementSibling && el.previousElementSibling.querySelector('a')) {\r\n el.previousElementSibling.querySelector('a').focus();\r\n } else if (el == this.formInput && !this.searchResultsContainer.querySelector('a.fullSearch').classList.contains('inactive')) {\r\n this.searchResultsContainer.querySelector('a.fullSearch').focus();\r\n } else if (el == this.searchResultsContainer.querySelector('a.fullSearch')) {\r\n this.searchResultsContainer.querySelector('ul li:last-of-type a').focus();\r\n } else {\r\n this.formInput.focus();\r\n }\r\n }\r\n searchResultsContainer \r\n\r\n handleInputChange() {\r\n let query = this.formInput.value.trim();\r\n const clearButton = this.form.querySelector('button[type=\"reset\"]');\r\n const focusButton = this.form.querySelector('button.focus');\r\n // const allResultsButton = this.formContainer.querySelector('searchResultsContainer');\r\n\r\n if (query && query.length >= this.minInput) {\r\n // Update status button to show\r\n this.updateResults(query);\r\n focusButton.removeAttribute('disabled');\r\n clearButton.removeAttribute('disabled');\r\n } \r\n \r\n if (query) {\r\n // User entered less than 3 characters\r\n this.searchResultsContainer.querySelector('ul').innerHTML = '';\r\n this.searchResultsContainer.querySelector('ul').classList.remove('searchResults');\r\n this.originalSearchSuggestions.forEach(suggestion => this.searchResultsContainer.queruySelector('ul').appendChild(suggestion));\r\n this.searchResultsContainer.querySelector('.searchResultsContainerWrapper').classList.add('d-none');\r\n this.searchResultsContainer.querySelector('ul').classList.remove('loading');\r\n this.searchResultsContainer.querySelector('a.fullSearch').classList.add('inactive');\r\n } else {\r\n focusButton.setAttribute('disabled', 'disabled');\r\n clearButton.setAttribute('disabled', 'disabled');\r\n // allResultsButton.removeAttribute('disabled', 'disabled');\r\n this.resetResults();\r\n }\r\n }\r\n\r\n showSearchResults() {\r\n document.querySelector('.faqSearch').classList.add('.faqSearchActive');\r\n this.searchResultsContainer.classList.add('active');\r\n \r\n this.searchResultsContainer.setAttribute('aria-expanded', true);\r\n this.searchResultsContainer.setAttribute('aria-hidden', false);\r\n\r\n // Enable tabbing on all items\r\n this.searchResultsContainer.querySelectorAll('a, button, input').forEach(clickable => {\r\n clickable.setAttribute('tabindex', '0');\r\n clickable.setAttribute('aria-hidden', 'false');\r\n });\r\n }\r\n\r\n hideSearchResults() {\r\n document.querySelector('.faqSearch').classList.remove('.faqSearchActive');\r\n this.searchResultsContainer.classList.remove('active');\r\n\r\n this.searchResultsContainer.setAttribute('aria-expanded', false);\r\n this.searchResultsContainer.setAttribute('aria-hidden', true);\r\n\r\n setTimeout(() => {\r\n if (!this.searchResultsContainer.classList.contains('active')) {\r\n this.resetResults();\r\n }\r\n }, 400);\r\n\r\n // Disable tabbing on all items\r\n this.searchResultsContainer.querySelectorAll('a, button, input').forEach(clickable => {\r\n clickable.setAttribute('tabindex', '-1');\r\n clickable.setAttribute('aria-hidden', 'true');\r\n });\r\n }\r\n\r\n updateResults(query) {\r\n // Reset waiter to prevent unnessecary calls\r\n if (this.changeWaiter !== null) {\r\n clearTimeout(this.changeWaiter);\r\n }\r\n\r\n this.changeWaiter = setTimeout(() => {\r\n this.searchResultsContainer.querySelector('ul').classList.add('loading');\r\n\r\n // If there's a call going on, abort it and create a new abortcontroller to reuse\r\n if ('AbortController' in window && this.abortController) {\r\n this.abortController.abort();\r\n this.abortController = new AbortController();\r\n }\r\n\r\n const result = this.hasQuery(this.allSubjects, query);\r\n this.insertSearchSuggestions(result, query);\r\n this.searchResultsContainer.querySelector('ul').classList.remove('loading');\r\n this.searchResultsContainer.querySelector('.searchResultsContainerWrapper').classList.remove('d-none');\r\n this.changeWaiter = null;\r\n }, this.waiterTime);\r\n }\r\n\r\n insertSearchSuggestions(data, query = null) {\r\n // Data should be an array containing nothing but keywords. So create listitems that will search for that\r\n let suggestions = [];\r\n if (data) {\r\n data.forEach(item => {\r\n let title = item.title || item.highlightedTitle || item.url;\r\n title = title.replaceAll((new RegExp(query, 'ig')), `${query}`);\r\n\r\n let suggestion = new FaqSearchSuggestion({\r\n url: item.url,\r\n title: title,\r\n category: item.category || ''\r\n });\r\n \r\n suggestions.push(suggestion.generate());\r\n });\r\n } \r\n\r\n // Clear current suggestion list\r\n this.searchResultsContainer.querySelector('ul').innerHTML = '';\r\n\r\n // Add class\r\n this.searchResultsContainer.querySelector('ul').classList.add('searchResults');\r\n \r\n // Insert the newly made suggestions\r\n suggestions.forEach(suggestion => this.searchResultsContainer.querySelector('ul').appendChild(suggestion));\r\n\r\n // Hide title\r\n this.searchResultsContainer.querySelector('.searchResultsContainerWrapper').classList.add('d-none');\r\n\r\n // Update fullSearch button\r\n if (this.totalSubjects) {\r\n this.searchResultsContainer.querySelector('a.fullSearch').classList.remove('inactive');\r\n\r\n if (this.totalSubjects > 1) {\r\n this.searchResultsContainer.querySelector('a.fullSearch span').innerHTML = `Bekijk alle resultaten`;\r\n } else {\r\n this.searchResultsContainer.querySelector('a.fullSearch span').innerHTML = `Bekijk resultaat`;\r\n }\r\n } else {\r\n this.searchResultsContainer.querySelector('.fullSearch').classList.add('inactive');\r\n this.searchResultsContainer.querySelector('.searchResultsContainerWrapper').classList.remove('d-none');\r\n }\r\n\r\n // Update button text\r\n if (this.totalSubjects > 1) {\r\n this.searchResultsContainer.querySelector('a.fullSearch span').innerHTML = `Bekijk alle resultaten`;\r\n this.searchResultsContainer.querySelector('#searchResultsTitle').innerHTML = '';\r\n } else {\r\n this.searchResultsContainer.querySelector('a.fullSearch span').innerHTML = `Bekijk resultaat`;\r\n this.searchResultsContainer.querySelector('#searchResultsTitle').innerHTML = '';\r\n }\r\n\r\n // Update title\r\n if (this.totalSubjects < 1){\r\n this.searchResultsContainer.querySelector('#searchResultsTitle').innerHTML = 'Geen resultaten gevonden';\r\n }\r\n \r\n }\r\n\r\n resetResults() {\r\n // Cancel any ongoing call\r\n if ('AbortController' in window && this.abortController) {\r\n this.abortController.abort();\r\n this.abortController = new AbortController();\r\n }\r\n\r\n // Clear input\r\n this.formInput.value = '';\r\n\r\n // Clear suggestion list\r\n this.searchResultsContainer.querySelector('ul').innerHTML = '';\r\n\r\n // Reset class\r\n this.searchResultsContainer.querySelector('ul').classList.remove('searchResults');\r\n \r\n // Insert backed up suggestions and title\r\n this.originalSearchSuggestions.forEach(suggestion => this.searchResultsContainer.querySelector('ul').appendChild(suggestion));\r\n this.searchResultsContainer.querySelector('.searchResultsContainerWrapper').classList.add('d-none');\r\n this.searchResultsContainer.querySelector('ul').classList.remove('loading');\r\n this.searchResultsContainer.querySelector('a.fullSearch').classList.add('inactive');\r\n }\r\n\r\n newPage() {\r\n this.form = null;\r\n this.formInput = null;\r\n this.searchResultsContainer = null;\r\n\r\n this.abortController = null; // Will contain an AbortController when making a new API call\r\n this.changeWaiter = null; // Clearable timeout handler\r\n\r\n this.originalSearchSuggestions = [];\r\n\r\n this.mark = null;\r\n\r\n if (document.querySelector('form.faqSearchForm')) {\r\n this.init();\r\n }\r\n }\r\n\r\n getData(){\r\n return fetch(this.apiEndpoint).then(response => {return response.json()}).then(data => {\r\n this.allSubjects = data;\r\n this.totalSubjects = this.allSubjects.length;\r\n }).finally(() => this.allSubjects)\r\n \r\n }\r\n\r\n hasQuery(data, query){ \r\n const allResults = data.filter((item) => {\r\n return item.title.toLowerCase().includes(query.toLowerCase());\r\n });\r\n this.totalSubjects = allResults.length;\r\n return allResults.slice(0, 5);\r\n }\r\n}\r\n\r\n","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","export default class InfoGuideAnchorMenu {\r\n constructor() {\r\n this.anchorMenu = null;\r\n this.dropdown = null;\r\n this.anchorMenuList = null;\r\n\r\n if (document.querySelector('.widget.anchorMenu')) {\r\n this.init();\r\n }\r\n }\r\n\r\n init() {\r\n console.log('anchormenu loaded');\r\n this.anchorMenu = document.querySelector('.widget.anchorMenu');\r\n this.dropdown = this.anchorMenu.querySelector('select.slimSelect');\r\n this.anchorMenuList = this.anchorMenu.querySelector('.anchorMenuList ul');\r\n \r\n if ('AbortController' in window) {\r\n this.abortController = new AbortController();\r\n }\r\n\r\n this.getWidgets();\r\n }\r\n\r\n // Retreive all current widgets on the page\r\n getWidgets(){\r\n document.querySelectorAll('.infoguideAnchor').forEach(widget => {\r\n console.log(this.anchorMenuList);\r\n console.log(this.dropdown);\r\n\r\n const li = document.createElement(\"li\", { is: \"expanding-list\" });\r\n const a = document.createElement(\"a\");\r\n const option = document.createElement(\"option\");\r\n\r\n const displayName = widget.getAttribute(\"data-displayname\");\r\n\r\n a.innerText = displayName;\r\n a.setAttribute('href', `#${widget.getAttribute(\"id\")}`);\r\n a.setAttribute('title', 'Ga naar de pagina ' + displayName);\r\n option.setAttribute('value', `#${widget.getAttribute(\"id\")}`);\r\n option.setAttribute('title', 'Ga naar de pagina ' + displayName);\r\n \r\n li.appendChild(a);\r\n option.innerText = widget.getAttribute(\"data-displayname\");\r\n\r\n this.anchorMenuList.appendChild(li);\r\n this.dropdown.appendChild(option);\r\n });\r\n }\r\n}","function generateID() {\n return Math.random().toString(36).substring(2, 10);\n}\nfunction hasClassInTree(element, className) {\n function hasClass(e, c) {\n if (c && e && e.classList && e.classList.contains(c)) {\n return e;\n }\n if (c && e && e.dataset && e.dataset.id && e.dataset.id === className) {\n return e;\n }\n return null;\n }\n function parentByClass(e, c) {\n if (!e || e === document) {\n return null;\n }\n else if (hasClass(e, c)) {\n return e;\n }\n else {\n return parentByClass(e.parentNode, c);\n }\n }\n return hasClass(element, className) || parentByClass(element, className);\n}\nfunction debounce(func, wait = 50, immediate = false) {\n let timeout;\n return function (...args) {\n const context = self;\n const later = () => {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n const callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n };\n}\nfunction isEqual(a, b) {\n return JSON.stringify(a) === JSON.stringify(b);\n}\nfunction kebabCase(str) {\n const result = str.replace(/[A-Z\\u00C0-\\u00D6\\u00D8-\\u00DE]/g, (match) => '-' + match.toLowerCase());\n return str[0] === str[0].toUpperCase() ? result.substring(1) : result;\n}\n\nclass Settings {\n constructor(settings) {\n this.id = '';\n this.style = '';\n this.class = [];\n this.isMultiple = false;\n this.isOpen = false;\n this.isFullOpen = false;\n this.intervalMove = null;\n if (!settings) {\n settings = {};\n }\n this.id = 'ss-' + generateID();\n this.style = settings.style || '';\n this.class = settings.class || [];\n this.disabled = settings.disabled !== undefined ? settings.disabled : false;\n this.alwaysOpen = settings.alwaysOpen !== undefined ? settings.alwaysOpen : false;\n this.showSearch = settings.showSearch !== undefined ? settings.showSearch : true;\n this.searchPlaceholder = settings.searchPlaceholder || 'Search';\n this.searchText = settings.searchText || 'No Results';\n this.searchingText = settings.searchingText || 'Searching...';\n this.searchHighlight = settings.searchHighlight !== undefined ? settings.searchHighlight : false;\n this.closeOnSelect = settings.closeOnSelect !== undefined ? settings.closeOnSelect : true;\n this.contentLocation = settings.contentLocation || document.body;\n this.contentPosition = settings.contentPosition || 'absolute';\n this.openPosition = settings.openPosition || 'auto';\n this.placeholderText = settings.placeholderText !== undefined ? settings.placeholderText : 'Select Value';\n this.allowDeselect = settings.allowDeselect !== undefined ? settings.allowDeselect : false;\n this.hideSelected = settings.hideSelected !== undefined ? settings.hideSelected : false;\n this.showOptionTooltips = settings.showOptionTooltips !== undefined ? settings.showOptionTooltips : false;\n this.minSelected = settings.minSelected || 0;\n this.maxSelected = settings.maxSelected || 1000;\n this.timeoutDelay = settings.timeoutDelay || 200;\n this.maxValuesShown = settings.maxValuesShown || 20;\n this.maxValuesMessage = settings.maxValuesMessage || '{number} selected';\n }\n}\n\nclass Optgroup {\n constructor(optgroup) {\n this.id = !optgroup.id || optgroup.id === '' ? generateID() : optgroup.id;\n this.label = optgroup.label || '';\n this.selectAll = optgroup.selectAll === undefined ? false : optgroup.selectAll;\n this.selectAllText = optgroup.selectAllText || 'Select All';\n this.closable = optgroup.closable || 'off';\n this.options = [];\n if (optgroup.options) {\n for (const o of optgroup.options) {\n this.options.push(new Option(o));\n }\n }\n }\n}\nclass Option {\n constructor(option) {\n this.id = !option.id || option.id === '' ? generateID() : option.id;\n this.value = option.value === undefined ? option.text : option.value;\n this.text = option.text || '';\n this.html = option.html || '';\n this.selected = option.selected !== undefined ? option.selected : false;\n this.display = option.display !== undefined ? option.display : true;\n this.disabled = option.disabled !== undefined ? option.disabled : false;\n this.mandatory = option.mandatory !== undefined ? option.mandatory : false;\n this.placeholder = option.placeholder !== undefined ? option.placeholder : false;\n this.class = option.class || '';\n this.style = option.style || '';\n this.data = option.data || {};\n }\n}\nclass Store {\n constructor(type, data) {\n this.selectType = 'single';\n this.data = [];\n this.selectType = type;\n this.setData(data);\n }\n validateDataArray(data) {\n if (!Array.isArray(data)) {\n return new Error('Data must be an array');\n }\n for (let dataObj of data) {\n if (dataObj instanceof Optgroup || 'label' in dataObj) {\n if (!('label' in dataObj)) {\n return new Error('Optgroup must have a label');\n }\n if ('options' in dataObj && dataObj.options) {\n for (let option of dataObj.options) {\n return this.validateOption(option);\n }\n }\n }\n else if (dataObj instanceof Option || 'text' in dataObj) {\n return this.validateOption(dataObj);\n }\n else {\n return new Error('Data object must be a valid optgroup or option');\n }\n }\n return null;\n }\n validateOption(option) {\n if (!('text' in option)) {\n return new Error('Option must have a text');\n }\n return null;\n }\n partialToFullData(data) {\n let dataFinal = [];\n data.forEach((dataObj) => {\n if (dataObj instanceof Optgroup || 'label' in dataObj) {\n let optOptions = [];\n if ('options' in dataObj && dataObj.options) {\n dataObj.options.forEach((option) => {\n optOptions.push(new Option(option));\n });\n }\n if (optOptions.length > 0) {\n dataFinal.push(new Optgroup(dataObj));\n }\n }\n if (dataObj instanceof Option || 'text' in dataObj) {\n dataFinal.push(new Option(dataObj));\n }\n });\n return dataFinal;\n }\n setData(data) {\n this.data = this.partialToFullData(data);\n if (this.selectType === 'single') {\n this.setSelectedBy('value', this.getSelected());\n }\n }\n getData() {\n return this.filter(null, true);\n }\n getDataOptions() {\n return this.filter(null, false);\n }\n addOption(option) {\n this.setData(this.getData().concat(new Option(option)));\n }\n setSelectedBy(selectedType, selectedValues) {\n let firstOption = null;\n let hasSelected = false;\n for (let dataObj of this.data) {\n if (dataObj instanceof Optgroup) {\n for (let option of dataObj.options) {\n if (!firstOption) {\n firstOption = option;\n }\n option.selected = hasSelected ? false : selectedValues.includes(option[selectedType]);\n if (option.selected && this.selectType === 'single') {\n hasSelected = true;\n }\n }\n }\n if (dataObj instanceof Option) {\n if (!firstOption) {\n firstOption = dataObj;\n }\n dataObj.selected = hasSelected ? false : selectedValues.includes(dataObj[selectedType]);\n if (dataObj.selected && this.selectType === 'single') {\n hasSelected = true;\n }\n }\n }\n if (this.selectType === 'single' && firstOption && !hasSelected) {\n firstOption.selected = true;\n }\n }\n getSelected() {\n let selectedOptions = this.getSelectedOptions();\n let selectedValues = [];\n selectedOptions.forEach((option) => {\n selectedValues.push(option.value);\n });\n return selectedValues;\n }\n getSelectedOptions() {\n return this.filter((opt) => {\n return opt.selected;\n }, false);\n }\n getSelectedIDs() {\n let selectedOptions = this.getSelectedOptions();\n let selectedIDs = [];\n selectedOptions.forEach((op) => {\n selectedIDs.push(op.id);\n });\n return selectedIDs;\n }\n getOptgroupByID(id) {\n for (let dataObj of this.data) {\n if (dataObj instanceof Optgroup && dataObj.id === id) {\n return dataObj;\n }\n }\n return null;\n }\n getOptionByID(id) {\n let options = this.filter((opt) => {\n return opt.id === id;\n }, false);\n return options.length ? options[0] : null;\n }\n search(search, searchFilter) {\n search = search.trim();\n if (search === '') {\n return this.getData();\n }\n return this.filter((opt) => {\n return searchFilter(opt, search);\n }, true);\n }\n filter(filter, includeOptgroup) {\n const dataSearch = [];\n this.data.forEach((dataObj) => {\n if (dataObj instanceof Optgroup) {\n let optOptions = [];\n dataObj.options.forEach((option) => {\n if (!filter || filter(option)) {\n if (!includeOptgroup) {\n dataSearch.push(new Option(option));\n }\n else {\n optOptions.push(new Option(option));\n }\n }\n });\n if (optOptions.length > 0) {\n let optgroup = new Optgroup(dataObj);\n optgroup.options = optOptions;\n dataSearch.push(optgroup);\n }\n }\n if (dataObj instanceof Option) {\n if (!filter || filter(dataObj)) {\n dataSearch.push(new Option(dataObj));\n }\n }\n });\n return dataSearch;\n }\n getSelectType() {\n return this.selectType;\n }\n}\n\nclass Render {\n constructor(settings, store, callbacks) {\n this.classes = {\n main: 'ss-main',\n placeholder: 'ss-placeholder',\n values: 'ss-values',\n single: 'ss-single',\n max: 'ss-max',\n value: 'ss-value',\n valueText: 'ss-value-text',\n valueDelete: 'ss-value-delete',\n valueOut: 'ss-value-out',\n deselect: 'ss-deselect',\n deselectPath: 'M10,10 L90,90 M10,90 L90,10',\n arrow: 'ss-arrow',\n arrowClose: 'M10,30 L50,70 L90,30',\n arrowOpen: 'M10,70 L50,30 L90,70',\n content: 'ss-content',\n openAbove: 'ss-open-above',\n openBelow: 'ss-open-below',\n search: 'ss-search',\n searchHighlighter: 'ss-search-highlight',\n searching: 'ss-searching',\n addable: 'ss-addable',\n addablePath: 'M50,10 L50,90 M10,50 L90,50',\n list: 'ss-list',\n optgroup: 'ss-optgroup',\n optgroupLabel: 'ss-optgroup-label',\n optgroupLabelText: 'ss-optgroup-label-text',\n optgroupActions: 'ss-optgroup-actions',\n optgroupSelectAll: 'ss-selectall',\n optgroupSelectAllBox: 'M60,10 L10,10 L10,90 L90,90 L90,50',\n optgroupSelectAllCheck: 'M30,45 L50,70 L90,10',\n optgroupClosable: 'ss-closable',\n option: 'ss-option',\n optionDelete: 'M10,10 L90,90 M10,90 L90,10',\n highlighted: 'ss-highlighted',\n open: 'ss-open',\n close: 'ss-close',\n selected: 'ss-selected',\n error: 'ss-error',\n disabled: 'ss-disabled',\n hide: 'ss-hide',\n };\n this.store = store;\n this.settings = settings;\n this.callbacks = callbacks;\n this.main = this.mainDiv();\n this.content = this.contentDiv();\n this.updateClassStyles();\n this.updateAriaAttributes();\n this.settings.contentLocation.appendChild(this.content.main);\n }\n enable() {\n this.main.main.classList.remove(this.classes.disabled);\n this.content.search.input.disabled = false;\n }\n disable() {\n this.main.main.classList.add(this.classes.disabled);\n this.content.search.input.disabled = true;\n }\n open() {\n this.main.arrow.path.setAttribute('d', this.classes.arrowOpen);\n this.main.main.classList.add(this.settings.openPosition === 'up' ? this.classes.openAbove : this.classes.openBelow);\n this.main.main.setAttribute('aria-expanded', 'true');\n this.moveContent();\n const selectedOptions = this.store.getSelectedOptions();\n if (selectedOptions.length) {\n const selectedId = selectedOptions[selectedOptions.length - 1].id;\n const selectedOption = this.content.list.querySelector('[data-id=\"' + selectedId + '\"]');\n if (selectedOption) {\n this.ensureElementInView(this.content.list, selectedOption);\n }\n }\n }\n close() {\n this.main.main.classList.remove(this.classes.openAbove);\n this.main.main.classList.remove(this.classes.openBelow);\n this.main.main.setAttribute('aria-expanded', 'false');\n this.content.main.classList.remove(this.classes.openAbove);\n this.content.main.classList.remove(this.classes.openBelow);\n this.main.arrow.path.setAttribute('d', this.classes.arrowClose);\n }\n updateClassStyles() {\n this.main.main.className = '';\n this.main.main.removeAttribute('style');\n this.content.main.className = '';\n this.content.main.removeAttribute('style');\n this.main.main.classList.add(this.classes.main);\n this.content.main.classList.add(this.classes.content);\n if (this.settings.style !== '') {\n this.main.main.style.cssText = this.settings.style;\n this.content.main.style.cssText = this.settings.style;\n }\n if (this.settings.class.length) {\n for (const c of this.settings.class) {\n if (c.trim() !== '') {\n this.main.main.classList.add(c.trim());\n this.content.main.classList.add(c.trim());\n }\n }\n }\n if (this.settings.contentPosition === 'relative') {\n this.content.main.classList.add('ss-' + this.settings.contentPosition);\n }\n }\n updateAriaAttributes() {\n this.main.main.role = 'combobox';\n this.main.main.setAttribute('aria-haspopup', 'listbox');\n this.main.main.setAttribute('aria-controls', this.content.main.id);\n this.main.main.setAttribute('aria-expanded', 'false');\n this.content.main.setAttribute('role', 'listbox');\n }\n mainDiv() {\n var _a;\n const main = document.createElement('div');\n main.dataset.id = this.settings.id;\n main.id = this.settings.id;\n main.tabIndex = 0;\n main.onkeydown = (e) => {\n switch (e.key) {\n case 'ArrowUp':\n case 'ArrowDown':\n this.callbacks.open();\n e.key === 'ArrowDown' ? this.highlight('down') : this.highlight('up');\n return false;\n case 'Tab':\n this.callbacks.close();\n return true;\n case 'Enter':\n case ' ':\n this.callbacks.open();\n const highlighted = this.content.list.querySelector('.' + this.classes.highlighted);\n if (highlighted) {\n highlighted.click();\n }\n return false;\n case 'Escape':\n this.callbacks.close();\n return false;\n }\n };\n main.onclick = (e) => {\n if (this.settings.disabled) {\n return;\n }\n this.settings.isOpen ? this.callbacks.close() : this.callbacks.open();\n };\n const values = document.createElement('div');\n values.classList.add(this.classes.values);\n main.appendChild(values);\n const deselect = document.createElement('div');\n deselect.classList.add(this.classes.deselect);\n const selectedOptions = (_a = this.store) === null || _a === void 0 ? void 0 : _a.getSelectedOptions();\n if (!this.settings.allowDeselect || (this.settings.isMultiple && selectedOptions && selectedOptions.length <= 0)) {\n deselect.classList.add(this.classes.hide);\n }\n else {\n deselect.classList.remove(this.classes.hide);\n }\n deselect.onclick = (e) => {\n e.stopPropagation();\n if (this.settings.disabled) {\n return;\n }\n let shouldDelete = true;\n const before = this.store.getSelectedOptions();\n const after = [];\n if (this.callbacks.beforeChange) {\n shouldDelete = this.callbacks.beforeChange(after, before) === true;\n }\n if (shouldDelete) {\n if (this.settings.isMultiple) {\n this.callbacks.setSelected([], false);\n this.updateDeselectAll();\n }\n else {\n this.callbacks.setSelected([''], false);\n }\n if (this.settings.closeOnSelect) {\n this.callbacks.close();\n }\n if (this.callbacks.afterChange) {\n this.callbacks.afterChange(after);\n }\n }\n };\n const deselectSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n deselectSvg.setAttribute('viewBox', '0 0 100 100');\n const deselectPath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n deselectPath.setAttribute('d', this.classes.deselectPath);\n deselectSvg.appendChild(deselectPath);\n deselect.appendChild(deselectSvg);\n main.appendChild(deselect);\n const arrow = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n arrow.classList.add(this.classes.arrow);\n arrow.setAttribute('viewBox', '0 0 100 100');\n const arrowPath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n arrowPath.setAttribute('d', this.classes.arrowClose);\n if (this.settings.alwaysOpen) {\n arrow.classList.add(this.classes.hide);\n }\n arrow.appendChild(arrowPath);\n main.appendChild(arrow);\n return {\n main: main,\n values: values,\n deselect: {\n main: deselect,\n svg: deselectSvg,\n path: deselectPath,\n },\n arrow: {\n main: arrow,\n path: arrowPath,\n },\n };\n }\n mainFocus(eventType) {\n if (eventType !== 'click') {\n this.main.main.focus({ preventScroll: true });\n }\n }\n placeholder() {\n const placeholderOption = this.store.filter((o) => o.placeholder, false);\n let placeholderText = this.settings.placeholderText;\n if (placeholderOption.length) {\n if (placeholderOption[0].html !== '') {\n placeholderText = placeholderOption[0].html;\n }\n else if (placeholderOption[0].text !== '') {\n placeholderText = placeholderOption[0].text;\n }\n }\n const placeholder = document.createElement('div');\n placeholder.classList.add(this.classes.placeholder);\n placeholder.innerHTML = placeholderText;\n return placeholder;\n }\n renderValues() {\n if (!this.settings.isMultiple) {\n this.renderSingleValue();\n return;\n }\n this.renderMultipleValues();\n }\n renderSingleValue() {\n const selected = this.store.filter((o) => {\n return o.selected && !o.placeholder;\n }, false);\n const selectedSingle = selected.length > 0 ? selected[0] : null;\n if (!selectedSingle) {\n this.main.values.innerHTML = this.placeholder().outerHTML;\n }\n else {\n const singleValue = document.createElement('div');\n singleValue.classList.add(this.classes.single);\n if (selectedSingle.html) {\n singleValue.innerHTML = selectedSingle.html;\n }\n else {\n singleValue.innerText = selectedSingle.text;\n }\n this.main.values.innerHTML = singleValue.outerHTML;\n }\n if (!this.settings.allowDeselect || !selected.length) {\n this.main.deselect.main.classList.add(this.classes.hide);\n }\n else {\n this.main.deselect.main.classList.remove(this.classes.hide);\n }\n }\n renderMultipleValues() {\n let currentNodes = this.main.values.childNodes;\n let selectedOptions = this.store.filter((opt) => {\n return opt.selected && opt.display;\n }, false);\n if (selectedOptions.length === 0) {\n this.main.values.innerHTML = this.placeholder().outerHTML;\n return;\n }\n else {\n const placeholder = this.main.values.querySelector('.' + this.classes.placeholder);\n if (placeholder) {\n placeholder.remove();\n }\n }\n if (selectedOptions.length > this.settings.maxValuesShown) {\n const singleValue = document.createElement('div');\n singleValue.classList.add(this.classes.max);\n singleValue.textContent = this.settings.maxValuesMessage.replace('{number}', selectedOptions.length.toString());\n this.main.values.innerHTML = singleValue.outerHTML;\n return;\n }\n else {\n const maxValuesMessage = this.main.values.querySelector('.' + this.classes.max);\n if (maxValuesMessage) {\n maxValuesMessage.remove();\n }\n }\n let removeNodes = [];\n for (let i = 0; i < currentNodes.length; i++) {\n const node = currentNodes[i];\n const id = node.getAttribute('data-id');\n if (id) {\n const found = selectedOptions.filter((opt) => {\n return opt.id === id;\n }, false);\n if (!found.length) {\n removeNodes.push(node);\n }\n }\n }\n for (const n of removeNodes) {\n n.classList.add(this.classes.valueOut);\n setTimeout(() => {\n if (this.main.values.hasChildNodes() && this.main.values.contains(n)) {\n this.main.values.removeChild(n);\n }\n }, 100);\n }\n currentNodes = this.main.values.childNodes;\n for (let d = 0; d < selectedOptions.length; d++) {\n let shouldAdd = true;\n for (let i = 0; i < currentNodes.length; i++) {\n if (selectedOptions[d].id === String(currentNodes[i].dataset.id)) {\n shouldAdd = false;\n }\n }\n if (shouldAdd) {\n if (currentNodes.length === 0) {\n this.main.values.appendChild(this.multipleValue(selectedOptions[d]));\n }\n else if (d === 0) {\n this.main.values.insertBefore(this.multipleValue(selectedOptions[d]), currentNodes[d]);\n }\n else {\n currentNodes[d - 1].insertAdjacentElement('afterend', this.multipleValue(selectedOptions[d]));\n }\n }\n }\n this.updateDeselectAll();\n }\n multipleValue(option) {\n const value = document.createElement('div');\n value.classList.add(this.classes.value);\n value.dataset.id = option.id;\n const text = document.createElement('div');\n text.classList.add(this.classes.valueText);\n text.innerText = option.text;\n value.appendChild(text);\n if (!option.mandatory) {\n const deleteDiv = document.createElement('div');\n deleteDiv.classList.add(this.classes.valueDelete);\n deleteDiv.onclick = (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (this.settings.disabled) {\n return;\n }\n let shouldDelete = true;\n const before = this.store.getSelectedOptions();\n const after = before.filter((o) => {\n return o.selected && o.id !== option.id;\n }, true);\n if (this.settings.minSelected && after.length < this.settings.minSelected) {\n return;\n }\n if (this.callbacks.beforeChange) {\n shouldDelete = this.callbacks.beforeChange(after, before) === true;\n }\n if (shouldDelete) {\n let selectedValues = [];\n for (const o of after) {\n if (o instanceof Optgroup) {\n for (const c of o.options) {\n selectedValues.push(c.value);\n }\n }\n if (o instanceof Option) {\n selectedValues.push(o.value);\n }\n }\n this.callbacks.setSelected(selectedValues, false);\n if (this.settings.closeOnSelect) {\n this.callbacks.close();\n }\n if (this.callbacks.afterChange) {\n this.callbacks.afterChange(after);\n }\n this.updateDeselectAll();\n }\n };\n const deleteSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n deleteSvg.setAttribute('viewBox', '0 0 100 100');\n const deletePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n deletePath.setAttribute('d', this.classes.optionDelete);\n deleteSvg.appendChild(deletePath);\n deleteDiv.appendChild(deleteSvg);\n value.appendChild(deleteDiv);\n }\n return value;\n }\n contentDiv() {\n const main = document.createElement('div');\n main.dataset.id = this.settings.id;\n main.id = this.settings.id;\n const search = this.searchDiv();\n main.appendChild(search.main);\n const list = this.listDiv();\n main.appendChild(list);\n return {\n main: main,\n search: search,\n list: list,\n };\n }\n moveContent() {\n if (this.settings.contentPosition === 'relative') {\n this.moveContentBelow();\n return;\n }\n if (this.settings.openPosition === 'down') {\n this.moveContentBelow();\n return;\n }\n else if (this.settings.openPosition === 'up') {\n this.moveContentAbove();\n return;\n }\n if (this.putContent() === 'up') {\n this.moveContentAbove();\n }\n else {\n this.moveContentBelow();\n }\n }\n searchDiv() {\n const main = document.createElement('div');\n const input = document.createElement('input');\n const addable = document.createElement('div');\n main.classList.add(this.classes.search);\n const searchReturn = {\n main,\n input,\n };\n if (!this.settings.showSearch) {\n main.classList.add(this.classes.hide);\n input.readOnly = true;\n }\n input.type = 'search';\n input.placeholder = this.settings.searchPlaceholder;\n input.tabIndex = -1;\n input.setAttribute('aria-label', this.settings.searchPlaceholder);\n input.setAttribute('autocapitalize', 'off');\n input.setAttribute('autocomplete', 'off');\n input.setAttribute('autocorrect', 'off');\n input.oninput = debounce((e) => {\n this.callbacks.search(e.target.value);\n }, 100);\n input.onkeydown = (e) => {\n switch (e.key) {\n case 'ArrowUp':\n case 'ArrowDown':\n e.key === 'ArrowDown' ? this.highlight('down') : this.highlight('up');\n return false;\n case 'Tab':\n this.callbacks.close();\n return true;\n case 'Escape':\n this.callbacks.close();\n return false;\n case 'Enter':\n case ' ':\n if (this.callbacks.addable && e.ctrlKey) {\n addable.click();\n return false;\n }\n else {\n const highlighted = this.content.list.querySelector('.' + this.classes.highlighted);\n if (highlighted) {\n highlighted.click();\n return false;\n }\n }\n return true;\n }\n };\n main.appendChild(input);\n if (this.callbacks.addable) {\n addable.classList.add(this.classes.addable);\n const plus = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n plus.setAttribute('viewBox', '0 0 100 100');\n const plusPath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n plusPath.setAttribute('d', this.classes.addablePath);\n plus.appendChild(plusPath);\n addable.appendChild(plus);\n addable.onclick = (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (!this.callbacks.addable) {\n return;\n }\n const inputValue = this.content.search.input.value.trim();\n if (inputValue === '') {\n this.content.search.input.focus();\n return;\n }\n const runFinish = (oo) => {\n let newOption = new Option(oo);\n this.callbacks.addOption(newOption);\n if (this.settings.isMultiple) {\n let values = this.store.getSelected();\n values.push(newOption.value);\n this.callbacks.setSelected(values, true);\n }\n else {\n this.callbacks.setSelected([newOption.value], true);\n }\n this.callbacks.search('');\n if (this.settings.closeOnSelect) {\n setTimeout(() => {\n this.callbacks.close();\n }, 100);\n }\n };\n const addableValue = this.callbacks.addable(inputValue);\n if (addableValue === false || addableValue === undefined || addableValue === null) {\n return;\n }\n if (addableValue instanceof Promise) {\n addableValue.then((value) => {\n if (typeof value === 'string') {\n runFinish({\n text: value,\n value: value,\n });\n }\n else {\n runFinish(value);\n }\n });\n }\n else if (typeof addableValue === 'string') {\n runFinish({\n text: addableValue,\n value: addableValue,\n });\n }\n else {\n runFinish(addableValue);\n }\n return;\n };\n main.appendChild(addable);\n searchReturn.addable = {\n main: addable,\n svg: plus,\n path: plusPath,\n };\n }\n return searchReturn;\n }\n searchFocus() {\n this.content.search.input.focus();\n }\n getOptions(notPlaceholder = false, notDisabled = false, notHidden = false) {\n let query = '.' + this.classes.option;\n if (notPlaceholder) {\n query += ':not(.' + this.classes.placeholder + ')';\n }\n if (notDisabled) {\n query += ':not(.' + this.classes.disabled + ')';\n }\n if (notHidden) {\n query += ':not(.' + this.classes.hide + ')';\n }\n return Array.from(this.content.list.querySelectorAll(query));\n }\n highlight(dir) {\n const options = this.getOptions(true, true, true);\n if (options.length === 0) {\n return;\n }\n if (options.length === 1) {\n if (!options[0].classList.contains(this.classes.highlighted)) {\n options[0].classList.add(this.classes.highlighted);\n return;\n }\n }\n for (let i = 0; i < options.length; i++) {\n if (options[i].classList.contains(this.classes.highlighted)) {\n const prevOption = options[i];\n prevOption.classList.remove(this.classes.highlighted);\n const prevParent = prevOption.parentElement;\n if (prevParent && prevParent.classList.contains(this.classes.open)) {\n const optgroupLabel = prevParent.querySelector('.' + this.classes.optgroupLabel);\n if (optgroupLabel) {\n optgroupLabel.click();\n }\n }\n let selectOption = options[dir === 'down' ? (i + 1 < options.length ? i + 1 : 0) : i - 1 >= 0 ? i - 1 : options.length - 1];\n selectOption.classList.add(this.classes.highlighted);\n this.ensureElementInView(this.content.list, selectOption);\n const selectParent = selectOption.parentElement;\n if (selectParent && selectParent.classList.contains(this.classes.close)) {\n const optgroupLabel = selectParent.querySelector('.' + this.classes.optgroupLabel);\n if (optgroupLabel) {\n optgroupLabel.click();\n }\n }\n return;\n }\n }\n options[dir === 'down' ? 0 : options.length - 1].classList.add(this.classes.highlighted);\n this.ensureElementInView(this.content.list, options[dir === 'down' ? 0 : options.length - 1]);\n }\n listDiv() {\n const options = document.createElement('div');\n options.classList.add(this.classes.list);\n return options;\n }\n renderError(error) {\n this.content.list.innerHTML = '';\n const errorDiv = document.createElement('div');\n errorDiv.classList.add(this.classes.error);\n errorDiv.textContent = error;\n this.content.list.appendChild(errorDiv);\n }\n renderSearching() {\n this.content.list.innerHTML = '';\n const searchingDiv = document.createElement('div');\n searchingDiv.classList.add(this.classes.searching);\n searchingDiv.textContent = this.settings.searchingText;\n this.content.list.appendChild(searchingDiv);\n }\n renderOptions(data) {\n this.content.list.innerHTML = '';\n if (data.length === 0) {\n const noResults = document.createElement('div');\n noResults.classList.add(this.classes.search);\n noResults.innerHTML = this.settings.searchText;\n this.content.list.appendChild(noResults);\n return;\n }\n for (const d of data) {\n if (d instanceof Optgroup) {\n const optgroupEl = document.createElement('div');\n optgroupEl.classList.add(this.classes.optgroup);\n const optgroupLabel = document.createElement('div');\n optgroupLabel.classList.add(this.classes.optgroupLabel);\n optgroupEl.appendChild(optgroupLabel);\n const optgroupLabelText = document.createElement('div');\n optgroupLabelText.classList.add(this.classes.optgroupLabelText);\n optgroupLabelText.textContent = d.label;\n optgroupLabel.appendChild(optgroupLabelText);\n const optgroupActions = document.createElement('div');\n optgroupActions.classList.add(this.classes.optgroupActions);\n optgroupLabel.appendChild(optgroupActions);\n if (this.settings.isMultiple && d.selectAll) {\n const selectAll = document.createElement('div');\n selectAll.classList.add(this.classes.optgroupSelectAll);\n let allSelected = true;\n for (const o of d.options) {\n if (!o.selected) {\n allSelected = false;\n break;\n }\n }\n if (allSelected) {\n selectAll.classList.add(this.classes.selected);\n }\n const selectAllText = document.createElement('span');\n selectAllText.textContent = d.selectAllText;\n selectAll.appendChild(selectAllText);\n const selectAllSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n selectAllSvg.setAttribute('viewBox', '0 0 100 100');\n selectAll.appendChild(selectAllSvg);\n const selectAllBox = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n selectAllBox.setAttribute('d', this.classes.optgroupSelectAllBox);\n selectAllSvg.appendChild(selectAllBox);\n const selectAllCheck = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n selectAllCheck.setAttribute('d', this.classes.optgroupSelectAllCheck);\n selectAllSvg.appendChild(selectAllCheck);\n selectAll.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n const currentSelected = this.store.getSelected();\n if (allSelected) {\n const newSelected = currentSelected.filter((s) => {\n for (const o of d.options) {\n if (s === o.value) {\n return false;\n }\n }\n return true;\n });\n this.callbacks.setSelected(newSelected, true);\n return;\n }\n else {\n const newSelected = currentSelected.concat(d.options.map((o) => o.value));\n for (const o of d.options) {\n if (!this.store.getOptionByID(o.id)) {\n this.callbacks.addOption(o);\n }\n }\n this.callbacks.setSelected(newSelected, true);\n return;\n }\n });\n optgroupActions.appendChild(selectAll);\n }\n if (d.closable !== 'off') {\n const optgroupClosable = document.createElement('div');\n optgroupClosable.classList.add(this.classes.optgroupClosable);\n const optgroupClosableSvg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n optgroupClosableSvg.setAttribute('viewBox', '0 0 100 100');\n optgroupClosableSvg.classList.add(this.classes.arrow);\n optgroupClosable.appendChild(optgroupClosableSvg);\n const optgroupClosableArrow = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n optgroupClosableSvg.appendChild(optgroupClosableArrow);\n if (d.options.some((o) => o.selected) || this.content.search.input.value.trim() !== '') {\n optgroupClosable.classList.add(this.classes.open);\n optgroupClosableArrow.setAttribute('d', this.classes.arrowOpen);\n }\n else if (d.closable === 'open') {\n optgroupEl.classList.add(this.classes.open);\n optgroupClosableArrow.setAttribute('d', this.classes.arrowOpen);\n }\n else if (d.closable === 'close') {\n optgroupEl.classList.add(this.classes.close);\n optgroupClosableArrow.setAttribute('d', this.classes.arrowClose);\n }\n optgroupLabel.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n if (optgroupEl.classList.contains(this.classes.close)) {\n optgroupEl.classList.remove(this.classes.close);\n optgroupEl.classList.add(this.classes.open);\n optgroupClosableArrow.setAttribute('d', this.classes.arrowOpen);\n }\n else {\n optgroupEl.classList.remove(this.classes.open);\n optgroupEl.classList.add(this.classes.close);\n optgroupClosableArrow.setAttribute('d', this.classes.arrowClose);\n }\n });\n optgroupActions.appendChild(optgroupClosable);\n }\n optgroupEl.appendChild(optgroupLabel);\n for (const o of d.options) {\n optgroupEl.appendChild(this.option(o));\n }\n this.content.list.appendChild(optgroupEl);\n }\n if (d instanceof Option) {\n this.content.list.appendChild(this.option(d));\n }\n }\n }\n option(option) {\n if (option.placeholder) {\n const placeholder = document.createElement('div');\n placeholder.classList.add(this.classes.option);\n placeholder.classList.add(this.classes.hide);\n return placeholder;\n }\n const optionEl = document.createElement('div');\n optionEl.dataset.id = option.id;\n optionEl.id = option.id;\n optionEl.classList.add(this.classes.option);\n optionEl.setAttribute('role', 'option');\n if (option.class) {\n option.class.split(' ').forEach((dataClass) => {\n optionEl.classList.add(dataClass);\n });\n }\n if (option.style) {\n optionEl.style.cssText = option.style;\n }\n if (this.settings.searchHighlight && this.content.search.input.value.trim() !== '') {\n optionEl.innerHTML = this.highlightText(option.html !== '' ? option.html : option.text, this.content.search.input.value, this.classes.searchHighlighter);\n }\n else if (option.html !== '') {\n optionEl.innerHTML = option.html;\n }\n else {\n optionEl.textContent = option.text;\n }\n if (this.settings.showOptionTooltips && optionEl.textContent) {\n optionEl.setAttribute('title', optionEl.textContent);\n }\n if (!option.display) {\n optionEl.classList.add(this.classes.hide);\n }\n if (option.disabled) {\n optionEl.classList.add(this.classes.disabled);\n }\n if (option.selected && this.settings.hideSelected) {\n optionEl.classList.add(this.classes.hide);\n }\n if (option.selected) {\n optionEl.classList.add(this.classes.selected);\n optionEl.setAttribute('aria-selected', 'true');\n this.main.main.setAttribute('aria-activedescendant', optionEl.id);\n }\n else {\n optionEl.classList.remove(this.classes.selected);\n optionEl.setAttribute('aria-selected', 'false');\n }\n optionEl.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n const selectedOptions = this.store.getSelected();\n const element = e.currentTarget;\n const elementID = String(element.dataset.id);\n if (option.disabled || (option.selected && !this.settings.allowDeselect)) {\n return;\n }\n if ((this.settings.isMultiple && this.settings.maxSelected <= selectedOptions.length && !option.selected) ||\n (this.settings.isMultiple && this.settings.minSelected >= selectedOptions.length && option.selected)) {\n return;\n }\n let shouldUpdate = false;\n const before = this.store.getSelectedOptions();\n let after = [];\n if (this.settings.isMultiple) {\n if (option.selected) {\n after = before.filter((o) => o.id !== elementID);\n }\n else {\n after = before.concat(option);\n }\n }\n if (!this.settings.isMultiple) {\n if (option.selected) {\n after = [];\n }\n else {\n after = [option];\n }\n }\n if (!this.callbacks.beforeChange) {\n shouldUpdate = true;\n }\n if (this.callbacks.beforeChange) {\n if (this.callbacks.beforeChange(after, before) === false) {\n shouldUpdate = false;\n }\n else {\n shouldUpdate = true;\n }\n }\n if (shouldUpdate) {\n if (!this.store.getOptionByID(elementID)) {\n this.callbacks.addOption(option);\n }\n this.callbacks.setSelected(after.map((o) => o.value), false);\n if (this.settings.closeOnSelect) {\n this.callbacks.close();\n }\n if (this.callbacks.afterChange) {\n this.callbacks.afterChange(after);\n }\n }\n });\n return optionEl;\n }\n destroy() {\n this.main.main.remove();\n this.content.main.remove();\n }\n highlightText(str, search, className) {\n let completedString = str;\n const regex = new RegExp('(' + search.trim() + ')(?![^<]*>[^<>]*${originalTextFoundByRegex}`);\n return completedString;\n }\n moveContentAbove() {\n const mainHeight = this.main.main.offsetHeight;\n const contentHeight = this.content.main.offsetHeight;\n this.main.main.classList.remove(this.classes.openBelow);\n this.main.main.classList.add(this.classes.openAbove);\n this.content.main.classList.remove(this.classes.openBelow);\n this.content.main.classList.add(this.classes.openAbove);\n const containerRect = this.main.main.getBoundingClientRect();\n this.content.main.style.margin = '-' + (mainHeight + contentHeight - 1) + 'px 0px 0px 0px';\n this.content.main.style.top = containerRect.top + containerRect.height + window.scrollY + 'px';\n this.content.main.style.left = containerRect.left + window.scrollX + 'px';\n this.content.main.style.width = containerRect.width + 'px';\n }\n moveContentBelow() {\n this.main.main.classList.remove(this.classes.openAbove);\n this.main.main.classList.add(this.classes.openBelow);\n this.content.main.classList.remove(this.classes.openAbove);\n this.content.main.classList.add(this.classes.openBelow);\n const containerRect = this.main.main.getBoundingClientRect();\n this.content.main.style.margin = '-1px 0px 0px 0px';\n if (this.settings.contentPosition !== 'relative') {\n this.content.main.style.top = containerRect.top + containerRect.height + window.scrollY + 'px';\n this.content.main.style.left = containerRect.left + window.scrollX + 'px';\n this.content.main.style.width = containerRect.width + 'px';\n }\n }\n ensureElementInView(container, element) {\n const cTop = container.scrollTop + container.offsetTop;\n const cBottom = cTop + container.clientHeight;\n const eTop = element.offsetTop;\n const eBottom = eTop + element.clientHeight;\n if (eTop < cTop) {\n container.scrollTop -= cTop - eTop;\n }\n else if (eBottom > cBottom) {\n container.scrollTop += eBottom - cBottom;\n }\n }\n putContent() {\n const mainHeight = this.main.main.offsetHeight;\n const mainRect = this.main.main.getBoundingClientRect();\n const contentHeight = this.content.main.offsetHeight;\n const spaceBelow = window.innerHeight - (mainRect.top + mainHeight);\n if (spaceBelow <= contentHeight) {\n if (mainRect.top > contentHeight) {\n return 'up';\n }\n else {\n return 'down';\n }\n }\n return 'down';\n }\n updateDeselectAll() {\n if (!this.store || !this.settings) {\n return;\n }\n const selected = this.store.getSelectedOptions();\n const hasSelectedItems = selected && selected.length > 0;\n const isMultiple = this.settings.isMultiple;\n const allowDeselect = this.settings.allowDeselect;\n const deselectButton = this.main.deselect.main;\n const hideClass = this.classes.hide;\n if (allowDeselect && !(isMultiple && !hasSelectedItems)) {\n deselectButton.classList.remove(hideClass);\n }\n else {\n deselectButton.classList.add(hideClass);\n }\n }\n}\n\nclass Select {\n constructor(select) {\n this.listen = false;\n this.observer = null;\n this.select = select;\n this.select.addEventListener('change', this.valueChange.bind(this), {\n passive: true,\n });\n this.observer = new MutationObserver(this.observeCall.bind(this));\n this.changeListen(true);\n }\n enable() {\n this.select.disabled = false;\n }\n disable() {\n this.select.disabled = true;\n }\n hideUI() {\n this.select.tabIndex = -1;\n this.select.style.display = 'none';\n this.select.setAttribute('aria-hidden', 'true');\n }\n showUI() {\n this.select.removeAttribute('tabindex');\n this.select.style.display = '';\n this.select.removeAttribute('aria-hidden');\n }\n changeListen(listen) {\n this.listen = listen;\n if (listen) {\n if (this.observer) {\n this.observer.observe(this.select, {\n subtree: true,\n childList: true,\n attributes: true,\n });\n }\n }\n if (!listen) {\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n }\n valueChange(ev) {\n if (this.listen && this.onValueChange) {\n this.onValueChange(this.getSelectedValues());\n }\n return true;\n }\n observeCall(mutations) {\n if (!this.listen) {\n return;\n }\n let classChanged = false;\n let disabledChanged = false;\n let optgroupOptionChanged = false;\n for (const m of mutations) {\n if (m.target === this.select) {\n if (m.attributeName === 'disabled') {\n disabledChanged = true;\n }\n if (m.attributeName === 'class') {\n classChanged = true;\n }\n }\n if (m.target.nodeName === 'OPTGROUP' || m.target.nodeName === 'OPTION') {\n optgroupOptionChanged = true;\n }\n }\n if (classChanged && this.onClassChange) {\n this.onClassChange(this.select.className.split(' '));\n }\n if (disabledChanged && this.onDisabledChange) {\n this.changeListen(false);\n this.onDisabledChange(this.select.disabled);\n this.changeListen(true);\n }\n if (optgroupOptionChanged && this.onOptionsChange) {\n this.changeListen(false);\n this.onOptionsChange(this.getData());\n this.changeListen(true);\n }\n }\n getData() {\n let data = [];\n const nodes = this.select.childNodes;\n for (const n of nodes) {\n if (n.nodeName === 'OPTGROUP') {\n data.push(this.getDataFromOptgroup(n));\n }\n if (n.nodeName === 'OPTION') {\n data.push(this.getDataFromOption(n));\n }\n }\n return data;\n }\n getDataFromOptgroup(optgroup) {\n let data = {\n id: optgroup.id,\n label: optgroup.label,\n selectAll: optgroup.dataset ? optgroup.dataset.selectall === 'true' : false,\n selectAllText: optgroup.dataset ? optgroup.dataset.selectalltext : 'Select all',\n closable: optgroup.dataset ? optgroup.dataset.closable : 'off',\n options: [],\n };\n const options = optgroup.childNodes;\n for (const o of options) {\n if (o.nodeName === 'OPTION') {\n data.options.push(this.getDataFromOption(o));\n }\n }\n return data;\n }\n getDataFromOption(option) {\n return {\n id: option.id,\n value: option.value,\n text: option.text,\n html: option.dataset && option.dataset.html ? option.dataset.html : '',\n selected: option.selected,\n display: option.style.display === 'none' ? false : true,\n disabled: option.disabled,\n mandatory: option.dataset ? option.dataset.mandatory === 'true' : false,\n placeholder: option.dataset.placeholder === 'true',\n class: option.className,\n style: option.style.cssText,\n data: option.dataset,\n };\n }\n getSelectedValues() {\n let values = [];\n const options = this.select.childNodes;\n for (const o of options) {\n if (o.nodeName === 'OPTGROUP') {\n const optgroupOptions = o.childNodes;\n for (const oo of optgroupOptions) {\n if (oo.nodeName === 'OPTION') {\n const option = oo;\n if (option.selected) {\n values.push(option.value);\n }\n }\n }\n }\n if (o.nodeName === 'OPTION') {\n const option = o;\n if (option.selected) {\n values.push(option.value);\n }\n }\n }\n return values;\n }\n setSelected(value) {\n this.changeListen(false);\n const options = this.select.childNodes;\n for (const o of options) {\n if (o.nodeName === 'OPTGROUP') {\n const optgroup = o;\n const optgroupOptions = optgroup.childNodes;\n for (const oo of optgroupOptions) {\n if (oo.nodeName === 'OPTION') {\n const option = oo;\n option.selected = value.includes(option.value);\n }\n }\n }\n if (o.nodeName === 'OPTION') {\n const option = o;\n option.selected = value.includes(option.value);\n }\n }\n this.changeListen(true);\n }\n updateSelect(id, style, classes) {\n this.changeListen(false);\n if (id) {\n this.select.dataset.id = id;\n }\n if (style) {\n this.select.style.cssText = style;\n }\n if (classes) {\n this.select.className = '';\n classes.forEach((c) => {\n if (c.trim() !== '') {\n this.select.classList.add(c.trim());\n }\n });\n }\n this.changeListen(true);\n }\n updateOptions(data) {\n this.changeListen(false);\n this.select.innerHTML = '';\n for (const d of data) {\n if (d instanceof Optgroup) {\n this.select.appendChild(this.createOptgroup(d));\n }\n if (d instanceof Option) {\n this.select.appendChild(this.createOption(d));\n }\n }\n this.select.dispatchEvent(new Event('change'));\n this.changeListen(true);\n }\n createOptgroup(optgroup) {\n const optgroupEl = document.createElement('optgroup');\n optgroupEl.id = optgroup.id;\n optgroupEl.label = optgroup.label;\n if (optgroup.selectAll) {\n optgroupEl.dataset.selectAll = 'true';\n }\n if (optgroup.closable !== 'off') {\n optgroupEl.dataset.closable = optgroup.closable;\n }\n if (optgroup.options) {\n for (const o of optgroup.options) {\n optgroupEl.appendChild(this.createOption(o));\n }\n }\n return optgroupEl;\n }\n createOption(info) {\n const optionEl = document.createElement('option');\n optionEl.id = info.id;\n optionEl.value = info.value;\n optionEl.innerHTML = info.text;\n if (info.html !== '') {\n optionEl.setAttribute('data-html', info.html);\n }\n if (info.selected) {\n optionEl.selected = info.selected;\n }\n if (info.disabled) {\n optionEl.disabled = true;\n }\n if (info.display === false) {\n optionEl.style.display = 'none';\n }\n if (info.placeholder) {\n optionEl.setAttribute('data-placeholder', 'true');\n }\n if (info.mandatory) {\n optionEl.setAttribute('data-mandatory', 'true');\n }\n if (info.class) {\n info.class.split(' ').forEach((optionClass) => {\n optionEl.classList.add(optionClass);\n });\n }\n if (info.data && typeof info.data === 'object') {\n Object.keys(info.data).forEach((key) => {\n optionEl.setAttribute('data-' + kebabCase(key), info.data[key]);\n });\n }\n return optionEl;\n }\n destroy() {\n this.changeListen(false);\n this.select.removeEventListener('change', this.valueChange.bind(this));\n if (this.observer) {\n this.observer.disconnect();\n this.observer = null;\n }\n delete this.select.dataset.id;\n this.showUI();\n }\n}\n\nclass SlimSelect {\n constructor(config) {\n var _a;\n this.events = {\n search: undefined,\n searchFilter: (opt, search) => {\n return opt.text.toLowerCase().indexOf(search.toLowerCase()) !== -1;\n },\n addable: undefined,\n beforeChange: undefined,\n afterChange: undefined,\n beforeOpen: undefined,\n afterOpen: undefined,\n beforeClose: undefined,\n afterClose: undefined,\n };\n this.windowResize = debounce(() => {\n if (!this.settings.isOpen && !this.settings.isFullOpen) {\n return;\n }\n this.render.moveContent();\n });\n this.windowScroll = debounce(() => {\n if (!this.settings.isOpen && !this.settings.isFullOpen) {\n return;\n }\n this.render.moveContent();\n });\n this.documentClick = (e) => {\n if (!this.settings.isOpen) {\n return;\n }\n if (e.target && !hasClassInTree(e.target, this.settings.id)) {\n this.close(e.type);\n }\n };\n this.windowVisibilityChange = () => {\n if (document.hidden) {\n this.close();\n }\n };\n this.selectEl = (typeof config.select === 'string' ? document.querySelector(config.select) : config.select);\n if (!this.selectEl) {\n if (config.events && config.events.error) {\n config.events.error(new Error('Could not find select element'));\n }\n return;\n }\n if (this.selectEl.tagName !== 'SELECT') {\n if (config.events && config.events.error) {\n config.events.error(new Error('Element isnt of type select'));\n }\n return;\n }\n if (this.selectEl.dataset.ssid) {\n this.destroy();\n }\n this.settings = new Settings(config.settings);\n const debounceEvents = ['afterChange', 'beforeOpen', 'afterOpen', 'beforeClose', 'afterClose'];\n for (const key in config.events) {\n if (!config.events.hasOwnProperty(key)) {\n continue;\n }\n if (debounceEvents.indexOf(key) !== -1) {\n this.events[key] = debounce(config.events[key], 100);\n }\n else {\n this.events[key] = config.events[key];\n }\n }\n this.settings.disabled = ((_a = config.settings) === null || _a === void 0 ? void 0 : _a.disabled) ? config.settings.disabled : this.selectEl.disabled;\n this.settings.isMultiple = this.selectEl.multiple;\n this.settings.style = this.selectEl.style.cssText;\n this.settings.class = this.selectEl.className.split(' ');\n this.select = new Select(this.selectEl);\n this.select.updateSelect(this.settings.id, this.settings.style, this.settings.class);\n this.select.hideUI();\n this.select.onValueChange = (values) => {\n this.setSelected(values);\n };\n this.select.onClassChange = (classes) => {\n this.settings.class = classes;\n this.render.updateClassStyles();\n };\n this.select.onDisabledChange = (disabled) => {\n if (disabled) {\n this.disable();\n }\n else {\n this.enable();\n }\n };\n this.select.onOptionsChange = (data) => {\n this.setData(data);\n };\n this.store = new Store(this.settings.isMultiple ? 'multiple' : 'single', config.data ? config.data : this.select.getData());\n if (config.data) {\n this.select.updateOptions(this.store.getData());\n }\n const callbacks = {\n open: this.open.bind(this),\n close: this.close.bind(this),\n addable: this.events.addable ? this.events.addable : undefined,\n setSelected: this.setSelected.bind(this),\n addOption: this.addOption.bind(this),\n search: this.search.bind(this),\n beforeChange: this.events.beforeChange,\n afterChange: this.events.afterChange,\n };\n this.render = new Render(this.settings, this.store, callbacks);\n this.render.renderValues();\n this.render.renderOptions(this.store.getData());\n const selectAriaLabel = this.selectEl.getAttribute('aria-label');\n const selectAriaLabelledBy = this.selectEl.getAttribute('aria-labelledby');\n if (selectAriaLabel) {\n this.render.main.main.setAttribute('aria-label', selectAriaLabel);\n }\n else if (selectAriaLabelledBy) {\n this.render.main.main.setAttribute('aria-labelledby', selectAriaLabelledBy);\n }\n if (this.selectEl.parentNode) {\n this.selectEl.parentNode.insertBefore(this.render.main.main, this.selectEl.nextSibling);\n }\n document.addEventListener('click', this.documentClick);\n window.addEventListener('resize', this.windowResize, false);\n if (this.settings.openPosition === 'auto') {\n window.addEventListener('scroll', this.windowScroll, false);\n }\n document.addEventListener('visibilitychange', this.windowVisibilityChange);\n if (this.settings.disabled) {\n this.disable();\n }\n if (this.settings.alwaysOpen) {\n this.open();\n }\n this.selectEl.slim = this;\n }\n enable() {\n this.settings.disabled = false;\n this.select.enable();\n this.render.enable();\n }\n disable() {\n this.settings.disabled = true;\n this.select.disable();\n this.render.disable();\n }\n getData() {\n return this.store.getData();\n }\n setData(data) {\n const selected = this.store.getSelected();\n const err = this.store.validateDataArray(data);\n if (err) {\n if (this.events.error) {\n this.events.error(err);\n }\n return;\n }\n this.store.setData(data);\n const dataClean = this.store.getData();\n this.select.updateOptions(dataClean);\n this.render.renderValues();\n this.render.renderOptions(dataClean);\n if (this.events.afterChange && !isEqual(selected, this.store.getSelected())) {\n this.events.afterChange(this.store.getSelectedOptions());\n }\n }\n getSelected() {\n return this.store.getSelected();\n }\n setSelected(value, runAfterChange = true) {\n const selected = this.store.getSelected();\n this.store.setSelectedBy('value', Array.isArray(value) ? value : [value]);\n const data = this.store.getData();\n this.select.updateOptions(data);\n this.render.renderValues();\n if (this.render.content.search.input.value !== '') {\n this.search(this.render.content.search.input.value);\n }\n else {\n this.render.renderOptions(data);\n }\n if (runAfterChange && this.events.afterChange && !isEqual(selected, this.store.getSelected())) {\n this.events.afterChange(this.store.getSelectedOptions());\n }\n }\n addOption(option) {\n const selected = this.store.getSelected();\n if (!this.store.getDataOptions().some((o) => { var _a; return o.value === ((_a = option.value) !== null && _a !== void 0 ? _a : option.text); })) {\n this.store.addOption(option);\n }\n const data = this.store.getData();\n this.select.updateOptions(data);\n this.render.renderValues();\n this.render.renderOptions(data);\n if (this.events.afterChange && !isEqual(selected, this.store.getSelected())) {\n this.events.afterChange(this.store.getSelectedOptions());\n }\n }\n open() {\n if (this.settings.disabled || this.settings.isOpen) {\n return;\n }\n if (this.events.beforeOpen) {\n this.events.beforeOpen();\n }\n this.render.open();\n if (this.settings.showSearch) {\n this.render.searchFocus();\n }\n this.settings.isOpen = true;\n setTimeout(() => {\n if (this.events.afterOpen) {\n this.events.afterOpen();\n }\n if (this.settings.isOpen) {\n this.settings.isFullOpen = true;\n }\n }, this.settings.timeoutDelay);\n if (this.settings.contentPosition === 'absolute') {\n if (this.settings.intervalMove) {\n clearInterval(this.settings.intervalMove);\n }\n this.settings.intervalMove = setInterval(this.render.moveContent.bind(this.render), 500);\n }\n }\n close(eventType = null) {\n if (!this.settings.isOpen || this.settings.alwaysOpen) {\n return;\n }\n if (this.events.beforeClose) {\n this.events.beforeClose();\n }\n this.render.close();\n if (this.render.content.search.input.value !== '') {\n this.search('');\n }\n this.render.mainFocus(eventType);\n this.settings.isOpen = false;\n this.settings.isFullOpen = false;\n setTimeout(() => {\n if (this.events.afterClose) {\n this.events.afterClose();\n }\n }, this.settings.timeoutDelay);\n if (this.settings.intervalMove) {\n clearInterval(this.settings.intervalMove);\n }\n }\n search(value) {\n if (this.render.content.search.input.value !== value) {\n this.render.content.search.input.value = value;\n }\n if (!this.events.search) {\n this.render.renderOptions(value === '' ? this.store.getData() : this.store.search(value, this.events.searchFilter));\n return;\n }\n this.render.renderSearching();\n const searchResp = this.events.search(value, this.store.getSelectedOptions());\n if (searchResp instanceof Promise) {\n searchResp\n .then((data) => {\n this.render.renderOptions(this.store.partialToFullData(data));\n })\n .catch((err) => {\n this.render.renderError(typeof err === 'string' ? err : err.message);\n });\n return;\n }\n else if (Array.isArray(searchResp)) {\n this.render.renderOptions(this.store.partialToFullData(searchResp));\n }\n else {\n this.render.renderError('Search event must return a promise or an array of data');\n }\n }\n destroy() {\n document.removeEventListener('click', this.documentClick);\n window.removeEventListener('resize', this.windowResize, false);\n if (this.settings.openPosition === 'auto') {\n window.removeEventListener('scroll', this.windowScroll, false);\n }\n document.removeEventListener('visibilitychange', this.windowVisibilityChange);\n this.store.setData([]);\n this.render.destroy();\n this.select.destroy();\n }\n}\n\nexport { SlimSelect as default };\n","import SlimSelect from 'slim-select'\r\n\r\nexport default class SlimSelectController {\r\n constructor() {\r\n this.currentSelect;\r\n this.placeholder;\r\n this.anchorMenuList;\r\n\r\n if(document.querySelector('.slimSelect')){\r\n this.placeholder = document.querySelector('select option:first-child').textContent;\r\n this.anchorMenuList = document.querySelector('.anchorMenuList');\r\n\r\n if(document.querySelector('.slimSelect')){\r\n\t\t\tconsole.log('Slim select found!');\r\n\t\t\tthis.init();\r\n\t\t }\r\n }\r\n }\r\n\r\n init() {\r\n const select = new SlimSelect({\r\n select: '#single',\r\n settings: {\r\n placeholderText: this.placeholder,\r\n showSearch: false,\r\n },\r\n events: {\r\n afterChange: (newVal) => {\r\n handleSelect(newVal);\r\n\r\n }\r\n }\r\n })\r\n\r\n const handleSelect = (newVal) => {\r\n const value = newVal[0].value\r\n console.log(newVal)\r\n if(this.anchorMenuList){\r\n this.anchorMenuList.querySelectorAll('a').forEach(a => {\r\n if(a.getAttribute('href') == value){\r\n a.click();\r\n }\r\n });\r\n }\r\n select.setSelected('placeholder'); \r\n }\r\n }\r\n}\r\n","export default class Share {\r\n constructor(container) {\r\n this.container = container;\r\n\r\n this.url = null;\r\n this.description = null;\r\n this.title = null;\r\n this.tagTitle = 'Delen via MEDIA';\r\n this.mobile = false;\r\n\r\n this.nativeShare = false;\r\n\r\n this.order = [\r\n 'linkedin',\r\n 'facebook',\r\n 'email',\r\n 'whatsapp',\r\n 'native',\r\n ];\r\n\r\n this.medias = {\r\n linkedin: {\r\n name: 'LinkedIn',\r\n enabled: true,\r\n icon: '
    LinkedIn',\r\n mobileOnly: false,\r\n },\r\n facebook: {\r\n name: 'Facebook',\r\n enabled: true,\r\n icon: '
    Facebook',\r\n mobileOnly: false,\r\n },\r\n whatsapp: {\r\n name: 'WhatsApp',\r\n enabled: true,\r\n icon: '
    Whatsapp',\r\n mobileOnly: false,\r\n },\r\n email: {\r\n name: 'e-mail',\r\n enabled: true,\r\n icon: '
    E-mail',\r\n mobileOnly: false,\r\n },\r\n native: {\r\n name: 'Share',\r\n enabled: false,\r\n tagTitle: 'Delen',\r\n icon: '',\r\n mobileOnly: false,\r\n },\r\n };\r\n }\r\n\r\n init() {\r\n this.mobile = this.detectMobile();\r\n this.url = this.obtainUrl();\r\n this.description = this.obtainDescription();\r\n this.title = this.obtainTitle();\r\n\r\n this.createShareButtons();\r\n }\r\n\r\n createShareButtons() {\r\n let list = Object.keys(this.medias);\r\n\r\n if (this.order) {\r\n list = this.order;\r\n }\r\n list.forEach(media => {\r\n if (this.medias[media].enabled) {\r\n let render = true;\r\n if (this.medias[media].mobileOnly && !this.mobile) {\r\n render = false;\r\n }\r\n\r\n if (media == 'native' && !navigator.share) {\r\n render = false;\r\n }\r\n\r\n console.log(`${media}: ${render}`);\r\n\r\n if (render) {\r\n const tag = document.createElement('a');\r\n tag.setAttribute('target', '_blank');\r\n tag.setAttribute('rel', 'noopener');\r\n tag.href = this[media]();\r\n if (this.medias[media].tagTitle) {\r\n tag.title = this.medias[media].tagTitle;\r\n } else {\r\n tag.title = this.tagTitle.replace(/MEDIA/g, this.medias[media].name);\r\n }\r\n tag.innerHTML = this.medias[media].icon;\r\n\r\n this.bindEvents(tag, media);\r\n this.container.appendChild(tag);\r\n }\r\n }\r\n });\r\n }\r\n\r\n detectMobile() {\r\n return /iPhone|Android|Blackberry/i.test(navigator.userAgent);\r\n }\r\n\r\n obtainUrl() {\r\n if (this.container.dataset.url) {\r\n return this.container.dataset.url;\r\n }\r\n\r\n return window.location.href;\r\n }\r\n\r\n obtainDescription() {\r\n if (this.container.dataset.description) {\r\n return this.container.dataset.description;\r\n }\r\n \r\n let metaDescription = null;\r\n let ogDescription = null;\r\n let metaTags = document.head.getElementsByTagName('meta');\r\n\r\n for (let metaIndex = 0; metaIndex < metaTags.length; metaIndex++) {\r\n if (metaTags[metaIndex].getAttribute('property') === 'description') {\r\n metaDescription = metaTags[metaIndex].getAttribute('content');\r\n }\r\n if (metaTags[metaIndex].getAttribute('property') === 'og:description') {\r\n ogDescription = metaTags[metaIndex].getAttribute('content');\r\n }\r\n }\r\n\r\n if (metaDescription === null && ogDescription === null) {\r\n return '';\r\n } \r\n \r\n if (ogDescription !== null) {\r\n return ogDescription;\r\n }\r\n\r\n return metaDescription;\r\n }\r\n\r\n obtainTitle() {\r\n if (this.container.dataset.title) {\r\n return this.container.dataset.title;\r\n }\r\n\r\n return document.title;\r\n }\r\n\r\n obtainTagTitle(media) {\r\n if (this.container.dataset.tagTitle) {\r\n return this.container.dataset.tagTitle.replace(`MEDIA`, this.medias[media].name);\r\n }\r\n\r\n return `Deel via ${this.medias[media].name}`;\r\n }\r\n\r\n // Social media specific methods\r\n linkedin() {\r\n return `https://www.linkedin.com/shareArticle?url=${encodeURIComponent(this.url)}&mini=true&summary=${encodeURIComponent(this.description)}`\r\n }\r\n \r\n facebook() {\r\n return `https://www.facebook.com/sharer.php?u=${encodeURIComponent(this.url)}`;\r\n }\r\n \r\n email() {\r\n return `mailto:?body=${encodeURIComponent(this.url) + ' ' + this.description}&subject=Ik heb een interessante pagina gevonden: ${this.title}`;\r\n }\r\n\r\n whatsapp() {\r\n return `https://wa.me?text=${encodeURIComponent(this.url)}`;\r\n }\r\n\r\n native() {\r\n return 'javascript:void(0);';\r\n }\r\n\r\n bindEvents(tag, media) {\r\n tag.addEventListener('click', e => {\r\n e.preventDefault();\r\n\r\n if (media == 'native') {\r\n const data = {\r\n title: this.title,\r\n description: this.description,\r\n url: this.url\r\n };\r\n\r\n try {\r\n navigator.share(data);\r\n } catch (e) {\r\n if (console && console.error) {\r\n console.error(e);\r\n }\r\n }\r\n } else {\r\n window.open(tag.href, 'NewWindow', `menubar=no,toolbar=no,status=no,width=570,height=570,top=${(screen.height - 570) / 2},left=${(screen.width - 570) / 2}`);\r\n }\r\n });\r\n }\r\n}","import Share from './share';\r\n\r\nexport default class ShareController {\r\n constructor() {\r\n this.selector = '.sharePageContainer';\r\n this.instances = [];\r\n\r\n console.log(\"sharecontroller: \", this.selector);\r\n\r\n this.init();\r\n }\r\n\r\n init() {\r\n if (document.querySelectorAll(this.selector).length) {\r\n document.querySelectorAll(this.selector).forEach(container => {\r\n const share = new Share(container);\r\n this.instances.push(share);\r\n\r\n share.init();\r\n })\r\n }\r\n }\r\n}","export default class TabbedBlockController {\r\n constructor() {\r\n this.container;\r\n this.allAccordionLabels;\r\n this.allDesktopButtons;\r\n\r\n this.init();\r\n }\r\n\r\n init() {\r\n if (document.querySelector('.fase2.tabbedInfoBlock')) {\r\n document.querySelectorAll('.fase2.tabbedInfoBlock').forEach(container => {\r\n this.container = container;\r\n this.allAccordionLabels = this.container.querySelectorAll('.accordion>li');\r\n this.allDesktopButtons = this.container.querySelectorAll('.labelsDesktop li button');\r\n console.log(this.allAccordionLabels);\r\n console.log(this.allDesktopButtons);\r\n\r\n this.eventListeners();\r\n\r\n // container.querySelectorAll(\".labelsDesktop li button\").forEach((button, index) => {\r\n // button.addEventListener('click', () => {\r\n // this.resetActiveButtons(container);\r\n // button.classList.add('active');\r\n // this.allAccordionLabels[index].click();\r\n // })\r\n // })\r\n // allAccordionLabels.forEach((label, index) => {\r\n // label.addEventListener('click', () => {\r\n // this.resetActiveButtons(container);\r\n\r\n // })\r\n // })\r\n })\r\n }\r\n }\r\n\r\n eventListeners(){\r\n this.allDesktopButtons.forEach((button, index) => {\r\n button.addEventListener('click', () => {\r\n console.log(this.allAccordionLabels, this.allAccordionLabels[index].getAttribute('aria-expanded'), this.allAccordionLabels[index], index);\r\n if(this.allAccordionLabels[index].getAttribute('aria-expanded') == 'false'){\r\n console.log('click');\r\n this.allAccordionLabels[index].querySelector('.header').click();\r\n this.setActiveDesktopButton();\r\n }\r\n \r\n })\r\n \r\n })\r\n }\r\n\r\n setActiveDesktopButton(){\r\n this.allDesktopButtons.forEach(button => {\r\n if (button.classList.contains('active')){\r\n button.classList.remove('active');\r\n }\r\n })\r\n\r\n this.allAccordionLabels.forEach((li, index) => {\r\n if(li.getAttribute('aria-expanded') == 'true'){\r\n this.allDesktopButtons[index].classList.add('active');\r\n }\r\n })\r\n }\r\n}","import 'lazysizes';\r\nimport 'promise-polyfill/src/polyfill';\r\n\r\n// App\r\nimport App from './app';\r\nimport PolyfillController from './controllers/polyfill';\r\n\r\n// GTM\r\nimport GTMController from './controllers/gtm';\r\n\r\n// API\r\nimport Api from './controllers/api/api';\r\n\r\n// Controllers\r\nimport RibbonController from './controllers/ribbon';\r\nimport StickyCTAController from './controllers/stickycta';\r\nimport HeaderController from './controllers/header';\r\nimport VideoController from './controllers/video';\r\nimport FaqSearchController from './controllers/faqSearchController';\r\nimport InfoGuideAnchorMenu from './controllers/infoGuideAnchorMenu';\r\nimport SlimSelectController from './controllers/slimSelect';\r\nimport ShareController from './controllers/share/controller';\r\nimport TabbedBlockController from './controllers/tabbedBlockController';\r\n// import MediaController from './controllers/media';\r\n// import AVGController from './controllers/avg';\r\n// import FormController from './controllers/form';\r\n// import ToastController from './controllers/toast/controller';\r\n// import SliderController from './controllers/slider';\r\n// import ParallaxController from './controllers/parallax';\r\n\r\n(async () => {\r\n document.querySelector('html').classList.remove('no-js');\r\n\r\n const polyfills = new PolyfillController();\r\n await polyfills.init();\r\n\r\n try {\r\n const app = new App();\r\n app.resizeThrottle = 10;\r\n app.scrollThrottle = 100;\r\n window.app = app;\r\n \r\n app.polyfillController = polyfills;\r\n app.GTM = new GTMController();\r\n app.api = new Api();\r\n app.ribbonController = new RibbonController();\r\n app.stickyctaController = new StickyCTAController();\r\n app.headerController = new HeaderController();\r\n app.videoController = new VideoController();\r\n app.faqSearchController = new FaqSearchController();\r\n app.InfoGuideAnchorMenu = new InfoGuideAnchorMenu();\r\n app.slimSelectController = new SlimSelectController();\r\n app.shareController = new ShareController();\r\n app.tabbedBlockController = new TabbedBlockController();\r\n /* \r\n app.AVGController = new AVGController();\r\n app.mediaController = new MediaController();\r\n app.formController = new FormController();\r\n app.toastController = new ToastController();\r\n app.sliderController = new SliderController();\r\n app.parallaxController = new ParallaxController(); */\r\n\r\n // Modules\r\n const loadModules = () => {\r\n if (app.getParameter('debugger')) {\r\n import( /* webpackChunkName: \"modules/console\" */ './controllers/debugger').then(e => {\r\n app.debuggerController = new e.default();\r\n });\r\n }\r\n\r\n // if (document.querySelector('.shareContainer')) {\r\n // import( /* webpackChunkName: \"modules/share\" */ './controllers/share/controller').then(e => {\r\n // app.shareController = new e.default();\r\n // });\r\n // }\r\n\r\n if (document.querySelector('.accordion')) {\r\n import( /* webpackChunkName: \"modules/accordion\" */ './controllers/accordion/controller').then(e => {\r\n app.accordionController = new e.default();\r\n });\r\n }\r\n\r\n if (document.querySelector('.swiper-container')) {\r\n import( /* webpackChunkName: \"modules/slider\" */ './controllers/slider').then(e => {\r\n app.sliderController = new e.default();\r\n });\r\n }\r\n\r\n if (document.querySelector('[data-decision-tree]')) {\r\n import( /* webpackChunkName: \"modules/decisionTree\" */ './controllers/decisionTree/controller').then(e => {\r\n app.decisionTreeController = new e.default();\r\n });\r\n }\r\n\r\n if (document.querySelector('[data-quiz]')) {\r\n import( /* webpackChunkName: \"modules/quiz\" */ './controllers/quiz/controller').then(e => {\r\n app.quizController = new e.default();\r\n });\r\n }\r\n\r\n // if (document.querySelector('#chatWindow')) {\r\n // import( /* webpackChunkName: \"modules/chatbot\" */ './controllers/chatbotController').then(e => {\r\n // app.chatbotController = new e.default();\r\n // });\r\n // }\r\n\r\n // if (document.querySelector('.fase2TrainerOverview')) {\r\n // import( /* webpackChunkName: \"modules/filterCourseController\" */ './controllers/filterCoursesController').then(e => {\r\n // app.filterCourseController = new e.default();\r\n // });\r\n // }\r\n\r\n if (document.querySelector('[data-gallery]')) {\r\n import( /* webpackChunkName: \"modules/gallery\" */ './controllers/gallery').then(e => {\r\n app.galleryController = new e.default();\r\n });\r\n }\r\n\r\n if (document.querySelector('.tabs')) {\r\n import( /* webpackChunkName: \"modules/tabs\" */ './controllers/tabs/controller').then(e => {\r\n app.tabsController = new e.default();\r\n });\r\n }\r\n\r\n if (document.querySelector('section.tripCalculator')) {\r\n import(/* webpackChunkName: \"modules/tripCalculator\" */ './controllers/tripCalculator/controller').then(e => {\r\n app.tripCalculatorController = new e.default();\r\n });\r\n }\r\n\r\n if (document.querySelector('section.feedbackBlock')) {\r\n import(/* webpackChunkName: \"modules/feedback\" */ './controllers/feedback/controller').then(e => {\r\n app.feedbackController = new e.default();\r\n });\r\n }\r\n\r\n if (document.querySelector('section.pollWidget')) {\r\n import(/* webpackChunkName: \"modules/poll\" */ './controllers/poll/controller').then(e => {\r\n app.pollController = new e.default();\r\n });\r\n }\r\n\r\n if (document.querySelector('section.videoGallery')) {\r\n import(/* webpackChunkName: \"modules/videoGallery\" */ './controllers/videoGallery').then(e => {\r\n app.videoGalleryController = new e.default();\r\n });\r\n }\r\n\r\n if (document.querySelector('[data-quickstart]')) {\r\n import(/* webpackChunkName: \"modules/quickstart\" */ './controllers/quickstart').then(e => {\r\n app.quickstartController = new e.default();\r\n });\r\n }\r\n\r\n if (document.querySelector('[data-filterable-list]')) {\r\n import(/* webpackChunkName: \"modules/filterableList\" */ './controllers/filterableList').then(e => {\r\n app.filterableListController = new e.default();\r\n });\r\n }\r\n\r\n // if (document.querySelector('.fase2TrainerOverview')) {\r\n // import(/* webpackChunkName: \"modules/filterableList\" */ './controllers/trainerOverview').then(e => {\r\n // app.trainerOverviewController = new e.default();\r\n // });\r\n // }\r\n\r\n if (document.querySelector('.fase2TrainerOverview')) {\r\n import( /* webpackChunkName: \"modules/filterEducatorController\" */ './controllers/filterEducatorController').then(e => {\r\n app.filterEducatorController = new e.default();\r\n });\r\n }\r\n\r\n if (document.querySelector('.fase2ExamsOverview')) {\r\n import( /* webpackChunkName: \"modules/filterEducatorController\" */ './controllers/examsController').then(e => {\r\n app.examsController = new e.default();\r\n });\r\n }\r\n\r\n if (document.querySelector('[data-anchor-list]')) {\r\n import(/* webpackChunkName: \"modules/generateAnchorList\" */ './controllers/generateAnchorList').then(e => {\r\n app.generateAnchorList = new e.default();\r\n });\r\n }\r\n\r\n if (document.querySelector('[data-grid-column-list]')) {\r\n import(/* webpackChunkName: \"modules/gridColumnList\" */ './controllers/gridColumnList').then(e => {\r\n app.gridColumnList = new e.default();\r\n });\r\n }\r\n }\r\n\r\n loadModules();\r\n await app.init();\r\n // app.insertTesters();\r\n } catch(e) {\r\n console.error(`Something went wrong initializing the app`);\r\n throw e;\r\n };\r\n\r\n console.log(`App initialized`);\r\n document.documentElement.classList.remove('preventAnimations');\r\n\r\n})();"],"names":["leafPrototypes","getProto","inProgress","dataWebpackPrefix","CustomHTMLElement","defaultProperties","arguments","length","undefined","_classCallCheck","window","HTMLID","this","_id","_template","_html","_object","_properties","_createClass","key","value","forceCreate","Error","containerElement","document","createElement","innerHTML","firstChild","forceRenew","getOrCreate","properties","_this","Object","keys","forEach","concat","charAt","toUpperCase","substring","_this2","propertyKey","setKeyMethodName","defineProperty","givenValue","_property","_ensureType","_typeof","enumerable","configurable","get","set","type","isNaN","parseFloat","toString","toLowerCase","Element","prototype","matches","proto","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","module","exports","element","selector","nodeType","parentNode","closest","_delegate","callback","useCapture","listenerFn","listener","apply","addEventListener","destroy","removeEventListener","e","delegateTarget","target","call","elements","bind","querySelectorAll","Array","map","Handlebars","template","container","depth0","helpers","partials","data","stack1","alias1","lambda","alias2","escapeExpression","lookupProperty","parent","propertyName","hasOwnProperty","_interopRequireDefault","obj","__esModule","_interopRequireWildcard","newObj","base","_handlebarsSafeString2","_handlebarsException2","Utils","runtime","_handlebarsNoConflict2","create","hb","HandlebarsEnvironment","extend","SafeString","Exception","VM","spec","inst","_utils","_exception2","_helpers","_decorators","_logger2","_internalProtoAccess","VERSION","COMPILER_REVISION","LAST_COMPATIBLE_COMPILER_REVISION","REVISION_CHANGES","objectType","decorators","registerDefaultHelpers","registerDefaultDecorators","constructor","logger","log","registerHelper","name","fn","unregisterHelper","registerPartial","partial","unregisterPartial","registerDecorator","unregisterDecorator","resetLoggedPropertyAccesses","resetLoggedProperties","createFrame","instance","_decoratorsInline2","props","options","ret","context","original","args","errorProps","message","node","loc","line","endLineNumber","column","endColumn","start","end","tmp","idx","captureStackTrace","lineNumber","nop","_helpersBlockHelperMissing2","_helpersEach2","_helpersHelperMissing2","_helpersIf2","_helpersLog2","_helpersLookup2","_helpersWith2","moveHelperToHooks","helperName","keepHelper","hooks","inverse","isArray","ids","each","contextPath","appendContextPath","priorKey","i","execIteration","field","index","last","first","blockParams","isFunction","j","Symbol","iterator","newContext","it","next","done","push","conditional","hash","includeZero","isEmpty","level","createNewLookupObject","_len","sources","_key","createProtoAccessControl","runtimeOptions","defaultMethodWhiteList","defaultPropertyWhiteList","whitelist","_createNewLookupObject","allowedProtoProperties","defaultValue","allowProtoPropertiesByDefault","methods","allowedProtoMethods","allowProtoMethodsByDefault","resultIsAllowed","result","protoAccessControl","protoAccessControlForType","loggedProperties","logUnexpecedPropertyAccessOnce","checkWhiteList","wrapHelper","helper","transformOptionsFn","methodMap","lookupLevel","levelMap","indexOf","parseInt","console","method","globalThis","__defineGetter__","__magic__","$Handlebars","noConflict","checkRevision","compilerInfo","compilerRevision","currentRevision","_base","runtimeVersions","compilerVersions","templateSpec","env","main","decorator","main_d","compiler","templateWasPrecompiledWithCompilerV7","strict","lookup","depths","len","current","invokePartial","resolvePartial","extendedOptions","compile","compilerOptions","indent","lines","split","l","join","programs","program","declaredBlockParams","programWrapper","wrapProgram","depth","_parent","mergeIfNeeded","param","common","nullContext","seal","noop","_setup","useData","root","initData","useBlockParams","useDepths","executeDecorators","isTop","mergedHelpers","_internalWrapHelper","passLookupPropertyOption","wrapHelpersToPassLookupProperty","usePartial","useDecorators","keepHelperInHelpers","allowCallsToHelperMissing","_child","currentPartialBlock","partialBlock","Function","prog","currentDepths","string","toHTML","array","possible","test","replace","badChars","escapeChar","object","frame","params","path","id","escape","chr","factory","attributes","decode","s","decodeURIComponent","init","converter","api","defaults","expires","Date","toUTCString","JSON","stringify","write","encodeURIComponent","String","stringifiedAttributes","attributeName","cookie","json","jar","cookies","parts","slice","read","parse","getJSON","remove","withConverter","lazySizes","lazysizes","lazySizesCfg","prop","lazySizesDefaults","lazyClass","loadedClass","loadingClass","preloadClass","errorClass","autosizesClass","fastLoadedClass","iframeLoadMode","srcAttr","srcsetAttr","sizesAttr","minSize","customMedia","expFactor","hFac","loadMode","loadHidden","ricTimeout","throttleDelay","lazySizesConfig","lazysizesConfig","getElementsByClassName","cfg","noSupport","autosizesElems","sizeElement","getSizeElement","debouncedUpdateElementsSizes","preloadElems","isCompleted","resetPreloadingTimer","started","eLvW","elvH","eLtop","eLleft","eLright","eLbottom","isBodyHidden","regImg","regIframe","supportScroll","currentExpand","isLoading","lowRuns","resetPreloading","isVisible","isNestedVisible","checkElements","throttledCheckElements","switchLoadingClass","rafedSwitchLoadingClass","rafSwitchLoadingClass","changeIframeSrc","handleSources","lazyUnveil","unveilElement","afterScroll","altLoadmodeScrollListner","onload","running","waiting","firstFns","secondFns","fns","run","rafBatch","docElem","documentElement","supportPicture","HTMLPictureElement","_addEventListener","_getAttribute","setTimeout","requestAnimationFrame","requestIdleCallback","regPicture","loadEvents","regClassCache","hasClass","ele","cls","RegExp","addClass","setAttribute","trim","removeClass","reg","addRemoveLoadEvents","dom","add","action","evt","triggerEvent","elem","detail","noBubbles","noCancelable","event","createEvent","initEvent","dispatchEvent","updatePolyfill","el","full","polyfill","picturefill","pf","src","reevaluate","getCSS","style","getComputedStyle","getWidth","width","offsetWidth","_lazysizesWidth","rAF","queue","hidden","_lsFlush","runFns","shift","rAFIt","simple","that","debounce","func","timeout","timestamp","later","now","loader","navigator","userAgent","body","elemExpand","outerRect","visible","offsetParent","getBoundingClientRect","left","right","top","bottom","lastTime","gDelay","rICTimeout","idleCallback","isPriority","delay","throttle","eLlen","rect","autoLoadElem","loadedSomething","elemNegativeExpand","elemExpandVal","beforeExpandVal","defaultExpand","preloadExpand","lazyloadElems","_lazyRace","prematureUnveil","expand","clientHeight","clientWidth","_defEx","innerWidth","innerHeight","preloadAfterLoad","_lazyCache","getAttribute","contentWindow","location","source","sourceSrcset","isAuto","sizes","isImg","srcset","isPicture","firesLoad","defaultPrevented","nodeName","clearTimeout","getElementsByTagName","isLoaded","complete","naturalWidth","loading","autoSizer","updateElem","_","persisted","loadingElements","img","MutationObserver","observe","childList","subtree","setInterval","readyState","checkElems","unveil","_aLSL","dataAttr","uP","aC","rC","hC","fire","gW","_regeneratorRuntime","t","r","n","o","a","c","asyncIterator","u","toStringTag","define","writable","wrap","Generator","Context","makeInvokeMethod","tryCatch","arg","h","f","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","_invoke","AsyncIterator","invoke","resolve","__await","then","callInvokeWithMethodAndArg","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","displayName","isGeneratorFunction","mark","setPrototypeOf","__proto__","awrap","async","Promise","reverse","pop","prev","stop","rval","handle","finish","delegateYield","regeneratorRuntime","accidentalStrictMode","_arrayLikeToArray","arr","arr2","_assertThisInitialized","self","ReferenceError","Constructor","_defineProperties","descriptor","protoProps","staticProps","_get","Reflect","property","receiver","desc","getOwnPropertyDescriptor","_getPrototypeOf","_setPrototypeOf","_inherits","subClass","superClass","_possibleConstructorReturn","_toPropertyKey","input","hint","prim","toPrimitive","res","_unsupportedIterableToArray","minLen","from","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","m","getter","mode","ns","def","getOwnPropertyNames","definition","chunkId","all","reduce","promises","url","script","needAttach","scripts","charset","nc","onScriptComplete","onerror","doneFns","removeChild","head","appendChild","installedChunks","installedChunkData","promise","reject","error","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","some","chunkLoadingGlobal","asyncGeneratorStep","gen","_next","_throw","info","reason","remaining","val","status","AggregateError","errors","P","rejectionReasons","catch","ex","setTimeoutFunc","x","Boolean","_state","_handled","_value","_deferreds","doResolve","deferred","_immediateFn","cb","onFulfilled","onRejected","newValue","finale","thisArg","_unhandledRejectionFn","Handler","prom","any","allSettled","race","setImmediate","err","warn","globalNS","App","_resizeFunctionsArr","_resizeFunctions","_resizeFunctionsCounter","_resizeTimeout","resizeThrottle","_scrollFunctionsArr","_scrollFunctions","_scrollFunctionsCounter","_scrollTimeout","scrollThrottle","_resizeAnimationPreventerTimeout","newPageWarning","selectricCBs","breakpoints","xs","gutter","size","sm","md","ml","lg","animationDuration","detectBrowser","setEventListeners","fullHeightListener","resizeAnimationPreventer","initCSSBreakpoints","addNewWindowTitles","addNoOpener","addAnchorEnhancement","initSelectric","initTippy","initCopy","initScrollTo","initToTop","initPrintListener","initLabelClick","resize","passive","scroll","label","substr","click","filter","hasAttribute","runFunctions","_this3","_this4","_this5","_this6","_this7","resizeTimer","windowWidth","registerResizeEvent","classList","fullHeight","setProperty","isOpera","opr","addons","opera","isFirefox","InstallTrigger","isIphone","match","isIpad","isSafari","isIE","documentMode","isEdge","StyleMedia","isChrome","vendor","isBlink","CSS","_this8","documentStyling","breakpoint","getPropertyValue","NaN","text","querySelector","dataset","newWindowText","href","hostname","parentElement","scrollTo","_this9","preventDefault","scrollPosition","elementCoords","behavior","min","max","Math","floor","random","characters","getTime","d2","performance","box","docEl","scrollTop","pageYOffset","scrollLeft","pageXOffset","clientTop","clientLeft","round","_this10","scrollToTopContainer","button","registerScrollEvent","blur","_this11","$","jqueryImport","_this12","loadjQuery","select","selectric","arrowButtonMarkup","tippy","tippySource","allowHTML","content","interactive","_this13","copyContent","copy","position","height","overflow","execCommand","toast","_this14","printTexts","printElements","printParent","span","print","printElement","_this15","_this16","currentBreakpoint","ToastController","items","search","insertBreakpointIndicator","insertColumnTester","tester","cols","blocks","classes","_this17","slimmage","cr","incompleteControllers","newPage","PolyfillController","polyfills","loaded","loadPolyfills","includes","intersectionObserver","fetch","proxy","before","entries","assign","customEvent","objectFit","NodeList","symbolIterator","toStr","isCallable","maxSafeInteger","pow","arrayLikeOrIterator","isIterator","T","mapFn","number","Number","isFinite","abs","toInteger","toLength","A","getItem","k","item","kValue","getArray","setGetItemHandler","AbortController","CharacterData","DocumentType","argArr","docFrag","createDocumentFragment","argItem","isNode","Node","createTextNode","insertBefore","ownProps","resArray","varArgs","to","nextSource","nextKey","Event","CustomEvent","bubbles","cancelable","initCustomEvent","URLSearchParams","objectFitPolyfill","GTMController","decideType","getData","dataLayer","dataReady","pathname","pageType","dl","page","user","user_id","user_type","user_logged_in","page_id","pageId","page_type","page_label_1","pageLabel1","page_label_2","pageLabel2","page_location","host","page_variant","pageVariant","page_country","pageCountry","page_language","pageLanguage","technology","platform","ip_address","technologyIp","debugLog","component_type","component_location","component_category","category","componentName","component_name","score","component_data","question","query","link","search_query","search_link","BaseApi","_baseUrl","post","put","patch","delete","_bodyMethods","_headers","_fetch","_x","headers","urlToCall","URL","newHeaders","fetchProperties","referrer","header","dataKey","searchParams","append","response","ok","app","Api","_BaseApi","_super","feedback","comment","Path","Feedback","Comment","voteId","PollId","VoteId","pollId","answerId","AnswerId","RibbonController","resizeFunc","Cookie","setEventListener","show","hide","unregisterResizeEvent","StickyCTAController","bottomVisible","scrollY","scrollHeight","SearchSuggestion","_CustomHTMLElement","title","setProperties","_createPropertyMethods","require","HeaderSearchController","formContainer","form","formInput","searchResultsContainer","mobileSearchbutton","apiEndpoint","apiContext","abortController","waiterTime","changeWaiter","minInput","originalSearchSuggestions","originalSearchTitle","videos","li","cloneNode","innerText","removeAttribute","showSearchResults","contains","hideSearchResults","focus","handleInputChange","submit","resetResults","closeButton","focusButton","clearButton","arrowUp","arrowDown","GTM","headerSearchClick","selectricEvents","eventName","on","option","infoGuideMobileSearch","infoGuideMobileClose","nextElementSibling","previousElementSibling","updateResults","video","pause","clickable","play","abort","fetchResults","insertSearchSuggestions","suggestions","results","suggestion","highlightedTitle","generate","totalItems","signal","HeaderController","panelContainer","panels","activePanel","previousScroll","scrollCounter","threshold","searchController","SearchController","panel","panelOpener","panelId","panelOpens","openPanel","closePanels","initFloatingPanels","floatingPanels","fPanel","trigger","handleResize","ResizeObserver","activatePanel","updateBackgroundSize","activePanels","arrayLikeToArray","iter","unsupportedIterableToArray","VideoController","instances","vimeoPlayer","loadApi","loadYouTubeApi","videoSection","section","playerId","player","YT","Player","videoId","playerVars","events","onReady","playVideo","onError","loadVimeoApi","ready","onYouTubeIframeAPIReady","tag","firstScriptTag","FaqSearchSuggestion","faqSearchController","toPropertyKey","allSubjects","totalSubjects","queruySelector","hasQuery","replaceAll","allResults","InfoGuideAnchorMenu","anchorMenu","dropdown","anchorMenuList","getWidgets","widget","is","generateID","wait","immediate","callNow","isEqual","b","Settings","settings","class","isMultiple","isOpen","isFullOpen","intervalMove","disabled","alwaysOpen","showSearch","searchPlaceholder","searchText","searchingText","searchHighlight","closeOnSelect","contentLocation","contentPosition","openPosition","placeholderText","allowDeselect","hideSelected","showOptionTooltips","minSelected","maxSelected","timeoutDelay","maxValuesShown","maxValuesMessage","Optgroup","optgroup","selectAll","selectAllText","closable","Option","html","selected","display","mandatory","placeholder","Store","selectType","setData","validateDataArray","dataObj","validateOption","partialToFullData","dataFinal","optOptions","setSelectedBy","getSelected","getDataOptions","addOption","selectedType","selectedValues","firstOption","hasSelected","selectedOptions","getSelectedOptions","opt","getSelectedIDs","selectedIDs","op","getOptgroupByID","getOptionByID","searchFilter","includeOptgroup","dataSearch","getSelectType","Render","store","callbacks","single","valueText","valueDelete","valueOut","deselect","deselectPath","arrow","arrowClose","arrowOpen","openAbove","openBelow","searchHighlighter","searching","addable","addablePath","list","optgroupLabel","optgroupLabelText","optgroupActions","optgroupSelectAll","optgroupSelectAllBox","optgroupSelectAllCheck","optgroupClosable","optionDelete","highlighted","open","close","mainDiv","contentDiv","updateClassStyles","updateAriaAttributes","enable","disable","moveContent","selectedId","selectedOption","ensureElementInView","className","cssText","role","_a","tabIndex","onkeydown","highlight","onclick","stopPropagation","shouldDelete","after","beforeChange","setSelected","updateDeselectAll","afterChange","deselectSvg","createElementNS","arrowPath","svg","mainFocus","eventType","preventScroll","placeholderOption","renderValues","renderMultipleValues","renderSingleValue","selectedSingle","singleValue","outerHTML","currentNodes","childNodes","textContent","removeNodes","hasChildNodes","shouldAdd","multipleValue","insertAdjacentElement","deleteDiv","deleteSvg","deletePath","searchDiv","listDiv","putContent","moveContentAbove","moveContentBelow","searchReturn","readOnly","oninput","ctrlKey","plus","plusPath","inputValue","runFinish","oo","newOption","addableValue","searchFocus","getOptions","notPlaceholder","notDisabled","notHidden","dir","prevOption","prevParent","selectOption","selectParent","renderError","errorDiv","renderSearching","searchingDiv","renderOptions","noResults","optgroupEl","allSelected","selectAllSvg","selectAllBox","selectAllCheck","currentSelected","newSelected","optgroupClosableSvg","optgroupClosableArrow","optionEl","dataClass","highlightText","currentTarget","elementID","shouldUpdate","str","completedString","regex","matchStartPosition","matchEndPosition","originalTextFoundByRegex","mainHeight","offsetHeight","contentHeight","containerRect","margin","scrollX","cTop","offsetTop","cBottom","eTop","eBottom","mainRect","hasSelectedItems","deselectButton","hideClass","Select","listen","observer","valueChange","observeCall","changeListen","hideUI","showUI","disconnect","ev","onValueChange","getSelectedValues","mutations","classChanged","disabledChanged","optgroupOptionChanged","onClassChange","onDisabledChange","onOptionsChange","nodes","getDataFromOptgroup","getDataFromOption","selectall","selectalltext","optgroupOptions","updateSelect","updateOptions","createOptgroup","createOption","optionClass","kebabCase","SlimSelect","config","beforeOpen","afterOpen","beforeClose","afterClose","windowResize","render","windowScroll","documentClick","parentByClass","hasClassInTree","windowVisibilityChange","selectEl","tagName","ssid","debounceEvents","multiple","selectAriaLabel","selectAriaLabelledBy","nextSibling","slim","dataClean","runAfterChange","clearInterval","searchResp","SlimSelectController","currentSelect","newVal","handleSelect","Share","description","tagTitle","mobile","nativeShare","order","medias","linkedin","enabled","icon","mobileOnly","facebook","whatsapp","email","native","detectMobile","obtainUrl","obtainDescription","obtainTitle","createShareButtons","media","share","bindEvents","metaDescription","ogDescription","metaTags","metaIndex","screen","ShareController","TabbedBlockController","allAccordionLabels","allDesktopButtons","eventListeners","setActiveDesktopButton","_callee","_context","polyfillController","ribbonController","stickyctaController","headerController","videoController","FaqSearchController","slimSelectController","shareController","tabbedBlockController","getParameter","debuggerController","accordionController","sliderController","decisionTreeController","quizController","galleryController","tabsController","tripCalculatorController","feedbackController","pollController","videoGalleryController","quickstartController","filterableListController","filterEducatorController","examsController","generateAnchorList","gridColumnList","t0"],"sourceRoot":""}